示例#1
0
 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())
示例#2
0
 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)
示例#4
0
 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())
示例#5
0
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()
示例#6
0
 def setUp(self):
     self.host = Host('127.0.0.1', '9160')
     self.pool = ConnectionPool([self.host])
示例#7
0
 def setUp(self):
     ConnectionPool.clear()