예제 #1
0
def run_main(main_function, configuration_requirements=Namespace()):
    required_config = Namespace()
    required_config.add_option(
        'rule_system_class',
        doc='the fully qualified name of the RuleSystem class',
        default=RuleSystem,
        from_string_converter=class_converter,
    )
    required_config.update(logging_config)
    required_config.update(configuration_requirements)
    config = configuration(required_config)

    logging.basicConfig(level=config.logging_level,
                        format=config.logging_format)
    log_config(config)

    rule_system = config.rule_system_class(config)
    loop = asyncio.get_event_loop()
    loop.run_until_complete(rule_system.initialize())
    main_function(config, rule_system)
    loop.run_until_complete(rule_system.go())

    try:
        loop.run_forever()
    except KeyboardInterrupt:
        pass
예제 #2
0
    def test_basic_crashstorage(self):
        required_config = Namespace()

        mock_logging = mock.Mock()
        required_config.add_option("logger", default=mock_logging)
        required_config.update(CrashStorageBase.required_config)

        config_manager = ConfigurationManager(
            [required_config],
            app_name="testapp",
            app_version="1.0",
            app_description="app description",
            values_source_list=[{
                "logger": mock_logging
            }],
            argv_source=[],
        )

        with config_manager.context() as config:
            crashstorage = CrashStorageBase(config)
            crashstorage.save_raw_crash({}, "payload", "ooid")
            with pytest.raises(NotImplementedError):
                crashstorage.get_raw_crash("ooid")

            with pytest.raises(NotImplementedError):
                crashstorage.get_raw_dump("ooid")

            with pytest.raises(NotImplementedError):
                crashstorage.get_unredacted_processed("ooid")

            with pytest.raises(NotImplementedError):
                crashstorage.remove("ooid")

            crashstorage.close()
예제 #3
0
    def test_basic_crashstorage(self):

        required_config = Namespace()

        mock_logging = Mock()
        required_config.add_option("logger", default=mock_logging)
        required_config.update(CrashStorageBase.required_config)

        config_manager = ConfigurationManager(
            [required_config],
            app_name="testapp",
            app_version="1.0",
            app_description="app description",
            values_source_list=[{"logger": mock_logging}],
            argv_source=[],
        )

        with config_manager.context() as config:
            crashstorage = CrashStorageBase(config, quit_check_callback=fake_quit_check)
            crashstorage.save_raw_crash({}, "payload", "ooid")
            crashstorage.save_processed({})
            assert_raises(NotImplementedError, crashstorage.get_raw_crash, "ooid")
            assert_raises(NotImplementedError, crashstorage.get_raw_dump, "ooid")
            assert_raises(NotImplementedError, crashstorage.get_unredacted_processed, "ooid")
            assert_raises(NotImplementedError, crashstorage.remove, "ooid")
            eq_(crashstorage.new_crashes(), [])
            crashstorage.close()
예제 #4
0
    def test_basic_crashstorage(self):

        required_config = Namespace()

        mock_logging = Mock()
        required_config.add_option('logger', default=mock_logging)
        required_config.update(CrashStorageBase.required_config)

        config_manager = ConfigurationManager(
            [required_config],
            app_name='testapp',
            app_version='1.0',
            app_description='app description',
            values_source_list=[{
                'logger': mock_logging,
            }],
            argv_source=[])

        with config_manager.context() as config:
            crashstorage = CrashStorageBase(
                config, quit_check_callback=fake_quit_check)
            crashstorage.save_raw_crash({}, 'payload', 'ooid')
            crashstorage.save_processed({})
            assert_raises(NotImplementedError, crashstorage.get_raw_crash,
                          'ooid')
            assert_raises(NotImplementedError, crashstorage.get_raw_dump,
                          'ooid')
            assert_raises(NotImplementedError,
                          crashstorage.get_unredacted_processed, 'ooid')
            assert_raises(NotImplementedError, crashstorage.remove, 'ooid')
            eq_(crashstorage.new_crashes(), [])
            crashstorage.close()
