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)
def fake_worker_context(): """Patches client API libs in the worker context. Caller should addCleanup(mock.patch.stopall). """ fake_neutron_obj = mock.patch.object(neutron, 'Neutron', autospec=True).start() mock.patch.object(neutron, 'Neutron', return_value=fake_neutron_obj).start() fake_nova_obj = mock.patch.object(nova, 'Nova', autospec=True).start() mock.patch.object(nova, 'Nova', return_value=fake_nova_obj).start() return worker.WorkerContext()
def setUp(self): super(TestUpdateStateMachine, 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.worker_context = worker.WorkerContext() self.addCleanup(mock.patch.stopall)
def debug_one_router(args=sys.argv[1:]): main.register_and_load_opts() # Add our extra option for specifying the router-id to debug cfg.CONF.register_cli_opts([ cfg.StrOpt( 'router-id', required=True, help='The UUID for the router to debug', ), ]) cfg.CONF(args, project='akanda-rug') cfg.CONF.set_override('boot_timeout', 60000) logging.basicConfig( level=logging.DEBUG, format=':'.join( '%(' + n + ')s' for n in ['processName', 'threadName', 'name', 'levelname', 'message']), ) log = logging.getLogger(__name__) log.debug('Proxy settings: %r', os.getenv('no_proxy')) context = worker.WorkerContext() router_obj = context.neutron.get_router_detail(cfg.CONF.router_id) a = state.Automaton( router_id=cfg.CONF.router_id, tenant_id=router_obj.tenant_id, delete_callback=delete_callback, bandwidth_callback=bandwidth_callback, worker_context=context, queue_warning_threshold=100, reboot_error_threshold=1, ) a.send_message(Fake('update')) import pdb pdb.set_trace() a.update(context)
def test_global_debug_no_message_sent(self): self.dbapi.enable_global_debug() tenant_id = '98dd9c41-d3ac-4fd6-8927-567afa0b8fc3' resource_id = 'ac194fc5-f317-412e-8611-fb290629f624' msg = event.Event( resource=event.Resource(router.Router.RESOURCE_NAME, resource_id, tenant_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 = self.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 tenant id is being ignored, so the send_message() # method shouldn't ever be invoked. meth.side_effect = AssertionError('send_message was called') self.w.handle_message(tenant_id, msg)
def testDebugging(self): self.w._debug_routers = set(['ac194fc5-f317-412e-8611-fb290629f624']) 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 = self.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') self.w.handle_message(tenant_id, msg)
def setUp(self): super(TestUpdateStateMachine, self).setUp() self.worker_context = worker.WorkerContext()
def test_message_enqueued(self): self.w.handle_message(self.tenant_id, self.msg) trm = self.w.tenant_managers[self.tenant_id] sm = trm.get_state_machines(self.msg, worker.WorkerContext())[0] self.assertEqual(len(sm._queue), 1)
def setUp(self): super(TestResourceCache, self).setUp() self.resource_cache = worker.TenantResourceCache() self.worker_context = worker.WorkerContext()