Example #1
0
	def test2_BrokenPgConnection(self):
		self.assertRaises(TypeError, SteadyPgConnection, 'wrong')
		db = SteadyPgConnection(dbname='ok')
		InternalError = sys.modules[db._con.__module__].InternalError
		for i in range(3):
			db.close()
		del db
		self.assertRaises(InternalError, SteadyPgConnection, dbname='error')
Example #2
0
 def test2_BrokenConnection(self):
     self.assertRaises(TypeError, SteadyPgConnection, 'wrong')
     db = SteadyPgConnection(dbname='ok')
     InternalError = sys.modules[db._con.__module__].InternalError
     for i in range(3):
         db.close()
     del db
     self.assertRaises(InternalError, SteadyPgConnection, dbname='error')
Example #3
0
 def test3_Close(self):
     for closeable in (False, True):
         db = SteadyPgConnection(closeable=closeable)
         self.assertTrue(db._con.db and db._con.valid)
         db.close()
         self.assertTrue(closeable
                         ^ (db._con.db is not None and db._con.valid))
         db.close()
         self.assertTrue(closeable
                         ^ (db._con.db is not None and db._con.valid))
         db._close()
         self.assertTrue(not db._con.db or not db._con.valid)
         db._close()
         self.assertTrue(not db._con.db or not db._con.valid)
Example #4
0
	def test3_SteadyPgClose(self):
		for closeable in (False, True):
			db = SteadyPgConnection(closeable=closeable)
			self.assert_(db._con.db and db._con.valid)
			db.close()
			self.assert_(closeable ^
				(db._con.db is not None and db._con.valid))
			db.close()
			self.assert_(closeable ^
				(db._con.db is not None and db._con.valid))
			db._close()
			self.assert_(not db._con.db or not db._con.valid)
			db._close()
			self.assert_(not db._con.db or not db._con.valid)
Example #5
0
 def test5_ConnectionContextHandler(self):
     db = SteadyPgConnection(0,
                             None,
                             1,
                             'SteadyPgTestDB',
                             user='******')
     self.assertEqual(db.session, [])
     with db:
         db.query('select test')
     self.assertEqual(db.session, ['begin', 'commit'])
     try:
         with db:
             db.query('error')
     except pg.ProgrammingError:
         error = True
     else:
         error = False
     self.assertTrue(error)
     self.assertEqual(db._con.session,
                      ['begin', 'commit', 'begin', 'rollback'])
Example #6
0
 def test9_End(self):
     for closeable in (False, True):
         db = SteadyPgConnection(closeable=closeable)
         db.begin()
         db.query('select test')
         db.end()
         self.assertEqual(db.session, ['begin', 'end'])
         db.db.close()
         db.query('select test')
         self.assertEqual(db.num_queries, 1)
         self.assertEqual(db.begin('select sql:end'), 'sql:end')
         self.assertEqual(db.num_queries, 2)
         db.begin()
         db.query('select test')
         db.commit()
         self.assertEqual(db.session, ['begin', 'commit'])
         db.db.close()
         db.query('select test')
         self.assertEqual(db.num_queries, 1)
         self.assertEqual(db.begin('select sql:commit'), 'sql:commit')
         self.assertEqual(db.num_queries, 2)
         db.begin()
         db.query('select test')
         db.rollback()
         self.assertEqual(db.session, ['begin', 'rollback'])
         db.db.close()
         db.query('select test')
         self.assertEqual(db.num_queries, 1)
         self.assertEqual(db.begin('select sql:rollback'), 'sql:rollback')
         self.assertEqual(db.num_queries, 2)
Example #7
0
 def test8_Begin(self):
     for closeable in (False, True):
         db = SteadyPgConnection(closeable=closeable)
         db.begin()
         self.assertEqual(db.session, ['begin'])
         db.query('select test')
         self.assertEqual(db.num_queries, 1)
         db.close()
         db.query('select test')
         self.assertEqual(db.num_queries, 1)
         db.begin()
         self.assertEqual(db.session, ['begin'])
         db.db.close()
         self.assertRaises(pg.InternalError, db.query, 'select test')
         self.assertEqual(db.num_queries, 0)
         db.query('select test')
         self.assertEqual(db.num_queries, 1)
         self.assertEqual(db.begin('select sql:begin'), 'sql:begin')
         self.assertEqual(db.num_queries, 2)
