Skip to content

Commit cd21e92

Browse files
committedMay 18, 2021
Improve test suite.
1 parent 0633e10 commit cd21e92

File tree

2 files changed

+77
-27
lines changed

2 files changed

+77
-27
lines changed
 

‎test/test_2400_session_pool.py

+60-27
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,36 @@ def __connect_and_generate_error(self):
3232
self.assertRaises(oracledb.DatabaseError, cursor.execute,
3333
"select 1 / 0 from dual")
3434

35+
def __perform_reconfigure_test(self, parameter_name, parameter_value,
36+
min=3, max=30, increment=4, timeout=5,
37+
wait_timeout=5000, stmtcachesize=25,
38+
max_lifetime_session=1000,
39+
max_sessions_per_shard=3, ping_interval=30,
40+
getmode=oracledb.SPOOL_ATTRVAL_WAIT):
41+
creation_args = dict(min=min, max=max, increment=increment,
42+
timeout=timeout, wait_timeout=wait_timeout,
43+
stmtcachesize=stmtcachesize,
44+
max_lifetime_session=max_lifetime_session,
45+
max_sessions_per_shard=max_sessions_per_shard,
46+
ping_interval=ping_interval, getmode=getmode)
47+
reconfigure_args = {}
48+
reconfigure_args[parameter_name] = parameter_value
49+
50+
pool = test_env.get_pool(**creation_args)
51+
connection = pool.acquire()
52+
pool.reconfigure(**reconfigure_args)
53+
actual_args = dict(min=pool.min, max=pool.max,
54+
increment=pool.increment, timeout=pool.timeout,
55+
wait_timeout=pool.wait_timeout,
56+
stmtcachesize=pool.stmtcachesize,
57+
max_lifetime_session=pool.max_lifetime_session,
58+
max_sessions_per_shard=pool.max_sessions_per_shard,
59+
ping_interval=pool.ping_interval,
60+
getmode=pool.getmode)
61+
expected_args = creation_args.copy()
62+
expected_args.update(reconfigure_args)
63+
self.assertEqual(actual_args, expected_args)
64+
3565
def __verify_connection(self, connection, expected_user,
3666
expected_proxy_user=None):
3767
cursor = connection.cursor()
@@ -376,37 +406,40 @@ def test_2415_reconfigure_pool(self):
376406
self.assertEqual(pool.stmtcachesize, 30, "stmtcachesize (30)")
377407
self.assertEqual(pool.ping_interval, 30, "ping_interval (30)")
378408

