def test_add_connection(self): cnxpool = pooling.MySQLConnectionPool(pool_name='test') self.assertRaises(errors.PoolError, cnxpool.add_connection) dbconfig = tests.get_mysql_config() cnxpool = pooling.MySQLConnectionPool(pool_size=2, pool_name='test') cnxpool.set_config(**dbconfig) cnxpool.add_connection() pcnx = pooling.PooledMySQLConnection( cnxpool, cnxpool._cnx_queue.get(block=False)) self.assertTrue(isinstance(pcnx._cnx, MySQLConnection)) self.assertEqual(cnxpool, pcnx._cnx_pool) self.assertEqual(cnxpool._config_version, pcnx._cnx._pool_config_version) cnx = pcnx._cnx pcnx.close() # We should get the same connectoin back self.assertEqual(cnx, cnxpool._cnx_queue.get(block=False)) cnxpool.add_connection(cnx) # reach max connections cnxpool.add_connection() self.assertRaises(errors.PoolError, cnxpool.add_connection) # fail connecting cnxpool._remove_connections() cnxpool._cnx_config['port'] = 9999999 cnxpool._cnx_config['unix_socket'] = '/ham/spam/foobar.socket' self.assertRaises(errors.InterfaceError, cnxpool.add_connection) self.assertRaises(errors.PoolError, cnxpool.add_connection, cnx=str)
def test___init__(self): dbconfig = tests.get_mysql_config() cnxpool = pooling.MySQLConnectionPool(pool_size=1, **dbconfig) self.assertRaises(TypeError, pooling.PooledMySQLConnection) cnx = MySQLConnection(**dbconfig) pcnx = pooling.PooledMySQLConnection(cnxpool, cnx) self.assertEqual(cnxpool, pcnx._cnx_pool) self.assertEqual(cnx, pcnx._cnx) self.assertRaises(AttributeError, pooling.PooledMySQLConnection, None, None) self.assertRaises(AttributeError, pooling.PooledMySQLConnection, cnxpool, None)
def test___init__(self): dbconfig = tests.get_mysql_config() if tests.MYSQL_VERSION < (5, 7): dbconfig["client_flags"] = [-ClientFlag.CONNECT_ARGS] cnxpool = pooling.MySQLConnectionPool(pool_size=1, **dbconfig) self.assertRaises(TypeError, pooling.PooledMySQLConnection) cnx = MySQLConnection(**dbconfig) pcnx = pooling.PooledMySQLConnection(cnxpool, cnx) self.assertEqual(cnxpool, pcnx._cnx_pool) self.assertEqual(cnx, pcnx._cnx) self.assertRaises(AttributeError, pooling.PooledMySQLConnection, None, None) self.assertRaises(AttributeError, pooling.PooledMySQLConnection, cnxpool, None)
def test_close(self): dbconfig = tests.get_mysql_config() cnxpool = pooling.MySQLConnectionPool(pool_size=1, **dbconfig) cnxpool._original_cnx = None def dummy_add_connection(self, cnx=None): self._original_cnx = cnx cnxpool.add_connection = dummy_add_connection.__get__( cnxpool, pooling.MySQLConnectionPool) pcnx = pooling.PooledMySQLConnection(cnxpool, MySQLConnection()) cnx = pcnx._cnx pcnx.close() self.assertEqual(cnx, cnxpool._original_cnx)
def test_close(self): dbconfig = tests.get_mysql_config() if tests.MYSQL_VERSION < (5, 7): dbconfig["client_flags"] = [-ClientFlag.CONNECT_ARGS] cnxpool = pooling.MySQLConnectionPool(pool_size=1, **dbconfig) cnxpool._original_cnx = None def dummy_add_connection(self, cnx=None): self._original_cnx = cnx cnxpool.add_connection = dummy_add_connection.__get__( cnxpool, pooling.MySQLConnectionPool) if tests.MYSQL_VERSION < (5, 7): dbconfig["client_flags"] = [-ClientFlag.CONNECT_ARGS] pcnx = pooling.PooledMySQLConnection(cnxpool, MySQLConnection(**dbconfig)) cnx = pcnx._cnx pcnx.close() self.assertEqual(cnx, cnxpool._original_cnx)
def test___getattr__(self): dbconfig = self.getMySQLConfig() cnxpool = pooling.MySQLConnectionPool(pool_size=1, pool_name='test') cnx = MySQLConnection(**dbconfig) pcnx = pooling.PooledMySQLConnection(cnxpool, cnx) exp_attrs = { '_connection_timeout': dbconfig['connection_timeout'], '_database': dbconfig['database'], '_host': dbconfig['host'], '_password': dbconfig['password'], '_port': dbconfig['port'], '_unix_socket': dbconfig['unix_socket'] } for attr, value in exp_attrs.items(): self.assertEqual( value, getattr(pcnx, attr), "Attribute {0} of reference connection not correct".format( attr)) self.assertEqual(pcnx.connect, cnx.connect)
def test_add_connection(self): cnxpool = pooling.MySQLConnectionPool(pool_name='test') self.assertRaises(errors.PoolError, cnxpool.add_connection) dbconfig = tests.get_mysql_config() if tests.MYSQL_VERSION < (5, 7): dbconfig["client_flags"] = [-ClientFlag.CONNECT_ARGS] cnxpool = pooling.MySQLConnectionPool(pool_size=2, pool_name='test') cnxpool.set_config(**dbconfig) cnxpool.add_connection() pcnx = pooling.PooledMySQLConnection( cnxpool, cnxpool._cnx_queue.get(block=False)) self.assertTrue(isinstance(pcnx._cnx, MYSQL_CNX_CLASS)) self.assertEqual(cnxpool, pcnx._cnx_pool) self.assertEqual(cnxpool._config_version, pcnx._cnx._pool_config_version) cnx = pcnx._cnx pcnx.close() # We should get the same connection back self.assertEqual(cnx, cnxpool._cnx_queue.get(block=False)) cnxpool.add_connection(cnx) # reach max connections cnxpool.add_connection() self.assertRaises(errors.PoolError, cnxpool.add_connection) # fail connecting cnxpool._remove_connections() cnxpool._cnx_config['port'] = 9999999 cnxpool._cnx_config['unix_socket'] = '/ham/spam/foobar.socket' self.assertRaises(errors.Error, cnxpool.add_connection) self.assertRaises(errors.PoolError, cnxpool.add_connection, cnx=str)
def test___getattr__(self): dbconfig = tests.get_mysql_config() if tests.MYSQL_VERSION < (5, 7): dbconfig["client_flags"] = [-ClientFlag.CONNECT_ARGS] cnxpool = pooling.MySQLConnectionPool(pool_size=1, pool_name='test') cnx = MySQLConnection(**dbconfig) pcnx = pooling.PooledMySQLConnection(cnxpool, cnx) exp_attrs = { '_connection_timeout': dbconfig['connection_timeout'], '_database': dbconfig['database'], '_host': dbconfig['host'], '_password': dbconfig['password'], '_port': dbconfig['port'], '_unix_socket': dbconfig['unix_socket'] } for attr, value in exp_attrs.items(): self.assertEqual( value, getattr(pcnx, attr), "Attribute {0} of reference connection not correct".format( attr)) self.assertEqual(pcnx.connect, cnx.connect)