def inject_plugin_into_working_set(plugin_id, plugin): class FakeEntryPoint(EntryPoint): def load(self, *args, **kwargs): return plugin entry_point = FakeEntryPoint.parse(plugin_id + ' = dummy_module:DummyPlugin') dist = Distribution(version='1.0') dist._ep_map = {'mailqueue.plugins': {plugin_id: entry_point}} entry_point.dist = dist working_set = app_helpers._working_set working_set.add(dist, plugin_id) return working_set
def test_loading_external_storage_implementation(): try: distribution = Distribution(os.path.join( os.path.dirname(__file__), "fixtures")) entry_point = EntryPoint.parse( 'scheduling = fake_storage:MySchedulingStorage', dist=distribution) distribution._ep_map = { 'chaosplatform.storage': {'scheduling': entry_point}} working_set.add(distribution) storage = initialize_storage(config={"db":{"uri": "sqlite:///"}}) assert storage.__class__.__name__ == "MySchedulingStorage" assert storage.some_flag == True shutdown_storage(storage) assert storage.some_flag == False finally: distribution._ep_map.clear()