|
18 | 18 | import unittest # noqa
|
19 | 19 |
|
20 | 20 |
|
| 21 | +from cassandra import ConsistencyLevel |
21 | 22 | from cassandra.cqlengine.models import Model
|
22 |
| -from cassandra.cqlengine import columns, connection |
| 23 | +from cassandra.cqlengine import columns, connection, models |
23 | 24 | from cassandra.cqlengine.management import sync_table
|
24 |
| -from cassandra.cluster import Cluster, _clusters_for_shutdown |
| 25 | +from cassandra.cluster import Cluster, ExecutionProfile, _clusters_for_shutdown, _ConfigMode, EXEC_PROFILE_DEFAULT |
| 26 | +from cassandra.policies import RoundRobinPolicy |
25 | 27 | from cassandra.query import dict_factory
|
26 | 28 |
|
27 |
| -from tests.integration import PROTOCOL_VERSION, execute_with_long_wait_retry, local |
| 29 | +from tests.integration import CASSANDRA_IP, PROTOCOL_VERSION, execute_with_long_wait_retry, local |
28 | 30 | from tests.integration.cqlengine.base import BaseCassEngTestCase
|
29 | 31 | from tests.integration.cqlengine import DEFAULT_KEYSPACE, setup_connection
|
30 |
| -from cassandra.cqlengine import models |
31 |
| - |
32 |
| -from mock import patch |
33 | 32 |
|
34 | 33 |
|
35 | 34 | class TestConnectModel(Model):
|
@@ -127,3 +126,73 @@ def test_connection_session_switch(self):
|
127 | 126 | connection.set_session(self.session2)
|
128 | 127 | self.assertEqual(1, TestConnectModel.objects.count())
|
129 | 128 | self.assertEqual(TestConnectModel.objects.first(), TCM2)
|
| 129 | + |
| 130 | + |
| 131 | +class ConnectionModel(Model): |
| 132 | + key = columns.Integer(primary_key=True) |
| 133 | + some_data = columns.Text() |
| 134 | + |
| 135 | + |
| 136 | +class ConnectionInitTest(unittest.TestCase): |
| 137 | + def test_default_connection_uses_legacy(self): |
| 138 | + connection.default() |
| 139 | + conn = connection.get_connection() |
| 140 | + self.assertEqual(conn.cluster._config_mode, _ConfigMode.LEGACY) |
| 141 | + |
| 142 | + def test_connection_with_legacy_settings(self): |
| 143 | + connection.setup( |
| 144 | + hosts=[CASSANDRA_IP], |
| 145 | + default_keyspace=DEFAULT_KEYSPACE, |
| 146 | + consistency=ConsistencyLevel.LOCAL_ONE |
| 147 | + ) |
| 148 | + conn = connection.get_connection() |
| 149 | + self.assertEqual(conn.cluster._config_mode, _ConfigMode.LEGACY) |
| 150 | + |
| 151 | + def test_connection_from_session_with_execution_profile(self): |
| 152 | + cluster = Cluster(execution_profiles={EXEC_PROFILE_DEFAULT: ExecutionProfile(row_factory=dict_factory)}) |
| 153 | + session = cluster.connect() |
| 154 | + connection.default() |
| 155 | + connection.set_session(session) |
| 156 | + conn = connection.get_connection() |
| 157 | + self.assertEqual(conn.cluster._config_mode, _ConfigMode.PROFILES) |
| 158 | + |
| 159 | + def test_connection_from_session_with_legacy_settings(self): |
| 160 | + cluster = Cluster(load_balancing_policy=RoundRobinPolicy()) |
| 161 | + session = cluster.connect() |
| 162 | + session.row_factory = dict_factory |
| 163 | + connection.set_session(session) |
| 164 | + conn = connection.get_connection() |
| 165 | + self.assertEqual(conn.cluster._config_mode, _ConfigMode.LEGACY) |
| 166 | + |
| 167 | + def test_uncommitted_session_uses_legacy(self): |
| 168 | + cluster = Cluster() |
| 169 | + session = cluster.connect() |
| 170 | + session.row_factory = dict_factory |
| 171 | + connection.set_session(session) |
| 172 | + conn = connection.get_connection() |
| 173 | + self.assertEqual(conn.cluster._config_mode, _ConfigMode.LEGACY) |
| 174 | + |
| 175 | + def test_legacy_insert_query(self): |
| 176 | + connection.setup( |
| 177 | + hosts=[CASSANDRA_IP], |
| 178 | + default_keyspace=DEFAULT_KEYSPACE, |
| 179 | + consistency=ConsistencyLevel.LOCAL_ONE |
| 180 | + ) |
| 181 | + self.assertEqual(connection.get_connection().cluster._config_mode, _ConfigMode.LEGACY) |
| 182 | + |
| 183 | + sync_table(ConnectionModel) |
| 184 | + ConnectionModel.objects.create(key=0, some_data='text0') |
| 185 | + ConnectionModel.objects.create(key=1, some_data='text1') |
| 186 | + self.assertEqual(ConnectionModel.objects(key=0)[0].some_data, 'text0') |
| 187 | + |
| 188 | + def test_execution_profile_insert_query(self): |
| 189 | + cluster = Cluster(execution_profiles={EXEC_PROFILE_DEFAULT: ExecutionProfile(row_factory=dict_factory)}) |
| 190 | + session = cluster.connect() |
| 191 | + connection.default() |
| 192 | + connection.set_session(session) |
| 193 | + self.assertEqual(connection.get_connection().cluster._config_mode, _ConfigMode.PROFILES) |
| 194 | + |
| 195 | + sync_table(ConnectionModel) |
| 196 | + ConnectionModel.objects.create(key=0, some_data='text0') |
| 197 | + ConnectionModel.objects.create(key=1, some_data='text1') |
| 198 | + self.assertEqual(ConnectionModel.objects(key=0)[0].some_data, 'text0') |
0 commit comments