mirror of https://github.com/python/cpython
ftplib tests: provide a global socket's TIMEOUT variable and use it everywhere so that failing tests won't accidentally hang
This commit is contained in:
parent
dd778eb885
commit
0d4f08cee3
|
@ -21,6 +21,7 @@ from test import support
|
|||
from test.support import HOST
|
||||
threading = support.import_module('threading')
|
||||
|
||||
TIMEOUT = 3
|
||||
# the dummy data returned by server over the data channel when
|
||||
# RETR, LIST, NLST, MLSD commands are issued
|
||||
RETR_DATA = 'abcde12345\r\n' * 1000
|
||||
|
@ -125,7 +126,7 @@ class DummyFTPHandler(asynchat.async_chat):
|
|||
addr = list(map(int, arg.split(',')))
|
||||
ip = '%d.%d.%d.%d' %tuple(addr[:4])
|
||||
port = (addr[4] * 256) + addr[5]
|
||||
s = socket.create_connection((ip, port), timeout=2)
|
||||
s = socket.create_connection((ip, port), timeout=TIMEOUT)
|
||||
self.dtp = self.dtp_handler(s, baseclass=self)
|
||||
self.push('200 active data connection established')
|
||||
|
||||
|
@ -133,7 +134,7 @@ class DummyFTPHandler(asynchat.async_chat):
|
|||
with socket.socket() as sock:
|
||||
sock.bind((self.socket.getsockname()[0], 0))
|
||||
sock.listen(5)
|
||||
sock.settimeout(10)
|
||||
sock.settimeout(TIMEOUT)
|
||||
ip, port = sock.getsockname()[:2]
|
||||
ip = ip.replace('.', ','); p1 = port / 256; p2 = port % 256
|
||||
self.push('227 entering passive mode (%s,%d,%d)' %(ip, p1, p2))
|
||||
|
@ -143,7 +144,7 @@ class DummyFTPHandler(asynchat.async_chat):
|
|||
def cmd_eprt(self, arg):
|
||||
af, ip, port = arg.split(arg[0])[1:-1]
|
||||
port = int(port)
|
||||
s = socket.create_connection((ip, port), timeout=2)
|
||||
s = socket.create_connection((ip, port), timeout=TIMEOUT)
|
||||
self.dtp = self.dtp_handler(s, baseclass=self)
|
||||
self.push('200 active data connection established')
|
||||
|
||||
|
@ -151,7 +152,7 @@ class DummyFTPHandler(asynchat.async_chat):
|
|||
with socket.socket(socket.AF_INET6) as sock:
|
||||
sock.bind((self.socket.getsockname()[0], 0))
|
||||
sock.listen(5)
|
||||
sock.settimeout(10)
|
||||
sock.settimeout(TIMEOUT)
|
||||
port = sock.getsockname()[1]
|
||||
self.push('229 entering extended passive mode (|||%d|)' %port)
|
||||
conn, addr = sock.accept()
|
||||
|
@ -454,7 +455,7 @@ class TestFTPClass(TestCase):
|
|||
def setUp(self):
|
||||
self.server = DummyFTPServer((HOST, 0))
|
||||
self.server.start()
|
||||
self.client = ftplib.FTP(timeout=2)
|
||||
self.client = ftplib.FTP(timeout=TIMEOUT)
|
||||
self.client.connect(self.server.host, self.server.port)
|
||||
|
||||
def tearDown(self):
|
||||
|
@ -667,7 +668,7 @@ class TestFTPClass(TestCase):
|
|||
|
||||
def test_makepasv(self):
|
||||
host, port = self.client.makepasv()
|
||||
conn = socket.create_connection((host, port), 10)
|
||||
conn = socket.create_connection((host, port), timeout=TIMEOUT)
|
||||
conn.close()
|
||||
# IPv4 is in use, just make sure send_epsv has not been used
|
||||
self.assertEqual(self.server.handler_instance.last_received_cmd, 'pasv')
|
||||
|
@ -685,7 +686,7 @@ class TestFTPClass(TestCase):
|
|||
return True
|
||||
|
||||
# base test
|
||||
with ftplib.FTP(timeout=2) as self.client:
|
||||
with ftplib.FTP(timeout=TIMEOUT) as self.client:
|
||||
self.client.connect(self.server.host, self.server.port)
|
||||
self.client.sendcmd('noop')
|
||||
self.assertTrue(is_client_connected())
|
||||
|
@ -693,7 +694,7 @@ class TestFTPClass(TestCase):
|
|||
self.assertFalse(is_client_connected())
|
||||
|
||||
# QUIT sent inside the with block
|
||||
with ftplib.FTP(timeout=2) as self.client:
|
||||
with ftplib.FTP(timeout=TIMEOUT) as self.client:
|
||||
self.client.connect(self.server.host, self.server.port)
|
||||
self.client.sendcmd('noop')
|
||||
self.client.quit()
|
||||
|
@ -703,7 +704,7 @@ class TestFTPClass(TestCase):
|
|||
# force a wrong response code to be sent on QUIT: error_perm
|
||||
# is expected and the connection is supposed to be closed
|
||||
try:
|
||||
with ftplib.FTP(timeout=2) as self.client:
|
||||
with ftplib.FTP(timeout=TIMEOUT) as self.client:
|
||||
self.client.connect(self.server.host, self.server.port)
|
||||
self.client.sendcmd('noop')
|
||||
self.server.handler_instance.next_response = '550 error on quit'
|
||||
|
@ -759,7 +760,7 @@ class TestIPv6Environment(TestCase):
|
|||
def setUp(self):
|
||||
self.server = DummyFTPServer(('::1', 0), af=socket.AF_INET6)
|
||||
self.server.start()
|
||||
self.client = ftplib.FTP()
|
||||
self.client = ftplib.FTP(timeout=TIMEOUT)
|
||||
self.client.connect(self.server.host, self.server.port)
|
||||
|
||||
def tearDown(self):
|
||||
|
@ -776,7 +777,7 @@ class TestIPv6Environment(TestCase):
|
|||
|
||||
def test_makepasv(self):
|
||||
host, port = self.client.makepasv()
|
||||
conn = socket.create_connection((host, port), 10)
|
||||
conn = socket.create_connection((host, port), timeout=TIMEOUT)
|
||||
conn.close()
|
||||
self.assertEqual(self.server.handler_instance.last_received_cmd, 'epsv')
|
||||
|
||||
|
@ -802,7 +803,7 @@ class TestTLS_FTPClassMixin(TestFTPClass):
|
|||
def setUp(self):
|
||||
self.server = DummyTLS_FTPServer((HOST, 0))
|
||||
self.server.start()
|
||||
self.client = ftplib.FTP_TLS(timeout=2)
|
||||
self.client = ftplib.FTP_TLS(timeout=TIMEOUT)
|
||||
self.client.connect(self.server.host, self.server.port)
|
||||
# enable TLS
|
||||
self.client.auth()
|
||||
|
@ -815,7 +816,7 @@ class TestTLS_FTPClass(TestCase):
|
|||
def setUp(self):
|
||||
self.server = DummyTLS_FTPServer((HOST, 0))
|
||||
self.server.start()
|
||||
self.client = ftplib.FTP_TLS(timeout=2)
|
||||
self.client = ftplib.FTP_TLS(timeout=TIMEOUT)
|
||||
self.client.connect(self.server.host, self.server.port)
|
||||
|
||||
def tearDown(self):
|
||||
|
@ -875,7 +876,7 @@ class TestTLS_FTPClass(TestCase):
|
|||
self.assertRaises(ValueError, ftplib.FTP_TLS, certfile=CERTFILE,
|
||||
keyfile=CERTFILE, context=ctx)
|
||||
|
||||
self.client = ftplib.FTP_TLS(context=ctx, timeout=2)
|
||||
self.client = ftplib.FTP_TLS(context=ctx, timeout=TIMEOUT)
|
||||
self.client.connect(self.server.host, self.server.port)
|
||||
self.assertNotIsInstance(self.client.sock, ssl.SSLSocket)
|
||||
self.client.auth()
|
||||
|
|
Loading…
Reference in New Issue