Exemplo n.º 1
0
        self.assertTrue(check_manifest_sent)


    def test_sendsnapshot_speed_without_limit(self):
        """
        限速测试,stream_bandwidth_limit = 0,10k左右文件会立即发送成功
        :return:
        """
        self.update_conf(self.leaderpath, 'stream_bandwidth_limit', 0)
        self.stop_client(self.leader)
        time.sleep(5)
        self.start_client(self.leader)
        tname = self.now()
        self.create(self.leader, tname, self.tid, self.pid, 144000, 2, "true")
        self.put_data(self.leader, self.tid, self.pid, 100)
        self.assertIn("MakeSnapshot ok", self.makesnapshot(self.leader, self.tid, self.pid))
        self.assertIn("PauseSnapshot ok", self.pausesnapshot(self.leader, self.tid, self.pid))
        self.assertIn("SendSnapshot ok", self.sendsnapshot(self.leader, self.tid, self.pid, self.slave1))
        time.sleep(1)
        self.check_manifest(self.slave1path, self.tid, self.pid,
                            '100', self.get_sdb_name(self.tid, self.pid), '100')
        # Teardown
        self.update_conf(self.leaderpath, 'stream_bandwidth_limit', None)
        self.stop_client(self.leader)
        time.sleep(1)
        self.start_client(self.leader)
        time.sleep(10)
    
if __name__ == "__main__":
    load(TestSendSnapshot)
Exemplo n.º 2
0
                          type_int64='int64:index',
                          type_uint32='uint32:index',
                          type_uint64='uint64:index',
                          type_double='double',
                          type_float='float',
                          type_string='string:index',
                          type_timestamp='timestamp:index',
                          type_date='date:index',
                          type_int16='int16:index',
                          type_uint16='uint16:index',
                          type_bool='bool:index'
                          )
        self.assertIn('Create table ok' ,rs1)
        (schema, column_key) = self.showschema(self.leader, self.tid, self.pid)
        self.assertEqual(len(column_key), 0)
        self.assertEqual(schema[0], ['0', 'type_string', 'string', 'yes'])
        self.assertEqual(schema[1], ['1', 'type_bool', 'bool', 'yes'])
        self.assertEqual(schema[2], ['2', 'type_int64', 'int64', 'yes'])
        self.assertEqual(schema[3], ['3', 'type_uint64', 'uint64', 'yes'])
        self.assertEqual(schema[4], ['4', 'type_timestamp', 'timestamp', 'yes'])
        self.assertEqual(schema[5], ['5', 'type_int16', 'int16', 'yes'])
        self.assertEqual(schema[6], ['6', 'type_double', 'double', 'no'])
        self.assertEqual(schema[7], ['7', 'type_uint16', 'uint16', 'yes'])
        self.assertEqual(schema[8], ['8', 'type_date', 'date', 'yes'])
        self.assertEqual(schema[9], ['9', 'type_int32', 'int32', 'yes'])
        self.assertEqual(schema[10], ['10', 'type_float', 'float', 'no'])
        self.assertEqual(schema[11], ['11', 'type_uint32', 'uint32', 'yes'])

if __name__ == "__main__":
    load(TestShowSchema)
Exemplo n.º 3
0
        time.sleep(1)

        rs2 = self.offlineendpoint(self.ns_leader, self.leader)
        self.assertIn("offline endpoint ok", rs2)
        time.sleep(10)

        rs3 = self.showtable(self.ns_leader, name)
        self.assertEqual(rs3[(name, tid, '0', self.leader)],
                         ['leader', '144000min', 'no', 'kNoCompress'])
        self.assertEqual(rs3[(name, tid, '1', self.leader)],
                         ['leader', '144000min', 'no', 'kNoCompress'])
        self.assertEqual(rs3[(name, tid, '2', self.leader)],
                         ['leader', '144000min', 'no', 'kNoCompress'])
        self.assertEqual(rs3[(name, tid, '3', self.leader)],
                         ['leader', '144000min', 'no', 'kNoCompress'])
        self.assertEqual(rs3[(name, tid, '1', self.slave1)],
                         ['leader', '144000min', 'yes', 'kNoCompress'])
        self.assertEqual(rs3[(name, tid, '3', self.slave2)],
                         ['leader', '144000min', 'yes', 'kNoCompress'])
        self.assertEqual(rs3[(name, tid, '4', self.leader)],
                         ['follower', '144000min', 'no', 'kNoCompress'])
        self.assertIn(
            'v2', self.scan(self.slave1, tid, 1, {'k1': 'pk1'}, self.now(), 1))
        self.assertIn(
            'v5', self.scan(self.slave1, tid, 2, {'k1': 'pk2'}, self.now(), 1))
        self.ns_drop(self.ns_leader, name)


if __name__ == "__main__":
    load(TestOfflineEndpoint)
