Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 11 additions & 5 deletions Lib/test/test_asyncio/test_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -2095,7 +2095,7 @@ async def connect(cmd=None, **kwds):

class SendfileBase:

DATA = b"12345abcde" * 160 * 1024 # 160 KiB
DATA = b"12345abcde" * 16 * 1024 # 160 KiB

@classmethod
def setUpClass(cls):
Expand Down Expand Up @@ -2142,11 +2142,15 @@ def connection_lost(self, exc):
async def wait_closed(self):
await self.fut

def set_socket_opts(self, sock):
# On macOS, SO_SNDBUF is reset by connect(). So this method
# should be called after the socket is connected.
sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 1024)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1024)

def make_socket(self, cleanup=True):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setblocking(False)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 1024)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1024)
if cleanup:
self.addCleanup(sock.close)
return sock
Expand All @@ -2159,7 +2163,9 @@ def prepare_socksendfile(self):
srv_sock.bind((support.HOST, port))
server = self.run_loop(self.loop.create_server(
lambda: proto, sock=srv_sock))
self.set_socket_opts(srv_sock)
self.run_loop(self.loop.sock_connect(sock, ('127.0.0.1', port)))
self.set_socket_opts(sock)

def cleanup():
if proto.transport is not None:
Expand Down Expand Up @@ -2208,7 +2214,7 @@ def test_sock_sendfile_zero_size(self):
self.assertEqual(self.file.tell(), 0)

def test_sock_sendfile_mix_with_regular_send(self):
buf = b'1234567890' * 1024 * 1024 # 10 MB
buf = b"X" * 160 * 1024 # 160 KiB
sock, proto = self.prepare_socksendfile()
self.run_loop(self.loop.sock_sendall(sock, buf))
ret = self.run_loop(self.loop.sock_sendfile(sock, self.file))
Expand Down Expand Up @@ -2264,9 +2270,9 @@ def prepare_sendfile(self, *, is_ssl=False, close_after=0):
else:
server_hostname = None
cli_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
cli_sock.connect((support.HOST, port))
# reduce send socket buffer size to test on relative small data sets
cli_sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 1024)
cli_sock.connect((support.HOST, port))
cli_proto = self.MySendfileProto(loop=self.loop)
tr, pr = self.run_loop(self.loop.create_connection(
lambda: cli_proto, sock=cli_sock,
Expand Down