Skip to content

Commit 2b48b14

Browse files
Improved test suite and checks.
1 parent 3f93955 commit 2b48b14

File tree

4 files changed

+77
-38
lines changed

4 files changed

+77
-38
lines changed

src/oracledb/pool.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1458,6 +1458,8 @@ def add_pool(self, alias, pool):
14581458
Adds a pool to the cache. An exception is raised if a pool is already
14591459
cached with the given alias.
14601460
"""
1461+
if not isinstance(alias, str):
1462+
raise TypeError("pool_alias must be a string")
14611463
with self.lock:
14621464
if alias in self.pools:
14631465
errors._raise_err(errors.ERR_NAMED_POOL_EXISTS, alias=alias)

tests/test_2400_pool.py

Lines changed: 41 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -987,35 +987,61 @@ def test_2448(self):
987987
self.assertEqual(conn.edition, edition)
988988

989989
def test_2449(self):
990-
"2449 - test create_pool() and get_pool() with name"
991-
name = "pool_alias_2449"
992-
pool = test_env.get_pool(pool_alias=name)
993-
self.assertIs(pool, oracledb.get_pool(name))
990+
"2449 - test create_pool() and get_pool() with alias"
991+
alias = "pool_alias_2449"
992+
pool = test_env.get_pool(pool_alias=alias)
993+
self.assertIs(pool, oracledb.get_pool(alias))
994994
pool.close()
995995

996996
def test_2450(self):
997-
"2450 - test create_pool() twice with the same name"
998-
name = "pool_alias_2450"
999-
pool = test_env.get_pool(pool_alias=name)
997+
"2450 - test create_pool() twice with the same alias"
998+
alias = "pool_alias_2450"
999+
pool = test_env.get_pool(pool_alias=alias)
10001000
with self.assertRaisesFullCode("DPY-2055"):
1001-
test_env.get_pool(pool_alias=name)
1001+
test_env.get_pool(pool_alias=alias)
10021002
pool.close()
1003-
self.assertIsNone(oracledb.get_pool(name))
1003+
self.assertIsNone(oracledb.get_pool(alias))
10041004

10051005
def test_2451(self):
1006-
"2451 - test connect() with pool name"
1007-
name = "pool_alias_2451"
1008-
pool = test_env.get_pool(pool_alias=name)
1006+
"2451 - test connect() with pool alias"
1007+
alias = "pool_alias_2451"
1008+
pool = test_env.get_pool(pool_alias=alias)
10091009
with self.assertRaisesFullCode("DPY-2014"):
1010-
test_env.get_connection(pool=pool, pool_alias=name)
1011-
with oracledb.connect(pool_alias=name) as conn:
1010+
test_env.get_connection(pool=pool, pool_alias=alias)
1011+
with oracledb.connect(pool_alias=alias) as conn:
10121012
with conn.cursor() as cursor:
10131013
cursor.execute("select user from dual")
10141014
(value,) = cursor.fetchone()
10151015
self.assertEqual(value, test_env.get_main_user().upper())
10161016
pool.close()
10171017
with self.assertRaisesFullCode("DPY-2054"):
1018-
oracledb.connect(pool_alias=name)
1018+
oracledb.connect(pool_alias=alias)
1019+
1020+
def test_2452(self):
1021+
"2452 - test acquire() with pool alias and stmtcachesize"
1022+
alias = "pool_2452"
1023+
stmtcachesize = 35
1024+
test_env.get_pool(pool_alias=alias, stmtcachesize=stmtcachesize)
1025+
with oracledb.connect(pool_alias=alias) as conn:
1026+
self.assertEqual(conn.stmtcachesize, stmtcachesize)
1027+
oracledb.get_pool(alias).close()
1028+
1029+
def test_2453(self):
1030+
"2453 - test pool alias is case sensitive"
1031+
alias = "pool_2458"
1032+
test_env.get_pool(pool_alias=alias)
1033+
self.assertIsNone(oracledb.get_pool(alias.upper()))
1034+
with self.assertRaisesFullCode("DPY-2054"):
1035+
test_env.get_connection(pool_alias=alias.upper())
1036+
oracledb.get_pool(alias).close()
1037+
1038+
def test_2454(self):
1039+
"2454 - test pool alias with invalid types"
1040+
aliases = [5, set(), dict(), bytearray(1)]
1041+
for alias in aliases:
1042+
with self.subTest(alias=alias):
1043+
with self.assertRaises(TypeError):
1044+
test_env.get_pool(pool_alias=alias)
10191045

10201046

10211047
if __name__ == "__main__":

tests/test_5500_pool_async.py

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -590,37 +590,46 @@ async def test_5536(self):
590590
await pool.close()
591591

592592
async def test_5537(self):
593-
"5537 - test create_pool() and get_pool() with name"
594-
name = "pool_alias_5537"
595-
pool = test_env.get_pool_async(pool_alias=name)
596-
self.assertIs(pool, oracledb.get_pool(name))
593+
"5537 - test create_pool() and get_pool() with alias"
594+
alias = "pool_alias_5537"
595+
pool = test_env.get_pool_async(pool_alias=alias)
596+
self.assertIs(pool, oracledb.get_pool(alias))
597597
await pool.close()
598598

599599
async def test_5538(self):
600-
"5538 - test create_pool() twice with the same name"
601-
name = "pool_alias_5538"
602-
pool = test_env.get_pool_async(pool_alias=name)
600+
"5538 - test create_pool() twice with the same alias"
601+
alias = "pool_alias_5538"
602+
pool = test_env.get_pool_async(pool_alias=alias)
603603
with self.assertRaisesFullCode("DPY-2055"):
604-
test_env.get_pool_async(pool_alias=name)
604+
test_env.get_pool_async(pool_alias=alias)
605605
await pool.close()
606-
self.assertIsNone(oracledb.get_pool(name))
606+
self.assertIsNone(oracledb.get_pool(alias))
607607

608608
async def test_5539(self):
609-
"5539 - test connect() with pool name"
610-
name = "pool_alias_5539"
611-
pool = test_env.get_pool_async(pool_alias=name)
612-
try:
613-
with self.assertRaisesFullCode("DPY-2014"):
614-
test_env.get_connection_async(pool=pool, pool_alias=name)
615-
async with oracledb.connect_async(pool_alias=name) as conn:
616-
with conn.cursor() as cursor:
617-
await cursor.execute("select user from dual")
618-
(value,) = await cursor.fetchone()
619-
self.assertEqual(value, test_env.get_main_user().upper())
620-
finally:
621-
await pool.close(force=True)
609+
"5539 - test acquire() with pool alias and stmtcachesize"
610+
alias = "pool_5539"
611+
stmtcachesize = 35
612+
test_env.get_pool_async(pool_alias=alias, stmtcachesize=stmtcachesize)
613+
async with oracledb.connect_async(pool_alias=alias) as conn:
614+
self.assertEqual(conn.stmtcachesize, stmtcachesize)
615+
await oracledb.get_pool(alias).close()
616+
617+
async def test_5540(self):
618+
"5540 - test pool alias is case sensitive"
619+
alias = "pool_5540"
620+
test_env.get_pool_async(pool_alias=alias)
621+
self.assertIsNone(oracledb.get_pool(alias.upper()))
622622
with self.assertRaisesFullCode("DPY-2054"):
623-
await oracledb.connect_async(pool_alias=name)
623+
await test_env.get_connection_async(pool_alias=alias.upper())
624+
await oracledb.get_pool(alias).close()
625+
626+
async def test_5541(self):
627+
"5541 - test pool alias with invalid types"
628+
aliases = [5, set(), dict(), bytearray(1)]
629+
for alias in aliases:
630+
with self.subTest(alias=alias):
631+
with self.assertRaises(TypeError):
632+
test_env.get_pool_async(pool_alias=alias)
624633

625634

626635
if __name__ == "__main__":

utils/templates/pool.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -864,6 +864,8 @@ def add_pool(self, alias, pool):
864864
Adds a pool to the cache. An exception is raised if a pool is already
865865
cached with the given alias.
866866
"""
867+
if not isinstance(alias, str):
868+
raise TypeError("pool_alias must be a string")
867869
with self.lock:
868870
if alias in self.pools:
869871
errors._raise_err(errors.ERR_NAMED_POOL_EXISTS, alias=alias)

0 commit comments

Comments
 (0)