Example #8
0
 def test7_ConnectionSetSession(self):
     db = SteadyPgConnection(3, ('set time zone', 'set datestyle'))
     self.assertTrue(hasattr(db, 'num_queries'))
     self.assertEqual(db.num_queries, 0)
     self.assertTrue(hasattr(db, 'session'))
     self.assertEqual(tuple(db.session), ('time zone', 'datestyle'))
     for i in range(11):
         db.query('select test')
     self.assertEqual(db.num_queries, 2)
     self.assertEqual(db.session, ['time zone', 'datestyle'])
     db.query('set test')
     self.assertEqual(db.num_queries, 2)
     self.assertEqual(db.session, ['time zone', 'datestyle', 'test'])
     db.query('select test')
     self.assertEqual(db.num_queries, 1)
     self.assertEqual(db.session, ['time zone', 'datestyle'])
     db.close()
     db.query('set test')
     self.assertEqual(db.num_queries, 0)
     self.assertEqual(db.session, ['time zone', 'datestyle', 'test'])
Example #9
0
 def test6_ConnectionMaxUsage(self):
     db = SteadyPgConnection(10)
     for i in range(100):
         r = db.query('select test%d' % i)
         self.assertEqual(r, 'test%d' % i)
         self.assertTrue(db.db.status)
         j = i % 10 + 1
         self.assertEqual(db._usage, j)
         self.assertEqual(db.num_queries, j)
     for i in range(100):
         r = db.get_tables()
         self.assertEqual(r, 'test')
         self.assertTrue(db.db.status)
         j = i % 10 + 1
         self.assertEqual(db._usage, j)
         self.assertEqual(db.num_queries, 0)
     for i in range(10):
         if i == 7:
             db.db.status = False
         r = db.query('select test%d' % i)
         self.assertEqual(r, 'test%d' % i)
         j = i % 7 + 1
         self.assertEqual(db._usage, j)
         self.assertEqual(db.num_queries, j)
     for i in range(10):
         if i == 5:
             db.db.status = False
         r = db.get_tables()
         self.assertEqual(r, 'test')
         j = (i + (3 if i < 5 else -5)) % 10 + 1
         self.assertEqual(db._usage, j)
         j = 3 if i < 5 else 0
         self.assertEqual(db.num_queries, j)
     db.close()
     self.assertEqual(db.query('select test1'), 'test1')
     self.assertEqual(db._usage, 1)
     self.assertEqual(db.num_queries, 1)
     db.reopen()
     self.assertEqual(db._usage, 0)
     self.assertEqual(db.num_queries, 0)
     self.assertEqual(db.query('select test2'), 'test2')
     self.assertEqual(db._usage, 1)
     self.assertEqual(db.num_queries, 1)
Example #10
0
 def test8_End(self):
     for closeable in (False, True):
         db = SteadyPgConnection(closeable=closeable)
         db.begin()
         db.query('select test')
         db.end()
         self.assertEqual(db.session, ['begin', 'end'])
         db.db.close()
         db.query('select test')
         self.assertEqual(db.num_queries, 1)
         self.assertEqual(db.begin('select sql:end'), 'sql:end')
         self.assertEqual(db.num_queries, 2)
         db.begin()
         db.query('select test')
         db.commit()
         self.assertEqual(db.session, ['begin', 'commit'])
         db.db.close()
         db.query('select test')
         self.assertEqual(db.num_queries, 1)
         self.assertEqual(db.begin('select sql:commit'), 'sql:commit')
         self.assertEqual(db.num_queries, 2)
         db.begin()
         db.query('select test')
         db.rollback()
         self.assertEqual(db.session, ['begin', 'rollback'])
         db.db.close()
         db.query('select test')
         self.assertEqual(db.num_queries, 1)
         self.assertEqual(db.begin('select sql:rollback'), 'sql:rollback')
         self.assertEqual(db.num_queries, 2)
