Skip to content

Commit c57f2e8

Browse files
author
Jaume Marhuenda
authored
Merge pull request apache#701 from datastax/python-fix-profile-timeout
Some python fixes, shutting down some open connections and a safer way of testing test_add_profile_timeout
2 parents 6c1d4f6 + 00ca397 commit c57f2e8

12 files changed

Lines changed: 48 additions & 15 deletions

tests/integration/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ def execute_until_pass(session, query):
396396
try:
397397
return session.execute(query)
398398
except (ConfigurationException, AlreadyExists):
399-
log.warn("Recieved already exists from query {0} not exiting".format(query))
399+
log.warn("Received already exists from query {0} not exiting".format(query))
400400
# keyspace/table was already created/dropped
401401
return
402402
except (OperationTimedOut, ReadTimeout, ReadFailure, WriteTimeout, WriteFailure):
@@ -414,7 +414,7 @@ def execute_with_long_wait_retry(session, query, timeout=30):
414414
try:
415415
return session.execute(query, timeout=timeout)
416416
except (ConfigurationException, AlreadyExists):
417-
log.warn("Recieved already exists from query {0} not exiting".format(query))
417+
log.warn("Received already exists from query {0} not exiting".format(query))
418418
# keyspace/table was already created/dropped
419419
return
420420
except (OperationTimedOut, ReadTimeout, ReadFailure, WriteTimeout, WriteFailure):

tests/integration/cqlengine/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ def setup_package():
4141
create_keyspace_simple(DEFAULT_KEYSPACE, 1)
4242

4343

44+
def teardown_package():
45+
connection.unregister_connection("default")
46+
47+
4448
def is_prepend_reversed():
4549
# do we have https://issues.apache.org/jira/browse/CASSANDRA-8733 ?
4650
ver, _ = get_server_versions()

tests/integration/cqlengine/connections/test_connection.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class ConnectionTest(BaseCassEngTestCase):
4040

4141
@classmethod
4242
def setUpClass(cls):
43-
cls.original_cluster = connection.get_cluster()
43+
connection.unregister_connection('default')
4444
cls.keyspace1 = 'ctest1'
4545
cls.keyspace2 = 'ctest2'
4646
super(ConnectionTest, cls).setUpClass()
@@ -56,7 +56,6 @@ def tearDownClass(cls):
5656
execute_with_long_wait_retry(cls.setup_session, "DROP KEYSPACE {0}".format(cls.keyspace1))
5757
execute_with_long_wait_retry(cls.setup_session, "DROP KEYSPACE {0}".format(cls.keyspace2))
5858
models.DEFAULT_KEYSPACE = DEFAULT_KEYSPACE
59-
cls.original_cluster.shutdown()
6059
cls.setup_cluster.shutdown()
6160
setup_connection(DEFAULT_KEYSPACE)
6261
models.DEFAULT_KEYSPACE

tests/integration/cqlengine/query/test_named.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,6 @@ def setUpClass(cls):
291291
@classmethod
292292
def tearDownClass(cls):
293293
models.DEFAULT_KEYSPACE = cls.default_keyspace
294-
setup_connection(models.DEFAULT_KEYSPACE)
295294
super(TestNamedWithMV, cls).tearDownClass()
296295

297296
@greaterthanorequalcass30

tests/integration/cqlengine/test_connections.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ def test_connection_param_validation(self):
270270
conn.register_connection("bad_coonection4", session=session, cluster_options="not_null")
271271
with self.assertRaises(CQLEngineException):
272272
conn.register_connection("bad_coonection5", hosts="not_null", session=session)
273+
cluster.shutdown()
273274

274275
cluster.shutdown()
275276

tests/integration/long/test_schema.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ def test_for_schema_disagreements_same_keyspace(self):
113113
execute_until_pass(session, "INSERT INTO test.cf (key, value) VALUES ({0}, {0})".format(j))
114114

115115
execute_until_pass(session, "DROP KEYSPACE test")
116+
cluster.shutdown()
116117

