PYTHON-2927 PYTHON-2937 Skip failing tests on PyPy (#753)

Cleanup test clients more eagerly.
This commit is contained in:
Shane Harvey 2021-10-13 10:29:38 -07:00 committed by GitHub
parent a4ccfa5b3f
commit df6f6496a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 22 additions and 2 deletions

View File

@ -1552,6 +1552,7 @@ class TestClient(IntegrationTest):
@unittest.skipIf(sys.platform.startswith('java'),
'Jython does not support gc.get_objects')
@unittest.skipIf('PyPy' in sys.version, 'PYTHON-2927 fails often on PyPy')
def test_continuous_network_errors(self):
def server_description_count():
i = 0

View File

@ -421,6 +421,7 @@ class TestPoolMaxSize(_TestPoolingBase):
def test_max_pool_size(self):
max_pool_size = 4
c = rs_or_single_client(maxPoolSize=max_pool_size)
self.addCleanup(c.close)
collection = c[DB].test
# Need one document.
@ -456,6 +457,7 @@ class TestPoolMaxSize(_TestPoolingBase):
def test_max_pool_size_none(self):
c = rs_or_single_client(maxPoolSize=None)
self.addCleanup(c.close)
collection = c[DB].test
# Need one document.

View File

@ -52,6 +52,7 @@ class TestReadWriteConcernSpec(IntegrationTest):
listener = EventListener()
# Client with default readConcern and writeConcern
client = rs_or_single_client(event_listeners=[listener])
self.addCleanup(client.close)
collection = client.pymongo_test.collection
# Prepare for tests of find() and aggregate().
collection.insert_many([{} for _ in range(10)])
@ -209,6 +210,7 @@ class TestReadWriteConcernSpec(IntegrationTest):
def test_write_error_details_exposes_errinfo(self):
listener = EventListener()
client = rs_or_single_client(event_listeners=[listener])
self.addCleanup(client.close)
db = client.errinfotest
self.addCleanup(client.drop_database, "errinfotest")
validator = {"x": {"$type": "string"}}

View File

@ -573,6 +573,7 @@ class TestRetryableWritesTxnNumber(IgnoreDeprecationsTest):
listener = OvertCommandListener()
client = rs_or_single_client(
retryWrites=True, event_listeners=[listener])
self.addCleanup(client.close)
topology = client._topology
select_server = topology.select_server

View File

@ -500,6 +500,7 @@ class TestSSL(IntegrationTest):
ssl=True,
tlsAllowInvalidCertificates=True,
tlsCertificateKeyFile=CLIENT_PEM)
self.addCleanup(noauth.close)
with self.assertRaises(OperationFailure):
noauth.pymongo_test.test.find_one()
@ -512,6 +513,7 @@ class TestSSL(IntegrationTest):
tlsAllowInvalidCertificates=True,
tlsCertificateKeyFile=CLIENT_PEM,
event_listeners=[listener])
self.addCleanup(auth.close)
# No error
auth.pymongo_test.test.find_one()
@ -529,6 +531,7 @@ class TestSSL(IntegrationTest):
ssl=True,
tlsAllowInvalidCertificates=True,
tlsCertificateKeyFile=CLIENT_PEM)
self.addCleanup(client.close)
# No error
client.pymongo_test.test.find_one()
@ -537,6 +540,7 @@ class TestSSL(IntegrationTest):
ssl=True,
tlsAllowInvalidCertificates=True,
tlsCertificateKeyFile=CLIENT_PEM)
self.addCleanup(client.close)
# No error
client.pymongo_test.test.find_one()
# Auth should fail if username and certificate do not match
@ -545,7 +549,9 @@ class TestSSL(IntegrationTest):
quote_plus("not the username"), host, port))
bad_client = MongoClient(
uri, ssl=True, tlsAllowInvalidCertificates=True, tlsCertificateKeyFile=CLIENT_PEM)
uri, ssl=True, tlsAllowInvalidCertificates=True,
tlsCertificateKeyFile=CLIENT_PEM)
self.addCleanup(bad_client.close)
with self.assertRaises(OperationFailure):
bad_client.pymongo_test.test.find_one()
@ -557,6 +563,7 @@ class TestSSL(IntegrationTest):
ssl=True,
tlsAllowInvalidCertificates=True,
tlsCertificateKeyFile=CLIENT_PEM)
self.addCleanup(bad_client.close)
with self.assertRaises(OperationFailure):
bad_client.pymongo_test.test.find_one()

View File

@ -290,6 +290,9 @@ class TestTransactions(TransactionsBase):
@client_context.require_version_min(4, 2)
@client_context.require_transactions
def test_transaction_starts_with_batched_write(self):
if 'PyPy' in sys.version and client_context.tls:
self.skipTest('PYTHON-2937 PyPy is so slow sending large '
'messages over TLS that this test fails')
# Start a transaction with a batch of operations that needs to be
# split.
listener = OvertCommandListener()
@ -299,7 +302,8 @@ class TestTransactions(TransactionsBase):
listener.reset()
self.addCleanup(client.close)
self.addCleanup(coll.drop)
ops = [InsertOne({'a': '1'*(10*1024*1024)}) for _ in range(10)]
large_str = '\0'*(10*1024*1024)
ops = [InsertOne({'a': large_str}) for _ in range(10)]
with client.start_session() as session:
with session.start_transaction():
coll.bulk_write(ops, session=session)
@ -364,6 +368,7 @@ class TestTransactionsConvenientAPI(TransactionsBase):
def test_callback_not_retried_after_timeout(self):
listener = OvertCommandListener()
client = rs_client(event_listeners=[listener])
self.addCleanup(client.close)
coll = client[self.db.name].test
def callback(session):
@ -393,6 +398,7 @@ class TestTransactionsConvenientAPI(TransactionsBase):
def test_callback_not_retried_after_commit_timeout(self):
listener = OvertCommandListener()
client = rs_client(event_listeners=[listener])
self.addCleanup(client.close)
coll = client[self.db.name].test
def callback(session):
@ -423,6 +429,7 @@ class TestTransactionsConvenientAPI(TransactionsBase):
def test_commit_not_retried_after_timeout(self):
listener = OvertCommandListener()
client = rs_client(event_listeners=[listener])
self.addCleanup(client.close)
coll = client[self.db.name].test
def callback(session):