Example #11
0
 def steady_connection(self):
     """Get a steady, non-persistent PyGreSQL connection."""
     return SteadyPgConnection(
         self._maxusage, self._setsession, self._closeable,
         *self._args, **self._kwargs)
Example #12
0
	def test6_SteadyPgConnectionSetSession(self):
		db = SteadyPgConnection(3, ('set time zone', 'set datestyle'))
		self.assert_(hasattr(db, 'num_queries'))
		self.assertEqual(db.num_queries, 0)
		self.assert_(hasattr(db, 'session'))
		self.assertEqual(tuple(db.session), ('time zone', 'datestyle'))
		for i in range(11):
			db.query('select test')
		self.assertEqual(db.num_queries, 2)
		self.assertEqual(db.session, ['time zone', 'datestyle'])
		db.query('set test')
		self.assertEqual(db.num_queries, 2)
		self.assertEqual(db.session, ['time zone', 'datestyle', 'test'])
		db.query('select test')
		self.assertEqual(db.num_queries, 1)
		self.assertEqual(db.session, ['time zone', 'datestyle'])
		db.close()
		db.query('set test')
		self.assertEqual(db.num_queries, 0)
		self.assertEqual(db.session, ['time zone', 'datestyle', 'test'])
Example #13
0
	def test5_SteadyPgConnectionMaxUsage(self):
		db = SteadyPgConnection(10)
		for i in range(100):
			r = db.query('select test%d' % i)
			self.assertEqual(r, 'test%d' % i)
			self.assert_(db.db.status)
			j = i % 10 + 1
			self.assertEqual(db._usage, j)
			self.assertEqual(db.num_queries, j)
		for i in range(100):
			r = db.get_tables()
			self.assertEqual(r, 'test')
			self.assert_(db.db.status)
			j = i % 10 + 1
			self.assertEqual(db._usage, j)
			self.assertEqual(db.num_queries, 0)
		for i in range(10):
			if i == 7:
				db.db.status = False
			r = db.query('select test%d' % i)
			self.assertEqual(r, 'test%d' % i)
			j = i % 7 + 1
			self.assertEqual(db._usage, j)
			self.assertEqual(db.num_queries, j)
		for i in range(10):
			if i == 5:
				db.db.status = False
			r = db.get_tables()
			self.assertEqual(r, 'test')
			j = (i + (i < 5 and 3 or -5)) % 10 + 1
			self.assertEqual(db._usage, j)
			j = i < 5 and 3 or 0
			self.assertEqual(db.num_queries, j)
		db.close()
		self.assertEqual(db.query('select test1'), 'test1')
		self.assertEqual(db._usage, 1)
		self.assertEqual(db.num_queries, 1)
		db.reopen()
		self.assertEqual(db._usage, 0)
		self.assertEqual(db.num_queries, 0)
		self.assertEqual(db.query('select test2'), 'test2')
		self.assertEqual(db._usage, 1)
		self.assertEqual(db.num_queries, 1)
