示例#1
0
 def test05_SteadyDBConnectionCreatorFunction(self):
     db1 = SteadyDBconnect(dbapi, 0, None, None, None, True, "SteadyDBTestDB", user="******")
     db2 = SteadyDBconnect(connect, 0, None, None, None, True, "SteadyDBTestDB", user="******")
     self.assertEqual(db1.dbapi(), db2.dbapi())
     self.assertEqual(db1.threadsafety(), db2.threadsafety())
     self.assertEqual(db1._creator, db2._creator)
     self.assertEqual(db1._args, db2._args)
     self.assertEqual(db1._kwargs, db2._kwargs)
     db2.close()
     db1.close()
示例#2
0
 def test03_SteadyDBClose(self):
     for closeable in (False, True):
         db = SteadyDBconnect(dbapi, closeable=closeable)
         self.assert_(db._con.valid)
         db.close()
         self.assert_(closeable ^ db._con.valid)
         db.close()
         self.assert_(closeable ^ db._con.valid)
         db._close()
         self.assert_(not db._con.valid)
         db._close()
         self.assert_(not db._con.valid)
示例#3
0
 def test06_SteadyDBConnectionMaxUsage(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.assert_(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)
     for i in range(100):
         cursor.callproc("test")
         self.assert_(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, 0)
     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 + (i < 5 and 3 or -5)) % 10 + 1
         self.assertEqual(db._usage, j)
         self.assertEqual(db._con.num_uses, j)
         j = i < 5 and 3 or 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)
示例#4
0
 def test09_SteadyDBConnectionFailureError(self):
     db = SteadyDBconnect(dbapi)
     cursor = db.cursor()
     db.close()
     cursor.execute("select test")
     cursor = db.cursor()
     db.close()
     self.assertRaises(ProgrammingError, cursor.execute, "error")
示例#5
0
 def test10_SteadyDBConnectionSetSizes(self):
     db = SteadyDBconnect(dbapi)
     cursor = db.cursor()
     cursor.execute("get sizes")
     result = cursor.fetchone()
     self.assertEqual(result, ([], {}))
     cursor.setinputsizes([7, 42, 6])
     cursor.setoutputsize(9)
     cursor.setoutputsize(15, 3)
     cursor.setoutputsize(42, 7)
     cursor.execute("get sizes")
     result = cursor.fetchone()
     self.assertEqual(result, ([7, 42, 6], {None: 9, 3: 15, 7: 42}))
     cursor.execute("get sizes")
     result = cursor.fetchone()
     self.assertEqual(result, ([], {}))
     cursor.setinputsizes([6, 42, 7])
     cursor.setoutputsize(7)
     cursor.setoutputsize(15, 3)
     cursor.setoutputsize(42, 9)
     db.close()
     cursor.execute("get sizes")
     result = cursor.fetchone()
     self.assertEqual(result, ([6, 42, 7], {None: 7, 3: 15, 9: 42}))
示例#6
0
 def test02_BrokenDBConnection(self):
     self.assertRaises(TypeError, SteadyDBConnection, None)
     self.assertRaises(TypeError, SteadyDBCursor, None)
     db = SteadyDBconnect(dbapi, database="ok")
     for i in range(3):
         db.close()
     del db
     self.assertRaises(OperationalError, SteadyDBconnect, dbapi, database="error")
     db = SteadyDBconnect(dbapi, database="ok")
     cursor = db.cursor()
     for i in range(3):
         cursor.close()
     cursor = db.cursor("ok")
     for i in range(3):
         cursor.close()
     self.assertRaises(OperationalError, db.cursor, "error")
