Exemplo n.º 1
0
    def test_write_to_db(self):
        """Test that topics and data can be written to the DB."""
        # Create one topic and one datum to be created.
        ts = datetime.datetime.now()
        self.write_to_db([], [db_model.Topic(1, 'Topic')],
                         [db_model.TopicDatum(ts, 1, '1.0')])

        # Verify the items were written.
        session = sqlalchemy.orm.Session(bind=self.engine,
                                         expire_on_commit=False)
        actual_topics = session.query(db_model.Topic).all()
        actual_data = session.query(db_model.TopicDatum).all()

        self.assertEqual(1, len(actual_topics))
        self.assertEqual(1, len(actual_data))

        topic = actual_topics[0]
        self.assertEqual(1, topic.topic_id)
        self.assertEqual('Topic', topic.topic_name)

        datum = actual_data[0]
        self.assertEqual(ts, datum.ts)
        self.assertEqual(1, datum.topic_id)
        self.assertEqual('1.0', datum.value_string)
        session.close()
Exemplo n.º 2
0
 def _init_topics(self):
     """Adds the current panel connection's topics to the database."""
     topics = [
         db_model.Topic(None, m.topic_name)
         for m in self._panel_con.metrics.values()
         if not self._db_con.topic_exists(m.topic_name)
     ]
     if topics:
         self._db_con.write_topics(topics)
Exemplo n.º 3
0
def create_topic(topics, options):
    """Creates a topic for the given data generation options.

  Args:
    topics: A dictionary of existing topics, keyed by the topic ID.
    options: The configuration options for the current data generation run.
  """
    if options.topic_id in topics:
        return

    topic = db_model.Topic(options.topic_id, options.topic_name)
    topics[options.topic_id] = topic
Exemplo n.º 4
0
    def init_topics(self):
        """Adds the current panel connection's topics to the database if they don't already exist.

    If they do exist, do nothing.
    """
        topics_to_add = []
        panel_metrics = self._panel_con.metrics
        for metric in panel_metrics:
            topic_name = panel_metrics[metric].topic_name
            if not self._db_con.topic_exists(topic_name):
                # Set the id of the topic to be None. The responsibility of assigning an id
                # should be handled by the database.
                topic = db_model.Topic(None, topic_name)
                topics_to_add.append(topic)

        if topics_to_add:
            self._db_con.write_data(topics_to_add)
Exemplo n.º 5
0
"""A program that creates the default set of UW Solar topics."""

import argparse
import sqlalchemy
from db import db_model

ALDER_TOPICS = [
    db_model.Topic(8, 'UW/Alder/eaton_meter/Angle_I_A'),
    db_model.Topic(11, 'UW/Alder/eaton_meter/Angle_I_B'),
    db_model.Topic(5, 'UW/Alder/eaton_meter/Angle_I_C'),
    db_model.Topic(20, 'UW/Alder/eaton_meter/Angle_V_AN'),
    db_model.Topic(21, 'UW/Alder/eaton_meter/Angle_V_BN'),
    db_model.Topic(19, 'UW/Alder/eaton_meter/Angle_V_CN'),
    db_model.Topic(15, 'UW/Alder/eaton_meter/Current_N'),
    db_model.Topic(17, 'UW/Alder/eaton_meter/freq'),
    db_model.Topic(12, 'UW/Alder/eaton_meter/pf'),
    db_model.Topic(10, 'UW/Alder/eaton_meter/pf_A'),
    db_model.Topic(9, 'UW/Alder/eaton_meter/pf_B'),
    db_model.Topic(13, 'UW/Alder/eaton_meter/pf_C'),
    db_model.Topic(1, 'UW/Alder/eaton_meter/VA'),
    db_model.Topic(16, 'UW/Alder/eaton_meter/VAR'),
    db_model.Topic(3, 'UW/Alder/eaton_meter/Voltage_AN'),
    db_model.Topic(7, 'UW/Alder/eaton_meter/Voltage_BN'),
    db_model.Topic(4, 'UW/Alder/eaton_meter/Voltage_CN'),
    db_model.Topic(14, 'UW/Alder/eaton_meter/W'),
    db_model.Topic(2, 'UW/Alder/eaton_meter/W_A'),
    db_model.Topic(18, 'UW/Alder/eaton_meter/W_B'),
    db_model.Topic(6, 'UW/Alder/eaton_meter/W_C')
]

ELM_TOPICS = [