Example #14
0
	def test4_SteadyPgConnection(self):
		db = SteadyPgConnection(0, None, 1,
			'SteadyPgTestDB', user='******')
		self.assert_(hasattr(db, 'db'))
		self.assert_(hasattr(db, '_con'))
		self.assertEqual(db.db, db._con.db)
		self.assert_(hasattr(db, '_usage'))
		self.assertEqual(db._usage, 0)
		self.assert_(hasattr(db.db, 'status'))
		self.assert_(db.db.status)
		self.assert_(hasattr(db.db, 'query'))
		self.assert_(hasattr(db.db, 'close'))
		self.assert_(not hasattr(db.db, 'reopen'))
		self.assert_(hasattr(db.db, 'reset'))
		self.assert_(hasattr(db.db, 'num_queries'))
		self.assert_(hasattr(db.db, 'session'))
		self.assert_(hasattr(db.db, 'db'))
		self.assertEqual(db.db.db, 'SteadyPgTestDB')
		self.assert_(hasattr(db.db, 'user'))
		self.assertEqual(db.db.user, 'SteadyPgTestUser')
		self.assert_(not hasattr(db.db, 'get_tables'))
		self.assert_(hasattr(db, 'query'))
		self.assert_(hasattr(db, 'close'))
		self.assert_(hasattr(db, 'reopen'))
		self.assert_(hasattr(db, 'reset'))
		self.assert_(hasattr(db, 'num_queries'))
		self.assert_(hasattr(db, 'session'))
		self.assert_(hasattr(db, 'dbname'))
		self.assertEqual(db.dbname, 'SteadyPgTestDB')
		self.assert_(hasattr(db, 'user'))
		self.assertEqual(db.user, 'SteadyPgTestUser')
		self.assert_(hasattr(db, 'get_tables'))
		for i in range(3):
			self.assertEqual(db._usage, i)
			self.assertEqual(db.num_queries, i)
			self.assertEqual(db.query('select test%d' % i),
				'test%d' % i)
		self.assert_(db.db.status)
		self.assertEqual(db.get_tables(), 'test')
		self.assert_(db.db.status)
		self.assertEqual(db._usage, 4)
		self.assertEqual(db.num_queries, 3)
		db.reopen()
		self.assert_(db.db.status)
		self.assertEqual(db._usage, 0)
		self.assertEqual(db.num_queries, 0)
		self.assertEqual(db.query('select test'), 'test')
		self.assert_(db.db.status)
		self.assert_(hasattr(db._con, 'status'))
		self.assert_(db._con.status)
		self.assert_(hasattr(db._con, 'close'))
		self.assert_(hasattr(db._con, 'query'))
		db.close()
		try:
			status = db.db.status
		except AttributeError:
			status = False
		self.assert_(not status)
		self.assert_(hasattr(db._con, 'close'))
		self.assert_(hasattr(db._con, 'query'))
		InternalError = sys.modules[db._con.__module__].InternalError
		self.assertRaises(InternalError, db._con.close)
		self.assertRaises(InternalError, db._con.query, 'select test')
		self.assertEqual(db.query('select test'), 'test')
		self.assert_(db.db.status)
		self.assertEqual(db._usage, 1)
		self.assertEqual(db.num_queries, 1)
		db.db.status = False
		self.assert_(not db.db.status)
		self.assertEqual(db.query('select test'), 'test')
		self.assert_(db.db.status)
		self.assertEqual(db._usage, 1)
		self.assertEqual(db.num_queries, 1)
		db.db.status = False
		self.assert_(not db.db.status)
		self.assertEqual(db.get_tables(), 'test')
		self.assert_(db.db.status)
		self.assertEqual(db._usage, 1)
		self.assertEqual(db.num_queries, 0)