Exemplo n.º 4
0
                "ttl": 14400,
                "column_desc":[
                    {"name": "card", "type": "string", "add_ts_idx": "true"},
                    {"name": "mcc", "type": "string", "add_ts_idx": "true"},
                    {"name": "amt", "type": "double", "add_ts_idx": "false"},
                    {"name": "ts1", "type": "int64", "add_ts_idx": "false"}
                    ]
                }
        utils.gen_table_meta_file(table_meta, metadata_path)
        rs = self.ns_create(self.ns_leader, metadata_path)
        self.assertIn('Create table ok', rs)
        (schema, column_key) = self.ns_showschema(self.ns_leader, name)
        self.assertEqual(len(schema), 4)
        self.assertEqual(schema[0], ["0", "card", "string", "yes"])
        self.assertEqual(schema[1], ["1", "mcc", "string", "yes"])
        self.assertEqual(schema[2], ["2", "amt", "double", "no"])
        self.assertEqual(schema[3], ["3", "ts1", "int64", "no"])
        self.ns_add_table_field(self.ns_leader, name, 'aa', 'string');
        (schema, column_key) = self.ns_showschema(self.ns_leader, name)
        self.assertEqual(len(schema), 5)
        self.assertEqual(schema[0], ["0", "card", "string", "yes"])
        self.assertEqual(schema[1], ["1", "mcc", "string", "yes"])
        self.assertEqual(schema[2], ["2", "amt", "double", "no"])
        self.assertEqual(schema[3], ["3", "ts1", "int64", "no"])
        self.assertEqual(schema[4], ["4", "aa", "string", "no"])

        self.ns_drop(self.ns_leader, name)
if __name__ == "__main__":
    load(TestAddTableField)

Exemplo n.º 5
0
        rs = self.put(self.leader, tid, 1, '', self.now(), 'pk2' ,'v2', 'w2')
        self.assertIn('Put ok', rs)
        time.sleep(1)

        self.stop_client(self.leader)
        time.sleep(10)
        self.offlineendpoint(self.ns_leader, self.leader)
        self.start_client(self.leader)
        time.sleep(3)
        self.recoverendpoint(self.ns_leader, self.leader, 'true')
        time.sleep(10)

        rs5 = self.showtable(self.ns_leader, name)
        self.assertEqual(rs5[(name, tid, '0', self.leader)], ['leader', '144000min', 'yes', 'kNoCompress'])
        self.assertEqual(rs5[(name, tid, '1', self.leader)], ['leader',  '144000min', 'yes', 'kNoCompress'])
        self.assertEqual(rs5[(name, tid, '3', self.leader)], ['follower',  '144000min', 'yes', 'kNoCompress'])

        rs = self.put(self.leader, tid, 0, '', self.now(), 'pk3' ,'v3', 'w5')
        self.assertIn('Put ok', rs)
        rs = self.put(self.leader, tid, 1, '', self.now(), 'pk4' ,'v4', 'w4')
        self.assertIn('Put ok', rs)
        time.sleep(1)

        self.assertIn('v1', self.scan(self.slave1, tid, 0, {'k1': 'pk1'}, self.now(), 1))
        self.assertIn('v4', self.scan(self.slave1, tid, 1, {'k1': 'pk4'}, self.now(), 1))
        self.ns_drop(self.ns_leader, name)


if __name__ == "__main__":
    load(TestRecoverEndpoint)
Exemplo n.º 6
0
                                  'amt': ('double', 1.1)}
        rs4 = self.put(self.leader,
                       self.tid,
                       self.pid,
                       'testkey100',
                       self.now() - 1,
                       'testvalue100')
        self.assertIn('Put ok', rs4)

        rs5 = self.makesnapshot(self.leader, self.tid, self.pid)
        self.assertIn('MakeSnapshot ok' ,rs5)
        time.sleep(1)
        mf = self.get_manifest(self.leaderpath, self.tid, self.pid)
        self.assertEqual(mf['offset'], str(offset + 1))

        # 新节点loadtable
        self.cp_db(self.leaderpath, self.slave1path, self.tid, self.pid)
        rs6 = self.loadtable(self.slave1, 't', self.tid, self.pid)
        self.assertIn('LoadTable ok', rs6)
        for i in range(0, offset):
            self.multidimension_scan_vk = {'card': 'testkey{}'.format(i)}  # for multidimension test
            self.assertIn('testvalue', self.scan(
                self.slave1, self.tid, self.pid, 'testkey{}'.format(i), self.now(), 1))

        self.multidimension_scan_vk = {'card': 'testkey100'}  # for multidimension test
        self.assertIn('testvalue100', self.scan(self.slave1, self.tid, self.pid, 'testkey100', self.now(), 1))


if __name__ == "__main__":
    load(TestMakeSnapshot)
Exemplo n.º 7
0
    )
    @ddt.unpack
    def test_create_compressed_table(self, exp_msg, *column_descs):
        """
        column_desc参数测试
        :param exp_msg:
        :param column_descs:
        :return:
        """
        metadata_path = '{}/metadata.txt'.format(self.testpath)
        m = utils.gen_table_metadata(
            '"tname{}"'.format(time.time()), '"kAbsoluteTime"', 144000, 8,
            ('table_partition', '"{}"'.format(self.leader), '"0"', 'true'),
            ('table_partition', '"{}"'.format(self.slave1), '"0"', 'false'),
            ('table_partition', '"{}"'.format(self.slave2), '"0"', 'false'),
            *column_descs)
        m[0].append(("compress_type", '"snappy"'))
        utils.gen_table_metadata_file(m, metadata_path)
        rs = self.ns_create(self.ns_leader, metadata_path)
        infoLogger.info(rs)
        self.assertIn(exp_msg, rs)
        if exp_msg == 'Create table ok':
            rs1 = self.showtable(self.ns_leader)
            infoLogger.info(rs1)
            for v in rs1.values():
                self.assertEqual(v[3], "kSnappy")


if __name__ == "__main__":
    load(TestCreateTableByNsClient)
