Test default_serial_consistency_level PR #510

This commit is contained in:
Adam Holmberg
2016-03-04 11:06:39 -06:00
parent 2d200ff7c4
commit 102ed21db0
2 changed files with 36 additions and 2 deletions

View File

@@ -9,6 +9,7 @@ Features
* Eventlet Reactor IO improvement (PYTHON-495)
* Make pure Python ProtocolHandler available even when Cython is present (PYTHON-501)
* Optional Cython deserializer for bytes as bytearray (PYTHON-503)
* Add Session.default_serial_consistency_level (github #510)
* cqlengine: Expose prior state information via cqlengine LWTException (github #343, PYTHON-336)
* cqlengine: Collection datatype "contains" operators support (Cassandra 2.1) #278 (PYTHON-258)
* cqlengine: Add DISTINCT query operator (PYTHON-266)

View File

@@ -17,9 +17,11 @@ try:
except ImportError:
import unittest # noqa
from mock import patch
from mock import patch, Mock
from cassandra.cluster import _Scheduler
from cassandra import ConsistencyLevel
from cassandra.cluster import _Scheduler, Session
from cassandra.query import SimpleStatement
class SchedulerTest(unittest.TestCase):
@@ -36,3 +38,34 @@ class SchedulerTest(unittest.TestCase):
sched = _Scheduler(None)
sched.schedule(0, lambda: None)
sched.schedule(0, lambda: None) # pre-473: "TypeError: unorderable types: function() < function()"t
class SessionTest(unittest.TestCase):
# TODO: this suite could be expanded; for now just adding a test covering a PR
@patch('cassandra.cluster.ResponseFuture._make_query_plan')
def test_default_serial_consistency_level(self, *args):
"""
Make sure default_serial_consistency_level passes through to a query message.
Also make sure Statement.serial_consistency_level overrides the default.
PR #510
"""
s = Session(Mock(protocol_version=4), [])
# default is None
self.assertIsNone(s.default_serial_consistency_level)
sentinel = 1001
for cl in (None, ConsistencyLevel.LOCAL_SERIAL, ConsistencyLevel.SERIAL, sentinel):
s.default_serial_consistency_level = cl
# default is passed through
f = s._create_response_future(query='', parameters=[], trace=False, custom_payload={}, timeout=100)
self.assertEqual(f.message.serial_consistency_level, cl)
# any non-None statement setting takes precedence
for cl_override in (ConsistencyLevel.LOCAL_SERIAL, ConsistencyLevel.SERIAL):
f = s._create_response_future(SimpleStatement(query_string='', serial_consistency_level=cl_override), parameters=[], trace=False, custom_payload={}, timeout=100)
self.assertEqual(s.default_serial_consistency_level, cl)
self.assertEqual(f.message.serial_consistency_level, cl_override)