示例#1
0
    def testGet(self):
        pool_size = 2
        num_dbs = 2
        p = sql.ConnectionPool(pool_size)

        for i in range(num_dbs):
            for _ in range(pool_size):
                c = p.get('test', 'db%d' % i)
                self.assertIsNotNone(c)
                p.release(c)

        cnxn1 = p.get('test', 'db0')
        q = p.queues[cnxn1.pool_key]
        self.assertIs(q.qsize(), 0)

        p.release(cnxn1)
        self.assertIs(q.qsize(), pool_size - 1)
        self.assertIs(q.full(), False)
        self.assertIs(q.empty(), False)

        cnxn2 = p.get('test', 'db0')
        q = p.queues[cnxn2.pool_key]
        self.assertIs(q.qsize(), 0)
        self.assertIs(q.full(), False)
        self.assertIs(q.empty(), True)
示例#2
0
    def testGetAndReturnPooledCnxn(self):
        p = sql.ConnectionPool(2)

        cnxn1 = p.get('test', 'db1')
        self.assertIs(len(p.queues), 1)

        cnxn2 = p.get('test', 'db2')
        self.assertIs(len(p.queues), 2)

        # Should use the existing pool.
        cnxn3 = p.get('test', 'db1')
        self.assertIs(len(p.queues), 2)

        p.release(cnxn3)
        p.release(cnxn2)

        cnxn1.is_bad = True
        p.release(cnxn1)
        # cnxn1 should not be returned from the pool if we
        # ask for a connection to its database.

        cnxn4 = p.get('test', 'db1')

        self.assertIsNot(cnxn1, cnxn4)
        self.assertIs(len(p.queues), 2)
        self.assertIs(cnxn4.is_bad, False)
示例#3
0
    def testGetAndReturnPooledCnxn_badCnxn(self):
        p = sql.ConnectionPool(2)

        cnxn1 = p.get('test', 'db1')
        cnxn2 = p.get('test', 'db2')
        cnxn3 = p.get('test', 'db1')

        cnxn3.is_bad = True

        p.release(cnxn3)
        q = p.queues[cnxn3.pool_key]
        self.assertIs(q.qsize(), 1)

        with self.assertRaises(BaseException):
            cnxn3 = p.get('test', 'db1')

        q = p.queues[cnxn2.pool_key]
        self.assertIs(q.qsize(), 0)
        p.release(cnxn2)
        self.assertIs(q.qsize(), 1)

        p.release(cnxn1)
        q = p.queues[cnxn1.pool_key]
        self.assertIs(q.qsize(), 1)