more blob exchange tests
This commit is contained in:
parent
aa417f5410
commit
357ce881a6
2 changed files with 36 additions and 3 deletions
|
@ -132,12 +132,12 @@ class BlobServerProtocol(asyncio.Protocol):
|
||||||
except JSONDecodeError:
|
except JSONDecodeError:
|
||||||
log.error("request from %s is not valid json (%i bytes): %s", self.peer_address_and_port,
|
log.error("request from %s is not valid json (%i bytes): %s", self.peer_address_and_port,
|
||||||
len(self.buf + data), '' if not data else binascii.hexlify(self.buf + data).decode())
|
len(self.buf + data), '' if not data else binascii.hexlify(self.buf + data).decode())
|
||||||
self.transport.close()
|
self.close()
|
||||||
return
|
return
|
||||||
if not request:
|
if not request.requests:
|
||||||
log.error("failed to decode request from %s (%i bytes): %s", self.peer_address_and_port,
|
log.error("failed to decode request from %s (%i bytes): %s", self.peer_address_and_port,
|
||||||
len(self.buf + data), '' if not data else binascii.hexlify(self.buf + data).decode())
|
len(self.buf + data), '' if not data else binascii.hexlify(self.buf + data).decode())
|
||||||
self.transport.close()
|
self.close()
|
||||||
return
|
return
|
||||||
self.loop.create_task(self.handle_request(request))
|
self.loop.create_task(self.handle_request(request))
|
||||||
|
|
||||||
|
|
|
@ -274,3 +274,36 @@ class TestBlobExchange(BlobExchangeTestBase):
|
||||||
self.assertFalse(called.is_set())
|
self.assertFalse(called.is_set())
|
||||||
protocol.data_received(b'0')
|
protocol.data_received(b'0')
|
||||||
self.assertTrue(called.is_set())
|
self.assertTrue(called.is_set())
|
||||||
|
|
||||||
|
def test_bad_json(self):
|
||||||
|
protocol = BlobServerProtocol(self.loop, self.server_blob_manager, 'bQEaw42GXsgCAGio1nxFncJSyRmnztSCjP')
|
||||||
|
called = asyncio.Event()
|
||||||
|
protocol.close = called.set
|
||||||
|
protocol.data_received(b'{{0}')
|
||||||
|
self.assertTrue(called.is_set())
|
||||||
|
|
||||||
|
def test_no_request(self):
|
||||||
|
protocol = BlobServerProtocol(self.loop, self.server_blob_manager, 'bQEaw42GXsgCAGio1nxFncJSyRmnztSCjP')
|
||||||
|
called = asyncio.Event()
|
||||||
|
protocol.close = called.set
|
||||||
|
protocol.data_received(b'{}')
|
||||||
|
self.assertTrue(called.is_set())
|
||||||
|
|
||||||
|
async def test_transfer_timeout(self):
|
||||||
|
self.server.transfer_timeout = 1
|
||||||
|
|
||||||
|
blob_hash = "7f5ab2def99f0ddd008da71db3a3772135f4002b19b7605840ed1034c8955431bd7079549e65e6b2a3b9c17c773073ed"
|
||||||
|
mock_blob_bytes = b'1' * ((2 * 2 ** 20) - 1)
|
||||||
|
await self._add_blob_to_server(blob_hash, mock_blob_bytes)
|
||||||
|
client_blob = self.client_blob_manager.get_blob(blob_hash)
|
||||||
|
server_blob = self.server_blob_manager.get_blob(blob_hash)
|
||||||
|
|
||||||
|
async def sendfile(writer):
|
||||||
|
await asyncio.sleep(2, loop=self.loop)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
server_blob.sendfile = sendfile
|
||||||
|
|
||||||
|
with self.assertRaises(asyncio.CancelledError):
|
||||||
|
await request_blob(self.loop, client_blob, self.server_from_client.address,
|
||||||
|
self.server_from_client.tcp_port, 2, 3)
|
||||||
|
|
Loading…
Reference in a new issue