ensure consistency is called with the right param
This commit is contained in:
@@ -165,10 +165,10 @@ class ConnectionPool(object):
|
|||||||
from thrift.transport import TSocket, TTransport
|
from thrift.transport import TSocket, TTransport
|
||||||
|
|
||||||
thrift_socket = TSocket.TSocket(host.name, host.port)
|
thrift_socket = TSocket.TSocket(host.name, host.port)
|
||||||
|
|
||||||
if self._timeout is not None:
|
if self._timeout is not None:
|
||||||
thrift_socket.setTimeout(self._timeout)
|
thrift_socket.setTimeout(self._timeout)
|
||||||
|
|
||||||
return TTransport.TFramedTransport(thrift_socket)
|
return TTransport.TFramedTransport(thrift_socket)
|
||||||
|
|
||||||
def _create_connection(self):
|
def _create_connection(self):
|
||||||
@@ -202,14 +202,17 @@ class ConnectionPool(object):
|
|||||||
|
|
||||||
raise CQLConnectionError("Could not connect to any server in cluster")
|
raise CQLConnectionError("Could not connect to any server in cluster")
|
||||||
|
|
||||||
def execute(self, query, params):
|
def execute(self, query, params, consistency_level=None):
|
||||||
|
if not consistency_level:
|
||||||
|
consistency_level = self._consistency
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
con = self.get()
|
con = self.get()
|
||||||
if not con:
|
if not con:
|
||||||
raise CQLEngineException("Error calling execute without calling setup.")
|
raise CQLEngineException("Error calling execute without calling setup.")
|
||||||
cur = con.cursor()
|
cur = con.cursor()
|
||||||
cur.execute(query, params)
|
cur.execute(query, params, consistency_level=consistency_level)
|
||||||
columns = [i[0] for i in cur.description or []]
|
columns = [i[0] for i in cur.description or []]
|
||||||
results = [RowResult(r) for r in cur.fetchall()]
|
results = [RowResult(r) for r in cur.fetchall()]
|
||||||
LOG.debug('{} {}'.format(query, repr(params)))
|
LOG.debug('{} {}'.format(query, repr(params)))
|
||||||
|
|||||||
35
cqlengine/tests/test_consistency.py
Normal file
35
cqlengine/tests/test_consistency.py
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
from cqlengine.management import sync_table, drop_table
|
||||||
|
from cqlengine.tests.base import BaseCassEngTestCase
|
||||||
|
from cqlengine.models import Model
|
||||||
|
from uuid import uuid4
|
||||||
|
from cqlengine import columns
|
||||||
|
import mock
|
||||||
|
from cqlengine.connection import ConnectionPool
|
||||||
|
from cqlengine import ALL
|
||||||
|
|
||||||
|
class TestConsistencyModel(Model):
|
||||||
|
id = columns.UUID(primary_key=True, default=lambda:uuid4())
|
||||||
|
count = columns.Integer()
|
||||||
|
text = columns.Text(required=False)
|
||||||
|
|
||||||
|
class BaseConsistencyTest(BaseCassEngTestCase):
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def setUpClass(cls):
|
||||||
|
super(BaseConsistencyTest, cls).setUpClass()
|
||||||
|
sync_table(TestConsistencyModel)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def tearDownClass(cls):
|
||||||
|
super(BaseConsistencyTest, cls).tearDownClass()
|
||||||
|
drop_table(TestConsistencyModel)
|
||||||
|
|
||||||
|
|
||||||
|
class TestConsistency(BaseConsistencyTest):
|
||||||
|
def test_create_uses_consistency(self):
|
||||||
|
|
||||||
|
with mock.patch.object(ConnectionPool, 'execute') as m:
|
||||||
|
TestConsistencyModel.consistency(ALL).create(text="i am not fault tolerant this way")
|
||||||
|
|
||||||
|
args = m.call_args
|
||||||
|
self.assertEqual(ALL, args[2])
|
||||||
Reference in New Issue
Block a user