Example #1
0
    def setUp(self):
        super(WorkerTestBase, self).setUp()
        cfg.CONF.boot_timeout = 1
        cfg.CONF.akanda_mgt_service_port = 5000
        cfg.CONF.max_retries = 3
        cfg.CONF.management_prefix = 'fdca:3ba5:a17a:acda::/64'
        cfg.CONF.num_worker_threads = 0

        self.fake_nova = mock.patch('akanda.rug.worker.nova').start()
        fake_neutron_obj = mock.patch.object(
            neutron, 'Neutron', autospec=True).start()
        fake_neutron_obj.get_ports_for_instance.return_value = (
            'mgt_port', ['ext_port', 'int_port'])
        fake_neutron_obj.get_router_for_tenant.return_value = (
            FakeFetchedResource())
        self.fake_neutron = mock.patch.object(
            neutron, 'Neutron', return_value=fake_neutron_obj).start()

        self.w = worker.Worker(mock.Mock())
        self.addCleanup(mock.patch.stopall)

        self.target = self.tenant_id
        r = event.Resource(
            tenant_id=self.tenant_id,
            id=self.router_id,
            driver=router.Router.RESOURCE_NAME,
        )
        self.msg = event.Event(
            resource=r,
            crud=event.CREATE,
            body={'key': 'value'},
        )
Example #2
0
    def setUp(self):
        super(TestWildcardMessages, self).setUp()

        self.conf = mock.patch.object(vm_manager.cfg, 'CONF').start()
        self.conf.boot_timeout = 1
        self.conf.akanda_mgt_service_port = 5000
        self.conf.max_retries = 3
        self.conf.management_prefix = 'fdca:3ba5:a17a:acda::/64'

        mock.patch('akanda.rug.worker.nova').start()
        mock.patch('akanda.rug.worker.quantum').start()

        self.addCleanup(mock.patch.stopall)

        self.w = worker.Worker(0, mock.Mock())
        # Create some tenants
        for msg in [
                event.Event(
                    tenant_id='98dd9c41-d3ac-4fd6-8927-567afa0b8fc3',
                    router_id='ABCD',
                    crud=event.CREATE,
                    body={'key': 'value'},
                ),
                event.Event(
                    tenant_id='ac194fc5-f317-412e-8611-fb290629f624',
                    router_id='EFGH',
                    crud=event.CREATE,
                    body={'key': 'value'},
                )
        ]:
            self.w.handle_message(msg.tenant_id, msg)
Example #3
0
    def testIgnoring(self):
        tmpdir = tempfile.mkdtemp()
        fullname = os.path.join(tmpdir, 'ac194fc5-f317-412e-8611-fb290629f624')
        with open(fullname, 'a'):
            os.utime(fullname, None)
        self.addCleanup(lambda: os.unlink(fullname) and os.rmdir(tmpdir))
        w = worker.Worker(0, mock.Mock(), ignore_directory=tmpdir)

        tenant_id = '98dd9c41-d3ac-4fd6-8927-567afa0b8fc3'
        router_id = 'ac194fc5-f317-412e-8611-fb290629f624'
        msg = event.Event(
            tenant_id=tenant_id,
            router_id=router_id,
            crud=event.CREATE,
            body={'key': 'value'},
        )
        # Create the router manager and state machine so we can
        # replace the send_message() method with a mock.
        trm = w._get_trms(tenant_id)[0]
        sm = trm.get_state_machines(msg, worker.WorkerContext())[0]
        with mock.patch.object(sm, 'send_message') as meth:
            # The router id is being ignored, so the send_message()
            # method shouldn't ever be invoked.
            meth.side_effect = AssertionError('send_message was called')
            w.handle_message(tenant_id, msg)
Example #4
0
 def test(self):
     w = worker.Worker(0, mock.Mock())
     tenant_id = '98dd9c41-d3ac-4fd6-8927-567afa0b8fc3'
     router_id = 'ac194fc5-f317-412e-8611-fb290629f624'
     msg = event.Event(
         tenant_id=tenant_id,
         router_id=router_id,
         crud=event.CREATE,
         body={'key': 'value'},
     )
     # Create the router manager and state machine so we can
     # replace the update() method with a mock.
     trm = w._get_trms(tenant_id)[0]
     sm = trm.get_state_machines(msg, self.worker_context)[0]
     with mock.patch.object(sm, 'update') as meth:
         w.handle_message(tenant_id, msg)
         # Add a null message so the worker loop will exit. We have
         # to do this directly, because if we do it through
         # handle_message() that triggers shutdown logic that keeps
         # the loop from working properly.
         w.work_queue.put(None)
         # We aren't using threads (and we trust that threads do
         # work) so we just invoke the thread target ourselves to
         # pretend.
         used_context = w._thread_target()
         meth.assert_called_once_with(used_context)