示例#7
0
 def test11_SteadyDBConnectionPingCheck(self):
     Connection.has_ping = False
     Connection.num_pings = 0
     db = SteadyDBconnect(dbapi)
     db.cursor().execute("select test")
     self.assertEqual(Connection.num_pings, 0)
     db.close()
     db.cursor().execute("select test")
     self.assertEqual(Connection.num_pings, 0)
     self.assert_(db._ping_check() is None)
     self.assertEqual(Connection.num_pings, 1)
     db = SteadyDBconnect(dbapi, ping=7)
     db.cursor().execute("select test")
     self.assertEqual(Connection.num_pings, 2)
     db.close()
     db.cursor().execute("select test")
     self.assertEqual(Connection.num_pings, 2)
     self.assert_(db._ping_check() is None)
     self.assertEqual(Connection.num_pings, 2)
     Connection.has_ping = True
     db = SteadyDBconnect(dbapi)
     db.cursor().execute("select test")
     self.assertEqual(Connection.num_pings, 2)
     db.close()
     db.cursor().execute("select test")
     self.assertEqual(Connection.num_pings, 2)
     self.assert_(db._ping_check())
     self.assertEqual(Connection.num_pings, 3)
     db = SteadyDBconnect(dbapi, ping=1)
     db.cursor().execute("select test")
     self.assertEqual(Connection.num_pings, 3)
     db.close()
     db.cursor().execute("select test")
     self.assertEqual(Connection.num_pings, 3)
     self.assert_(db._ping_check())
     self.assertEqual(Connection.num_pings, 4)
     db.close()
     self.assert_(db._ping_check())
     self.assertEqual(Connection.num_pings, 5)
     db = SteadyDBconnect(dbapi, ping=7)
     db.cursor().execute("select test")
     self.assertEqual(Connection.num_pings, 7)
     db.close()
     db.cursor().execute("select test")
     self.assertEqual(Connection.num_pings, 9)
     db = SteadyDBconnect(dbapi, ping=3)
     self.assertEqual(Connection.num_pings, 9)
     db.cursor()
     self.assertEqual(Connection.num_pings, 10)
     db.close()
     cursor = db.cursor()
     self.assertEqual(Connection.num_pings, 11)
     cursor.execute("select test")
     self.assertEqual(Connection.num_pings, 11)
     db = SteadyDBconnect(dbapi, ping=5)
     self.assertEqual(Connection.num_pings, 11)
     db.cursor()
     self.assertEqual(Connection.num_pings, 11)
     db.close()
     cursor = db.cursor()
     self.assertEqual(Connection.num_pings, 11)
     cursor.execute("select test")
     self.assertEqual(Connection.num_pings, 12)
     db.close()
     cursor = db.cursor()
     self.assertEqual(Connection.num_pings, 12)
     cursor.execute("select test")
     self.assertEqual(Connection.num_pings, 13)
     db = SteadyDBconnect(dbapi, ping=7)
     self.assertEqual(Connection.num_pings, 13)
     db.cursor()
     self.assertEqual(Connection.num_pings, 14)
     db.close()
     cursor = db.cursor()
     self.assertEqual(Connection.num_pings, 15)
     cursor.execute("select test")
     self.assertEqual(Connection.num_pings, 16)
     db.close()
     cursor = db.cursor()
     self.assertEqual(Connection.num_pings, 17)
     cursor.execute("select test")
     self.assertEqual(Connection.num_pings, 18)
     db.close()
     cursor.execute("select test")
     self.assertEqual(Connection.num_pings, 20)
     Connection.has_ping = False
     Connection.num_pings = 0
示例#8
0
 def test08_SteadyDBConnectionFailures(self):
     db = SteadyDBconnect(dbapi)
     db.close()
     db.cursor()
     db = SteadyDBconnect(dbapi, failures=InternalError)
     db.close()
     db.cursor()
     db = SteadyDBconnect(dbapi, failures=OperationalError)
     db.close()
     self.assertRaises(InternalError, db.cursor)
     db = SteadyDBconnect(dbapi, failures=(OperationalError, InternalError))
     db.close()
     db.cursor()
