mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
bpo-35380: Enable TCP_NODELAY for proactor event loop (#10867)
This commit is contained in:
parent
3bb150d814
commit
3bc0ebab17
6 changed files with 45 additions and 42 deletions
|
@ -2,7 +2,6 @@
|
|||
|
||||
import concurrent.futures
|
||||
import errno
|
||||
import logging
|
||||
import math
|
||||
import os
|
||||
import socket
|
||||
|
@ -15,7 +14,6 @@ from unittest import mock
|
|||
import asyncio
|
||||
from asyncio import base_events
|
||||
from asyncio import constants
|
||||
from asyncio import events
|
||||
from test.test_asyncio import utils as test_utils
|
||||
from test import support
|
||||
from test.support.script_helper import assert_python_ok
|
||||
|
@ -288,7 +286,7 @@ class BaseEventLoopTests(test_utils.TestCase):
|
|||
loop.set_debug(debug)
|
||||
if debug:
|
||||
msg = ("Non-thread-safe operation invoked on an event loop other "
|
||||
"than the current one")
|
||||
"than the current one")
|
||||
with self.assertRaisesRegex(RuntimeError, msg):
|
||||
loop.call_soon(cb)
|
||||
with self.assertRaisesRegex(RuntimeError, msg):
|
||||
|
@ -2075,5 +2073,31 @@ class BaseLoopSockSendfileTests(test_utils.TestCase):
|
|||
self.run_loop(self.loop.sock_sendfile(sock, self.file, -1))
|
||||
|
||||
|
||||
class TestSelectorUtils(test_utils.TestCase):
|
||||
def check_set_nodelay(self, sock):
|
||||
opt = sock.getsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY)
|
||||
self.assertFalse(opt)
|
||||
|
||||
base_events._set_nodelay(sock)
|
||||
|
||||
opt = sock.getsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY)
|
||||
self.assertTrue(opt)
|
||||
|
||||
@unittest.skipUnless(hasattr(socket, 'TCP_NODELAY'),
|
||||
'need socket.TCP_NODELAY')
|
||||
def test_set_nodelay(self):
|
||||
sock = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM,
|
||||
proto=socket.IPPROTO_TCP)
|
||||
with sock:
|
||||
self.check_set_nodelay(sock)
|
||||
|
||||
sock = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM,
|
||||
proto=socket.IPPROTO_TCP)
|
||||
with sock:
|
||||
sock.setblocking(False)
|
||||
self.check_set_nodelay(sock)
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
|
|
@ -14,7 +14,6 @@ from asyncio.selector_events import BaseSelectorEventLoop
|
|||
from asyncio.selector_events import _SelectorTransport
|
||||
from asyncio.selector_events import _SelectorSocketTransport
|
||||
from asyncio.selector_events import _SelectorDatagramTransport
|
||||
from asyncio.selector_events import _set_nodelay
|
||||
from test.test_asyncio import utils as test_utils
|
||||
|
||||
|
||||
|
@ -1344,30 +1343,5 @@ class SelectorDatagramTransportTests(test_utils.TestCase):
|
|||
exc_info=(ConnectionRefusedError, MOCK_ANY, MOCK_ANY))
|
||||
|
||||
|
||||
class TestSelectorUtils(test_utils.TestCase):
|
||||
def check_set_nodelay(self, sock):
|
||||
opt = sock.getsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY)
|
||||
self.assertFalse(opt)
|
||||
|
||||
_set_nodelay(sock)
|
||||
|
||||
opt = sock.getsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY)
|
||||
self.assertTrue(opt)
|
||||
|
||||
@unittest.skipUnless(hasattr(socket, 'TCP_NODELAY'),
|
||||
'need socket.TCP_NODELAY')
|
||||
def test_set_nodelay(self):
|
||||
sock = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM,
|
||||
proto=socket.IPPROTO_TCP)
|
||||
with sock:
|
||||
self.check_set_nodelay(sock)
|
||||
|
||||
sock = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM,
|
||||
proto=socket.IPPROTO_TCP)
|
||||
with sock:
|
||||
sock.setblocking(False)
|
||||
self.check_set_nodelay(sock)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue