Skip to content

Commit e0c65ee

Browse files
committed
Add tests/integration/standard/test_row_factories.py
1 parent 125a289 commit e0c65ee

File tree

1 file changed

+37
-77
lines changed

1 file changed

+37
-77
lines changed

tests/integration/standard/test_row_factories.py

Lines changed: 37 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
except ImportError:
2020
import unittest # noqa
2121

22-
from cassandra.cluster import Cluster, ResultSet
22+
from cassandra.cluster import Cluster, ResultSet, ExecutionProfile, EXEC_PROFILE_DEFAULT
2323
from cassandra.query import tuple_factory, named_tuple_factory, dict_factory, ordered_dict_factory
2424
from cassandra.util import OrderedDict
2525

@@ -31,8 +31,7 @@ def setup_module():
3131
class NameTupleFactory(BasicSharedKeyspaceUnitTestCase):
3232

3333
def setUp(self):
34-
super(NameTupleFactory, self).setUp()
35-
self.session.row_factory = named_tuple_factory
34+
self.common_setup(1, execution_profiles={EXEC_PROFILE_DEFAULT: ExecutionProfile(row_factory=named_tuple_factory)})
3635
ddl = '''
3736
CREATE TABLE {0}.{1} (
3837
k int PRIMARY KEY,
@@ -78,38 +77,22 @@ class RowFactoryTests(BasicSharedKeyspaceUnitTestCaseWFunctionTable):
7877
"""
7978
Test different row_factories and access code
8079
"""
81-
def setUp(self):
82-
super(RowFactoryTests, self).setUp()
83-
self.insert1 = '''
84-
INSERT INTO {0}.{1}
85-
( k , v )
86-
VALUES
87-
( 1 , 1 )
88-
'''.format(self.keyspace_name, self.function_table_name)
89-
90-
self.insert2 = '''
91-
INSERT INTO {0}.{1}
92-
( k , v )
93-
VALUES
94-
( 2 , 2 )
95-
'''.format(self.keyspace_name, self.function_table_name)
96-
97-
self.select = '''
98-
SELECT * FROM {0}.{1}
99-
'''.format(self.keyspace_name, self.function_table_name)
100-
101-
def tearDown(self):
102-
self.drop_function_table()
80+
@classmethod
81+
def setUpClass(cls):
82+
cls.common_setup(rf=1, create_class_table=True)
83+
q = "INSERT INTO {0}.{1} (k, v) VALUES (%s, %s)".format(cls.ks_name, cls.ks_name)
84+
cls.session.execute(q, (1, 1))
85+
cls.session.execute(q, (2, 2))
86+
cls.select = "SELECT * FROM {0}.{1}".format(cls.ks_name, cls.ks_name)
87+
88+
def _results_from_row_factory(self, row_factory):
89+
cluster = Cluster(protocol_version=PROTOCOL_VERSION,
90+
execution_profiles={EXEC_PROFILE_DEFAULT: ExecutionProfile(row_factory=row_factory)})
91+
with cluster:
92+
return cluster.connect().execute(self.select)
10393

10494
def test_tuple_factory(self):
105-
session = self.session
106-
session.row_factory = tuple_factory
107-
108-
session.execute(self.insert1)
109-
session.execute(self.insert2)
110-
111-
result = session.execute(self.select)
112-
95+
result = self._results_from_row_factory(tuple_factory)
11396
self.assertIsInstance(result, ResultSet)
11497
self.assertIsInstance(result[0], tuple)
11598

@@ -122,14 +105,7 @@ def test_tuple_factory(self):
122105
self.assertEqual(result[1][0], 2)
123106

124107
def test_named_tuple_factory(self):
125-
session = self.session
126-
session.row_factory = named_tuple_factory
127-
128-
session.execute(self.insert1)
129-
session.execute(self.insert2)
130-
131-
result = session.execute(self.select)
132-
108+
result = self._results_from_row_factory(named_tuple_factory)
133109
self.assertIsInstance(result, ResultSet)
134110
result = list(result)
135111

@@ -141,17 +117,10 @@ def test_named_tuple_factory(self):
141117
self.assertEqual(result[1].k, result[1].v)
142118
self.assertEqual(result[1].k, 2)
143119

144-
def test_dict_factory(self):
145-
session = self.session
146-
session.row_factory = dict_factory
147-
148-
session.execute(self.insert1)
149-
session.execute(self.insert2)
150-
151-
result = session.execute(self.select)
152-
120+
def _test_dict_factory(self, row_factory, row_type):
121+
result = self._results_from_row_factory(row_factory)
153122
self.assertIsInstance(result, ResultSet)
154-
self.assertIsInstance(result[0], dict)
123+
self.assertIsInstance(result[0], row_type)
155124

156125
for row in result:
157126
self.assertEqual(row['k'], row['v'])
@@ -161,25 +130,11 @@ def test_dict_factory(self):
161130
self.assertEqual(result[1]['k'], result[1]['v'])
162131
self.assertEqual(result[1]['k'], 2)
163132

164-
def test_ordered_dict_factory(self):
165-
session = self.session
166-
session.row_factory = ordered_dict_factory
167-
168-
session.execute(self.insert1)
169-
session.execute(self.insert2)
170-
171-
result = session.execute(self.select)
172-
173-
self.assertIsInstance(result, ResultSet)
174-
self.assertIsInstance(result[0], OrderedDict)
175-
176-
for row in result:
177-
self.assertEqual(row['k'], row['v'])
133+
def test_dict_factory(self):
134+
self._test_dict_factory(dict_factory, dict)
178135

179-
self.assertEqual(result[0]['k'], result[0]['v'])
180-
self.assertEqual(result[0]['k'], 1)
181-
self.assertEqual(result[1]['k'], result[1]['v'])
182-
self.assertEqual(result[1]['k'], 2)
136+
def test_ordered_dict_factory(self):
137+
self._test_dict_factory(ordered_dict_factory, OrderedDict)
183138

184139
def test_generator_row_factory(self):
185140
"""
@@ -201,7 +156,12 @@ def _gen_row_factory(rows):
201156
session = self.session
202157
session.row_factory = generator_row_factory
203158

204-
session.execute(self.insert1)
159+
session.execute('''
160+
INSERT INTO {0}.{1}
161+
( k , v )
162+
VALUES
163+
( 1 , 1 )
164+
'''.format(self.keyspace_name, self.function_table_name))
205165
result = session.execute(self.select)
206166
self.assertIsInstance(result, ResultSet)
207167
first_row = result.one()
@@ -218,8 +178,7 @@ def setup_class(cls):
218178
cls.session = cls.cluster.connect()
219179
cls._cass_version, cls._cql_version = get_server_versions()
220180
ddl = '''
221-
CREATE TABLE test1rf.table_num_col ( key blob PRIMARY KEY, "626972746864617465" blob )
222-
WITH COMPACT STORAGE'''
181+
CREATE TABLE test1rf.table_num_col ( key blob PRIMARY KEY, "626972746864617465" blob )'''
223182
cls.session.execute(ddl)
224183

225184
@classmethod
@@ -252,8 +211,9 @@ def test_can_select_with_dict_factory(self):
252211
"""
253212
can SELECT numeric column using dict_factory
254213
"""
255-
self.session.row_factory = dict_factory
256-
try:
257-
self.session.execute('SELECT * FROM test1rf.table_num_col')
258-
except ValueError as e:
259-
self.fail("Unexpected ValueError exception: %s" % e.message)
214+
with Cluster(protocol_version=PROTOCOL_VERSION,
215+
execution_profiles={EXEC_PROFILE_DEFAULT: ExecutionProfile(row_factory=dict_factory)}) as cluster:
216+
try:
217+
cluster.connect().execute('SELECT * FROM test1rf.table_num_col')
218+
except ValueError as e:
219+
self.fail("Unexpected ValueError exception: %s" % e.message)

0 commit comments

Comments
 (0)