Example #15
0
 def test4_Connection(self):
     db = SteadyPgConnection(0,
                             None,
                             1,
                             'SteadyPgTestDB',
                             user='******')
     self.assertTrue(hasattr(db, 'db'))
     self.assertTrue(hasattr(db, '_con'))
     self.assertEqual(db.db, db._con.db)
     self.assertTrue(hasattr(db, '_usage'))
     self.assertEqual(db._usage, 0)
     self.assertTrue(hasattr(db.db, 'status'))
     self.assertTrue(db.db.status)
     self.assertTrue(hasattr(db.db, 'query'))
     self.assertTrue(hasattr(db.db, 'close'))
     self.assertTrue(not hasattr(db.db, 'reopen'))
     self.assertTrue(hasattr(db.db, 'reset'))
     self.assertTrue(hasattr(db.db, 'num_queries'))
     self.assertTrue(hasattr(db.db, 'session'))
     self.assertTrue(hasattr(db.db, 'db'))
     self.assertEqual(db.db.db, 'SteadyPgTestDB')
     self.assertTrue(hasattr(db.db, 'user'))
     self.assertEqual(db.db.user, 'SteadyPgTestUser')
     self.assertTrue(not hasattr(db.db, 'get_tables'))
     self.assertTrue(hasattr(db, 'query'))
     self.assertTrue(hasattr(db, 'close'))
     self.assertTrue(hasattr(db, 'reopen'))
     self.assertTrue(hasattr(db, 'reset'))
     self.assertTrue(hasattr(db, 'num_queries'))
     self.assertTrue(hasattr(db, 'session'))
     self.assertTrue(hasattr(db, 'dbname'))
     self.assertEqual(db.dbname, 'SteadyPgTestDB')
     self.assertTrue(hasattr(db, 'user'))
     self.assertEqual(db.user, 'SteadyPgTestUser')
     self.assertTrue(hasattr(db, 'get_tables'))
     for i in range(3):
         self.assertEqual(db._usage, i)
         self.assertEqual(db.num_queries, i)
         self.assertEqual(db.query('select test%d' % i), 'test%d' % i)
     self.assertTrue(db.db.status)
     self.assertEqual(db.get_tables(), 'test')
     self.assertTrue(db.db.status)
     self.assertEqual(db._usage, 4)
     self.assertEqual(db.num_queries, 3)
     db.reopen()
     self.assertTrue(db.db.status)
     self.assertEqual(db._usage, 0)
     self.assertEqual(db.num_queries, 0)
     self.assertEqual(db.query('select test'), 'test')
     self.assertTrue(db.db.status)
     self.assertTrue(hasattr(db._con, 'status'))
     self.assertTrue(db._con.status)
     self.assertTrue(hasattr(db._con, 'close'))
     self.assertTrue(hasattr(db._con, 'query'))
     db.close()
     try:
         status = db.db.status
     except AttributeError:
         status = False
     self.assertTrue(not status)
     self.assertTrue(hasattr(db._con, 'close'))
     self.assertTrue(hasattr(db._con, 'query'))
     InternalError = sys.modules[db._con.__module__].InternalError
     self.assertRaises(InternalError, db._con.close)
     self.assertRaises(InternalError, db._con.query, 'select test')
     self.assertEqual(db.query('select test'), 'test')
     self.assertTrue(db.db.status)
     self.assertEqual(db._usage, 1)
     self.assertEqual(db.num_queries, 1)
     db.db.status = False
     self.assertTrue(not db.db.status)
     self.assertEqual(db.query('select test'), 'test')
     self.assertTrue(db.db.status)
     self.assertEqual(db._usage, 1)
     self.assertEqual(db.num_queries, 1)
     db.db.status = False
     self.assertTrue(not db.db.status)
     self.assertEqual(db.get_tables(), 'test')
     self.assertTrue(db.db.status)
     self.assertEqual(db._usage, 1)
     self.assertEqual(db.num_queries, 0)
Example #16
0
 def steady_connection(self):
     """Get a steady, unpooled PostgreSQL connection."""
     return SteadyPgConnection(self._maxusage, self._setsession, True,
                               *self._args, **self._kwargs)
Example #17
0
 def test7_Begin(self):
     for closeable in (False, True):
         db = SteadyPgConnection(closeable=closeable)
         db.begin()
         self.assertEqual(db.session, ['begin'])
         db.query('select test')
         self.assertEqual(db.num_queries, 1)
         db.close()
         db.query('select test')
         self.assertEqual(db.num_queries, 1)
         db.begin()
         self.assertEqual(db.session, ['begin'])
         db.db.close()
         self.assertRaises(InternalError, db.query, 'select test')
         self.assertEqual(db.num_queries, 0)
         db.query('select test')
         self.assertEqual(db.num_queries, 1)
         self.assertEqual(db.begin('select sql:begin'), 'sql:begin')
         self.assertEqual(db.num_queries, 2)