379-
def test_2416_reconfigure_pool_with_missing_params(self):
380-
"2416 - test to ensure reconfigure uses initial values if unspecified"
381-
pool = test_env.get_pool(min=1, max=2, increment=1)
409+
def test_2416_test_reconfigure_pool_with_missing_values(self):
410+
"2416 - test the reconfigure values are changed and rest unchanged"
411+
self.__perform_reconfigure_test("min", 5)
412+
self.__perform_reconfigure_test("max", 20)
413+
self.__perform_reconfigure_test("increment", 5)
414+
self.__perform_reconfigure_test("timeout", 10)
415+
self.__perform_reconfigure_test("wait_timeout", 8000)
416+
self.__perform_reconfigure_test("stmtcachesize", 40)
417+
self.__perform_reconfigure_test("max_lifetime_session", 2000)
418+
self.__perform_reconfigure_test("max_sessions_per_shard", 5)
419+
self.__perform_reconfigure_test("ping_interval", 50)
420+
self.__perform_reconfigure_test("getmode",
421+
oracledb.SPOOL_ATTRVAL_NOWAIT)
422+
423+
def test_2417_setting_each_pool_param(self):
424+
"2417 - test to see if specified parameters are set during creation"
425+
pool = test_env.get_pool(min=1, max=2, increment=1, timeout=10,
426+
wait_timeout=10, max_lifetime_session=20,
427+
max_sessions_per_shard=1, stmtcachesize=25,
428+
ping_interval=25,
429+
getmode=oracledb.SPOOL_ATTRVAL_WAIT)
382430
self.assertEqual(pool.min, 1, "min (1)")
383431
self.assertEqual(pool.max, 2, "max (2)")
384432
self.assertEqual(pool.increment, 1, "increment (1)")
385-
self.assertEqual(pool.getmode, oracledb.SPOOL_ATTRVAL_NOWAIT,
386-
"getmode differs")
387-
self.assertEqual(pool.timeout, 0, "timeout (0)")
388-
self.assertEqual(pool.wait_timeout, 5000, "wait_timeout (5000)")
389-
self.assertEqual(pool.max_lifetime_session, 0,
390-
"max_lifetime_sessionmeout (0)")
391-
self.assertEqual(pool.max_sessions_per_shard, 0,
392-
"max_sessions_per_shard (0)")
393-
self.assertEqual(pool.stmtcachesize, 20, "stmtcachesize (20)")
394-
self.assertEqual(pool.ping_interval, 60, "ping_interval (60)")
395-
396-
pool.reconfigure(min=2, max=5, increment=2)
397-
self.assertEqual(pool.min, 2, "min (2)")
398-
self.assertEqual(pool.max, 5, "max (5)")
399-
self.assertEqual(pool.increment, 2, "increment (2)")
400-
self.assertEqual(pool.getmode, oracledb.SPOOL_ATTRVAL_NOWAIT,
433+
self.assertEqual(pool.getmode, oracledb.SPOOL_ATTRVAL_WAIT,
401434
"getmode differs")
402-
self.assertEqual(pool.timeout, 0, "timeout (0)")
403-
self.assertEqual(pool.wait_timeout, 5000, "wait_timeout (5000)")
404-
self.assertEqual(pool.max_lifetime_session, 0,
405-
"max_lifetime_sessionmeout (0)")
406-
self.assertEqual(pool.max_sessions_per_shard, 0,
407-
"max_sessions_per_shard (0)")
408-
self.assertEqual(pool.stmtcachesize, 20, "stmtcachesize (20)")
409-
self.assertEqual(pool.ping_interval, 60, "ping_interval (60)")
435+
self.assertEqual(pool.timeout, 10, "timeout (10)")
436+
self.assertEqual(pool.wait_timeout, 10, "wait_timeout (10)")
437+
self.assertEqual(pool.max_lifetime_session, 20,
438+
"max_lifetime_sessionmeout (20)")
439+
self.assertEqual(pool.max_sessions_per_shard, 1,
440+
"max_sessions_per_shard (1)")
441+
self.assertEqual(pool.stmtcachesize, 25, "stmtcachesize (25)")
442+
self.assertEqual(pool.ping_interval, 25, "ping_interval (25)")
410443

411444
if __name__ == "__main__":
412445
test_env.run_test_cases()

‎test/test_2500_string_var.py

+17
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ def setUp(self):
3636
self.raw_data.append(data_tuple)
3737
self.data_by_key[i] = data_tuple
3838

39+
def __return_strings_as_bytes(self, cursor, name, default_type, size,
40+
precision, scale):
41+
if default_type == oracledb.DB_TYPE_VARCHAR:
42+
return cursor.var(str, arraysize=cursor.arraysize,
43+
bypass_decode=True)
44+
3945
def test_2500_array_with_increased_size(self):
4046
"2500 - test creating array var and then increasing the internal size"
4147
val = ["12345678901234567890"] * 3
@@ -440,5 +446,16 @@ def test_2532_fetch_null_values(self):
440446
self.cursor.execute(sql, start_value=8, end_value=10)
441447
self.assertEqual(self.cursor.fetchall(), self.raw_data[7:10])
442448

449+
def test_2533_bypass_decode(self):
450+
"2533 - test bypass string decode"
451+
self.cursor.execute("truncate table TestTempTable")
452+
string_val = "I bought a cafetière on the Champs-Élysées"
453+
sql = "insert into TestTempTable (IntCol, StringCol) values (:1, :2)"
454+
self.cursor.execute(sql, (1, string_val))
455+
self.cursor.outputtypehandler = self.__return_strings_as_bytes
456+
self.cursor.execute("select IntCol, StringCol from TestTempTable")
457+
expected_value = (1, string_val.encode())
458+
self.assertEqual(self.cursor.fetchone(), expected_value)
459+
443460
if __name__ == "__main__":
444461
test_env.run_test_cases()

0 commit comments

Comments
 (0)