Ejemplo n.º 1
0
    def test_reconnect(self):
        dbapi = MockDBAPI()
        p = pool.NullPool(creator = lambda: dbapi.connect('foo.db'))
        c1 = p.connect()
        c_id = c1.connection.id
        c1.close(); c1=None

        c1 = p.connect()
        dbapi.raise_error = True
        c1.invalidate()
        c1 = None

        c1 = p.connect()
        assert c1.connection.id != c_id
Ejemplo n.º 2
0
    def test_reconnect(self):
        dbapi = MockDBAPI()
        p = pool.NullPool(creator=lambda: dbapi.connect('foo.db'))
        c1 = p.connect()

        c1.close()
        c1 = None

        c1 = p.connect()
        c1.invalidate()
        c1 = None

        c1 = p.connect()
        dbapi.connect.assert_has_calls(
            [call('foo.db'), call('foo.db')], any_order=True)
Ejemplo n.º 3
0
    def test_notify_waiters(self):
        dbapi = MockDBAPI()
        canary = []

        def creator1():
            canary.append(1)
            return dbapi.connect()

        def creator2():
            canary.append(2)
            return dbapi.connect()

        p1 = pool.QueuePool(creator=creator1,
                            pool_size=1,
                            timeout=None,
                            max_overflow=0)
        p2 = pool.NullPool(creator=creator2)

        def waiter(p):
            conn = p.connect()
            time.sleep(.5)
            conn.close()

        c1 = p1.connect()

        threads = []
        for i in range(5):
            t = threading.Thread(target=waiter, args=(p1, ))
            t.start()
            threads.append(t)
        time.sleep(.5)
        eq_(canary, [1])
        p1._pool.abort(p2)

        for t in threads:
            t.join(join_timeout)

        eq_(canary, [1, 2, 2, 2, 2, 2])