diff --git a/tests/__init__.py b/tests/__init__.py index 35ed524a..661af7b1 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,58 +1,5 @@ import logging -import unittest - -from cassandra.cluster import Cluster -from cassandra.connection import _loop -from cassandra.policies import HostDistance log = logging.getLogger() log.setLevel('DEBUG') log.addHandler(logging.StreamHandler()) - -existing_keyspaces = None - -def setup_package(): - try: - cluster = Cluster() - cluster.set_core_connections_per_host(HostDistance.LOCAL, 1) - cluster.set_max_connections_per_host(HostDistance.LOCAL, 1) - session = cluster.connect() - except Exception, exc: - log.exception('Failed to connect to cluster:') - raise unittest.SkipTest('Failed to connect to cluster: %r' % exc) - - try: - global existing_keyspaces - results = session.execute("SELECT keyspace_name FROM system.schema_keyspaces") - existing_keyspaces = set([row.values()[0] for row in results]) - finally: - try: - cluster.shutdown() - except Exception, exc: - log.exception('Failed to connect to cluster:') - raise unittest.SkipTest('Failed to connect to cluster: %r' % exc) - - -def teardown_package(): - try: - cluster = Cluster() - cluster.set_core_connections_per_host(HostDistance.LOCAL, 1) - cluster.set_max_connections_per_host(HostDistance.LOCAL, 1) - session = cluster.connect() - except Exception: - log.exception('Failed to connect to cluster:') - return - - try: - if existing_keyspaces: - results = session.execute("SELECT keyspace_name FROM system.schema_keyspaces") - current_keyspaces = set([row.values()[0] for row in results]) - for keyspace in current_keyspaces - existing_keyspaces: - session.execute("DROP KEYSPACE %s" % (keyspace,)) - - finally: - try: - cluster.shutdown() - _loop.stop() - except: - log.exception('Failed to connect to cluster:') diff --git a/tests/integration/__init__.py b/tests/integration/__init__.py new file mode 100644 index 00000000..e1ed3889 --- /dev/null +++ b/tests/integration/__init__.py @@ -0,0 +1,55 @@ +import logging +log = logging.getLogger(__name__) +import unittest + +from cassandra.cluster import Cluster +from cassandra.connection import _loop +from cassandra.policies import HostDistance + +existing_keyspaces = None + +def setup_package(): + try: + cluster = Cluster() + cluster.set_core_connections_per_host(HostDistance.LOCAL, 1) + cluster.set_max_connections_per_host(HostDistance.LOCAL, 1) + session = cluster.connect() + except Exception, exc: + log.exception('Failed to connect to cluster:') + raise unittest.SkipTest('Failed to connect to cluster: %r' % exc) + + try: + global existing_keyspaces + results = session.execute("SELECT keyspace_name FROM system.schema_keyspaces") + existing_keyspaces = set([row.values()[0] for row in results]) + finally: + try: + cluster.shutdown() + except Exception, exc: + log.exception('Failed to connect to cluster:') + raise unittest.SkipTest('Failed to connect to cluster: %r' % exc) + + +def teardown_package(): + try: + cluster = Cluster() + cluster.set_core_connections_per_host(HostDistance.LOCAL, 1) + cluster.set_max_connections_per_host(HostDistance.LOCAL, 1) + session = cluster.connect() + except Exception: + log.exception('Failed to connect to cluster:') + return + + try: + if existing_keyspaces: + results = session.execute("SELECT keyspace_name FROM system.schema_keyspaces") + current_keyspaces = set([row.values()[0] for row in results]) + for keyspace in current_keyspaces - existing_keyspaces: + session.execute("DROP KEYSPACE %s" % (keyspace,)) + + finally: + try: + cluster.shutdown() + _loop.stop() + except: + log.exception('Failed to connect to cluster:') diff --git a/tests/integration/test_cluster.py b/tests/integration/test_cluster.py new file mode 100644 index 00000000..7423ef98 --- /dev/null +++ b/tests/integration/test_cluster.py @@ -0,0 +1,75 @@ +import unittest + +from cassandra.cluster import Cluster + +class ClusterTests(unittest.TestCase): + + def test_basic(self): + cluster = Cluster() + session = cluster.connect() + result = session.execute( + """ + CREATE KEYSPACE clustertests + WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} + """) + self.assertEquals(None, result) + + result = session.execute( + """ + CREATE TABLE clustertests.cf0 ( + a text, + b text, + c text, + PRIMARY KEY (a, b) + ) + """) + self.assertEquals(None, result) + + result = session.execute( + """ + INSERT INTO clustertests.cf0 (a, b, c) VALUES ('a', 'b', 'c') + """) + self.assertEquals(None, result) + + result = session.execute("SELECT * FROM clustertests.cf0") + self.assertEquals([{'a': 'a', 'b': 'b', 'c': 'c'}], result) + + cluster.shutdown() + + def test_submit_schema_refresh(self): + cluster = Cluster() + cluster.connect() + + other_cluster = Cluster() + session = other_cluster.connect() + session.execute( + """ + CREATE KEYSPACE newkeyspace + WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} + """) + + self.assertNotIn("newkeyspace", cluster.metadata.keyspaces) + + future = cluster.submit_schema_refresh() + future.result() + + self.assertIn("newkeyspace", cluster.metadata.keyspaces) + + def test_on_down_and_up(self): + cluster = Cluster() + session = cluster.connect() + host = cluster.metadata.all_hosts()[0] + host.monitor.signal_connection_failure(None) + cluster.on_down(host) + self.assertNotEqual(None, cluster.control_connection._reconnection_handler) + self.assertNotIn(host, session._pools) + host_reconnector = host._reconnection_handler + self.assertNotEqual(None, host_reconnector) + + host.monitor.is_up = True + + cluster.on_up(host) + + self.assertEqual(None, host._reconnection_handler) + self.assertTrue(host_reconnector._cancelled) + self.assertIn(host, session._pools) diff --git a/tests/test_connection.py b/tests/integration/test_connection.py similarity index 100% rename from tests/test_connection.py rename to tests/integration/test_connection.py diff --git a/tests/test_metadata.py b/tests/integration/test_metadata.py similarity index 100% rename from tests/test_metadata.py rename to tests/integration/test_metadata.py diff --git a/tests/test_cluster.py b/tests/integration/test_response_future.py similarity index 83% rename from tests/test_cluster.py rename to tests/integration/test_response_future.py index 9abd6cf1..aa6c7261 100644 --- a/tests/test_cluster.py +++ b/tests/integration/test_response_future.py @@ -2,7 +2,7 @@ import unittest from mock import Mock, ANY from cassandra import ConsistencyLevel -from cassandra.cluster import Cluster, Session, ResponseFuture, NoHostAvailable +from cassandra.cluster import Session, ResponseFuture, NoHostAvailable from cassandra.connection import ConnectionException from cassandra.decoder import (ReadTimeoutErrorMessage, WriteTimeoutErrorMessage, UnavailableErrorMessage, ResultMessage, QueryMessage, @@ -11,79 +11,6 @@ from cassandra.policies import RetryPolicy from cassandra.pool import NoConnectionsAvailable from cassandra.query import SimpleStatement -class ClusterTests(unittest.TestCase): - - def test_basic(self): - cluster = Cluster() - session = cluster.connect() - result = session.execute( - """ - CREATE KEYSPACE clustertests - WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} - """) - self.assertEquals(None, result) - - result = session.execute( - """ - CREATE TABLE clustertests.cf0 ( - a text, - b text, - c text, - PRIMARY KEY (a, b) - ) - """) - self.assertEquals(None, result) - - result = session.execute( - """ - INSERT INTO clustertests.cf0 (a, b, c) VALUES ('a', 'b', 'c') - """) - self.assertEquals(None, result) - - result = session.execute("SELECT * FROM clustertests.cf0") - self.assertEquals([{'a': 'a', 'b': 'b', 'c': 'c'}], result) - - cluster.shutdown() - - def test_submit_schema_refresh(self): - cluster = Cluster() - cluster.connect() - - other_cluster = Cluster() - session = other_cluster.connect() - session.execute( - """ - CREATE KEYSPACE newkeyspace - WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} - """) - - self.assertNotIn("newkeyspace", cluster.metadata.keyspaces) - - future = cluster.submit_schema_refresh() - future.result() - - self.assertIn("newkeyspace", cluster.metadata.keyspaces) - - def test_on_down_and_up(self): - cluster = Cluster() - session = cluster.connect() - host = cluster.metadata.all_hosts()[0] - host.monitor.signal_connection_failure(None) - cluster.on_down(host) - self.assertNotEqual(None, cluster.control_connection._reconnection_handler) - self.assertNotIn(host, session._pools) - host_reconnector = host._reconnection_handler - self.assertNotEqual(None, host_reconnector) - - host.monitor.is_up = True - - cluster.on_up(host) - - self.assertEqual(None, host._reconnection_handler) - self.assertTrue(host_reconnector._cancelled) - self.assertIn(host, session._pools) - - class ResponseFutureTests(unittest.TestCase): def make_session(self): diff --git a/tests/unit/__init__.py b/tests/unit/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/test_control_connection.py b/tests/unit/test_control_connection.py similarity index 100% rename from tests/test_control_connection.py rename to tests/unit/test_control_connection.py diff --git a/tests/test_host_connection_pool.py b/tests/unit/test_host_connection_pool.py similarity index 87% rename from tests/test_host_connection_pool.py rename to tests/unit/test_host_connection_pool.py index b2d882b6..2126bfdd 100644 --- a/tests/test_host_connection_pool.py +++ b/tests/unit/test_host_connection_pool.py @@ -20,10 +20,10 @@ class HostConnectionPoolTests(unittest.TestCase): host = Mock(spec=Host, address='ip1') session = self.make_session() conn = NonCallableMagicMock(spec=Connection, in_flight=0, is_defunct=False, is_closed=False) - session.cluster.connection_factory.return_value = conn + session.cluster._connection_factory.return_value = conn pool = HostConnectionPool(host, HostDistance.LOCAL, session) - session.cluster.connection_factory.assert_called_once_with(host.address) + session.cluster._connection_factory.assert_called_once_with(host.address) c = pool.borrow_connection(timeout=0.01) self.assertIs(c, conn) @@ -38,10 +38,10 @@ class HostConnectionPoolTests(unittest.TestCase): host = Mock(spec=Host, address='ip1') session = self.make_session() conn = NonCallableMagicMock(spec=Connection, in_flight=0, is_defunct=False, is_closed=False) - session.cluster.connection_factory.return_value = conn + session.cluster._connection_factory.return_value = conn pool = HostConnectionPool(host, HostDistance.LOCAL, session) - session.cluster.connection_factory.assert_called_once_with(host.address) + session.cluster._connection_factory.assert_called_once_with(host.address) pool.borrow_connection(timeout=0.01) self.assertEqual(1, conn.in_flight) @@ -56,10 +56,10 @@ class HostConnectionPoolTests(unittest.TestCase): host = Mock(spec=Host, address='ip1') session = self.make_session() conn = NonCallableMagicMock(spec=Connection, in_flight=0, is_defunct=False, is_closed=False) - session.cluster.connection_factory.return_value = conn + session.cluster._connection_factory.return_value = conn pool = HostConnectionPool(host, HostDistance.LOCAL, session) - session.cluster.connection_factory.assert_called_once_with(host.address) + session.cluster._connection_factory.assert_called_once_with(host.address) pool.borrow_connection(timeout=0.01) self.assertEqual(1, conn.in_flight) @@ -80,7 +80,7 @@ class HostConnectionPoolTests(unittest.TestCase): host = Mock(spec=Host, address='ip1') session = self.make_session() conn = NonCallableMagicMock(spec=Connection, in_flight=0, is_defunct=False, is_closed=False) - session.cluster.connection_factory.return_value = conn + session.cluster._connection_factory.return_value = conn session.cluster.get_core_connections_per_host.return_value = 1 # manipulate the core connection setting so that we can @@ -121,13 +121,13 @@ class HostConnectionPoolTests(unittest.TestCase): host = Mock(spec=Host, address='ip1') session = self.make_session() conn = NonCallableMagicMock(spec=Connection, in_flight=0, is_defunct=False, is_closed=False) - session.cluster.connection_factory.return_value = conn + session.cluster._connection_factory.return_value = conn # core conns = 1, max conns = 2 session.cluster.get_max_connections_per_host.return_value = 2 pool = HostConnectionPool(host, HostDistance.LOCAL, session) - session.cluster.connection_factory.assert_called_once_with(host.address) + session.cluster._connection_factory.assert_called_once_with(host.address) pool.borrow_connection(timeout=0.01) self.assertEqual(1, conn.in_flight) @@ -145,10 +145,10 @@ class HostConnectionPoolTests(unittest.TestCase): host = Mock(spec=Host, address='ip1') session = self.make_session() conn = NonCallableMagicMock(spec=Connection, in_flight=0, is_defunct=False, is_closed=False) - session.cluster.connection_factory.return_value = conn + session.cluster._connection_factory.return_value = conn pool = HostConnectionPool(host, HostDistance.LOCAL, session) - session.cluster.connection_factory.assert_called_once_with(host.address) + session.cluster._connection_factory.assert_called_once_with(host.address) pool.borrow_connection(timeout=0.01) conn.is_defunct = True @@ -165,10 +165,10 @@ class HostConnectionPoolTests(unittest.TestCase): host.monitor = Mock(spec=HealthMonitor) session = self.make_session() conn = NonCallableMagicMock(spec=Connection, in_flight=0, is_defunct=False, is_closed=False) - session.cluster.connection_factory.return_value = conn + session.cluster._connection_factory.return_value = conn pool = HostConnectionPool(host, HostDistance.LOCAL, session) - session.cluster.connection_factory.assert_called_once_with(host.address) + session.cluster._connection_factory.assert_called_once_with(host.address) pool.borrow_connection(timeout=0.01) conn.is_defunct = True diff --git a/tests/test_marshalling.py b/tests/unit/test_marshalling.py similarity index 100% rename from tests/test_marshalling.py rename to tests/unit/test_marshalling.py diff --git a/tests/test_policies.py b/tests/unit/test_policies.py similarity index 100% rename from tests/test_policies.py rename to tests/unit/test_policies.py