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
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()
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()
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()
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()
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()
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_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' )
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 ]
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()
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 ]
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.')
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,
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(
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' )
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", )
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.')
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))