Exemplo n.º 8
0
        """
        健康的节点,状态为kTabletHealthy
        :return:
        """
        rs1 = self.showtablet(self.ns_leader)
        infoLogger.info(rs1)
        self.assertEqual(rs1[self.leader][0], 'kTabletHealthy')
        self.assertEqual(rs1[self.slave1][0], 'kTabletHealthy')
        self.assertEqual(rs1[self.slave2][0], 'kTabletHealthy')

    def test_showtablet_offline(self):
        """
        挂掉的节点,状态为kTabletOffline,启动后恢复为kTabletHealthy
        :return:
        """
        self.stop_client(self.slave1)
        time.sleep(10)
        rs1 = self.showtablet(self.ns_leader)
        infoLogger.info(rs1)
        self.assertEqual(rs1[self.leader][0], 'kTabletHealthy')
        self.assertEqual(rs1[self.slave1][0], 'kTabletOffline')
        self.assertEqual(rs1[self.slave2][0], 'kTabletHealthy')
        self.start_client(self.slave1)
        time.sleep(5)
        rs2 = self.showtablet(self.ns_leader)
        self.assertEqual(rs2[self.slave1][0], 'kTabletHealthy')


if __name__ == "__main__":
    load(TestShowTablet)
Exemplo n.º 9
0
               }
        utils.gen_table_meta_file(table_meta, metadata_path)
        rs = self.ns_create(self.ns_leader, metadata_path)
        self.assertIn('Create table ok', rs)
        
        for i in range(100):
            rs = self.ns_put_multi_with_pair(self.ns_leader,name, ['card' + str(i%10), str(i+1), str(i+1), str(i+1)])

            self.assertIn('Put ok', rs)
        for i in range(10):
            prs = self.ns_scan_multi_with_pair(self.ns_leader, name, 'card'+str(i), 'card', '100', '0', 'ts1', '0', '8')
            self.assertEqual(len(prs), 10)
        for i in range(10):
            prs = self.ns_scan_multi_with_pair(self.ns_leader, name, 'card'+str(i), 'card', '100', '50', 'ts1', '0', '0')
            self.assertEqual(len(prs), 5)
        for i in range(10):
            prs = self.ns_scan_multi_with_pair(self.ns_leader, name, 'card'+str(i), 'card', '100', '50', 'ts1', '0', '8')
            self.assertEqual(len(prs), 8)
        for i in range(10):
            prs = self.ns_scan_multi_with_pair(self.ns_leader, name, 'card'+str(i), 'card', '50', '0', 'ts1', '0', '8')
            self.assertEqual(len(prs), 5)
        for i in range(10):
            prs = self.ns_scan_multi_with_pair(self.ns_leader, name, 'card'+str(i), 'card', '100', '10', 'ts1', '8', '3')
            self.assertEqual(len(prs), 8)
        prs = self.ns_scan_multi_with_pair(self.ns_leader, name, 'card'+str(i), 'card', '90', '0', 'ts1', '4', '5')
        self.assertEqual(len(prs), 0)

if __name__ == "__main__":
    load(TestHasTsCol)

Exemplo n.º 10
0
                                                      '*', self.slave2, 'no')
        self.assertIn('update ok', rs_absolute2)
        self.assertIn('update ok', rs_absolute3)

        rs_absolute2 = self.ns_update_table_alive_cmd(self.ns_leader,
                                                      'updatetablealive', 't1',
                                                      '*', self.slave1, 'yes')
        rs_absolute3 = self.ns_update_table_alive_cmd(self.ns_leader,
                                                      'updatetablealive', 't1',
                                                      '*', self.slave2, 'yes')
        self.assertIn('update ok', rs_absolute2)
        self.assertIn('update ok', rs_absolute3)

        rs_absolute2 = self.ns_update_table_alive_cmd(self.ns_leader,
                                                      'updatetablealive',
                                                      'tt1', '*', self.slave1,
                                                      'no')
        rs_absolute3 = self.ns_update_table_alive_cmd(self.ns_leader,
                                                      'updatetablealive', 't1',
                                                      '10', self.slave2, 'no')
        self.assertIn(
            'Fail to update table alive. error msg: table is not exist',
            rs_absolute2)
        self.assertIn(
            'Fail to update table alive. error msg: no pid has update',
            rs_absolute3)


if __name__ == "__main__":
    load(TestUpdateTableAlive)
Exemplo n.º 11
0
                    "index_name": "card",
                    "ts_name": ["ts1", "ts2"]
                },
                {
                    "index_name": "mcc",
                    "ts_name": ["ts2"]
                },
            ]
        }
        utils.gen_table_meta_file(table_meta, metadata_path)
        rs = self.ns_create(self.ns_leader, metadata_path)
        self.assertIn('Create table ok', rs)
        (schema, column_key) = self.ns_showschema(self.ns_leader, name)
        self.assertEqual(len(column_key), 3)
        self.assertEqual(column_key[0], ["0", "card", "card", "ts1", "10"])
        self.assertEqual(column_key[1], ["1", "card", "card", "ts2", "100"])
        self.assertEqual(column_key[2], ["2", "mcc", "mcc", "ts2", "100"])
        rs1 = self.ns_setttl(self.ns_leader, 'setttl', name, 'latest', 1,
                             'ts2')
        self.assertIn('Set ttl ok !', rs1)
        (schema, column_key) = self.ns_showschema(self.ns_leader, name)
        self.assertEqual(len(column_key), 3)
        self.assertEqual(column_key[0], ["0", "card", "card", "ts1", "10"])
        self.assertEqual(column_key[1], ["1", "card", "card", "ts2", "1"])
        self.assertEqual(column_key[2], ["2", "mcc", "mcc", "ts2", "1"])
        self.ns_drop(self.ns_leader, name)


