Merge pull request #112 from joaquincasares/test_connection_master_fix

Jenkins-ify these test exceptions on the master branch
This commit is contained in:
Tyler Hobbs
2014-04-18 10:54:29 -05:00

View File

@@ -22,7 +22,8 @@ except ImportError:
from functools import partial
from threading import Thread, Event
from cassandra import ConsistencyLevel
from cassandra import ConsistencyLevel, OperationTimedOut
from cassandra.cluster import NoHostAvailable
from cassandra.decoder import QueryMessage
from cassandra.io.asyncorereactor import AsyncoreConnection
@@ -36,11 +37,33 @@ class ConnectionTest(object):
klass = None
def get_connection(self):
"""
Helper method to solve automated testing issues within Jenkins.
Officially patched under the 2.0 branch through
17998ef72a2fe2e67d27dd602b6ced33a58ad8ef, but left as is for the
1.0 branch due to possible regressions for fixing an
automated testing edge-case.
"""
conn = None
e = None
for i in xrange(5):
try:
conn = self.klass.factory()
break
except (OperationTimedOut, NoHostAvailable) as e:
continue
if conn:
return conn
else:
raise e
def test_single_connection(self):
"""
Test a single connection with sequential requests.
"""
conn = self.klass.factory()
conn = self.get_connection()
query = "SELECT keyspace_name FROM system.schema_keyspaces LIMIT 1"
event = Event()
@@ -63,7 +86,7 @@ class ConnectionTest(object):
"""
Test a single connection with pipelined requests.
"""
conn = self.klass.factory()
conn = self.get_connection()
query = "SELECT keyspace_name FROM system.schema_keyspaces LIMIT 1"
responses = [False] * 100
event = Event()
@@ -85,7 +108,7 @@ class ConnectionTest(object):
"""
Test multiple connections with pipelined requests.
"""
conns = [self.klass.factory() for i in range(5)]
conns = [self.get_connection() for i in range(5)]
events = [Event() for i in range(5)]
query = "SELECT keyspace_name FROM system.schema_keyspaces LIMIT 1"
@@ -116,7 +139,7 @@ class ConnectionTest(object):
num_threads = 5
event = Event()
conn = self.klass.factory()
conn = self.get_connection()
query = "SELECT keyspace_name FROM system.schema_keyspaces LIMIT 1"
def cb(all_responses, thread_responses, request_num, *args, **kwargs):
@@ -173,7 +196,7 @@ class ConnectionTest(object):
threads = []
for i in range(num_conns):
conn = self.klass.factory()
conn = self.get_connection()
t = Thread(target=send_msgs, args=(conn, events[i]))
threads.append(t)