예제 #1
0
 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)
예제 #2
0
    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)
예제 #3
0
  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)
예제 #4
0
 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
예제 #5
0
파일: test_env.py 프로젝트: yyzi/vitess
    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
예제 #6
0
 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