def testRunWithRpcs(self): record = [] def foo(arg): record.append(arg) eventloop.queue_call(0.1, foo, 42) config = datastore_rpc.Configuration(on_completion=foo) rpc = self.conn.async_get(config, []) self.assertEqual(len(rpc.rpcs), 1) eventloop.queue_rpc(rpc) eventloop.run() self.assertEqual(record, [rpc.rpcs[0], 42]) self.assertEqual(rpc.state, 2) # TODO: Use apiproxy_rpc.RPC.FINISHING.
def testRunWithRpcs(self): apiproxy_stub_map.apiproxy = apiproxy_stub_map.APIProxyStubMap() stub = datastore_file_stub.DatastoreFileStub('_', None) apiproxy_stub_map.apiproxy.RegisterStub('datastore_v3', stub) record = [] def foo(arg): record.append(arg) eventloop.queue_call(0.1, foo, 42) conn = datastore_rpc.Connection() config = datastore_rpc.Configuration(on_completion=foo) rpc = conn.async_get(config, []) self.assertEqual(len(rpc.rpcs), 1) eventloop.queue_rpc(rpc) eventloop.run() self.assertEqual(record, [rpc.rpcs[0], 42]) self.assertEqual(rpc.state, 2) # TODO: Use apiproxy_rpc.RPC.FINISHING.
exc_info=(logging.getLogger().level <= logging.INFO)) self.set_exception(err, tb) return else: logging.debug('%s yielded %r', info, value) if isinstance(value, datastore_rpc.MultiRpc): # TODO: Tail recursion if the RPC is already complete. if len(value.rpcs) == 1: value = value.rpcs[0] # Fall through to next isinstance test. else: assert False # TODO: Support MultiRpc using MultiFuture. if isinstance(value, UserRPC): # TODO: Tail recursion if the RPC is already complete. eventloop.queue_rpc(value, self._on_rpc_completion, value, gen) return if isinstance(value, Future): # TODO: Tail recursion if the Future is already done. assert not self._next, self._next self._next = value self._geninfo = utils.gen_info(gen) logging.debug('%s is now blocked waiting for %s', self, value) value.add_callback(self._on_future_completion, value, gen) return if isinstance(value, (tuple, list)): # Arrange for yield to return a list of results (not Futures). info = 'multi-yield from ' + utils.gen_info(gen) mfut = MultiFuture(info) for subfuture in value: mfut.add_dependent(subfuture)