예제 #1
0
 def test_invalidation_failure(self):
     start = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
     self.perform_insert(10)
     utils.mysql_write_query(
         master_tablet.tablet_uid, 'vt_test_keyspace',
         "update vt_insert_test set msg = 'foo' where id = 1")
     self._wait_for_replica()
     time.sleep(1.0)
     end1 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
     self.assertEqual(start + 1, end1)
     utils.mysql_query(master_tablet.tablet_uid, 'vt_test_keyspace',
                       "truncate table vt_insert_test")
     self._wait_for_replica()
     time.sleep(1.0)
     end2 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
     self.assertEqual(end1 + 1, end2)
예제 #2
0
 def test_invalidation_failure(self):
   start = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
   self.perform_insert(10)
   utils.mysql_write_query(master_tablet.tablet_uid,
                           'vt_test_keyspace',
                           "update vt_insert_test set msg = 'foo' where id = 1")
   self._wait_for_replica()
   time.sleep(1.0)
   end1 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
   self.assertEqual(start+1, end1)
   utils.mysql_query(master_tablet.tablet_uid,
                     'vt_test_keyspace',
                      "truncate table vt_insert_test")
   self._wait_for_replica()
   time.sleep(1.0)
   end2 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
   self.assertEqual(end1+1, end2)
예제 #3
0
    def test_outofband_statements(self):
        start = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
        self._exec_vt_txn(
            ["insert into vt_insert_test (id, msg) values (1000000, 'start')"])
        self._wait_for_replica()
        time.sleep(1.0)

        # Test update statement
        result = self._exec_replica_query(
            "select * from vt_insert_test where id = 1000000")
        self.assertEqual(result, [(1000000, 'start')])
        utils.mysql_write_query(
            master_tablet.tablet_uid, 'vt_test_keyspace',
            "update vt_insert_test set msg = 'foo' where id = 1000000")
        self._wait_for_replica()
        time.sleep(1.0)
        result = self._exec_replica_query(
            "select * from vt_insert_test where id = 1000000")
        self.assertEqual(result, [(1000000, 'foo')])
        end1 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
        self.assertEqual(start, end1)

        # Test delete statement
        utils.mysql_write_query(
            master_tablet.tablet_uid, 'vt_test_keyspace',
            "delete from vt_insert_test where id = 1000000")
        self._wait_for_replica()
        time.sleep(1.0)
        result = self._exec_replica_query(
            "select * from vt_insert_test where id = 1000000")
        self.assertEqual(result, [])
        end2 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
        self.assertEqual(end1, end2)

        # Test insert statement
        utils.mysql_write_query(
            master_tablet.tablet_uid, 'vt_test_keyspace',
            "insert into vt_insert_test (id, msg) values(1000000, 'bar')")
        self._wait_for_replica()
        time.sleep(1.0)
        result = self._exec_replica_query(
            "select * from vt_insert_test where id = 1000000")
        self.assertEqual(result, [(1000000, 'bar')])
        end3 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
        self.assertEqual(end2, end3)

        # Test unrecognized statement
        utils.mysql_query(master_tablet.tablet_uid, 'vt_test_keyspace',
                          "truncate table vt_insert_test")
        self._wait_for_replica()
        time.sleep(1.0)
        end4 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
        self.assertEqual(end4, end3 + 1)
예제 #4
0
  def test_outofband_statements(self):
    start = self.replica_vars()['InternalErrors'].get('Invalidation', 0)

    # Test update statement
    self._exec_vt_txn(
        "insert into vt_insert_test (id, msg) values (1000000, 'start')")
    self._wait_for_replica()
    self._wait_for_value([[1000000, 'start']])
    utils.mysql_write_query(
        master_tablet.tablet_uid,
        'vt_test_keyspace',
        "update vt_insert_test set msg = 'foo' where id = 1000000")
    self._wait_for_replica()
    self._wait_for_value([[1000000, 'foo']])
    end1 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
    self.assertEqual(start, end1)

    # Test delete statement
    utils.mysql_write_query(master_tablet.tablet_uid,
                            'vt_test_keyspace',
                            'delete from vt_insert_test where id = 1000000')
    self._wait_for_replica()
    self._wait_for_value([])
    end2 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
    self.assertEqual(end1, end2)

    # Test insert statement
    utils.mysql_write_query(
        master_tablet.tablet_uid,
        'vt_test_keyspace',
        "insert into vt_insert_test (id, msg) values(1000000, 'bar')")
    self._wait_for_replica()
    self._wait_for_value([[1000000, 'bar']])
    end3 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
    self.assertEqual(end2, end3)

    # Test unrecognized statement
    utils.mysql_query(master_tablet.tablet_uid,
                      'vt_test_keyspace',
                      'truncate table vt_insert_test')
    self._wait_for_replica()
    timeout = 10
    while True:
      end4 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
      if end4 == end3+1:
        break
      timeout = utils.wait_step('invalidation errors, got %d expecting %d' %
                                (end4, end3+1), timeout, sleep_time=0.1)
    self.assertEqual(end4, end3+1)