示例#9
0
 def test07_SteadyDBConnectionSetSession(self):
     db = SteadyDBconnect(dbapi, 3, ("set time zone", "set datestyle"))
     self.assert_(hasattr(db, "_usage"))
     self.assertEqual(db._usage, 0)
     self.assert_(hasattr(db._con, "open_cursors"))
     self.assertEqual(db._con.open_cursors, 0)
     self.assert_(hasattr(db._con, "num_uses"))
     self.assertEqual(db._con.num_uses, 2)
     self.assert_(hasattr(db._con, "num_queries"))
     self.assertEqual(db._con.num_queries, 0)
     self.assert_(hasattr(db._con, "session"))
     self.assertEqual(tuple(db._con.session), ("time zone", "datestyle"))
     for i in range(11):
         db.cursor().execute("select test")
     self.assertEqual(db._con.open_cursors, 0)
     self.assertEqual(db._usage, 2)
     self.assertEqual(db._con.num_uses, 4)
     self.assertEqual(db._con.num_queries, 2)
     self.assertEqual(db._con.session, ["time zone", "datestyle"])
     db.cursor().execute("set test")
     self.assertEqual(db._con.open_cursors, 0)
     self.assertEqual(db._usage, 3)
     self.assertEqual(db._con.num_uses, 5)
     self.assertEqual(db._con.num_queries, 2)
     self.assertEqual(db._con.session, ["time zone", "datestyle", "test"])
     db.cursor().execute("select test")
     self.assertEqual(db._con.open_cursors, 0)
     self.assertEqual(db._usage, 1)
     self.assertEqual(db._con.num_uses, 3)
     self.assertEqual(db._con.num_queries, 1)
     self.assertEqual(db._con.session, ["time zone", "datestyle"])
     db.cursor().execute("set test")
     self.assertEqual(db._con.open_cursors, 0)
     self.assertEqual(db._usage, 2)
     self.assertEqual(db._con.num_uses, 4)
     self.assertEqual(db._con.num_queries, 1)
     self.assertEqual(db._con.session, ["time zone", "datestyle", "test"])
     db.cursor().execute("select test")
     self.assertEqual(db._con.open_cursors, 0)
     self.assertEqual(db._usage, 3)
     self.assertEqual(db._con.num_uses, 5)
     self.assertEqual(db._con.num_queries, 2)
     self.assertEqual(db._con.session, ["time zone", "datestyle", "test"])
     db.close()
     db.cursor().execute("set test")
     self.assertEqual(db._con.open_cursors, 0)
     self.assertEqual(db._usage, 1)
     self.assertEqual(db._con.num_uses, 3)
     self.assertEqual(db._con.num_queries, 0)
     self.assertEqual(db._con.session, ["time zone", "datestyle", "test"])
     db.close()
     db.cursor().execute("select test")
     self.assertEqual(db._con.open_cursors, 0)
     self.assertEqual(db._usage, 1)
     self.assertEqual(db._con.num_uses, 3)
     self.assertEqual(db._con.num_queries, 1)
     self.assertEqual(db._con.session, ["time zone", "datestyle"])
