Add disconnected socket tests for conn.recv()
This commit is contained in:
@@ -165,7 +165,52 @@ def test_can_send_more(conn):
|
|||||||
assert conn.can_send_more() is False
|
assert conn.can_send_more() is False
|
||||||
|
|
||||||
|
|
||||||
def test_recv(socket, conn):
|
def test_recv_disconnected():
|
||||||
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
sock.bind(('127.0.0.1', 0))
|
||||||
|
port = sock.getsockname()[1]
|
||||||
|
sock.listen(5)
|
||||||
|
|
||||||
|
conn = BrokerConnection('127.0.0.1', port, socket.AF_INET)
|
||||||
|
timeout = time.time() + 1
|
||||||
|
while time.time() < timeout:
|
||||||
|
conn.connect()
|
||||||
|
if conn.connected():
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
assert False, 'Connection attempt to local socket timed-out ?'
|
||||||
|
|
||||||
|
conn.send(MetadataRequest[0]([]))
|
||||||
|
|
||||||
|
# Disconnect server socket
|
||||||
|
sock.close()
|
||||||
|
|
||||||
|
# Attempt to receive should mark connection as disconnected
|
||||||
|
assert conn.connected()
|
||||||
|
conn.recv()
|
||||||
|
assert conn.disconnected()
|
||||||
|
|
||||||
|
|
||||||
|
def test_recv_disconnected_too(_socket, conn):
|
||||||
|
conn.connect()
|
||||||
|
assert conn.connected()
|
||||||
|
|
||||||
|
req = MetadataRequest[0]([])
|
||||||
|
header = RequestHeader(req, client_id=conn.config['client_id'])
|
||||||
|
payload_bytes = len(header.encode()) + len(req.encode())
|
||||||
|
_socket.send.side_effect = [4, payload_bytes]
|
||||||
|
conn.send(req)
|
||||||
|
|
||||||
|
# Empty data on recv means the socket is disconnected
|
||||||
|
_socket.recv.return_value = b''
|
||||||
|
|
||||||
|
# Attempt to receive should mark connection as disconnected
|
||||||
|
assert conn.connected()
|
||||||
|
conn.recv()
|
||||||
|
assert conn.disconnected()
|
||||||
|
|
||||||
|
|
||||||
|
def test_recv(_socket, conn):
|
||||||
pass # TODO
|
pass # TODO
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user