def test_load_domain_plugin_includes_all_domain_plugins(self): """ Using the :func:`MimicRoot.fromPlugin` creator for a :class:`MimicCore`, domain mocks implementing `class`:`IAPIDomainMock` are included. """ self.root = FilePath(self.mktemp()) self.root.createDirectory() plugin = b"""from mimic.test.dummy import ExampleDomainAPI dummy_domain_plugin = ExampleDomainAPI() """ self.root.child('fake_plugin.py').setContent(plugin) import mimic.plugins mimic.plugins.__path__.append(self.root.path) from mimic.plugins import fake_plugin def cleanup(): sys.modules.pop("mimic.plugins.fake_plugin") del mimic.plugins.fake_plugin self.addCleanup(cleanup) core = MimicCore.fromPlugins(Clock()) self.assertIn(fake_plugin.dummy_domain_plugin, core.domains)
def test_from_plugin_includes_all_plugins(self): """ Using the :func:`MimicRoot.fromPlugin` creator for a :class:`MimicCore`, the nova and loadbalancer plugins are included. """ core = MimicCore.fromPlugins(Clock()) plugin_apis = set(( glance_plugin.glance, loadbalancer_plugin.loadbalancer, loadbalancer_plugin.loadbalancer_control, maas_plugin.maas, maas_plugin.maas_control, nova_plugin.nova, nova_plugin.nova_control_api, queue_plugin.queue, rackconnect_v3_plugin.rackconnect, swift_plugin.swift, cloudfeeds_plugin.cloudfeeds, cloudfeeds_plugin.cloudfeeds_control, )) self.assertEqual(plugin_apis, set(core._uuid_to_api.values())) self.assertEqual( len(plugin_apis), len(list(core.entries_for_tenant('any_tenant', {}, 'http://mimic'))))
def test_load_domain_plugin_includes_all_domain_plugins(self): """ Using the :func:`MimicRoot.fromPlugin` creator for a :class:`MimicCore`, domain mocks implementing `class`:`IAPIDomainMock` are included. """ self.root = FilePath(self.mktemp()) self.root.createDirectory() plugin = b"""from mimic.test.dummy import ExampleDomainAPI dummy_domain_plugin = ExampleDomainAPI() """ self.root.child('fake_plugin.py').setContent(plugin) import mimic.plugins mimic.plugins.__path__.append(self.root.path) from mimic.plugins import fake_plugin def cleanup(): sys.modules.pop("mimic.plugins.fake_plugin") del mimic.plugins.fake_plugin self.addCleanup(cleanup) core = MimicCore.fromPlugins(Clock()) self.assertIn( fake_plugin.dummy_domain_plugin, core.domains )
def test_from_plugin_includes_all_plugins(self): """ Using the :func:`MimicRoot.fromPlugin` creator for a :class:`MimicCore`, the nova and loadbalancer plugins are included. """ core = MimicCore.fromPlugins(Clock()) plugin_apis = set(( glance_plugin.glance, loadbalancer_plugin.loadbalancer, loadbalancer_plugin.loadbalancer_control, maas_plugin.maas, maas_plugin.maas_control, nova_plugin.nova, nova_plugin.nova_control_api, queue_plugin.queue, rackconnect_v3_plugin.rackconnect, swift_plugin.swift, cloudfeeds_plugin.cloudfeeds, cloudfeeds_plugin.cloudfeeds_control, )) self.assertEqual( plugin_apis, set(core._uuid_to_api.values())) self.assertEqual( len(plugin_apis), len(list(core.entries_for_tenant('any_tenant', {}, 'http://mimic'))))
def test_from_plugin_includes_all_plugins(self): """ Using the :func:`MimicRoot.fromPlugin` creator for a :class:`MimicCore`, the nova and loadbalancer plugins are included. """ core = MimicCore.fromPlugins(Clock()) plugin_apis = set(( glance_plugin.glance, heat_plugin.heat, loadbalancer_plugin.loadbalancer, loadbalancer_plugin.loadbalancer_control, maas_plugin.maas, maas_plugin.maas_control, nova_plugin.nova, nova_plugin.nova_control_api, queue_plugin.queue, rackconnect_v3_plugin.rackconnect, swift_plugin.swift, cloudfeeds_plugin.cloudfeeds, cloudfeeds_plugin.cloudfeeds_control, neutron_plugin.neutron, dns_plugin.dns, cinder_plugin.cinder )) # all plugins should be on the internal listing self.assertEqual( plugin_apis, set(core._uuid_to_api_internal.values())) # the external listing should still be empty self.assertEqual( set([]), set(core._uuid_to_api_external.values()))
def makeService(config): """ Set up the otter-api service. """ s = MultiService() core = MimicCore.fromPlugins(Clock()) root = MimicRoot(core) site = Site(root.app.resource()) site.displayTracebacks = False service(config['listen'], site).setServiceParent(s) return s
def test_from_plugin_includes_all_plugins(self): """ Using the :func:`MimicRoot.fromPlugin` creator for a :class:`MimicCore`, the nova and loadbalancer plugins are included. """ core = MimicCore.fromPlugins(Clock()) self.assertEqual( set((nova_plugin.nova, loadbalancer_plugin.loadbalancer)), set(core._uuid_to_api.values())) self.assertEqual( 2, len(list(core.entries_for_tenant('any_tenant', {}, 'http://mimic'))))
def test_from_plugin_includes_all_plugins(self): """ Using the :func:`MimicRoot.fromPlugin` creator for a :class:`MimicCore`, the nova and loadbalancer plugins are included. """ core = MimicCore.fromPlugins(Clock()) self.assertEqual( set((nova_plugin.nova, loadbalancer_plugin.loadbalancer)), set(core.uri_prefixes.values())) self.assertEqual( 2, len(list(core.entries_for_tenant('any_tenant', {}, 'http://mimic'))))
def startMimic(): """ Setup the mimic application using steps similar to :obj:`mimic.tap.makeService' and start listening for requests. """ clock = Clock() core = MimicCore.fromPlugins(clock) root = MimicRoot(core, clock) site = Site(root.app.resource()) site.displayTracebacks = False endpoint = serverFromString(reactor, b"tcp:{0}:interface=127.0.0.1".format(_PORT)) endpoint.listen(site)
def makeService(config): """ Set up the otter-api service. """ s = MultiService() if config['realtime']: from twisted.internet import reactor as clock else: clock = Clock() core = MimicCore.fromPlugins(clock) root = MimicRoot(core, clock) site = get_site(root.app.resource(), logging=bool(config['verbose'])) service(config['listen'], site).setServiceParent(s) return s
def makeService(config): """ Set up the otter-api service. """ s = MultiService() if config['realtime']: from twisted.internet import reactor as clock else: clock = Clock() core = MimicCore.fromPlugins(clock) root = MimicRoot(core, clock) site = get_site(root.app.resource(), logging=bool(config['verbose'])) service(config['listen'], site).setServiceParent(s) return s
def test_from_plugin_includes_all_plugins(self): """ Using the :func:`MimicRoot.fromPlugin` creator for a :class:`MimicCore`, the nova and loadbalancer plugins are included. """ core = MimicCore.fromPlugins(Clock()) plugin_apis = set((nova_plugin.nova, loadbalancer_plugin.loadbalancer, swift_plugin.swift)) self.assertEqual( plugin_apis, set(core._uuid_to_api.values())) self.assertEqual( len(plugin_apis), len(list(core.entries_for_tenant('any_tenant', {}, 'http://mimic'))))
def makeService(config): """ Set up the otter-api service. """ s = MultiService() if config['realtime']: from twisted.internet import reactor as clock else: clock = Clock() core = MimicCore.fromPlugins(clock) root = MimicRoot(core, clock) site = Site(root.app.resource()) site.displayTracebacks = False service(config['listen'], site).setServiceParent(s) return s
def startMimic(): """ Setup the mimic application using steps similar to :obj:`mimic.tap.makeService' and start listening for requests. """ clock = Clock() core = MimicCore.fromPlugins(clock) root = MimicRoot(core, clock) site = Site(root.app.resource()) site.displayTracebacks = False endpoint = serverFromString( reactor, b"tcp:{0}:interface=127.0.0.1".format(_PORT) ) endpoint.listen(site)
def makeService(config): """ Set up the service. """ s = MultiService() if config['realtime']: from twisted.internet import reactor as clock else: clock = Clock() core = MimicCore.fromPlugins(clock) root = MimicRoot(core, clock) site = get_site(root.app.resource(), logging=bool(config['verbose'])) # The Twisted code currently (v16.6.0, 17.1.0) compares the type of # this argument to 'str' in order to determine how to handle it. description = str(config['listen']) service(description, site).setServiceParent(s) return s
def test_from_plugin_includes_all_plugins(self): """ Using the :func:`MimicRoot.fromPlugin` creator for a :class:`MimicCore`, the nova and loadbalancer plugins are included. """ core = MimicCore.fromPlugins(Clock()) plugin_apis = set( (glance_plugin.glance, heat_plugin.heat, loadbalancer_plugin.loadbalancer, loadbalancer_plugin.loadbalancer_control, maas_plugin.maas, maas_plugin.maas_control, nova_plugin.nova, nova_plugin.nova_control_api, queue_plugin.queue, rackconnect_v3_plugin.rackconnect, swift_plugin.swift, cloudfeeds_plugin.cloudfeeds, cloudfeeds_plugin.cloudfeeds_control, neutron_plugin.neutron, dns_plugin.dns, cinder_plugin.cinder)) # all plugins should be on the internal listing self.assertEqual(plugin_apis, set(core._uuid_to_api_internal.values())) # the external listing should still be empty self.assertEqual(set([]), set(core._uuid_to_api_external.values()))