PYTHON-514 adding test for request id blocking
This commit is contained in:
		| @@ -24,12 +24,15 @@ from threading import Thread, Event | ||||
| import time | ||||
|  | ||||
| from cassandra import ConsistencyLevel, OperationTimedOut | ||||
| from cassandra.cluster import NoHostAvailable | ||||
| from cassandra.cluster import NoHostAvailable, Cluster | ||||
| from cassandra.io.asyncorereactor import AsyncoreConnection | ||||
| from cassandra.protocol import QueryMessage | ||||
| from cassandra.connection import Connection | ||||
| from cassandra.policies import WhiteListRoundRobinPolicy | ||||
| from cassandra.query import SimpleStatement | ||||
|  | ||||
| from tests import is_monkey_patched | ||||
| from tests.integration import use_singledc, PROTOCOL_VERSION | ||||
| from tests.integration import use_singledc, PROTOCOL_VERSION, execute_with_long_wait_retry | ||||
|  | ||||
| try: | ||||
|     from cassandra.io.libevreactor import LibevConnection | ||||
| @@ -41,6 +44,41 @@ def setup_module(): | ||||
|     use_singledc() | ||||
|  | ||||
|  | ||||
| class ConnectionTimeoutTest(unittest.TestCase): | ||||
|  | ||||
|     def setUp(self): | ||||
|         self.defaultInFlight = Connection.max_in_flight | ||||
|         Connection.max_in_flight = 2 | ||||
|         self.cluster = Cluster(protocol_version=PROTOCOL_VERSION, load_balancing_policy=WhiteListRoundRobinPolicy(['127.0.0.1'])) | ||||
|         self.session = self.cluster.connect() | ||||
|  | ||||
|     def tearDown(self): | ||||
|         Connection.max_in_flight = self.defaultInFlight | ||||
|         self.cluster.shutdown() | ||||
|  | ||||
|     def testInFlightTimeout(self): | ||||
|         """ | ||||
|         Test to ensure that connection id fetching will block when max_id is reached/ | ||||
|  | ||||
|         In previous versions of the driver this test will cause a | ||||
|         NoHostAvailable exception to be thrown, when the max_id is restricted | ||||
|  | ||||
|         @since 3.3 | ||||
|         @jira_ticket PYTHON-514 | ||||
|         @expected_result When many requests are run on a single node connection acquisition should block | ||||
|         until connection is available or the request times out. | ||||
|  | ||||
|         @test_category connection timeout | ||||
|         """ | ||||
|         futures = [] | ||||
|         query = '''SELECT * FROM system.local''' | ||||
|         for i in range(100): | ||||
|             futures.append(self.session.execute_async(query)) | ||||
|  | ||||
|         for future in futures: | ||||
|             future.result() | ||||
|  | ||||
|  | ||||
| class ConnectionTests(object): | ||||
|  | ||||
|     klass = None | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 GregBestland
					GregBestland