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"])