cqle: make default CL based on core default

+ test updates

PYTHON-416
This commit is contained in:
Adam Holmberg
2015-10-20 10:13:47 -05:00
parent 62558919ac
commit dd4df431b2
4 changed files with 19 additions and 29 deletions

View File

@@ -16,7 +16,6 @@ from collections import namedtuple
import logging
import six
from cassandra import ConsistencyLevel
from cassandra.cluster import Cluster, _NOT_SET, NoHostAvailable, UserTypeDoesNotExist
from cassandra.query import SimpleStatement, Statement, dict_factory
@@ -33,7 +32,6 @@ Host = namedtuple('Host', ['name', 'port'])
cluster = None
session = None
lazy_connect_args = None
default_consistency_level = ConsistencyLevel.LOCAL_QUORUM
# Because type models may be registered before a connection is present,
@@ -95,7 +93,7 @@ def set_session(s):
def setup(
hosts,
default_keyspace,
consistency=ConsistencyLevel.ONE,
consistency=None,
lazy_connect=False,
retry_connect=False,
**kwargs):
@@ -104,12 +102,12 @@ def setup(
:param list hosts: list of hosts, (``contact_points`` for :class:`cassandra.cluster.Cluster`)
:param str default_keyspace: The default keyspace to use
:param int consistency: The global default :class:`~.ConsistencyLevel`
:param int consistency: The global default :class:`~.ConsistencyLevel` - default is the same as :attr:`.Session.default_consistency_level`
:param bool lazy_connect: True if should not connect until first use
:param bool retry_connect: True if we should retry to connect even if there was a connection failure initially
:param \*\*kwargs: Pass-through keyword arguments for :class:`cassandra.cluster.Cluster`
"""
global cluster, session, default_consistency_level, lazy_connect_args
global cluster, session, lazy_connect_args
if 'username' in kwargs or 'password' in kwargs:
raise CQLEngineException("Username & Password are now handled by using the native driver's auth_provider")
@@ -117,7 +115,6 @@ def setup(
from cassandra.cqlengine import models
models.DEFAULT_KEYSPACE = default_keyspace
default_consistency_level = consistency
if lazy_connect:
kwargs['default_keyspace'] = default_keyspace
kwargs['consistency'] = consistency
@@ -139,6 +136,8 @@ def setup(
kwargs['retry_connect'] = retry_connect
lazy_connect_args = (hosts, kwargs)
raise
if consistency is not None:
session.default_consistency_level = consistency
session.row_factory = dict_factory
_register_known_types(cluster)
@@ -151,9 +150,6 @@ def execute(query, params=None, consistency_level=None, timeout=NOT_SET):
if not session:
raise CQLEngineException("It is required to setup() cqlengine before executing queries")
if consistency_level is None:
consistency_level = default_consistency_level
if isinstance(query, Statement):
pass

View File

@@ -14,6 +14,7 @@
import os
import warnings
from cassandra import ConsistencyLevel
from cassandra.cqlengine import connection
from cassandra.cqlengine.management import create_keyspace_simple, CQLENG_ALLOW_SCHEMA_MANAGEMENT
@@ -29,6 +30,7 @@ def setup_package():
keyspace = 'cqlengine_test'
connection.setup(['127.0.0.1'],
consistency=ConsistencyLevel.ONE,
protocol_version=PROTOCOL_VERSION,
default_keyspace=keyspace)

View File

@@ -15,8 +15,10 @@
import mock
from uuid import uuid4
from cassandra import ConsistencyLevel as CL
from cassandra import ConsistencyLevel as CL, ConsistencyLevel
from cassandra.cluster import Session
from cassandra.cqlengine import columns
from cassandra.cqlengine import connection
from cassandra.cqlengine.management import sync_table, drop_table
from cassandra.cqlengine.models import Model
from cassandra.cqlengine.query import BatchQuery
@@ -110,3 +112,12 @@ class TestConsistency(BaseConsistencyTest):
args = m.call_args
self.assertEqual(CL.ALL, args[0][0].consistency_level)
def test_default_consistency(self):
# verify global assumed default
self.assertEqual(Session.default_consistency_level, ConsistencyLevel.LOCAL_QUORUM)
# verify that this session default is set according to connection.setup
# assumes tests/cqlengine/__init__ setup uses CL.ONE
session = connection.get_session()
self.assertEqual(session.default_consistency_level, ConsistencyLevel.ONE)

View File

@@ -29,7 +29,6 @@ from cassandra.marshal import uint8_pack, uint32_pack, int32_pack
from cassandra.protocol import (write_stringmultimap, write_int, write_string,
SupportedMessage, ProtocolHandler)
import cassandra.cqlengine.connection
class ConnectionTest(unittest.TestCase):
@@ -414,21 +413,3 @@ class ConnectionHeartbeatTest(unittest.TestCase):
self.assertIsInstance(exc, Exception)
self.assertEqual(exc.args, Exception('Connection heartbeat failure').args)
holder.return_connection.assert_has_calls([call(connection)] * get_holders.call_count)
class ConnectionDefaultTest(unittest.TestCase):
"""
Test to ensure object mapper and base driver default cl's are the same.
@since 3.0.0
@jira_ticket PYTHON-416
@expected_result cl's matchy between object mapper and base driver.
@test_category consistency
"""
def test_default_cl(self, *args):
base_driver_cl = Session.default_consistency_level
cqlengine_cl = cassandra.cqlengine.connection.default_consistency_level
self.assertEqual(base_driver_cl, cqlengine_cl)