if __name__ == "__main__":
    load(TestSetTTL)
Exemplo n.º 12
0
        rs1 = self.ns_put_multi(self.ns_leader, name, 11,
                                ['card0', 'mcc0', '15'])
        self.assertIn('Put ok', rs1)
        rs2 = self.ns_put_multi(self.ns_leader, name, 22,
                                ['card0', 'mcc1', '16'])
        self.assertIn('Put ok', rs2)
        rs3 = self.ns_put_multi(self.ns_leader, name, 33,
                                ['card1', 'mcc2', '20'])
        self.assertIn('Put ok', rs3)

        rs4 = self.ns_preview(self.ns_leader, name, 2)
        self.assertEqual(2, len(rs4))
        self.assertEqual(rs4[0]['k1'], 'card1')
        self.assertEqual(rs4[0]['k2'], 'mcc2')
        self.assertEqual(rs4[0]['k3'], '20')
        self.assertEqual(rs4[1]['k1'], 'card0')
        self.assertEqual(rs4[1]['k2'], 'mcc1')
        rs5 = self.ns_preview(self.ns_leader, name)
        self.assertEqual(3, len(rs5))
        self.assertEqual(rs5[0]['k1'], 'card1')
        self.assertEqual(rs5[0]['k2'], 'mcc2')
        self.assertEqual(rs5[0]['k3'], '20')
        self.assertEqual(rs5[1]['k1'], 'card0')
        self.assertEqual(rs5[1]['k2'], 'mcc1')
        self.assertEqual(rs5[2]['k1'], 'card0')
        self.assertEqual(rs5[2]['k2'], 'mcc0')


if __name__ == "__main__":
    load(TestPreview)
Exemplo n.º 13
0
        ('Fail to delreplica', '1,2,10', conf.tb_endpoints[1]),
        ('pid group[1,x,5] format error', '1,x,5', conf.tb_endpoints[1]),
        ('pid group[1,3:5] format error', '1,3:5', conf.tb_endpoints[1]),
        ('Fail to delreplica', '1-10', conf.tb_endpoints[1]),
        ('pid group[1~10] format error', '1~10', conf.tb_endpoints[1]),
        ('pid group[1-m] format error', '1-m', conf.tb_endpoints[1]),
        ('pid group[m-5] format error', 'm-5', conf.tb_endpoints[1]),
        ('Fail to delreplica', '5-7', conf.tb_endpoints[1]),
        ('Fail to delreplica', '5,6,7', conf.tb_endpoints[1]),
    )
    @ddt.unpack
    def test_delreplica_pid_group_error(self, exp_msg, pid_group, endpoint):
        """
        删除失败
        :return:
        """
        name = 't{}'.format(time.time())
        metadata_path = '{}/metadata.txt'.format(self.testpath)
        m = utils.gen_table_metadata('"{}"'.format(name), '"kLatestTime"', 100, 8,
                                     ('table_partition', '"{}"'.format(self.leader), '"0-7"', 'true'),
                                     ('table_partition', '"{}"'.format(self.slave1), '"0-5"', 'false'))
        utils.gen_table_metadata_file(m, metadata_path)
        rs1 = self.ns_create(self.ns_leader, metadata_path)
        self.assertIn('Create table ok', rs1)

        rs2 = self.delreplica(self.ns_leader, name, pid_group, 'ns_client', endpoint)
        self.assertIn(exp_msg, rs2)

if __name__ == "__main__":
    load(TestDelReplicaNs)
Exemplo n.º 14
0
        pid = tables.keys()[0][2]
        table_endpoints = set()
        table_endpoints.add(tables.keys()[0][3])
        table_endpoints.add(tables.keys()[1][3])

        replica_endpoint = endponints - table_endpoints
        slave = replica_endpoint.pop()

        self.ns_addreplica(self.ns_leader, name, pid, slave)
        for i in range(10):
            time.sleep(2)
            rs = self.showopstatus(self.ns_leader, name, pid)
            op_id = rs.keys()[0]
            ops = self.showopstatus(self.ns_leader)
            if ops[int(op_id)][1] != 'kDone':
                continue
            rs = self.gettablestatus(slave, tid, pid)
            table_status = self.parse_tb(rs, ' ', [0, 1, 2, 3], [4, 5, 6])
            rs = self.showtable_with_tablename(self.ns_leader, name)
            table_infos = self.parse_tb(rs, ' ', [0, 1, 2, 3],
                                        [4, 5, 6, 7, 8, 9, 10])
            for table_info in table_infos:
                self.assertEqual(table_status.keys()[0][2],
                                 table_infos[table_info][4])
            break
        self.ns_drop(self.ns_leader, name)


if __name__ == "__main__":
    load(TestAddReplicaNs)