예제 #5
0
    def test_benchmarking_crashstore(self):
        required_config = Namespace()

        mock_logging = Mock()
        required_config.add_option("logger", default=mock_logging)
        required_config.update(BenchmarkingCrashStorage.get_required_config())
        fake_crash_store = Mock()

        config_manager = ConfigurationManager(
            [required_config],
            app_name="testapp",
            app_version="1.0",
            app_description="app description",
            values_source_list=[
                {"logger": mock_logging, "wrapped_crashstore": fake_crash_store, "benchmark_tag": "test"}
            ],
            argv_source=[],
        )

        with config_manager.context() as config:
            crashstorage = BenchmarkingCrashStorage(config, quit_check_callback=fake_quit_check)
            crashstorage.start_timer = lambda: 0
            crashstorage.end_timer = lambda: 1
            fake_crash_store.assert_called_with(config, fake_quit_check)

            crashstorage.save_raw_crash({}, "payload", "ooid")
            crashstorage.wrapped_crashstore.save_raw_crash.assert_called_with({}, "payload", "ooid")
            mock_logging.debug.assert_called_with("%s save_raw_crash %s", "test", 1)
            mock_logging.debug.reset_mock()

            crashstorage.save_processed({})
            crashstorage.wrapped_crashstore.save_processed.assert_called_with({})
            mock_logging.debug.assert_called_with("%s save_processed %s", "test", 1)
            mock_logging.debug.reset_mock()

            crashstorage.get_raw_crash("uuid")
            crashstorage.wrapped_crashstore.get_raw_crash.assert_called_with("uuid")
            mock_logging.debug.assert_called_with("%s get_raw_crash %s", "test", 1)
            mock_logging.debug.reset_mock()

            crashstorage.get_raw_dump("uuid")
            crashstorage.wrapped_crashstore.get_raw_dump.assert_called_with("uuid")
            mock_logging.debug.assert_called_with("%s get_raw_dump %s", "test", 1)
            mock_logging.debug.reset_mock()

            crashstorage.get_raw_dumps("uuid")
            crashstorage.wrapped_crashstore.get_raw_dumps.assert_called_with("uuid")
            mock_logging.debug.assert_called_with("%s get_raw_dumps %s", "test", 1)
            mock_logging.debug.reset_mock()

            crashstorage.get_raw_dumps_as_files("uuid")
            crashstorage.wrapped_crashstore.get_raw_dumps_as_files.assert_called_with("uuid")
            mock_logging.debug.assert_called_with("%s get_raw_dumps_as_files %s", "test", 1)
            mock_logging.debug.reset_mock()

            crashstorage.get_unredacted_processed("uuid")
            crashstorage.wrapped_crashstore.get_unredacted_processed.assert_called_with("uuid")
            mock_logging.debug.assert_called_with("%s get_unredacted_processed %s", "test", 1)
            mock_logging.debug.reset_mock()
예제 #6
0
    def test_init(self):
        # This is a really basic test to make sure initialization works since
        # it can be used as a no-op class.
        required_config = Namespace()
        required_config.update(MetricsBase.required_config)

        config_manager = ConfigurationManager(
            [required_config],
            app_name='testapp',
            app_version='1.0',
            app_description='app description',
            values_source_list=[],
            argv_source=[]
        )

        with config_manager.context() as config:
            # Does it initialize without errors?
            metrics = MetricsBase(config)

            # Does it run capture_stats without errors?
            data_items = {'foo': 5}
            metrics.capture_stats(data_items)
    def test_basic_crashstorage(self):

        required_config = Namespace()

        mock_logging = Mock()
        required_config.add_option('logger', default=mock_logging)
        required_config.update(CrashStorageBase.required_config)

        config_manager = ConfigurationManager(
          [required_config],
          app_name='testapp',
          app_version='1.0',
          app_description='app description',
          values_source_list=[{
            'logger': mock_logging,
          }],
          argv_source=[]
        )

        with config_manager.context() as config:
            crashstorage = CrashStorageBase(
              config,
              quit_check_callback=fake_quit_check
            )
            crashstorage.save_raw_crash({}, 'payload', 'ooid')
            crashstorage.save_processed({})
            assert_raises(NotImplementedError,
                              crashstorage.get_raw_crash, 'ooid')
            assert_raises(NotImplementedError,
                              crashstorage.get_raw_dump, 'ooid')
            assert_raises(NotImplementedError,
                              crashstorage.get_unredacted_processed, 'ooid')
            assert_raises(NotImplementedError,
                              crashstorage.remove, 'ooid')
            eq_(crashstorage.new_crashes(), [])
            crashstorage.close()
