def test_cancel_transaction(self): db = SteadyDBconnect(dbapi, database='ok') cursor = db.cursor() db.begin() cursor.execute('select test14') self.assertEqual(cursor.fetchone(), 'test14') db.cancel() cursor.execute('select test14') self.assertEqual(cursor.fetchone(), 'test14')
def test_reset_transaction(self): db = SteadyDBconnect(dbapi, database='ok') db.begin() self.assertFalse(db._con.session) db.close() self.assertFalse(db._con.session) db = SteadyDBconnect(dbapi, database='ok', closeable=False) db.begin() self.assertFalse(db._con.session) db.close() self.assertEqual(db._con.session, ['rollback'])
def test_with_begin_extension(self): db = SteadyDBconnect(dbapi, database='ok') db._con._begin_called_with = None def begin(a, b=None, c=7): db._con._begin_called_with = (a, b, c) db._con.begin = begin db.begin(42, 6) cursor = db.cursor() cursor.execute('select test13') self.assertEqual(cursor.fetchone(), 'test13') self.assertEqual(db._con._begin_called_with, (42, 6, 7))
def test_with_cancel_extension(self): db = SteadyDBconnect(dbapi, database='ok') db._con._cancel_called = None def cancel(): db._con._cancel_called = 'yes' db._con.cancel = cancel db.begin() cursor = db.cursor() cursor.execute('select test15') self.assertEqual(cursor.fetchone(), 'test15') db.cancel() self.assertEqual(db._con._cancel_called, 'yes')
def test_connection_maxusage(self): db = SteadyDBconnect(dbapi, 10) cursor = db.cursor() for i in range(100): cursor.execute('select test%d' % i) r = cursor.fetchone() self.assertEqual(r, 'test%d' % i) self.assertTrue(db._con.valid) j = i % 10 + 1 self.assertEqual(db._usage, j) self.assertEqual(db._con.num_uses, j) self.assertEqual(db._con.num_queries, j) self.assertEqual(db._con.open_cursors, 1) db.begin() for i in range(100): cursor.callproc('test') self.assertTrue(db._con.valid) if i == 49: db.commit() j = i % 10 + 1 if i > 49 else i + 11 self.assertEqual(db._usage, j) self.assertEqual(db._con.num_uses, j) j = 0 if i > 49 else 10 self.assertEqual(db._con.num_queries, j) for i in range(10): if i == 7: db._con.valid = cursor._cursor.valid = False cursor.execute('select test%d' % i) r = cursor.fetchone() self.assertEqual(r, 'test%d' % i) j = i % 7 + 1 self.assertEqual(db._usage, j) self.assertEqual(db._con.num_uses, j) self.assertEqual(db._con.num_queries, j) for i in range(10): if i == 5: db._con.valid = cursor._cursor.valid = False cursor.callproc('test') j = (i + (3 if i < 5 else -5)) % 10 + 1 self.assertEqual(db._usage, j) self.assertEqual(db._con.num_uses, j) j = 3 if i < 5 else 0 self.assertEqual(db._con.num_queries, j) db.close() cursor.execute('select test1') self.assertEqual(cursor.fetchone(), 'test1') self.assertEqual(db._usage, 1) self.assertEqual(db._con.num_uses, 1) self.assertEqual(db._con.num_queries, 1)
def test_rollback_error(self): db = SteadyDBconnect(dbapi, database='ok') db.begin() self.assertFalse(db._con.session) self.assertTrue(db._con.valid) db.rollback() self.assertEqual(db._con.session, ['rollback']) self.assertTrue(db._con.valid) db.begin() db._con.valid = False con = db._con self.assertRaises(dbapi.InternalError, db.rollback) self.assertFalse(db._con.session) self.assertTrue(db._con.valid) self.assertIsNot(con, db._con) db.begin() self.assertFalse(db._con.session) self.assertTrue(db._con.valid) db.rollback() self.assertEqual(db._con.session, ['rollback']) self.assertTrue(db._con.valid)
def test_begin_transaction(self): db = SteadyDBconnect(dbapi, database='ok') cursor = db.cursor() cursor.close() cursor.execute('select test12') self.assertEqual(cursor.fetchone(), 'test12') db.begin() cursor = db.cursor() cursor.close() self.assertRaises(dbapi.InternalError, cursor.execute, 'select test12') cursor.execute('select test12') self.assertEqual(cursor.fetchone(), 'test12') db.close() db.begin() self.assertRaises(dbapi.InternalError, cursor.execute, 'select test12') cursor.execute('select test12') self.assertEqual(cursor.fetchone(), 'test12') db.begin() self.assertRaises(dbapi.ProgrammingError, cursor.execute, 'error') cursor.close() cursor.execute('select test12') self.assertEqual(cursor.fetchone(), 'test12')