Exemplo n.º 15
0
            ('column_desc', '"k2"', '"string"', 'false'),
            ('column_desc', '"k3"', '"string"', 'false')
        )
        utils.gen_table_metadata_file(m, metadata_path)
        rs0 = self.ns_create(self.ns_leader, metadata_path)
        self.assertIn('Create table ok', rs0)
        self.multidimension_vk = {'k1': ('string:index', 'testvalue0'),
                                  'k2': ('string', 'testvalue0'),
                                  'k3': ('string', 'testvalue0')}
        self.multidimension_scan_vk = {'k1': 'testvalue0'}

        rs1 = self.showtable(self.ns_leader)
        tid = rs1.keys()[0][1]

        self.assertEqual(rs1[(name, tid,  str(pid), self.leader)], ['leader', '144000min', 'yes', 'kNoCompress'])
        self.assertEqual(rs1[(name, tid,  str(pid), self.slave1)], ['follower', '144000min', 'yes', 'kNoCompress'])

        rs0 = self.changeleader(self.ns_leader, name, pid, switch)
        time.sleep(1)
        if (switch == ''):
            self.assertIn(rs0, 'failed to change leader. error msg: leader is alive')
        else:
            rs2 = self.showtable(self.ns_leader)
            self.assertEqual(rs2[(name, tid, str(pid), self.leader)], ['leader', '144000min', rsp_msg, 'kNoCompress'])
            self.assertEqual(rs2[(name, tid, str(pid), conf.tb_endpoints[1])], ['leader', '144000min', 'yes', 'kNoCompress'])
        self.ns_drop(self.ns_leader, name)


if __name__ == "__main__":
    load(TestChangeLeader)
Exemplo n.º 16
0
        self.assertEqual(column_key[0],
                         ["0", "card_x", "card", "-", "14400min"])
        self.assertEqual(column_key[1],
                         ["1", "col", "col1|col2", "-", "14400min"])
        row = ['card0', 'mcc0', '1.3', 'col1x', 'col2x']
        self.ns_put_multi(self.ns_leader, name, self.now(), row)
        row = ['card0', 'mcc1', '1.4', 'col1m', 'col2m']
        self.ns_put_multi(self.ns_leader, name, self.now(), row)
        row = ['card1', 'mcc1', '1.5', 'col11', 'col22']
        self.ns_put_multi(self.ns_leader, name, self.now(), row)
        rs = self.ns_scan_multi(self.ns_leader, name, 'card0', 'card_x',
                                self.now() + 100, 0)
        self.assertEqual(len(rs), 2)
        rs5 = self.ns_delete(self.ns_leader, name, 'card0', 'card_x')
        self.assertIn('delete ok', rs5)
        rs = self.ns_scan_multi(self.ns_leader, name, 'card0', 'card_x',
                                self.now() + 100, 0)
        self.assertEqual(len(rs), 0)
        rs = self.ns_scan_multi(self.ns_leader, name, 'col1m|col2m', 'col',
                                self.now() + 100, 0)
        self.assertEqual(len(rs), 1)
        rs5 = self.ns_delete(self.ns_leader, name, 'col1m|col2m', 'col')
        self.assertIn('delete ok', rs5)
        rs = self.ns_scan_multi(self.ns_leader, name, 'col1m|col2m', 'col',
                                self.now() + 100, 0)
        self.assertEqual(len(rs), 0)


if __name__ == "__main__":
    load(TestDelete)
        m = utils.gen_table_metadata(
            '"{}"'.format(self.tname), '"kAbsoluteTime"', 144000, 8,
            ('table_partition', '"{}"'.format(self.leader), '"0-3"', 'true'),
            ('table_partition', '"{}"'.format(self.slave1), '"2-3"', 'false'),
            ('table_partition', '"{}"'.format(self.slave2), '"2-3"', 'false'),
            ('column_desc', '"k1"', '"string"', 'true'),
            ('column_desc', '"k2"', '"string"', 'false'),
            ('column_desc', '"k3"', '"string"', 'false'))
        utils.gen_table_metadata_file(m, metadata_path)
        rs = self.ns_create(self.ns_leader, metadata_path)
        self.assertIn('Create table ok', rs)
        table_info = self.showtable(self.ns_leader, self.tname)
        self.tid = int(table_info.keys()[0][1])
        self.pid = 1
        for _ in range(10):
            self.put(self.leader, self.tid, self.pid, 'testkey0',
                     self.now() + 90000, 'testvalue0')

        steps_dict = self.get_steps_dict()
        for i in steps:
            eval(steps_dict[i])
        rs = self.showtable(self.ns_leader, self.tname)
        self.assertEqual(
            rs[(self.tname, str(self.tid), str(self.pid), self.leader)],
            ['leader', '144000min', 'yes', 'kNoCompress'])
        self.ns_drop(self.ns_leader, self.tname)


if __name__ == "__main__":
    load(TestAutoRecoverTable)
Exemplo n.º 18
0
        self.assertEqual(table_status[:6], ['0', 'kTableLeader', 'kSnapshotPaused', 'true', '144000min', '0s'])


    def test_changerole_to_leader_can_addreplica(self):
        """
        切换从节点为主节点后,可以成功addreplica slave,slave可以同步leader数据
        :return:
        """
        rs1 = self.create(self.leader, 't', self.tid, self.pid, 144000, 2, 'false')
        self.assertIn('Create table ok', rs1)
        rs2 = self.create(self.slave1, 't', self.tid, self.pid, 144000, 8, 'false')
        self.assertIn('Create table ok', rs2)
        rs3 = self.addreplica(self.leader, self.tid, self.pid, 'client', self.slave1)
        self.assertIn('Fail to Add Replica', rs3)
        rs4 = self.changerole(self.leader, self.tid, self.pid, 'leader')
        self.assertIn('ChangeRole ok', rs4)
        rs5 = self.addreplica(self.leader, self.tid, self.pid, 'client', self.slave1)
        self.assertIn('AddReplica ok', rs5)
        rs6 = self.put(self.leader,
                       self.tid,
                       self.pid,
                       'testkey0',
                       self.now(),
                       'testvalue0')
        self.assertIn('Put ok', rs6)
        self.assertIn('testvalue0', self.scan(self.slave1, self.tid, self.pid, 'testkey0', self.now(), 1))