117118
def test_for_schema_disagreement_attribute(self):
118119
"""
@@ -149,6 +150,7 @@ def test_for_schema_disagreement_attribute(self):
149150
self.check_and_wait_for_agreement(session, rs, True)
150151
rs = session.execute("DROP KEYSPACE test_schema_disagreement")
151152
self.check_and_wait_for_agreement(session, rs, True)
153+
cluster.shutdown()
152154

153155
def check_and_wait_for_agreement(self, session, rs, exepected):
154156
self.assertEqual(rs.response_future.is_schema_agreed, exepected)

tests/integration/standard/test_cluster.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
from tests.integration import use_singledc, PROTOCOL_VERSION, get_server_versions, CASSANDRA_VERSION, execute_until_pass, execute_with_long_wait_retry, get_node,\
3636
MockLoggingHandler, get_unsupported_lower_protocol, get_unsupported_upper_protocol, protocolv5
3737
from tests.integration.util import assert_quiescent_pool_state
38+
import sys
3839

3940

4041
def setup_module():
@@ -74,6 +75,7 @@ def test_ignored_host_up(self):
7475
self.assertTrue(host.is_up)
7576
else:
7677
self.assertIsNone(host.is_up)
78+
cluster.shutdown()
7779

7880
def test_host_resolution(self):
7981
"""
@@ -129,6 +131,7 @@ def test_raise_error_on_control_connection_timeout(self):
129131

130132
with self.assertRaisesRegexp(NoHostAvailable, "OperationTimedOut\('errors=Timed out creating connection \(1 seconds\)"):
131133
cluster.connect()
134+
cluster.shutdown()
132135

133136
get_node(1).resume()
134137

@@ -431,7 +434,7 @@ def test_refresh_schema_type(self):
431434
self.assertEqual(original_test1rf_meta.export_as_string(), current_test1rf_meta.export_as_string())
432435
self.assertIsNot(original_type_meta, current_type_meta)
433436
self.assertEqual(original_type_meta.as_cql_query(), current_type_meta.as_cql_query())
434-
session.shutdown()
437+
cluster.shutdown()
435438

436439
def test_refresh_schema_no_wait(self):
437440

@@ -879,7 +882,17 @@ def test_add_profile_timeout(self):
879882
self.assertEqual(set(h.address for h in pools), set(('127.0.0.1',)))
880883

881884
node2 = ExecutionProfile(load_balancing_policy=WhiteListRoundRobinPolicy(['127.0.0.2']))
882-
self.assertRaises(cassandra.OperationTimedOut, cluster.add_execution_profile, 'node2', node2, pool_wait_timeout=0.000000001)
885+
886+
max_retry_count = 10
887+
for i in range(max_retry_count):
888+
start = time.time()
889+
try:
890+
self.assertRaises(cassandra.OperationTimedOut, cluster.add_execution_profile, 'node2',
891+
node2, pool_wait_timeout=sys.float_info.min)
892+
except Exception:
893+
end = time.time()
894+
self.assertAlmostEqual(start, end, 1)
895+
break
883896

884897

885898
class LocalHostAdressTranslator(AddressTranslator):
@@ -933,6 +946,7 @@ def test_address_translator_with_mixed_nodes(self):
933946
c.connect()
934947
for host in c.metadata.all_hosts():
935948
self.assertEqual(adder_map.get(str(host)), host.broadcast_address)
949+
c.shutdown()
936950

937951

938952
class ContextManagementTest(unittest.TestCase):
@@ -1090,6 +1104,7 @@ def test_prepare_on_ignored_hosts(self):
10901104
# address
10911105
for c in cluster.connection_factory.mock_calls:
10921106
self.assertEqual(call(unignored_address), c)
1107+
cluster.shutdown()
10931108

10941109

