def test_failed_acquire_one_retry_only(self): self.m.StubOutWithMock(db_api, "stack_lock_create") db_api.stack_lock_create(self.stack.id, self.engine_id).\ AndReturn("fake-engine-id") topic = self.stack.id self.m.StubOutWithMock(proxy.RpcProxy, "call") rpc = proxy.RpcProxy(topic, "1.0") rpc.call(self.context, rpc.make_msg("listening"), timeout=2, topic="fake-engine-id").AndRaise(rpc_common.Timeout) self.m.StubOutWithMock(db_api, "stack_lock_steal") db_api.stack_lock_steal(self.stack.id, "fake-engine-id", self.engine_id).\ AndReturn(True) db_api.stack_lock_create(self.stack.id, self.engine_id).\ AndReturn("fake-engine-id") topic = self.stack.id rpc = proxy.RpcProxy(topic, "1.0") rpc.call(self.context, rpc.make_msg("listening"), timeout=2, topic="fake-engine-id").AndRaise(rpc_common.Timeout) db_api.stack_lock_steal(self.stack.id, "fake-engine-id", self.engine_id).\ AndReturn(True) self.m.ReplayAll() slock = stack_lock.StackLock(self.context, self.stack, self.engine_id) self.assertRaises(exception.ActionInProgress, slock.acquire) self.m.VerifyAll()
def test_successful_acquire_with_retry(self): self.m.StubOutWithMock(db_api, "stack_lock_create") db_api.stack_lock_create(self.stack.id, self.engine_id).\ AndReturn("fake-engine-id") topic = self.stack.id self.m.StubOutWithMock(proxy.RpcProxy, "call") rpc = proxy.RpcProxy(topic, "1.0") rpc.call(self.context, rpc.make_msg("listening"), timeout=2, topic="fake-engine-id").AndRaise(rpc_common.Timeout) self.m.StubOutWithMock(db_api, "stack_lock_steal") db_api.stack_lock_steal(self.stack.id, "fake-engine-id", self.engine_id).\ AndReturn(True) db_api.stack_lock_create(self.stack.id, self.engine_id).\ AndReturn("fake-engine-id") topic = self.stack.id rpc = proxy.RpcProxy(topic, "1.0") rpc.call(self.context, rpc.make_msg("listening"), timeout=2, topic="fake-engine-id").AndRaise(rpc_common.Timeout) db_api.stack_lock_steal(self.stack.id, "fake-engine-id", self.engine_id).\ AndReturn(None) self.m.ReplayAll() slock = stack_lock.StackLock(self.context, self.stack, self.engine_id) slock.acquire() self.m.VerifyAll()
def remote_stop(lock_engine_id): rpc = proxy.RpcProxy(lock_engine_id, "1.0") msg = rpc.make_msg("stop_stack", stack_identity=stack_identity) timeout = cfg.CONF.engine_life_check_timeout try: rpc.call(cnxt, msg, topic=lock_engine_id, timeout=timeout) except rpc_common.Timeout: return False
def engine_alive(context, engine_id): topic = engine_id rpc = proxy.RpcProxy(topic, "1.0") msg = rpc.make_msg("listening") try: return rpc.call(context, msg, topic=topic, timeout=cfg.CONF.engine_life_check_timeout) except rpc_common.Timeout: return False
def test_failed_acquire_existing_lock_engine_alive(self): self.m.StubOutWithMock(db_api, "stack_lock_create") db_api.stack_lock_create(self.stack.id, self.engine_id).\ AndReturn("fake-engine-id") topic = self.stack.id self.m.StubOutWithMock(proxy.RpcProxy, "call") rpc = proxy.RpcProxy(topic, "1.0") rpc.call(self.context, rpc.make_msg("listening"), timeout=2, topic="fake-engine-id").AndReturn(True) self.m.ReplayAll() slock = stack_lock.StackLock(self.context, self.stack, self.engine_id) self.assertRaises(rpc_common.ClientException, slock.acquire) self.m.VerifyAll()