if __name__ == "__main__":
    load(TestChangeRole)
Exemplo n.º 19
0
        self.assertEqual(rs0[0], rs5[0])
        self.assertEqual(rs0[0], rs6[0])
        self.ns_drop(self.ns_leader, tname)

    def test_ns_client_migrate_no_leader(self):
        """
        无主状态下迁移失败
        :return:
        """
        tname = str(time.time())
        self.createtable_put(tname, 500)
        self.stop_client(self.leader)
        time.sleep(2)
        rs1 = self.migrate(self.ns_leader, self.slave1, tname, "4-6",
                           self.slave2)
        time.sleep(2)
        rs2 = self.showtable(self.ns_leader, tname)

        self.start_client(self.leader)
        time.sleep(10)
        self.showtable(self.ns_leader, tname)
        self.assertIn('partition migrate ok', rs1)
        for i in range(4, 7):
            self.assertIn((tname, str(self.tid), str(i), self.slave1), rs2)
            self.assertNotIn((tname, str(self.tid), str(i), self.slave2), rs2)
        self.ns_drop(self.ns_leader, tname)


if __name__ == "__main__":
    load(TestNameserverMigrate)
Exemplo n.º 20
0
        self.assertEqual(memused2 > memused, True)

    def test_gettablestatus_memused_datacount(self):
        """
        检查数据量变大时,mem使用量是否正常
        :return:
        """
        self.multidimension_vk = {
            'card': ('string:index', 'pk0'),
            'merchant': ('string:index', 'pk1'),
            'amt': ('string', 'a' * 100)
        }
        rs = self.create(self.leader, 't', self.tid, self.pid)
        self.assertIn('ok', rs)
        self.put_large_datas(10, 1)
        table_status = self.get_table_status(self.leader, self.tid, self.pid)
        memused = float(table_status[6])

        self.pid = self.pid + 1
        rs = self.create(self.leader, 't', self.tid, self.pid)
        self.assertIn('ok', rs)
        self.put_large_datas(20, 1)
        table_status = self.get_table_status(self.leader, self.tid, self.pid)
        memused2 = float(table_status[6])

        self.assertEqual(memused2 > memused, True)


if __name__ == "__main__":
    load(TestGetTableStatus)