예제 #8
0
    def test_benchmarking_crashstore(self):
        required_config = Namespace()

        mock_logging = Mock()
        required_config.add_option('logger', default=mock_logging)
        required_config.update(BenchmarkingCrashStorage.get_required_config())
        fake_crash_store = Mock()

        config_manager = ConfigurationManager(
          [required_config],
          app_name='testapp',
          app_version='1.0',
          app_description='app description',
          values_source_list=[{
            'logger': mock_logging,
            'wrapped_crashstore': fake_crash_store,
            'benchmark_tag': 'test'
          }],
          argv_source=[]
        )

        with config_manager.context() as config:
            crashstorage = BenchmarkingCrashStorage(
              config,
              quit_check_callback=fake_quit_check
            )
            crashstorage.start_timer = lambda: 0
            crashstorage.end_timer = lambda: 1
            fake_crash_store.assert_called_with(config, fake_quit_check)

            crashstorage.save_raw_crash({}, 'payload', 'ooid')
            crashstorage.wrapped_crashstore.save_raw_crash.assert_called_with(
                {},
                'payload',
                'ooid'
            )
            mock_logging.debug.assert_called_with(
                '%s save_raw_crash %s',
                'test',
                1
            )
            mock_logging.debug.reset_mock()

            crashstorage.save_processed({})
            crashstorage.wrapped_crashstore.save_processed.assert_called_with(
                {}
            )
            mock_logging.debug.assert_called_with(
                '%s save_processed %s',
                'test',
                1
            )
            mock_logging.debug.reset_mock()

            crashstorage.save_raw_and_processed({}, 'payload', {}, 'ooid')
            crashstorage.wrapped_crashstore.save_raw_and_processed \
                .assert_called_with(
                    {},
                    'payload',
                    {},
                    'ooid'
                )
            mock_logging.debug.assert_called_with(
                '%s save_raw_and_processed %s',
                'test',
                1
            )
            mock_logging.debug.reset_mock()

            crashstorage.get_raw_crash('uuid')
            crashstorage.wrapped_crashstore.get_raw_crash.assert_called_with(
                'uuid'
            )
            mock_logging.debug.assert_called_with(
                '%s get_raw_crash %s',
                'test',
                1
            )
            mock_logging.debug.reset_mock()

            crashstorage.get_raw_dump('uuid')
            crashstorage.wrapped_crashstore.get_raw_dump.assert_called_with(
                'uuid'
            )
            mock_logging.debug.assert_called_with(
                '%s get_raw_dump %s',
                'test',
                1
            )
            mock_logging.debug.reset_mock()

            crashstorage.get_raw_dumps('uuid')
            crashstorage.wrapped_crashstore.get_raw_dumps.assert_called_with(
                'uuid'
            )
            mock_logging.debug.assert_called_with(
                '%s get_raw_dumps %s',
                'test',
                1
            )
            mock_logging.debug.reset_mock()

            crashstorage.get_raw_dumps_as_files('uuid')
            crashstorage.wrapped_crashstore.get_raw_dumps_as_files \
                .assert_called_with(
                    'uuid'
                )
            mock_logging.debug.assert_called_with(
                '%s get_raw_dumps_as_files %s',
                'test',
                1
            )
            mock_logging.debug.reset_mock()

            crashstorage.get_unredacted_processed('uuid')
            crashstorage.wrapped_crashstore.get_unredacted_processed \
                .assert_called_with(
                    'uuid'
                )
            mock_logging.debug.assert_called_with(
                '%s get_unredacted_processed %s',
                'test',
                1
            )
            mock_logging.debug.reset_mock()