10951110
class DuplicateRpcTest(unittest.TestCase):
@@ -1120,12 +1135,14 @@ def test_duplicate(self):
11201135
mock_handler = MockLoggingHandler()
11211136
logger = logging.getLogger(cassandra.cluster.__name__)
11221137
logger.addHandler(mock_handler)
1123-
test_cluster = self.cluster = Cluster(protocol_version=PROTOCOL_VERSION, load_balancing_policy=self.load_balancing_policy)
1138+
test_cluster = Cluster(protocol_version=PROTOCOL_VERSION, load_balancing_policy=self.load_balancing_policy)
11241139
test_cluster.connect()
11251140
warnings = mock_handler.messages.get("warning")
11261141
self.assertEqual(len(warnings), 1)
11271142
self.assertTrue('multiple' in warnings[0])
11281143
logger.removeHandler(mock_handler)
1144+
test_cluster.shutdown()
1145+
11291146

11301147

11311148
@protocolv5
@@ -1166,3 +1183,4 @@ def test_valid_protocol_version_beta_options_connect(self):
11661183
session = cluster.connect()
11671184
self.assertEqual(cluster.protocol_version, cassandra.ProtocolVersion.MAX_SUPPORTED)
11681185
self.assertTrue(session.execute("select release_version from system.local")[0])
1186+
cluster.shutdown()

tests/integration/standard/test_connection.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,8 @@ def test_connect_timeout(self):
364364
for i in range(max_retry_count):
365365
start = time.time()
366366
try:
367-
self.get_connection(timeout=sys.float_info.min)
367+
conn = self.get_connection(timeout=sys.float_info.min)
368+
conn.close()
368369
except Exception as e:
369370
end = time.time()
370371
self.assertAlmostEqual(start, end, 1)

tests/integration/standard/test_custom_protocol_handler.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ def test_custom_raw_uuid_row_results(self):
6262
"""
6363

6464
# Ensure that we get normal uuid back first
65-
session = Cluster(protocol_version=PROTOCOL_VERSION).connect(keyspace="custserdes")
65+
cluster = Cluster(protocol_version=PROTOCOL_VERSION)
66+
session = cluster.connect(keyspace="custserdes")
6667
session.row_factory = tuple_factory
6768
result = session.execute("SELECT schema_version FROM system.local")
6869
uuid_type = result[0][0]
@@ -82,7 +83,7 @@ def test_custom_raw_uuid_row_results(self):
8283
result_set = session.execute("SELECT schema_version FROM system.local")
8384
uuid_type = result_set[0][0]
8485
self.assertEqual(type(uuid_type), uuid.UUID)
85-
session.shutdown()
86+
cluster.shutdown()
8687

8788
def test_custom_raw_row_results_all_types(self):
8889
"""
@@ -99,7 +100,8 @@ def test_custom_raw_row_results_all_types(self):
99100
@test_category data_types:serialization
100101
"""
101102
# Connect using a custom protocol handler that tracks the various types the result message is used with.
102-
session = Cluster(protocol_version=PROTOCOL_VERSION).connect(keyspace="custserdes")
103+
cluster = Cluster(protocol_version=PROTOCOL_VERSION)
104+
session = cluster.connect(keyspace="custserdes")
103105
session.client_protocol_handler = CustomProtocolHandlerResultMessageTracked
104106
session.row_factory = tuple_factory
105107

@@ -113,7 +115,7 @@ def test_custom_raw_row_results_all_types(self):
113115
self.assertEqual(actual, expected)
114116
# Ensure we have covered the various primitive types
115117
self.assertEqual(len(CustomResultMessageTracked.checked_rev_row_set), len(PRIMITIVE_DATATYPES)-1)
116-
session.shutdown()
118+
cluster.shutdown()
117119

118120

119121
class CustomResultMessageRaw(ResultMessage):

tests/integration/standard/test_cython_protocol_handlers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def setUpClass(cls):
4242

4343
@classmethod
4444
def tearDownClass(cls):
45-
drop_keyspace_shutdown_cluster("testspace", cls.session, cls.session)
45+
drop_keyspace_shutdown_cluster("testspace", cls.session, cls.cluster)
4646

4747
@cythontest
4848
def test_cython_parser(self):
@@ -188,7 +188,7 @@ def get_data(protocol_handler):
188188
session.row_factory = tuple_factory
189189

190190
results = session.execute("SELECT * FROM test_table")
191-
session.shutdown()
191+
cluster.shutdown()
192192
return results
193193

194194

0 commit comments

Comments
 (0)