Merge pull request #112 from joaquincasares/test_connection_master_fix
Jenkins-ify these test exceptions on the master branch
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user