예제 #9
0
    def test_basic_crashstorage(self):

        required_config = Namespace()

        mock_logging = Mock()
        required_config.add_option('logger', default=mock_logging)
        required_config.update(CrashStorageBase.required_config)

        config_manager = ConfigurationManager(
          [required_config],
          app_name='testapp',
          app_version='1.0',
          app_description='app description',
          values_source_list=[{
            'logger': mock_logging,
          }],
          argv_source=[]
        )

        with config_manager.context() as config:
            crashstorage = CrashStorageBase(
              config,
              quit_check_callback=fake_quit_check
            )
            crashstorage.save_raw_crash({}, 'payload', 'ooid')
            crashstorage.save_processed({})
            assert_raises(NotImplementedError,
                              crashstorage.get_raw_crash, 'ooid')
            assert_raises(NotImplementedError,
                              crashstorage.get_raw_dump, 'ooid')
            assert_raises(NotImplementedError,
                              crashstorage.get_unredacted_processed, 'ooid')
            assert_raises(NotImplementedError,
                              crashstorage.remove, 'ooid')
            eq_(crashstorage.new_crashes(), [])
            crashstorage.close()

        with config_manager.context() as config:
            class MyCrashStorageTest(CrashStorageBase):
                def save_raw_crash(self, raw_crash, dumps, crash_id):
                    eq_(crash_id, "fake_id")
                    eq_(raw_crash, "fake raw crash")
                    eq_(
                        sorted(dumps.keys()),
                        sorted(['one', 'two', 'three'])
                    )
                    eq_(
                        sorted(dumps.values()),
                        sorted(['eins', 'zwei', 'drei'])
                    )

            values = ['eins', 'zwei', 'drei']

            def open_function(*args, **kwargs):
                return values.pop(0)

            crashstorage = MyCrashStorageTest(
                config,
                quit_check_callback=fake_quit_check
            )

            with mock.patch("__builtin__.open") as open_mock:
                open_mock.return_value = mock.MagicMock()
                open_mock.return_value.__enter__.return_value.read  \
                   .side_effect = open_function
                crashstorage.save_raw_crash_with_file_dumps(
                    "fake raw crash",
                    FileDumpsMapping({
                        'one': 'eins',
                        'two': 'zwei',
                        'three': 'drei'
                    }),
                    'fake_id'
                )
예제 #10
0
    def test_benchmarking_crashstore(self, caplogpp):
        caplogpp.set_level("DEBUG")

        required_config = Namespace()
        required_config.update(BenchmarkingCrashStorage.get_required_config())
        fake_crash_store = mock.Mock()

        config_manager = ConfigurationManager(
            [required_config],
            app_name="testapp",
            app_version="1.0",
            app_description="app description",
            values_source_list=[{
                "wrapped_crashstore": fake_crash_store,
                "benchmark_tag": "test"
            }],
            argv_source=[],
        )

        with config_manager.context() as config:
            crashstorage = BenchmarkingCrashStorage(config, namespace="")
            crashstorage.start_timer = lambda: 0
            crashstorage.end_timer = lambda: 1
            fake_crash_store.assert_called_with(config, namespace="")

            crashstorage.save_raw_crash({}, "payload", "ooid")
            crashstorage.wrapped_crashstore.save_raw_crash.assert_called_with(
                {}, "payload", "ooid")
            assert "test save_raw_crash 1" in [
                rec.message for rec in caplogpp.records
            ]
            caplogpp.clear()

            crashstorage.save_processed_crash({}, {})
            crashstorage.wrapped_crashstore.save_processed_crash.assert_called_with(
                {}, {})
            assert "test save_processed_crash 1" in [
                rec.message for rec in caplogpp.records
            ]
            caplogpp.clear()

            crashstorage.get_raw_crash("uuid")
            crashstorage.wrapped_crashstore.get_raw_crash.assert_called_with(
                "uuid")
            assert "test get_raw_crash 1" in [
                rec.message for rec in caplogpp.records
            ]
            caplogpp.clear()

            crashstorage.get_raw_dump("uuid")
            crashstorage.wrapped_crashstore.get_raw_dump.assert_called_with(
                "uuid")
            assert "test get_raw_dump 1" in [
                rec.message for rec in caplogpp.records
            ]
            caplogpp.clear()

            crashstorage.get_raw_dumps("uuid")
            crashstorage.wrapped_crashstore.get_raw_dumps.assert_called_with(
                "uuid")
            assert "test get_raw_dumps 1" in [
                rec.message for rec in caplogpp.records
            ]
            caplogpp.clear()

            crashstorage.get_raw_dumps_as_files("uuid")
            crashstorage.wrapped_crashstore.get_raw_dumps_as_files.assert_called_with(
                "uuid")
            assert "test get_raw_dumps_as_files 1" in [
                rec.message for rec in caplogpp.records
            ]
            caplogpp.clear()

            crashstorage.get_unredacted_processed("uuid")
            crashstorage.wrapped_crashstore.get_unredacted_processed.assert_called_with(
                "uuid")
            assert "test get_unredacted_processed 1" in [
                rec.message for rec in caplogpp.records
            ]
