def setUp(self): super(CloudTestCase, self).setUp() self.flags(fake_libvirt=True, fake_storage=True, fake_users=True) self.conn = rpc.Connection.instance() logging.getLogger().setLevel(logging.DEBUG) # set up our cloud self.cloud = cloud.CloudController() self.cloud_consumer = rpc.AdapterConsumer(connection=self.conn, topic=FLAGS.cloud_topic, proxy=self.cloud) self.injected.append(self.cloud_consumer.attach_to_tornado(self.ioloop)) # set up a node self.node = node.Node() self.node_consumer = rpc.AdapterConsumer(connection=self.conn, topic=FLAGS.compute_topic, proxy=self.node) self.injected.append(self.node_consumer.attach_to_tornado(self.ioloop)) try: users.UserManager.instance().create_user('admin', 'admin', 'admin') except: pass admin = users.UserManager.instance().get_user('admin') project = users.UserManager.instance().create_project('proj', 'admin', 'proj') self.context = api.APIRequestContext(handler=None,project=project,user=admin)
def test_nested_calls(self): """Test that we can do an rpc.call inside another call""" class Nested(object): @staticmethod def echo(context, queue, value): """Calls echo in the passed queue""" LOG.debug(_("Nested received %(queue)s, %(value)s") % locals()) ret = rpc.call(context, queue, { "method": "echo", "args": { "value": value } }) LOG.debug(_("Nested return %s"), ret) return value nested = Nested() conn = rpc.Connection.instance(True) consumer = rpc.AdapterConsumer(connection=conn, topic='nested', proxy=nested) consumer.attach_to_eventlet() value = 42 result = rpc.call(self.context, 'nested', { "method": "echo", "args": { "queue": "test", "value": value } }) self.assertEqual(value, result)
def test_create(self): host = 'foo' binary = 'nova-fake' topic = 'fake' # NOTE(vish): Create was moved out of mox replay to make sure that # the looping calls are created in StartService. app = service.Service.create(host=host, binary=binary) self.mox.StubOutWithMock(rpc, 'AdapterConsumer', use_mock_anything=True) rpc.AdapterConsumer(connection=mox.IgnoreArg(), topic=topic, proxy=mox.IsA(service.Service)).AndReturn( rpc.AdapterConsumer) rpc.AdapterConsumer(connection=mox.IgnoreArg(), topic='%s.%s' % (topic, host), proxy=mox.IsA(service.Service)).AndReturn( rpc.AdapterConsumer) rpc.AdapterConsumer.attach_to_eventlet() rpc.AdapterConsumer.attach_to_eventlet() service_create = {'host': host, 'binary': binary, 'topic': topic, 'report_count': 0, 'availability_zone': 'nova'} service_ref = {'host': host, 'binary': binary, 'report_count': 0, 'id': 1} service.db.service_get_by_args(mox.IgnoreArg(), host, binary).AndRaise(exception.NotFound()) service.db.service_create(mox.IgnoreArg(), service_create).AndReturn(service_ref) self.mox.ReplayAll() app.start() app.stop() self.assert_(app)
def setUp(self): super(RpcTestCase, self).setUp() self.conn = rpc.Connection.instance(True) self.receiver = TestReceiver() self.consumer = rpc.AdapterConsumer(connection=self.conn, topic='test', proxy=self.receiver) self.consumer.attach_to_eventlet() self.context = context.get_admin_context()
def start(self): vcs_string = version.version_string_with_vcs() logging.audit(_("Starting %(topic)s node (version %(vcs_string)s)"), {'topic': self.topic, 'vcs_string': vcs_string}) self.manager.init_host() self.model_disconnected = False ctxt = context.get_admin_context() try: service_ref = db.service_get_by_args(ctxt, self.host, self.binary) self.service_id = service_ref['id'] except exception.NotFound: self._create_service_ref(ctxt) if 'nova-compute' == self.binary: self.manager.update_available_resource(ctxt) conn1 = rpc.Connection.instance(new=True) conn2 = rpc.Connection.instance(new=True) if self.report_interval: consumer_all = rpc.AdapterConsumer( connection=conn1, topic=self.topic, proxy=self) consumer_node = rpc.AdapterConsumer( connection=conn2, topic='%s.%s' % (self.topic, self.host), proxy=self) self.timers.append(consumer_all.attach_to_eventlet()) self.timers.append(consumer_node.attach_to_eventlet()) pulse = utils.LoopingCall(self.report_state) pulse.start(interval=self.report_interval, now=False) self.timers.append(pulse) if self.periodic_interval: periodic = utils.LoopingCall(self.periodic_tasks) periodic.start(interval=self.periodic_interval, now=False) self.timers.append(periodic)
def setUp(self): super(AdminTestCase, self).setUp() self.flags(fake_libvirt=True, fake_rabbit=True) self.conn = rpc.Connection.instance() logging.getLogger().setLevel(logging.INFO) # set up our cloud self.cloud = cloud.CloudController() self.cloud_consumer = rpc.AdapterConsumer(connection=self.conn, topic=FLAGS.cloud_topic, proxy=self.cloud) self.injected.append(self.cloud_consumer.attach_to_tornado( self.ioloop)) # set up a node self.node = node.Node() self.node_consumer = rpc.AdapterConsumer(connection=self.conn, topic=FLAGS.compute_topic, proxy=self.node) self.injected.append(self.node_consumer.attach_to_tornado(self.ioloop))