예제 #5
0
  def test_outofband_statements(self):
    start = self.replica_vars()['InternalErrors'].get('Invalidation', 0)

    # Test update statement
    self._exec_vt_txn(
        "insert into vt_insert_test (id, msg) values (1000000, 'start')")
    self._wait_for_replica()
    self._wait_for_value([['1000000', 'start']])
    utils.mysql_write_query(
        master_tablet.tablet_uid,
        'vt_test_keyspace',
        "update vt_insert_test set msg = 'foo' where id = 1000000")
    self._wait_for_replica()
    self._wait_for_value([['1000000', 'foo']])
    end1 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
    self.assertEqual(start, end1)

    # Test delete statement
    utils.mysql_write_query(master_tablet.tablet_uid,
                            'vt_test_keyspace',
                            'delete from vt_insert_test where id = 1000000')
    self._wait_for_replica()
    self._wait_for_value([])
    end2 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
    self.assertEqual(end1, end2)

    # Test insert statement
    utils.mysql_write_query(
        master_tablet.tablet_uid,
        'vt_test_keyspace',
        "insert into vt_insert_test (id, msg) values(1000000, 'bar')")
    self._wait_for_replica()
    self._wait_for_value([['1000000', 'bar']])
    end3 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
    self.assertEqual(end2, end3)

    # Test unrecognized statement
    utils.mysql_query(master_tablet.tablet_uid,
                      'vt_test_keyspace',
                      'truncate table vt_insert_test')
    self._wait_for_replica()
    timeout = 10
    while True:
      end4 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
      if end4 == end3+1:
        break
      timeout = utils.wait_step('invalidation errors, got %d expecting %d' %
                                (end4, end3+1), timeout, sleep_time=0.1)
    self.assertEqual(end4, end3+1)
예제 #6
0
  def test_outofband_statements(self):
    start = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
    self._exec_vt_txn(["insert into vt_insert_test (id, msg) values (1000000, 'start')"])
    self._wait_for_replica()
    time.sleep(1.0)

    # Test update statement
    result = self._exec_replica_query('select * from vt_insert_test where id = 1000000')
    self.assertEqual(result, [(1000000, 'start')])
    utils.mysql_write_query(master_tablet.tablet_uid,
                            'vt_test_keyspace',
                            "update vt_insert_test set msg = 'foo' where id = 1000000")
    self._wait_for_replica()
    time.sleep(1.0)
    result = self._exec_replica_query('select * from vt_insert_test where id = 1000000')
    self.assertEqual(result, [(1000000, 'foo')])
    end1 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
    self.assertEqual(start, end1)

    # Test delete statement
    utils.mysql_write_query(master_tablet.tablet_uid,
                            'vt_test_keyspace',
                            'delete from vt_insert_test where id = 1000000')
    self._wait_for_replica()
    time.sleep(1.0)
    result = self._exec_replica_query('select * from vt_insert_test where id = 1000000')
    self.assertEqual(result, [])
    end2 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
    self.assertEqual(end1, end2)

    # Test insert statement
    utils.mysql_write_query(master_tablet.tablet_uid,
                            'vt_test_keyspace',
                            "insert into vt_insert_test (id, msg) values(1000000, 'bar')")
    self._wait_for_replica()
    time.sleep(1.0)
    result = self._exec_replica_query('select * from vt_insert_test where id = 1000000')
    self.assertEqual(result, [(1000000, 'bar')])
    end3 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
    self.assertEqual(end2, end3)

    # Test unrecognized statement
    utils.mysql_query(master_tablet.tablet_uid,
                      'vt_test_keyspace',
                       'truncate table vt_insert_test')
    self._wait_for_replica()
    time.sleep(1.0)
    end4 = self.replica_vars()['InternalErrors'].get('Invalidation', 0)
    self.assertEqual(end4, end3+1)