예제 #11
0
파일: thumper.py 프로젝트: mrstegeman/pywot
        value_source_fn=get_next_value,
    )


def run_server(config):
    logging.debug('run server')

    thumper = config.thumper_class(config)

    server = config.server.wot_server_class(config, [thumper],
                                            port=config.server.service_port)
    server.run()


if __name__ == '__main__':
    required_config = Namespace()
    required_config.server = Namespace()
    required_config.server.update(WoTServer.get_required_config())
    required_config.update(Thumper.get_required_config())
    required_config.seconds_between_polling.default = 10
    required_config.update(logging_config)
    config = configuration(required_config)
    logging.basicConfig(level=config.logging_level,
                        format=config.logging_format)
    log_config(config)

    thumper = Thumper(config)

    server = WoTServer(config, [thumper], port=config.server.service_port)
    server.run()
예제 #12
0
    def test_benchmarking_crashstore(self):
        required_config = Namespace()

        mock_logging = Mock()
        required_config.add_option('logger', default=mock_logging)
        required_config.update(BenchmarkingCrashStorage.get_required_config())
        fake_crash_store = Mock()

        config_manager = ConfigurationManager(
            [required_config],
            app_name='testapp',
            app_version='1.0',
            app_description='app description',
            values_source_list=[{
                'logger': mock_logging,
                'wrapped_crashstore': fake_crash_store,
                'benchmark_tag': 'test'
            }],
            argv_source=[])

        with config_manager.context() as config:
            crashstorage = BenchmarkingCrashStorage(
                config, quit_check_callback=fake_quit_check)
            crashstorage.start_timer = lambda: 0
            crashstorage.end_timer = lambda: 1
            fake_crash_store.assert_called_with(config, fake_quit_check)

            crashstorage.save_raw_crash({}, 'payload', 'ooid')
            crashstorage.wrapped_crashstore.save_raw_crash.assert_called_with(
                {}, 'payload', 'ooid')
            mock_logging.debug.assert_called_with('%s save_raw_crash %s',
                                                  'test', 1)
            mock_logging.debug.reset_mock()

            crashstorage.save_processed({})
            crashstorage.wrapped_crashstore.save_processed.assert_called_with(
                {})
            mock_logging.debug.assert_called_with('%s save_processed %s',
                                                  'test', 1)
            mock_logging.debug.reset_mock()

            crashstorage.save_raw_and_processed({}, 'payload', {}, 'ooid')
            crashstorage.wrapped_crashstore.save_raw_and_processed \
                .assert_called_with(
                    {},
                    'payload',
                    {},
                    'ooid'
                )
            mock_logging.debug.assert_called_with(
                '%s save_raw_and_processed %s', 'test', 1)
            mock_logging.debug.reset_mock()

            crashstorage.get_raw_crash('uuid')
            crashstorage.wrapped_crashstore.get_raw_crash.assert_called_with(
                'uuid')
            mock_logging.debug.assert_called_with('%s get_raw_crash %s',
                                                  'test', 1)
            mock_logging.debug.reset_mock()

            crashstorage.get_raw_dump('uuid')
            crashstorage.wrapped_crashstore.get_raw_dump.assert_called_with(
                'uuid')
            mock_logging.debug.assert_called_with('%s get_raw_dump %s', 'test',
                                                  1)
            mock_logging.debug.reset_mock()

            crashstorage.get_raw_dumps('uuid')
            crashstorage.wrapped_crashstore.get_raw_dumps.assert_called_with(
                'uuid')
            mock_logging.debug.assert_called_with('%s get_raw_dumps %s',
                                                  'test', 1)
            mock_logging.debug.reset_mock()

            crashstorage.get_raw_dumps_as_files('uuid')
            crashstorage.wrapped_crashstore.get_raw_dumps_as_files \
                .assert_called_with(
                    'uuid'
                )
            mock_logging.debug.assert_called_with(
                '%s get_raw_dumps_as_files %s', 'test', 1)
            mock_logging.debug.reset_mock()

            crashstorage.get_unredacted_processed('uuid')
            crashstorage.wrapped_crashstore.get_unredacted_processed \
                .assert_called_with(
                    'uuid'
                )
            mock_logging.debug.assert_called_with(
                '%s get_unredacted_processed %s', 'test', 1)
            mock_logging.debug.reset_mock()
    def test_benchmarking_crashstore(self, caplogpp):
        caplogpp.set_level('DEBUG')

        required_config = Namespace()
        required_config.update(BenchmarkingCrashStorage.get_required_config())
        fake_crash_store = mock.Mock()

        config_manager = ConfigurationManager(
            [required_config],
            app_name='testapp',
            app_version='1.0',
            app_description='app description',
            values_source_list=[{
                'wrapped_crashstore': fake_crash_store,
                'benchmark_tag': 'test'
            }],
            argv_source=[])

        with config_manager.context() as config:
            crashstorage = BenchmarkingCrashStorage(
                config, namespace='', quit_check_callback=fake_quit_check)
            crashstorage.start_timer = lambda: 0
            crashstorage.end_timer = lambda: 1
            fake_crash_store.assert_called_with(
                config, namespace='', quit_check_callback=fake_quit_check)

            crashstorage.save_raw_crash({}, 'payload', 'ooid')
            crashstorage.wrapped_crashstore.save_raw_crash.assert_called_with(
                {}, 'payload', 'ooid')
            assert 'test save_raw_crash 1' in [
                rec.message for rec in caplogpp.records
            ]
            caplogpp.clear()

            crashstorage.save_processed({})
            crashstorage.wrapped_crashstore.save_processed.assert_called_with(
                {})
            assert 'test save_processed 1' in [
                rec.message for rec in caplogpp.records
            ]
            caplogpp.clear()

            crashstorage.save_raw_and_processed({}, 'payload', {}, 'ooid')
            crashstorage.wrapped_crashstore.save_raw_and_processed.assert_called_with(
                {}, 'payload', {}, 'ooid')
            assert 'test save_raw_and_processed 1' in [
                rec.message for rec in caplogpp.records
            ]
            caplogpp.clear()

            crashstorage.get_raw_crash('uuid')
            crashstorage.wrapped_crashstore.get_raw_crash.assert_called_with(
                'uuid')
            assert 'test get_raw_crash 1' in [
                rec.message for rec in caplogpp.records
            ]
            caplogpp.clear()

            crashstorage.get_raw_dump('uuid')
            crashstorage.wrapped_crashstore.get_raw_dump.assert_called_with(
                'uuid')
            assert 'test get_raw_dump 1' in [
                rec.message for rec in caplogpp.records
            ]
            caplogpp.clear()

            crashstorage.get_raw_dumps('uuid')
            crashstorage.wrapped_crashstore.get_raw_dumps.assert_called_with(
                'uuid')
            assert 'test get_raw_dumps 1' in [
                rec.message for rec in caplogpp.records
            ]
            caplogpp.clear()

            crashstorage.get_raw_dumps_as_files('uuid')
            crashstorage.wrapped_crashstore.get_raw_dumps_as_files.assert_called_with(
                'uuid')
            assert 'test get_raw_dumps_as_files 1' in [
                rec.message for rec in caplogpp.records
            ]
            caplogpp.clear()

            crashstorage.get_unredacted_processed('uuid')
            crashstorage.wrapped_crashstore.get_unredacted_processed.assert_called_with(
                'uuid')
            assert 'test get_unredacted_processed 1' in [
                rec.message for rec in caplogpp.records
            ]
