def test_transaction_cap(self): self.env.execute("set vt_transaction_cap=1") self.env.execute("set vt_txpool_timeout=0.5") vstart = self.env.debug_vars() self.assertEqual(vstart.TransactionPoolPoolTimeout, 5e8) co2 = self.env.connect() self.env.conn.begin() try: cu2 = cursor.TabletCursor(co2) start = time.time() co2.begin() except dbexceptions.DatabaseError as e: self.assertContains(str(e), "tx_pool_full") self.assertTrue(time.time() - start >= 0.4) else: self.fail("Did not receive exception") finally: cu2.close() co2.close() self.env.conn.commit() vend = self.env.debug_vars() self.assertEqual(vend.TransactionPoolCapacity, 1) self.env.execute("set vt_transaction_cap=20") self.env.execute("set vt_txpool_timeout=1") vend = self.env.debug_vars() self.assertEqual(vend.TransactionPoolCapacity, 20) self.assertEqual(vend.TransactionPoolPoolTimeout, 1e9) self.assertEqual( vstart.mget("Errors.TxPoolFull", 0) + 1, vend.Errors.TxPoolFull)
def test_query_timeout(self): vstart = self.env.debug_vars() conn = tablet_conn.connect("localhost:9461", '', 'test_keyspace', '0', 5) cu = cursor.TabletCursor(conn) self.env.execute("set vt_query_timeout=0.25") try: conn.begin() cu.execute("select sleep(0.5) from vtocc_test", {}) except dbexceptions.DatabaseError as e: if "error: Query" not in str( e) and "error: Lost connection" not in str(e): self.fail("Query not killed as expected") else: self.fail("Did not receive exception") try: cu.execute("select 1 from dual", {}) except dbexceptions.DatabaseError as e: self.assertContains(str(e), "not_in_tx: Transaction") else: self.fail("Did not receive exception") cu.close() conn.close() vend = self.env.debug_vars() self.assertEqual(vend.Voltron.ActivePool.Timeout, 250000000) self.assertEqual(vend.ActivePoolTimeout, 250000000) self.assertEqual( vstart.mget("Kills.Queries", 0) + 1, vend.Kills.Queries) self.env.execute("set vt_query_timeout=30") vend = self.env.debug_vars() self.assertEqual(vend.Voltron.ActivePool.Timeout, 30000000000) self.assertEqual(vend.ActivePoolTimeout, 30000000000)
def test_query_timeout(self): vstart = self.env.debug_vars() conn = tablet_conn.connect( self.env.address, "", "test_keyspace", "0", 5, caller_id="dev") cu = cursor.TabletCursor(conn) self.env.execute("set vt_query_timeout=0.25") try: conn.begin() cu.execute("select sleep(0.5) from vtocc_test", {}) except dbexceptions.DatabaseError as e: if ("error: Query" not in str(e) and "error: the query was killed" not in str(e)): self.fail("Query not killed as expected") else: self.fail("Did not receive exception") try: cu.execute("select 1 from dual", {}) except dbexceptions.DatabaseError as e: self.assertContains(str(e), "not_in_tx: Transaction") else: self.fail("Did not receive exception") cu.close() conn.close() vend = self.env.debug_vars() self.assertEqual(vend.QueryTimeout, 250000000) self.assertEqual(vstart.mget("Kills.Queries", 0) + 1, vend.Kills.Queries) self.env.execute("set vt_query_timeout=30") vend = self.env.debug_vars() self.assertEqual(vend.QueryTimeout, 30000000000)
def execute(self, query, binds=None, cursorclass=None): if binds is None: binds = {} curs = cursor.TabletCursor(self.conn) try: curs.execute(query, binds) except dbexceptions.OperationalError: self.conn = self.connect() raise return curs
def run_cases(self, cases): curs = cursor.TabletCursor(self.conn) error_count = 0 for case in cases: if isinstance(case, basestring): curs.execute(case) continue try: failures = case.run(curs, self) except Exception: print "Exception in", case raise error_count += len(failures) for fail in failures: print "FAIL:", case, fail
def run_cases(self, cases): curs = cursor.TabletCursor(self.conn) error_count = 0 curl = subprocess.Popen(['curl', '-s', '-N', 'http://localhost:9461/debug/querylog'], stdout=open('/tmp/vtocc_streamlog.log', 'w')) curl_full = subprocess.Popen(['curl', '-s', '-N', 'http://localhost:9461/debug/querylog?full=true'], stdout=open('/tmp/vtocc_streamlog_full.log', 'w')) time.sleep(1) for case in cases: if isinstance(case, basestring): curs.execute(case) continue try: failures = case.run(curs, self.querylog) except Exception: print "Exception in", case raise error_count += len(failures) for fail in failures: print "FAIL:", case, fail