Exemplo n.º 21
0
        暂停主节点指定表的snapshot,仍可以put数据且被同步
        :return:
        """
        rs1 = self.create(self.leader, 't', self.tid, self.pid, 144000, 8, 'true')
        self.assertIn('Create table ok', rs1)
        rs2 = self.create(self.slave1, 't', self.tid, self.pid, 144000, 8, 'false')
        self.assertIn('Create table ok', rs2)
        rs3 = self.addreplica(self.leader, self.tid, self.pid, 'client', self.slave1)
        self.assertIn('AddReplica ok', rs3)
        time.sleep(1)
        rs4 = self.pausesnapshot(self.leader, self.tid, self.pid)
        self.assertIn('PauseSnapshot ok', rs4)

        rs5 = self.put(self.leader,
                       self.tid,
                       self.pid,
                       '',
                       self.now() - 1,
                       'v', '1.1', 'k')
        self.assertIn('Put ok', rs5)
        time.sleep(1)

        self.multidimension_scan_vk = {'card': 'k'}  # for multidimension test
        self.assertIn('v', self.scan(self.slave1, self.tid, self.pid, 'k', self.now(), 1))
        table_status = self.get_table_status(self.leader, self.tid, self.pid)
        self.assertEqual(table_status[:6], ['1', 'kTableLeader', 'kSnapshotPaused', 'true', '144000min', '0s'])


if __name__ == "__main__":
    load(TestPauseSnapshot)
Exemplo n.º 22
0
        self.wait_op_done(name)
        rs_old_leader_put = self.put(self.leader, tid, pid, 'testkey1',
                                     self.now(), 'testvalue1')
        self.assertIn('Put ok', rs_old_leader_put)
        time.sleep(1)
        self.assertFalse('testvalue1' in self.scan(self.slave1, tid, pid,
                                                   'testkey1', self.now(), 1))
        self.assertFalse('testvalue1' in self.scan(self.slave2, tid, pid,
                                                   'testkey1', self.now(), 1))

        rs_new_leader_put = self.put(self.slave1, tid, pid, 'testkey2',
                                     self.now(), 'testvalue2')
        self.assertIn('Put ok', rs_new_leader_put)
        time.sleep(2)
        self.assertFalse('testvalue2' in self.scan(self.leader, tid, pid,
                                                   'testkey2', self.now(), 1))
        self.assertTrue('testvalue2' in self.scan(self.slave2, tid, pid,
                                                  'testkey2', self.now(), 1))

        self.ns_recover_table_cmd(self.ns_leader, 'recovertable', name, pid,
                                  self.leader)
        time.sleep(1)
        self.wait_op_done(name)
        time.sleep(1)
        self.assertTrue('testvalue2' in self.scan(self.leader, tid, pid,
                                                  'testkey2', self.now(), 1))


if __name__ == "__main__":
    load(TestRecoverTable)
Exemplo n.º 23
0
class TestConfSetGet(TestCaseBase):
    @ddt.data(
        ('false', 'true', 'set auto_failover ok', 'true'),
        ('false', 'TRUE', 'set auto_failover ok', 'true'),
        ('true', 'FALSE', 'set auto_failover ok', 'false'),
        ('true', 'FalsE', 'set auto_failover ok', 'false'),
        ('true', '0',
         'failed to set auto_failover. error msg: invalid parameter', 'true'),
        ('true', 'FAlsee',
         'failed to set auto_failover. error msg: invalid parameter', 'true'),
        ('true', 'true', 'set auto_failover ok', 'true'),
        ('true', 'false', 'set auto_failover ok', 'false'),
    )
    @ddt.unpack
    def test_auto_failover_confset(self, pre_set, set_value, msg, get_value):
        """

        :return:
        """
        self.confset(self.ns_leader, 'auto_failover', pre_set)
        rs = self.confset(self.ns_leader, 'auto_failover', set_value)
        self.assertIn(msg, rs)
        rs1 = self.confget(self.ns_leader, 'auto_failover')
        self.assertIn(get_value, rs1)
        if set_value == "true" or set_value == "TRUE":
            self.confset(self.ns_leader, 'auto_failover', 'false')


if __name__ == "__main__":
    load(TestConfSetGet)
Exemplo n.º 24
0
                                    self.now() + 100, 0)
            self.assertEqual(len(rs), 2)
            self.assertEqual(rs[0]['card'], 'card' + str(i))
            self.assertEqual(rs[0]['mcc'], 'mcc' + str(i))
            self.assertEqual(rs[0]['loc'], 'loc' + str(i))
            self.assertEqual(rs[0]['add2'], "2add{}".format(i))
        rs = self.ns_deleteindex(self.ns_leader, name, "loc")
        self.assertIn('delete index ok', rs)
        time.sleep(2)

        rs = self.ns_addindex(self.ns_leader, name, "loc2", "loc")
        self.assertIn('addindex ok', rs)

        time.sleep(2)
        self.wait_op_done(name)
        time.sleep(2)
        for i in range(20):
            rs = self.ns_scan_multi(self.ns_leader, name, 'loc' + str(i),
                                    'loc2', 0, 0)
            self.assertEqual(len(rs), 2)
            self.assertEqual(rs[0]['card'], 'card' + str(i))
            self.assertEqual(rs[0]['mcc'], 'mcc' + str(i))
            self.assertEqual(rs[0]['loc'], 'loc' + str(i))
            self.assertEqual(rs[0]['add2'], "2add{}".format(i))

        self.ns_drop(self.ns_leader, name)


if __name__ == "__main__":
    load(TestSchema)
Exemplo n.º 25
0
        ('setlimit', 'Get', 1.5, 'Bad set limit format'),
        ('setlimit', 'Scan', 10, 'Set Limit ok'),
        ('setlimit', 'Scan', 0, 'Set Limit ok'),
        ('setlimit', 'Scan', 1, 'Set Limit ok'),
        ('setlimit', 'Scan', 2147483647, 'Set Limit ok'),
        ('setlimit', 'Scan', -1, 'Fail to set limit'),
        ('setlimit', 'Scan', 1.5, 'Bad set limit format'),
        ('setlimit', 'Server', 10, 'Set Limit ok'),
        ('setlimit', 'Server', 0, 'Set Limit ok'),
        ('setlimit', 'Server', 1, 'Set Limit ok'),
        ('setlimit', 'Server', 2147483647, 'Set Limit ok'),
        ('setlimit', 'Server', -1, 'Fail to set limit'),
        ('setlimit', 'Server', 1.5, 'Bad set limit format'),
        ('setLimit', 'Scan', 1, 'unsupported cmd')
    )
    @ddt.unpack
    def test_set_max_concurrency(self, command, method, max_concurrency_limit, rsp_msg):
        """
        修改并发限制的数值
        :param self:
        :param max_concurrency_limit:
        :return:
        """
        rs1 = self.ns_setlimit(self.leader, command, method, max_concurrency_limit)
        self.assertIn(rsp_msg, rs1)


if __name__ == "__main__":
    load(TestSetLimit)

Exemplo n.º 26
0
        time.sleep(1)
        rs1 = self.loadtable(self.slave1, 't', self.tid, self.pid, 1, 8,
                             'false')
        self.assertIn('Fail', rs1)
        rs0 = self.create(self.slave1, 't', self.tid, self.pid, 1, 8, 'false')
        self.assertIn('Create table ok', rs0)
        rs2 = self.addreplica(self.leader, self.tid, self.pid, 'client',
                              self.slave1)
        self.assertIn('AddReplica ok', rs2)
        time.sleep(2)
        self.assertIn(
            'testvalue0',
            self.scan(self.slave1, self.tid, self.pid, {'card': 'testkey'},
                      self.now() + 60000 * 6, 1))
        self.assertIn(
            'testvalue1',
            self.scan(self.slave1, self.tid, self.pid, {'card': 'testkey'},
                      self.now() + 60000 * 6, 1))
        time.sleep(62)
        self.assertFalse('testvalue0' in self.scan(
            self.slave1, self.tid, self.pid, {'card': 'testkey'},
            self.now() + 60000 * 6, 1))
        self.assertIn(
            'testvalue1',
            self.scan(self.slave1, self.tid, self.pid, {'card': 'testkey'},
                      self.now() + 60000 * 6, 1))


if __name__ == "__main__":
    load(TestLoadTable)
Exemplo n.º 27
0
                                    self.now() - 1, 'value{}'.format(i))
            self.assertIn('Put ok', rs_put)

        rs = self.showtable_with_tablename(self.ns_leader, name)
        rs_after = self.parse_tb(rs, ' ', [0, 1, 2, 3], [4, 5, 6, 7, 8, 9, 10])
        for i in range(10):
            time.sleep(2)
            offset_number = 0
            rs = self.showtable_with_tablename(self.ns_leader, name)
            rs_after = self.parse_tb(rs, ' ', [0, 1, 2, 3],
                                     [4, 5, 6, 7, 8, 9, 10])
            for table_info in rs_after:
                if rs_after[table_info][4] == '2':
                    offset_number = offset_number + 1
            if offset_number == 9:
                break
        diff = 1
        for table_info in rs_after:
            if rs_after[table_info][4] == '0':
                continue
            self.assertEqual(
                diff,
                int(rs_after[table_info][4]) - int(rs_before[table_info][4]))

        self.confset(self.ns_leader, 'auto_failover', 'false')
        self.ns_drop(self.ns_leader, name)


if __name__ == "__main__":
    load(TestAutoFailover)
Exemplo n.º 28
0
        self.assertEqual(rs[0]['mcc'], 'mcc0')
        rs = self.ns_scan_multi(self.ns_leader, name, 'mcc1', 'mcc', 0, 0)
        self.assertEqual(len(rs), 2)

        rs = self.ns_get_multi(self.ns_leader, name, 'mcc1', 'mcc', 0)
        self.assertEqual(rs['card'], 'card1')
        self.assertEqual(rs['mcc'], 'mcc1')
        rs = self.ns_get_multi(self.ns_leader, name, 'card0', 'card', 0)
        self.assertEqual(rs['card'], 'card0')
        self.assertEqual(rs['mcc'], 'mcc1')

        rs = self.ns_count(self.ns_leader, name, 'card0', 'card')
        self.assertEqual("count: 2", rs)
        rs = self.ns_count(self.ns_leader, name, 'mcc1', 'mcc')
        self.assertEqual("count: 2", rs)
        rs = self.ns_count(self.ns_leader, name, 'mcc0', 'mcc')
        self.assertEqual("count: 1", rs)

        rs = self.ns_preview(self.ns_leader, name)
        self.assertEqual(len(rs), 3)

        rs = self.ns_delete(self.ns_leader, name, "mcc1", "mcc")
        rs = self.ns_count(self.ns_leader, name, 'mcc1', 'mcc')
        self.assertEqual("count: 0", rs)

        self.ns_drop(self.ns_leader, name)


if __name__ == "__main__":
    load(TestPartitionKey)
Exemplo n.º 29
0
        for k, v in value_ts_scannable.items():
            rs = self.get(self.leader, self.tid, self.pid, 'pk', k[1])
            infoLogger.info(rs)
            if v is True:
                self.assertIn('|{}|'.format(k[0]), rs)
            else:
                self.assertNotIn('|{}|'.format(k[0]), rs)
        # put again after the last gc
        for i in put_value_ts:
            # for multidimension test
            self.multidimension_vk = {
                'card': ('string:index', 'pk'),
                'merchant': ('string:index', '|{}|'.format(i[0])),
                'amt': ('double', 1.1)
            }
            for ts in range(100):
                self.put(self.leader, self.tid, self.pid, 'pk', i[1] - ts,
                         '|{}|'.format(i[0]))
        time.sleep(1)
        for k, v in value_ts_scannable2.items():
            rs = self.get(self.leader, self.tid, self.pid, 'pk', k[1])
            infoLogger.info(rs)
            if v is True:
                self.assertIn('|{}|'.format(k[0]), rs)
            else:
                self.assertNotIn('|{}|'.format(k[0]), rs)


if __name__ == "__main__":
    load(TestTtl)
Exemplo n.º 30
0
                    ]
                }
        utils.gen_table_meta_file(table_meta, metadata_path)
        rs = self.ns_create(self.ns_leader, metadata_path)
        self.assertIn('Create table ok', rs)
        curtime = int(time.time() * 1000)
        self.ns_put_multi(self.ns_leader, name, '', ['card0', 'mcc0', '1.1', '1', '11'])
        self.ns_put_multi(self.ns_leader, name, '', ['card0', 'mcc1', '1.2', '2', '12'])
        self.ns_put_multi(self.ns_leader, name, '', ['card0', 'mcc2', '1.3', '3', '13'])
        self.ns_put_multi(self.ns_leader, name, '', ['card0', 'mcc3', '1.4', '4', '14'])
        self.ns_put_multi(self.ns_leader, name, '', ['card0', 'mcc0', '1.6', '5', '15'])
        self.ns_put_multi(self.ns_leader, name, '', ['card0', 'mcc0', '1.7', '6', '16'])
        self.ns_put_multi(self.ns_leader, name, '', ['card2', 'mcc1', '1.8', '7', '17'])
        self.ns_put_multi(self.ns_leader, name, '', ['card2', 'mcc1', '1.9', '8', '18'])
        self.ns_put_multi(self.ns_leader, name, '', ['card3', 'mcc4', '2.0', '9', '19'])
        rs3 = self.makesnapshot(self.ns_leader, name, 0, 'ns_client')

        table_info = self.showtable(self.ns_leader, name)
        tid = table_info.keys()[0][1]
        tablet_endpoint = table_info.keys()[0][3]
        self.execute_gc(tablet_endpoint, tid, '0')

        rs3 = self.makesnapshot(self.ns_leader, name, '0', 'ns_client')
        self.assertIn('MakeSnapshot ok', rs3)
        mf = self.get_manifest(self.leaderpath, tid, 0)
        self.assertEqual(mf['offset'], '9')
        self.assertEqual(mf['count'], '7')

if __name__ == "__main__":
    load(TestMakeSnapshotNsClient)