예제 #14
0
    def shutdown(self):
        if self.lingering_shutdown_task:
            logging.debug('lingering_shutdown_task is pending - canceling')
            self.lingering_shutdown_task.cancel()
            with contextlib.suppress(asyncio.CancelledError):
                asyncio.get_event_loop().run_until_complete(
                    self.lingering_shutdown_task)
        self._controller.shutdown()


if __name__ == '__main__':
    required_config = Namespace()
    required_config.server = Namespace()
    required_config.server.update(WoTServer.get_required_config())
    required_config.update(PelletStove.get_required_config())
    required_config.seconds_between_polling.default = 1
    required_config.update(logging_config)
    config = configuration(required_config)
    logging.basicConfig(level=config.logging_level,
                        format=config.logging_format)
    log_config(config)

    pellet_stove = PelletStove(config)

    server = WoTServer(config, [pellet_stove], port=config.server.service_port)
    server.run()

    pellet_stove.shutdown()

    logging.debug('done.')
예제 #15
0
    required_config.add_option(
        'line_width',
        default=1,
        doc='the stroke width of lines',
    )
    required_config.add_option(
        'plot_type',
        default='line',
        doc='line, dot, circle',
    )
    required_config.add_option(
        'circle_radius',
        default=10,
        doc='the radius of a circle in pixels',
    )
    required_config.update(box_count_required_config)
    required_config.add_option(
        'image_file',
        default='',
        is_argument=True,
        doc='name of an image file, any instance of "FD" is replaced with the fractal dimension',
    )

    config = configuration(required_config)

    image = plot_midi_as_image(
        config.midi_file_name,
        config.image_max_x,
        config.image_max_y,
        config.plot_type,
        config.line_width,
예제 #16
0
                else:
                    new_level = random.randint(0, 100)
                    if not self._lamp_hardware.get_lamp_state():
                        logging.info('meddlesome child turns the light on')
                        self._lamp_hardware.set_lamp_state(True)
                    logging.info('meddlesome child changes the dimmer to: %s', new_level)
                    self._lamp_hardware.set_lamp_level(new_level)
            except asyncio.CancelledError:
                break


if __name__ == '__main__':
    required_config = Namespace()
    required_config.server = Namespace()
    required_config.server.update(WoTServer.get_required_config())
    required_config.update(ExampleDimmableLight.get_required_config())
    required_config.seconds_between_polling.default = 1
    required_config.update(logging_config)
    config = configuration(required_config)
    logging.basicConfig(
        level=config.logging_level,
        format=config.logging_format
    )
    log_config(config)

    lamp_hardware = LampHardware()
    my_controllable_lamp = ExampleDimmableLight(config, lamp_hardware)

    meddlesome_child = MeddlesomeChild(lamp_hardware)

    server = WoTServer(
예제 #17
0
    def test_basic_crashstorage(self):

        required_config = Namespace()

        mock_logging = Mock()
        required_config.add_option('logger', default=mock_logging)
        required_config.update(CrashStorageBase.required_config)

        config_manager = ConfigurationManager(
            [required_config],
            app_name='testapp',
            app_version='1.0',
            app_description='app description',
            values_source_list=[{
                'logger': mock_logging,
            }],
            argv_source=[]
        )

        with config_manager.context() as config:
            crashstorage = CrashStorageBase(
                config,
                quit_check_callback=fake_quit_check
            )
            crashstorage.save_raw_crash({}, 'payload', 'ooid')
            crashstorage.save_processed({})
            with pytest.raises(NotImplementedError):
                crashstorage.get_raw_crash('ooid')

            with pytest.raises(NotImplementedError):
                crashstorage.get_raw_dump('ooid')

            with pytest.raises(NotImplementedError):
                crashstorage.get_unredacted_processed('ooid')

            with pytest.raises(NotImplementedError):
                crashstorage.remove('ooid')

            assert crashstorage.new_crashes() == []
            crashstorage.close()

        with config_manager.context() as config:
            class MyCrashStorageTest(CrashStorageBase):
                def save_raw_crash(self, raw_crash, dumps, crash_id):
                    assert crash_id == "fake_id"
                    assert raw_crash == "fake raw crash"
                    assert sorted(dumps.keys()) == sorted(['one', 'two', 'three'])
                    assert sorted(dumps.values()) == sorted(['eins', 'zwei', 'drei'])

            values = ['eins', 'zwei', 'drei']

            def open_function(*args, **kwargs):
                return values.pop(0)

            crashstorage = MyCrashStorageTest(
                config,
                quit_check_callback=fake_quit_check
            )

            with mock.patch("__builtin__.open") as open_mock:
                open_mock.return_value = mock.MagicMock()
                (
                    open_mock.return_value.__enter__
                    .return_value.read.side_effect
                ) = open_function
                crashstorage.save_raw_crash_with_file_dumps(
                    "fake raw crash",
                    FileDumpsMapping({
                        'one': 'eins',
                        'two': 'zwei',
                        'three': 'drei'
                    }),
                    'fake_id'
                )
예제 #18
0
    def test_basic_crashstorage(self):
        required_config = Namespace()

        mock_logging = mock.Mock()
        required_config.add_option("logger", default=mock_logging)
        required_config.update(CrashStorageBase.required_config)

        config_manager = ConfigurationManager(
            [required_config],
            app_name="testapp",
            app_version="1.0",
            app_description="app description",
            values_source_list=[{
                "logger": mock_logging
            }],
            argv_source=[],
        )

        with config_manager.context() as config:
            crashstorage = CrashStorageBase(
                config, quit_check_callback=fake_quit_check)
            crashstorage.save_raw_crash({}, "payload", "ooid")
            crashstorage.save_processed({})
            with pytest.raises(NotImplementedError):
                crashstorage.get_raw_crash("ooid")

            with pytest.raises(NotImplementedError):
                crashstorage.get_raw_dump("ooid")

            with pytest.raises(NotImplementedError):
                crashstorage.get_unredacted_processed("ooid")

            with pytest.raises(NotImplementedError):
                crashstorage.remove("ooid")

            assert crashstorage.new_crashes() == []
            crashstorage.close()

        with config_manager.context() as config:

            class MyCrashStorage(CrashStorageBase):
                def save_raw_crash(self, raw_crash, dumps, crash_id):
                    assert crash_id == "fake_id"
                    assert raw_crash == "fake raw crash"
                    assert sorted(dumps.keys()) == sorted(
                        ["one", "two", "three"])
                    assert sorted(dumps.values()) == sorted(
                        ["eins", "zwei", "drei"])

            values = ["eins", "zwei", "drei"]

            def open_function(*args, **kwargs):
                return values.pop(0)

            crashstorage = MyCrashStorage(config,
                                          quit_check_callback=fake_quit_check)

            with mock.patch(
                    "socorro.external.crashstorage_base.open") as open_mock:
                open_mock.return_value = mock.MagicMock()
                open_mock.return_value.__enter__.return_value.read.side_effect = (
                    open_function)
                crashstorage.save_raw_crash_with_file_dumps(
                    "fake raw crash",
                    FileDumpsMapping({
                        "one": "eins",
                        "two": "zwei",
                        "three": "drei"
                    }),
                    "fake_id",
                )
예제 #19
0
    required_config.server = Namespace()
    required_config.server.add_option(
        name='wot_server_class',
        default="pywot.WoTServer",
        doc="the fully qualified name of the WoT Server class",
        from_string_converter=class_converter)
    required_config.add_option(
        name="scene_thing_class",
        default=SceneThing,
        doc="the fully qualified name of the class that implents scene control",
        from_string_converter=class_converter)
    required_config.add_option(
        'things_gateway_auth_key',
        doc='the api key to access the Things Gateway',
        short_form="G",
        default='THINGS GATEWAY AUTH KEY',
    )
    required_config.update(logging_config)
    config = configuration(required_config)

    logging.basicConfig(level=config.logging_level,
                        format=config.logging_format)
    log_config(config)

    scene_thing = config.scene_thing_class(config)

    server = config.server.wot_server_class(config, [scene_thing],
                                            port=config.server.service_port)
    server.run()
    logging.debug('done.')
예제 #20
0
            tide_light_name_list.append(namespace_name_for_index)
            required_config[namespace_name_for_index] = Namespace()
            required_config[namespace_name_for_index].update(tide_light_config)

        def __repr__(self):
            return number_of_tide_lights

    return TideLightCollection()


# the definition of the number_of_tide_lights config parameter says that the function
# tide_config_setup should be used to convert any text input (from command line or
# config files) into the collection of nested namespaces representing each individual
# tide light.
base_required_config.add_option('number_of_tide_lights',
                                doc='how many tide lights to set up',
                                default="1",
                                short_form="n",
                                from_string_converter=tide_config_setup)
base_required_config.update(logging_config)

if __name__ == '__main__':

    config = configuration([base_required_config])
    logging.basicConfig(level=config.logging_level,
                        format=config.logging_format)
    log_config(config)

    event_loop = asyncio.get_event_loop()
    event_loop.run_until_complete(run_all_tide_lights(config))