Example #5
0
    def setUp(self):
        super(TestCreatingRouter, self).setUp()

        self.conf = mock.patch.object(vm_manager.cfg, 'CONF').start()
        self.conf.boot_timeout = 1
        self.conf.akanda_mgt_service_port = 5000
        self.conf.max_retries = 3
        self.conf.management_prefix = 'fdca:3ba5:a17a:acda::/64'

        mock.patch('akanda.rug.worker.nova').start()
        mock.patch('akanda.rug.worker.quantum').start()

        self.addCleanup(mock.patch.stopall)

        self.w = worker.Worker(0, mock.Mock())
        self.tenant_id = '98dd9c41-d3ac-4fd6-8927-567afa0b8fc3'
        self.router_id = 'ac194fc5-f317-412e-8611-fb290629f624'
        self.hostname = 'akanda'
        self.msg = event.Event(
            tenant_id=self.tenant_id,
            router_id=self.router_id,
            crud=event.CREATE,
            body={'key': 'value'},
        )
        self.w.handle_message(self.tenant_id, self.msg)
Example #6
0
 def test_stop_threads(self):
     self.w = worker.Worker(1, mock.Mock())
     original_queue = self.w.work_queue
     self.assertTrue(self.w._keep_going)
     self.w._shutdown()
     self.assertFalse(self.w._keep_going)
     new_queue = self.w.work_queue
     self.assertIsNot(original_queue, new_queue)
Example #7
0
 def testWithIgnores(self):
     tmpdir = tempfile.mkdtemp()
     fullname = os.path.join(tmpdir, 'this-router-id')
     with open(fullname, 'a'):
         os.utime(fullname, None)
     self.addCleanup(lambda: os.unlink(fullname) and os.rmdir(tmpdir))
     w = worker.Worker(0, mock.Mock(), ignore_directory=tmpdir)
     ignored = w._get_routers_to_ignore()
     self.assertEqual(set(['this-router-id']), ignored)
Example #8
0
 def test_handle_message_report_status(self):
     self.w = worker.Worker(0, mock.Mock())
     with mock.patch('akanda.rug.worker.cfg.CONF') as conf:
         self.w.handle_message(
             'debug',
             event.Event('*', '', event.COMMAND,
                         {'payload': {
                             'command': commands.WORKERS_DEBUG
                         }}))
         self.assertTrue(conf.log_opt_values.called)
Example #9
0
 def test_report_status_dispatched(self):
     self.w = worker.Worker(0, mock.Mock())
     with mock.patch.object(self.w, 'report_status') as meth:
         self.w.handle_message(
             'debug',
             event.Event('*', '', event.COMMAND,
                         {'payload': {
                             'command': commands.WORKERS_DEBUG
                         }}))
         meth.assert_called_once_with()
Example #10
0
 def testManage(self):
     w = worker.Worker(0, mock.Mock())
     w._debug_routers = set(['this-router-id'])
     w.handle_message(
         '*',
         event.Event(
             '*', '', event.COMMAND, {
                 'payload': {
                     'command': commands.ROUTER_MANAGE,
                     'router_id': 'this-router-id'
                 }
             }),
     )
     self.assertEqual(set(), w._debug_routers)
Example #11
0
    def setUp(self):
        super(TestConfigReload, self).setUp()

        self.conf = mock.patch.object(worker.cfg, 'CONF').start()
        self.conf.boot_timeout = 1
        self.conf.akanda_mgt_service_port = 5000
        self.conf.max_retries = 3
        self.conf.management_prefix = 'fdca:3ba5:a17a:acda::/64'

        mock.patch('akanda.rug.worker.nova').start()
        mock.patch('akanda.rug.worker.quantum').start()

        self.w = worker.Worker(0, mock.Mock())

        self.addCleanup(mock.patch.stopall)
Example #12
0
 def test_stop_threads_notifier(self, producer, exchange, broker):
     notifier = notifications.Publisher('topic')
     w = worker.Worker(notifier)
     self.assertTrue(notifier)
     w._shutdown()
     self.assertFalse(w.notifier._t)
Example #13
0
 def testNoIgnores(self):
     tmpdir = tempfile.mkdtemp()
     self.addCleanup(lambda: os.rmdir(tmpdir))
     w = worker.Worker(0, mock.Mock(), ignore_directory=tmpdir)
     ignored = w._get_routers_to_ignore()
     self.assertEqual(set(), ignored)
Example #14
0
 def testNoIgnorePath(self):
     w = worker.Worker(0, mock.Mock(), ignore_directory=None)
     ignored = w._get_routers_to_ignore()
     self.assertEqual(set(), ignored)
Example #15
0
 def test_stop_threads_notifier(self, producer, exchange, broker):
     notifier = notifications.Publisher('url', 'quantum', 'topic')
     self.w = worker.Worker(0, notifier)
     self.assertTrue(self.w.notifier._t)
     self.w._shutdown()
     self.assertFalse(self.w.notifier._t)
Example #16
0
 def test_shutdown_on_null_message(self):
     self.w = worker.Worker(0, mock.Mock())
     with mock.patch.object(self.w, '_shutdown') as meth:
         self.w.handle_message(None, None)
         meth.assert_called_once_with()