[3.7] bpo-33353: Fix test_asyncio on FreeBSD (GH-7087) · python/cpython@fa24c1c (original) (raw)

`@@ -2095,7 +2095,7 @@ async def connect(cmd=None, **kwds):

`

2095

2095

``

2096

2096

`class SendfileBase:

`

2097

2097

``

2098

``

`-

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

`

``

2098

`+

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

`

2099

2099

``

2100

2100

`@classmethod

`

2101

2101

`def setUpClass(cls):

`

`@@ -2142,11 +2142,15 @@ def connection_lost(self, exc):

`

2142

2142

`async def wait_closed(self):

`

2143

2143

`await self.fut

`

2144

2144

``

``

2145

`+

def set_socket_opts(self, sock):

`

``

2146

`+

On macOS, SO_SNDBUF is reset by connect(). So this method

`

``

2147

`+

should be called after the socket is connected.

`

``

2148

`+

sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 1024)

`

``

2149

`+

sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1024)

`

``

2150

+

2145

2151

`def make_socket(self, cleanup=True):

`

2146

2152

`sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

`

2147

2153

`sock.setblocking(False)

`

2148

``

`-

sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 1024)

`

2149

``

`-

sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1024)

`

2150

2154

`if cleanup:

`

2151

2155

`self.addCleanup(sock.close)

`

2152

2156

`return sock

`

`@@ -2159,7 +2163,9 @@ def prepare_socksendfile(self):

`

2159

2163

`srv_sock.bind((support.HOST, port))

`

2160

2164

`server = self.run_loop(self.loop.create_server(

`

2161

2165

`lambda: proto, sock=srv_sock))

`

``

2166

`+

self.set_socket_opts(srv_sock)

`

2162

2167

`self.run_loop(self.loop.sock_connect(sock, ('127.0.0.1', port)))

`

``

2168

`+

self.set_socket_opts(sock)

`

2163

2169

``

2164

2170

`def cleanup():

`

2165

2171

`if proto.transport is not None:

`

`@@ -2208,7 +2214,7 @@ def test_sock_sendfile_zero_size(self):

`

2208

2214

`self.assertEqual(self.file.tell(), 0)

`

2209

2215

``

2210

2216

`def test_sock_sendfile_mix_with_regular_send(self):

`

2211

``

`-

buf = b'1234567890' * 1024 * 1024 # 10 MB

`

``

2217

`+

buf = b"X" * 160 * 1024 # 160 KiB

`

2212

2218

`sock, proto = self.prepare_socksendfile()

`

2213

2219

`self.run_loop(self.loop.sock_sendall(sock, buf))

`

2214

2220

`ret = self.run_loop(self.loop.sock_sendfile(sock, self.file))

`

`@@ -2264,9 +2270,9 @@ def prepare_sendfile(self, *, is_ssl=False, close_after=0):

`

2264

2270

`else:

`

2265

2271

`server_hostname = None

`

2266

2272

`cli_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

`

``

2273

`+

cli_sock.connect((support.HOST, port))

`

2267

2274

`# reduce send socket buffer size to test on relative small data sets

`

2268

2275

`cli_sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 1024)

`

2269

``

`-

cli_sock.connect((support.HOST, port))

`

2270

2276

`cli_proto = self.MySendfileProto(loop=self.loop)

`

2271

2277

`tr, pr = self.run_loop(self.loop.create_connection(

`

2272

2278

`lambda: cli_proto, sock=cli_sock,

`