diff options
author | Charles-François Natali <cf.natali@gmail.com> | 2013-08-16 21:19:22 (GMT) |
---|---|---|
committer | Charles-François Natali <cf.natali@gmail.com> | 2013-08-16 21:19:22 (GMT) |
commit | 7bf1125e9fe7fda150af3962c94f857b8461bfd7 (patch) | |
tree | 3fc96f92b18a167df9535b3aeece8d794e664840 | |
parent | e79be877df9a08d156f58050b303b5cab9142856 (diff) | |
download | cpython-7bf1125e9fe7fda150af3962c94f857b8461bfd7.zip cpython-7bf1125e9fe7fda150af3962c94f857b8461bfd7.tar.gz cpython-7bf1125e9fe7fda150af3962c94f857b8461bfd7.tar.bz2 |
Issue #16463: Fix a transient test_timeout failure.
-rw-r--r-- | Lib/test/test_timeout.py | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/Lib/test/test_timeout.py b/Lib/test/test_timeout.py index c3c4acf..bfd2a5c 100644 --- a/Lib/test/test_timeout.py +++ b/Lib/test/test_timeout.py @@ -1,5 +1,6 @@ """Unit tests for socket timeout feature.""" +import functools import unittest from test import support @@ -11,6 +12,18 @@ import errno import socket +@functools.lru_cache() +def resolve_address(host, port): + """Resolve an (host, port) to an address. + + We must perform name resolution before timeout tests, otherwise it will be + performed by connect(). + """ + with support.transient_internet(host): + return socket.getaddrinfo(host, port, socket.AF_INET, + socket.SOCK_STREAM)[0][4] + + class CreationTestCase(unittest.TestCase): """Test case for socket.gettimeout() and socket.settimeout()""" @@ -132,7 +145,7 @@ class TCPTimeoutTestCase(TimeoutTestCase): def setUp(self): self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - self.addr_remote = ('www.python.org.', 80) + self.addr_remote = resolve_address('www.python.org.', 80) def tearDown(self): self.sock.close() @@ -142,7 +155,7 @@ class TCPTimeoutTestCase(TimeoutTestCase): # to a host that silently drops our packets. We can't simulate this # from Python because it's a function of the underlying TCP/IP stack. # So, the following Snakebite host has been defined: - blackhole = ('blackhole.snakebite.net', 56666) + blackhole = resolve_address('blackhole.snakebite.net', 56666) # Blackhole has been configured to silently drop any incoming packets. # No RSTs (for TCP) or ICMP UNREACH (for UDP/ICMP) will be sent back @@ -154,7 +167,7 @@ class TCPTimeoutTestCase(TimeoutTestCase): # to firewalling or general network configuration. In order to improve # our confidence in testing the blackhole, a corresponding 'whitehole' # has also been set up using one port higher: - whitehole = ('whitehole.snakebite.net', 56667) + whitehole = resolve_address('whitehole.snakebite.net', 56667) # This address has been configured to immediately drop any incoming # packets as well, but it does it respectfully with regards to the |