Exemplo n.º 1
0
    def test_reconnect_noConnectionMethod(self):
        """
        Reconnection is not possible is the setConnect method hasn't been
        called.
        """
        exc = Exception('foo')

        class BadConn(object):

            def __init__(self):
                self.called = []

            def runQuery(self, *args):
                self.called.append(args)
                return defer.fail(exc)

        c1 = BadConn()
        pool = ConnectionPool()
        pool.add(c1)

        result = pool.runQuery('something', 'ran')

        self.assertEqual(self.failureResultOf(result).value, exc)
        self.assertEqual(len(c1.called), 1)
        self.assertIn(('something', 'ran'), c1.called)
Exemplo n.º 2
0
    def test_reconnect(self):
        """
        If a query fails, make sure it wasn't just closed, reconnect and retry
        if it was.
        """
        class BadConn(object):

            def __init__(self):
                self.called = []

            def runQuery(self, *args):
                self.called.append(args)
                return defer.fail(Exception('foo'))

        c1 = BadConn()

        c2 = MagicMock()
        c2.runQuery.return_value = defer.succeed('success')

        pool = ConnectionPool()
        pool.add(c1)
        pool.setConnect(lambda:c2)

        result = yield pool.runQuery('something', 'ran')
        self.assertEqual(len(c1.called), 2)
        self.assertIn(('something', 'ran'), c1.called)
        c2.runQuery.assert_any_call('something', 'ran')
        self.assertEqual(pool.pool.list(), [c2], "Should have the new conn "
                         "in the pool")
        self.assertEqual(result, 'success', "Should have eventually succeeded")
Exemplo n.º 3
0
    def test_runQuery(self):
        """
        You can run a query
        """
        mock = MagicMock()
        mock.runQuery = MagicMock(return_value=defer.succeed('success'))

        pool = ConnectionPool()
        pool.add(mock)

        d = pool.runQuery('my query')
        self.assertEqual(self.successResultOf(d), 'success')
        mock.runQuery.assert_called_once_with('my query')
Exemplo n.º 4
0
    def test_returnToPool(self):
        """
        After a successful query, interaction or operation, the connection
        should be returned to the pool
        """
        mock = MagicMock()
        mock.runInteraction = MagicMock(return_value=defer.fail(Exception('foo')))
        mock.runQuery = MagicMock(return_value=defer.succeed('something'))
        mock.runOperation = MagicMock(return_value=defer.succeed('success'))

        pool = ConnectionPool()
        pool.add(mock)

        d = pool.runQuery('query')
        self.assertEqual(self.successResultOf(d), 'something')
        d = pool.runOperation('operation')
        self.assertEqual(self.successResultOf(d), 'success')
        d = pool.runInteraction('interaction')
        self.assertIsInstance(self.failureResultOf(d).value, Exception)