summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_timeout.py
diff options
context:
space:
mode:
authorCharles-François Natali <cf.natali@gmail.com>2013-08-16 21:19:22 (GMT)
committerCharles-François Natali <cf.natali@gmail.com>2013-08-16 21:19:22 (GMT)
commit7bf1125e9fe7fda150af3962c94f857b8461bfd7 (patch)
tree3fc96f92b18a167df9535b3aeece8d794e664840 /Lib/test/test_timeout.py
parente79be877df9a08d156f58050b303b5cab9142856 (diff)
downloadcpython-7bf1125e9fe7fda150af3962c94f857b8461bfd7.zip
cpython-7bf1125e9fe7fda150af3962c94f857b8461bfd7.tar.gz
cpython-7bf1125e9fe7fda150af3962c94f857b8461bfd7.tar.bz2
Issue #16463: Fix a transient test_timeout failure.
Diffstat (limited to 'Lib/test/test_timeout.py')
-rw-r--r--Lib/test/test_timeout.py19
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