Try to make this test a little more robust and not fail with:

timeout (10.0025) is more than 2 seconds more than expected (0.001)

I'm assuming this problem is caused by DNS lookup.  This change
does a DNS lookup of the hostname before trying to connect, so the time
is not included.
This commit is contained in:
Neal Norwitz 2008-03-23 03:43:33 +00:00
parent e70bb8d6f2
commit 1f2995b014
1 changed files with 9 additions and 4 deletions

View File

@ -107,16 +107,21 @@ class TimeoutTestCase(unittest.TestCase):
self.sock.close()
def testConnectTimeout(self):
# Test connect() timeout
_timeout = 0.001
self.sock.settimeout(_timeout)
# If we are too close to www.python.org, this test will fail.
# Pick a host that should be farther away.
if (socket.getfqdn().split('.')[-2:] == ['python', 'org'] or
socket.getfqdn().split('.')[-2:-1] == ['xs4all']):
self.addr_remote = ('tut.fi', 80)
# Lookup the IP address to avoid including the DNS lookup time
# with the connect time. This avoids failing the assertion that
# the timeout occurred fast enough.
self.addr_remote = (socket.gethostbyname(self.addr_remote[0]), 80)
# Test connect() timeout
_timeout = 0.001
self.sock.settimeout(_timeout)
_t1 = time.time()
self.failUnlessRaises(socket.error, self.sock.connect,
self.addr_remote)