def test_oneway(self): ctx = FContext("fooid") frame = utils.mock_frame(ctx) transport = FAsyncTransportImpl() response = yield transport.oneway(ctx, frame) self.assertIsNone(response) self.assertEqual(frame, transport._payload)
def test_request(self): ctx = FContext("fooid") frame = utils.mock_frame(ctx) transport = FAsyncTransportImpl(response=frame) response_transport = yield transport.request(ctx, frame) self.assertEqual(frame, response_transport.getvalue()) self.assertEqual(0, len(transport._futures)) self.assertEqual(frame, transport._payload)
def test_handle_response_unregistered_op_id(self): transport = FAsyncTransport() ctx1 = FContext() ctx2 = FContext() future = Future() transport._futures[str(ctx1._get_op_id())] = future yield transport.handle_response(utils.mock_frame(ctx2)) self.assertFalse(future.done())
def test_oneway_not_open(self): ctx = FContext("fooid") ctx.timeout = 10 frame = utils.mock_frame(ctx) transport = FAsyncTransportImpl(is_open=False) with self.assertRaises(TTransportException) as cm: yield transport.oneway(ctx, frame) self.assertEqual(TTransportExceptionType.NOT_OPEN, cm.exception.type) self.assertIsNone(transport._payload)
async def test_oneway_timeout(self): ctx = FContext("fooid") ctx.timeout = 10 frame = utils.mock_frame(ctx) transport = FAsyncTransportImpl(flush_wait=1) with self.assertRaises(TTransportException) as cm: await transport.oneway(ctx, frame) self.assertEqual(TTransportExceptionType.TIMED_OUT, cm.exception.type) self.assertEqual(frame, transport._payload)
async def test_request_response_timeout(self): ctx = FContext("fooid") frame = utils.mock_frame(ctx) transport = FAsyncTransportImpl() with self.assertRaises(TTransportException) as cm: await transport.request(ctx, frame) self.assertEqual(TTransportExceptionType.TIMED_OUT, cm.exception.type) self.assertEqual(0, len(transport._futures)) self.assertEqual(frame, transport._payload)
def test_oneway_size_exception(self): ctx = FContext("fooid") ctx.timeout = 10 frame = utils.mock_frame(ctx) transport = FAsyncTransportImpl(request_size_limit=1) with self.assertRaises(TTransportException) as cm: yield transport.oneway(ctx, frame) self.assertEqual(TTransportExceptionType.REQUEST_TOO_LARGE, cm.exception.type) self.assertIsNone(transport._payload)
async def test_request_not_open(self): ctx = FContext("fooid") ctx.timeout = 10 frame = utils.mock_frame(ctx) transport = FAsyncTransportImpl(is_open=False) with self.assertRaises(TTransportException) as cm: await transport.request(ctx, frame) self.assertEqual(TTransportExceptionType.NOT_OPEN, cm.exception.type) self.assertEqual(0, len(transport._futures)) self.assertIsNone(transport._payload)
def test_request_flush_timeout(self): ctx = FContext("fooid") ctx.timeout = 10 frame = utils.mock_frame(ctx) transport = FAsyncTransportImpl(flush_wait=1) with self.assertRaises(TTransportException) as cm: yield transport.request(ctx, frame) self.assertEqual(TTransportExceptionType.TIMED_OUT, cm.exception.type) self.assertEqual("request timed out", cm.exception.message) self.assertEqual(0, len(transport._futures)) self.assertEqual(frame, transport._payload)
def test_request_flush_exception(self): ctx = FContext("fooid") frame = utils.mock_frame(ctx) e = TTransportException(type=TTransportExceptionType.END_OF_FILE, message="oh no!") transport = FAsyncTransportImpl(e=e) with self.assertRaises(TTransportException) as cm: yield transport.request(ctx, frame) self.assertEqual(e, cm.exception) self.assertEqual(0, len(transport._futures)) self.assertEqual(frame, transport._payload)
async def test_request_pending(self): ctx = FContext("fooid") frame = utils.mock_frame(ctx) transport = FAsyncTransportImpl() with self.assertRaises(TTransportException) as cm: await gather(transport.request(ctx, frame), transport.request(ctx, frame)) self.assertEqual(TTransportExceptionType.UNKNOWN, cm.exception.type) self.assertEqual("request already in flight for context", cm.exception.message) # We still have one request pending self.assertEqual(1, len(transport._futures))