示例#10
0
 def test04_SteadyDBConnection(self):
     db = SteadyDBconnect(dbapi, 0, None, None, None, True, "SteadyDBTestDB", user="******")
     self.assert_(isinstance(db, SteadyDBConnection))
     self.assert_(hasattr(db, "_con"))
     self.assert_(hasattr(db, "_usage"))
     self.assertEqual(db._usage, 0)
     self.assert_(hasattr(db._con, "valid"))
     self.assert_(db._con.valid)
     self.assert_(hasattr(db._con, "cursor"))
     self.assert_(hasattr(db._con, "close"))
     self.assert_(hasattr(db._con, "open_cursors"))
     self.assert_(hasattr(db._con, "num_uses"))
     self.assert_(hasattr(db._con, "num_queries"))
     self.assert_(hasattr(db._con, "session"))
     self.assert_(hasattr(db._con, "database"))
     self.assertEqual(db._con.database, "SteadyDBTestDB")
     self.assert_(hasattr(db._con, "user"))
     self.assertEqual(db._con.user, "SteadyDBTestUser")
     self.assert_(hasattr(db, "cursor"))
     self.assert_(hasattr(db, "close"))
     self.assertEqual(db._con.open_cursors, 0)
     for i in range(3):
         cursor = db.cursor()
         self.assertEqual(db._con.open_cursors, 1)
         cursor.close()
         self.assertEqual(db._con.open_cursors, 0)
     cursor = []
     for i in range(3):
         cursor.append(db.cursor())
         self.assertEqual(db._con.open_cursors, i + 1)
     del cursor
     self.assertEqual(db._con.open_cursors, 0)
     cursor = db.cursor()
     self.assert_(hasattr(cursor, "execute"))
     self.assert_(hasattr(cursor, "fetchone"))
     self.assert_(hasattr(cursor, "callproc"))
     self.assert_(hasattr(cursor, "close"))
     self.assert_(hasattr(cursor, "valid"))
     self.assert_(cursor.valid)
     self.assertEqual(db._con.open_cursors, 1)
     for i in range(3):
         self.assertEqual(db._usage, i)
         self.assertEqual(db._con.num_uses, i)
         self.assertEqual(db._con.num_queries, i)
         cursor.execute("select test%d" % i)
         self.assertEqual(cursor.fetchone(), "test%d" % i)
     self.assert_(cursor.valid)
     self.assertEqual(db._con.open_cursors, 1)
     for i in range(4):
         cursor.callproc("test")
     cursor.close()
     self.assert_(not cursor.valid)
     self.assertEqual(db._con.open_cursors, 0)
     self.assertEqual(db._usage, 7)
     self.assertEqual(db._con.num_uses, 7)
     self.assertEqual(db._con.num_queries, 3)
     cursor.close()
     cursor.execute("select test8")
     self.assert_(cursor.valid)
     self.assertEqual(db._con.open_cursors, 1)
     self.assertEqual(cursor.fetchone(), "test8")
     self.assertEqual(db._usage, 8)
     self.assertEqual(db._con.num_uses, 8)
     self.assertEqual(db._con.num_queries, 4)
     self.assert_(db._con.valid)
     db.close()
     self.assert_(not db._con.valid)
     self.assertEqual(db._con.open_cursors, 0)
     self.assertEqual(db._usage, 8)
     self.assertEqual(db._con.num_uses, 0)
     self.assertEqual(db._con.num_queries, 0)
     self.assertRaises(InternalError, db._con.close)
     db.close()
     self.assertRaises(InternalError, db._con.cursor)
     cursor = db.cursor()
     self.assert_(db._con.valid)
     cursor.execute("select test11")
     self.assertEqual(cursor.fetchone(), "test11")
     cursor.execute("select test12")
     self.assertEqual(cursor.fetchone(), "test12")
     cursor.callproc("test")
     self.assertEqual(db._usage, 3)
     self.assertEqual(db._con.num_uses, 3)
     self.assertEqual(db._con.num_queries, 2)
     cursor2 = db.cursor()
     self.assertEqual(db._con.open_cursors, 2)
     cursor2.execute("select test13")
     self.assertEqual(cursor2.fetchone(), "test13")
     self.assertEqual(db._con.num_queries, 3)
     db.close()
     self.assertEqual(db._con.open_cursors, 0)
     self.assertEqual(db._con.num_queries, 0)
     cursor = db.cursor()
     self.assert_(cursor.valid)
     cursor.callproc("test")
     cursor._cursor.valid = False
     self.assert_(not cursor.valid)
     self.assertRaises(InternalError, cursor._cursor.callproc, "test")
     cursor.callproc("test")
     self.assert_(cursor.valid)
     cursor._cursor.callproc("test")
     self.assertEqual(db._usage, 2)
     self.assertEqual(db._con.num_uses, 3)
     db._con.valid = cursor._cursor.valid = False
     cursor.callproc("test")
     self.assert_(cursor.valid)
     self.assertEqual(db._usage, 1)
     self.assertEqual(db._con.num_uses, 1)
     cursor.execute("set doit")
     db.commit()
     cursor.execute("set dont")
     db.rollback()
     self.assertEqual(db._con.session, ["doit", "commit", "dont", "rollback"])