def test_should_pop_connections_from_queue(self): """Should pull existing connections off of the queue""" conn = ConnectionPool.get() ConnectionPool.put(conn) self.assertEquals(1, ConnectionPool._queue.qsize()) self.assertEquals(conn, ConnectionPool.get()) self.assertEquals(0, ConnectionPool._queue.qsize())
def test_should_close_connection_if_queue_is_full(self): """Should close additional connections if queue is full""" connections = [ConnectionPool.get() for x in range(10)] for conn in connections: ConnectionPool.put(conn) fake_conn = Mock() ConnectionPool.put(fake_conn) fake_conn.close.assert_called_once_with()
def test_logging(self): p = ConnectionPool([Host('127.0.0.1', '9160')]) class MockConnection(object): host = 'localhost' port = 6379 def cursor(self): raise OperationalError('test') with patch.object(p, 'get', return_value=MockConnection()): with self.assertRaises(OperationalError): p.execute("select * from system.peers", {}, ONE)
def test_should_create_single_connection_on_request(self): """Should create a single connection on first request""" result = ConnectionPool.get() self.assertIsNotNone(result) self.assertEquals(0, ConnectionPool._queue.qsize()) ConnectionPool._queue.put(result) self.assertEquals(1, ConnectionPool._queue.qsize())
class ConnectionPoolFailoverTestCase(BaseCassEngTestCase): """Test cassandra connection pooling.""" def setUp(self): self.host = Host('127.0.0.1', '9160') self.pool = ConnectionPool([self.host]) def test_totally_dead_pool(self): # kill the con with patch('cqlengine.connection.cql.connect') as mock: mock.side_effect=CQLEngineException with self.assertRaises(CQLEngineException): self.pool.execute("select * from system.peers", {}) def test_dead_node(self): """ tests that a single dead node doesn't mess up the pool """ self.pool._hosts.append(self.host) # cursor mock needed so set_cql_version doesn't crap out ok_cur = MagicMock() ok_conn = MagicMock() ok_conn.return_value = ok_cur returns = [CQLEngineException(), ok_conn] def side_effect(*args, **kwargs): result = returns.pop(0) if isinstance(result, Exception): raise result return result with patch('cqlengine.connection.cql.connect') as mock: mock.side_effect = side_effect conn = self.pool._create_connection()
def setUp(self): self.host = Host('127.0.0.1', '9160') self.pool = ConnectionPool([self.host])
def setUp(self): ConnectionPool.clear()