From 52eb86d2de11219521da570f6f5770e66f633c64 Mon Sep 17 00:00:00 2001 From: Tyler Hobbs Date: Thu, 3 Apr 2014 19:10:49 -0500 Subject: [PATCH] Start fixing integration tests for python 3 --- cassandra/concurrent.py | 15 ++++++++------- cassandra/cqltypes.py | 4 ++-- tests/integration/__init__.py | 4 +++- tests/integration/standard/test_concurrent.py | 14 +++++++------- tests/integration/standard/test_query.py | 8 ++++---- tests/integration/standard/test_query_paging.py | 15 ++++++++------- tests/integration/standard/test_types.py | 5 +++-- 7 files changed, 35 insertions(+), 30 deletions(-) diff --git a/cassandra/concurrent.py b/cassandra/concurrent.py index 6edd54a1..e9d3473f 100644 --- a/cassandra/concurrent.py +++ b/cassandra/concurrent.py @@ -1,6 +1,7 @@ import sys from itertools import count, cycle +from six.moves import xrange from threading import Event @@ -79,7 +80,7 @@ def execute_concurrent_with_args(session, statement, parameters, *args, **kwargs parameters = [(x,) for x in range(1000)] execute_concurrent_with_args(session, statement, parameters) """ - return execute_concurrent(session, zip(cycle((statement,)), parameters), *args, **kwargs) + return execute_concurrent(session, list(zip(cycle((statement,)), parameters)), *args, **kwargs) _sentinel = object() @@ -92,12 +93,12 @@ def _handle_error(error, result_index, event, session, statements, results, num_ return else: results[result_index] = (False, error) - if num_finished.next() >= to_execute: + if next(num_finished) >= to_execute: event.set() return try: - (next_index, (statement, params)) = statements.next() + (next_index, (statement, params)) = next(statements) except StopIteration: return @@ -113,7 +114,7 @@ def _handle_error(error, result_index, event, session, statements, results, num_ return else: results[next_index] = (False, exc) - if num_finished.next() >= to_execute: + if next(num_finished) >= to_execute: event.set() return @@ -121,13 +122,13 @@ def _handle_error(error, result_index, event, session, statements, results, num_ def _execute_next(result, result_index, event, session, statements, results, num_finished, to_execute, first_error): if result is not _sentinel: results[result_index] = (True, result) - finished = num_finished.next() + finished = next(num_finished) if finished >= to_execute: event.set() return try: - (next_index, (statement, params)) = statements.next() + (next_index, (statement, params)) = next(statements) except StopIteration: return @@ -143,6 +144,6 @@ def _execute_next(result, result_index, event, session, statements, results, num return else: results[next_index] = (False, exc) - if num_finished.next() >= to_execute: + if next(num_finished) >= to_execute: event.set() return diff --git a/cassandra/cqltypes.py b/cassandra/cqltypes.py index 63b71cfd..5b404685 100644 --- a/cassandra/cqltypes.py +++ b/cassandra/cqltypes.py @@ -57,7 +57,7 @@ def trim_if_startswith(s, prefix): def unix_time_from_uuid1(u): - return (u.get_time() - 0x01B21DD213814000) / 10000000.0 + return (u.time - 0x01B21DD213814000) / 10000000.0 _casstypes = {} @@ -318,7 +318,7 @@ if six.PY3: (_UnrecognizedType,), {'typename': "'%s'" % casstypename}) else: - def mkUnrecognizedType(casstypename): + def mkUnrecognizedType(casstypename): # noqa return CassandraTypeType(casstypename.encode('utf8'), (_UnrecognizedType,), {'typename': "'%s'" % casstypename}) diff --git a/tests/integration/__init__.py b/tests/integration/__init__.py index d69f4da7..a7db5541 100644 --- a/tests/integration/__init__.py +++ b/tests/integration/__init__.py @@ -5,7 +5,9 @@ except ImportError: import logging log = logging.getLogger(__name__) + import os +from six import print_ from threading import Event from cassandra.cluster import Cluster @@ -74,7 +76,7 @@ def get_node(node_id): def setup_package(): - print 'Using Cassandra version: %s' % CASSANDRA_VERSION + print_('Using Cassandra version: %s' % CASSANDRA_VERSION) try: try: cluster = CCMCluster.load(path, CLUSTER_NAME) diff --git a/tests/integration/standard/test_concurrent.py b/tests/integration/standard/test_concurrent.py index 352033a0..eb6aaa2d 100644 --- a/tests/integration/standard/test_concurrent.py +++ b/tests/integration/standard/test_concurrent.py @@ -29,7 +29,7 @@ class ClusterTests(unittest.TestCase): statements = cycle(("INSERT INTO test3rf.test (k, v) VALUES (%s, %s)", )) parameters = [(i, i) for i in range(num_statements)] - results = execute_concurrent(self.session, zip(statements, parameters)) + results = execute_concurrent(self.session, list(zip(statements, parameters))) self.assertEqual(num_statements, len(results)) self.assertEqual([(True, None)] * num_statements, results) @@ -37,7 +37,7 @@ class ClusterTests(unittest.TestCase): statements = cycle(("SELECT v FROM test3rf.test WHERE k=%s", )) parameters = [(i, ) for i in range(num_statements)] - results = execute_concurrent(self.session, zip(statements, parameters)) + results = execute_concurrent(self.session, list(zip(statements, parameters))) self.assertEqual(num_statements, len(results)) self.assertEqual([(True, [(i,)]) for i in range(num_statements)], results) @@ -67,7 +67,7 @@ class ClusterTests(unittest.TestCase): self.assertRaises( InvalidRequest, - execute_concurrent, self.session, zip(statements, parameters), raise_on_first_error=True) + execute_concurrent, self.session, list(zip(statements, parameters)), raise_on_first_error=True) def test_first_failure_client_side(self): statements = cycle(("INSERT INTO test3rf.test (k, v) VALUES (%s, %s)", )) @@ -78,7 +78,7 @@ class ClusterTests(unittest.TestCase): self.assertRaises( TypeError, - execute_concurrent, self.session, zip(statements, parameters), raise_on_first_error=True) + execute_concurrent, self.session, list(zip(statements, parameters)), raise_on_first_error=True) def test_no_raise_on_first_failure(self): statements = cycle(("INSERT INTO test3rf.test (k, v) VALUES (%s, %s)", )) @@ -87,7 +87,7 @@ class ClusterTests(unittest.TestCase): # we'll get an error back from the server parameters[57] = ('efefef', 'awefawefawef') - results = execute_concurrent(self.session, zip(statements, parameters), raise_on_first_error=False) + results = execute_concurrent(self.session, list(zip(statements, parameters)), raise_on_first_error=False) for i, (success, result) in enumerate(results): if i == 57: self.assertFalse(success) @@ -101,9 +101,9 @@ class ClusterTests(unittest.TestCase): parameters = [(i, i) for i in range(100)] # the driver will raise an error when binding the params - parameters[57] = i + parameters[57] = 1 - results = execute_concurrent(self.session, zip(statements, parameters), raise_on_first_error=False) + results = execute_concurrent(self.session, list(zip(statements, parameters)), raise_on_first_error=False) for i, (success, result) in enumerate(results): if i == 57: self.assertFalse(success) diff --git a/tests/integration/standard/test_query.py b/tests/integration/standard/test_query.py index 44cdff3d..6331bab4 100644 --- a/tests/integration/standard/test_query.py +++ b/tests/integration/standard/test_query.py @@ -10,7 +10,7 @@ from cassandra.query import (PreparedStatement, BoundStatement, ValueSequence, from cassandra.cluster import Cluster from cassandra.policies import HostDistance -from tests.integration import get_server_versions, PROTOCOL_VERSION +from tests.integration import PROTOCOL_VERSION class QueryTest(unittest.TestCase): @@ -29,7 +29,7 @@ class QueryTest(unittest.TestCase): self.assertIsInstance(bound, BoundStatement) self.assertEqual(2, len(bound.values)) session.execute(bound) - self.assertEqual(bound.routing_key, '\x00\x00\x00\x01') + self.assertEqual(bound.routing_key, b'\x00\x00\x00\x01') def test_value_sequence(self): """ @@ -88,7 +88,7 @@ class PreparedStatementTests(unittest.TestCase): self.assertIsInstance(prepared, PreparedStatement) bound = prepared.bind((1, None)) - self.assertEqual(bound.routing_key, '\x00\x00\x00\x01') + self.assertEqual(bound.routing_key, b'\x00\x00\x00\x01') def test_empty_routing_key_indexes(self): """ @@ -144,7 +144,7 @@ class PreparedStatementTests(unittest.TestCase): self.assertIsInstance(prepared, PreparedStatement) bound = prepared.bind((1, 2)) - self.assertEqual(bound.routing_key, '\x04\x00\x00\x00\x04\x00\x00\x00') + self.assertEqual(bound.routing_key, b'\x04\x00\x00\x00\x04\x00\x00\x00') def test_bound_keyspace(self): """ diff --git a/tests/integration/standard/test_query_paging.py b/tests/integration/standard/test_query_paging.py index 39dbe2dc..9b8af912 100644 --- a/tests/integration/standard/test_query_paging.py +++ b/tests/integration/standard/test_query_paging.py @@ -9,6 +9,7 @@ except ImportError: import unittest # noqa from itertools import cycle, count +from six.moves import range from threading import Event from cassandra.cluster import Cluster @@ -33,7 +34,7 @@ class QueryPagingTests(unittest.TestCase): def test_paging(self): statements_and_params = zip(cycle(["INSERT INTO test3rf.test (k, v) VALUES (%s, 0)"]), [(i, ) for i in range(100)]) - execute_concurrent(self.session, statements_and_params) + execute_concurrent(self.session, list(statements_and_params)) prepared = self.session.prepare("SELECT * FROM test3rf.test") @@ -49,7 +50,7 @@ class QueryPagingTests(unittest.TestCase): def test_async_paging(self): statements_and_params = zip(cycle(["INSERT INTO test3rf.test (k, v) VALUES (%s, 0)"]), [(i, ) for i in range(100)]) - execute_concurrent(self.session, statements_and_params) + execute_concurrent(self.session, list(statements_and_params)) prepared = self.session.prepare("SELECT * FROM test3rf.test") @@ -65,7 +66,7 @@ class QueryPagingTests(unittest.TestCase): def test_paging_callbacks(self): statements_and_params = zip(cycle(["INSERT INTO test3rf.test (k, v) VALUES (%s, 0)"]), [(i, ) for i in range(100)]) - execute_concurrent(self.session, statements_and_params) + execute_concurrent(self.session, list(statements_and_params)) prepared = self.session.prepare("SELECT * FROM test3rf.test") @@ -78,7 +79,7 @@ class QueryPagingTests(unittest.TestCase): def handle_page(rows, future, counter): for row in rows: - counter.next() + next(counter) if future.has_more_pages: future.start_fetching_next_page() @@ -91,7 +92,7 @@ class QueryPagingTests(unittest.TestCase): future.add_callbacks(callback=handle_page, callback_args=(future, counter), errback=handle_error) event.wait() - self.assertEquals(counter.next(), 100) + self.assertEquals(next(counter), 100) # simple statement future = self.session.execute_async(SimpleStatement("SELECT * FROM test3rf.test")) @@ -100,7 +101,7 @@ class QueryPagingTests(unittest.TestCase): future.add_callbacks(callback=handle_page, callback_args=(future, counter), errback=handle_error) event.wait() - self.assertEquals(counter.next(), 100) + self.assertEquals(next(counter), 100) # prepared statement future = self.session.execute_async(prepared) @@ -109,4 +110,4 @@ class QueryPagingTests(unittest.TestCase): future.add_callbacks(callback=handle_page, callback_args=(future, counter), errback=handle_error) event.wait() - self.assertEquals(counter.next(), 100) + self.assertEquals(next(counter), 100) diff --git a/tests/integration/standard/test_types.py b/tests/integration/standard/test_types.py index b0e7b8b4..0aaba740 100644 --- a/tests/integration/standard/test_types.py +++ b/tests/integration/standard/test_types.py @@ -3,6 +3,7 @@ try: except ImportError: import unittest # noqa +import binascii from decimal import Decimal from datetime import datetime from uuid import uuid1, uuid4 @@ -44,8 +45,8 @@ class TypeTests(unittest.TestCase): """) params = [ - 'key1', - 'blobyblob'.encode('hex') + b'key1', + binascii.hexlify(b'blobyblob') ] query = 'INSERT INTO mytable (a, b) VALUES (%s, %s)'