Esempio n. 1
0
    def __init__(self, component_group_name):
        Generator.__init__(self, component_group_name)
        self.model_factory = {
            'HWPCReport': HWPCModel(),
            'PowerReport': PowerModel(),
            'FormulaReport': FormulaModel(),
            'ControlReport': ControlModel(),
        }

        self.db_factory = {
            'mongodb':
            lambda db_config: MongoDB(db_config['uri'], db_config['db'],
                                      db_config['collection']),
            'socket':
            lambda db_config: SocketDB(db_config['port']),
            'csv':
            lambda db_config: CsvDB(
                current_path=os.getcwd()
                if 'directory' not in db_config else db_config['directory'],
                files=[] if 'files' not in db_config else db_config['files']),
            'influxdb':
            lambda db_config: InfluxDB(db_config['uri'], db_config['port'],
                                       db_config['db']),
            'opentsdb':
            lambda db_config: OpenTSDB(db_config['uri'], db_config['port'],
                                       db_config['metric_name']),
        }
def test_run_with_delay_between_message(unused_tcp_port, database, supervisor):
    """
    run the same test but set a delay of 1s after sendig the 5th first messages
    """
    # Pusher
    output_mongodb = MongoDB(DB_URI, 'MongoDB1', 'test_result')
    pusher = PusherActor("pusher_mongodb",
                         PowerModel(),
                         output_mongodb,
                         level_logger=LOG_LEVEL,
                         max_size=0)

    # Formula
    formula_factory = (lambda name, verbose: DummyFormulaActor(
        name, {'my_pusher': pusher}, level_logger=verbose))

    # Dispatcher
    route_table = RouteTable()
    route_table.dispatch_rule(
        HWPCReport,
        HWPCDispatchRule(getattr(HWPCDepthLevel, 'SOCKET'), primary=True))

    dispatcher = DispatcherActor('dispatcher',
                                 formula_factory,
                                 route_table,
                                 level_logger=LOG_LEVEL)

    # Puller
    input_socket = SocketDB(unused_tcp_port)
    report_filter = Filter()
    report_filter.filter(lambda msg: True, dispatcher)
    puller = PullerActor("puller_socket",
                         input_socket,
                         report_filter,
                         HWPCModel(),
                         level_logger=LOG_LEVEL,
                         stream_mode=True)
    supervisor.launch_actor(pusher)
    supervisor.launch_actor(dispatcher)
    supervisor.launch_actor(puller)
    time.sleep(1)
    json_reports = extract_json_report(10)
    client = ClientThreadDelay(json_reports, unused_tcp_port)
    client.start()
    time.sleep(2)
    check_db()
Esempio n. 3
0
    def __init__(self, component_group_name):
        Generator.__init__(self, component_group_name)
        self.model_factory = {
            'HWPCReport': HWPCModel(),
            'PowerReport': PowerModel(),
            'FormulaReport': FormulaModel(),
            'ControlReport': ControlModel(),
        }

        self.db_factory = {
            'mongodb':
            lambda db_config, _: MongoDB(db_config['uri'], db_config['db'],
                                         db_config['collection']),
            'socket':
            lambda db_config, _: SocketDB(db_config['port']),
            'csv':
            lambda db_config, _: CsvDB(
                current_path=os.getcwd()
                if 'directory' not in db_config else db_config['directory'],
                files=[] if 'files' not in db_config else db_config['files']),
            'influxdb':
            lambda db_config, _: InfluxDB(db_config['uri'], db_config['port'],
                                          db_config['db']),
            'opentsdb':
            lambda db_config, _: OpenTSDB(db_config['uri'], db_config['port'],
                                          db_config['metric_name']),
            'prom':
            lambda db_config, _: PrometheusDB(
                db_config['port'], db_config['addr'], db_config['metric_name'],
                db_config['metric_description'], self.model_factory[db_config[
                    'model']], db_config['aggregation_period']),
            'tcp':
            lambda db_config, group_name: IOTcpDB(db_config['uri'],
                                                  db_config['port'],
                                                  input=(group_name == "input")
                                                  )
        }
Esempio n. 4
0
async def socket_db(unused_tcp_port):
    socket_db = SocketDB(HWPCReport, unused_tcp_port)
    await socket_db.connect()
    yield socket_db
    await socket_db.stop()