Skip to content

Commit

Permalink
gh-120048: Make test_imaplib faster (#120050)
Browse files Browse the repository at this point in the history
The `test_imaplib` was taking 40+ minutes in the refleak build bots because
the tests waiting on a client `self._setup()` was creating a client that
prevented progress until its connection timed out, which scaled with the
global timeout.

We should set `connect=False` for the tests that don't want `_setup()` to
create a client.

Co-authored-by: Serhiy Storchaka <[email protected]>
  • Loading branch information
colesbury and serhiy-storchaka authored Jun 4, 2024
1 parent d909519 commit 710cbea
Showing 1 changed file with 8 additions and 14 deletions.
22 changes: 8 additions & 14 deletions Lib/test/test_imaplib.py
Original file line number Diff line number Diff line change
Expand Up @@ -458,18 +458,14 @@ def test_simple_with_statement(self):
with self.imap_class(*server.server_address):
pass

@requires_resource('walltime')
def test_imaplib_timeout_test(self):
_, server = self._setup(SimpleIMAPHandler)
addr = server.server_address[1]
client = self.imap_class("localhost", addr, timeout=None)
self.assertEqual(client.sock.timeout, None)
client.shutdown()
client = self.imap_class("localhost", addr, timeout=support.LOOPBACK_TIMEOUT)
self.assertEqual(client.sock.timeout, support.LOOPBACK_TIMEOUT)
client.shutdown()
_, server = self._setup(SimpleIMAPHandler, connect=False)
with self.imap_class(*server.server_address, timeout=None) as client:
self.assertEqual(client.sock.timeout, None)
with self.imap_class(*server.server_address, timeout=support.LOOPBACK_TIMEOUT) as client:
self.assertEqual(client.sock.timeout, support.LOOPBACK_TIMEOUT)
with self.assertRaises(ValueError):
client = self.imap_class("localhost", addr, timeout=0)
self.imap_class(*server.server_address, timeout=0)

def test_imaplib_timeout_functionality_test(self):
class TimeoutHandler(SimpleIMAPHandler):
Expand Down Expand Up @@ -552,7 +548,6 @@ class NewIMAPSSLTests(NewIMAPTestsMixin, unittest.TestCase):
imap_class = IMAP4_SSL
server_class = SecureTCPServer

@requires_resource('walltime')
def test_ssl_raises(self):
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
self.assertEqual(ssl_context.verify_mode, ssl.CERT_REQUIRED)
Expand All @@ -566,17 +561,16 @@ def test_ssl_raises(self):
CERTIFICATE_VERIFY_FAILED # AWS-LC
)""", re.X)
with self.assertRaisesRegex(ssl.CertificateError, regex):
_, server = self._setup(SimpleIMAPHandler)
_, server = self._setup(SimpleIMAPHandler, connect=False)
client = self.imap_class(*server.server_address,
ssl_context=ssl_context)
client.shutdown()

@requires_resource('walltime')
def test_ssl_verified(self):
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
ssl_context.load_verify_locations(CAFILE)

_, server = self._setup(SimpleIMAPHandler)
_, server = self._setup(SimpleIMAPHandler, connect=False)
client = self.imap_class("localhost", server.server_address[1],
ssl_context=ssl_context)
client.shutdown()
Expand Down

0 comments on commit 710cbea

Please sign in to comment.