TEST(ObRootServer2LogTest, do_server_down) { int32_t port = 1001; ObServer server(ObServer::IPV4, "10.10.10.1", port); int32_t status = 1; int64_t ts = 123456; ObRootServer2 master; ObRootWorkerForTest master_worker; ASSERT_TRUE(master.init("./root_server.conf", 100, &master_worker)); ObRootServer2 slave; ObRootWorkerForTest slave_worker; ASSERT_TRUE(slave.init("./root_server.conf", 100, &slave_worker)); ObRootServerTester wrapper(&slave); wrapper.stop_thread(); int ret = master.regist_server(server, false, status, ts); ASSERT_EQ(OB_SUCCESS, ret); ObRootLogWorker log_worker = wrapper.get_log_worker(); log_worker.do_cs_regist(server, ts); // up server ObChunkServerManager& server_manager = wrapper.get_server_manager(); ObChunkServerManager::iterator it = server_manager.find_by_ip(server); ASSERT_TRUE(it != server_manager.end()); ASSERT_NE(ObServerStatus::STATUS_DEAD, it->status_); log_worker.do_server_down(server, ts); // down server it = server_manager.find_by_ip(server); ASSERT_TRUE(it != server_manager.end()); ASSERT_EQ(ObServerStatus::STATUS_DEAD, it->status_); }
void ObBalanceTest::register_cs(int32_t cs_num) { for (int i = 0; i < cs_num; ++i) { int32_t status = 0; ASSERT_EQ(OB_SUCCESS, server_->regist_server(get_addr(i), false, status)); TBSYS_LOG(INFO, "register cs, id=%d status=%d", i, status); } }
void MigrateTestEnv::setup() { // 1. init ObRootServer2* rs = worker_.get_root_server(); ASSERT_TRUE(rs->init("./root_server.conf", 100, &worker_)); rs->start_threads(); sleep(1); // 2. cs register int status; ASSERT_EQ(OB_SUCCESS, rs->regist_server(cs1_, false, status)); ASSERT_EQ(OB_SUCCESS, rs->regist_server(cs2_, false, status)); // 3. cs1 report tablets replicas ObTabletReportInfoList report_list1; ObTabletReportInfoList report_list2; ObTabletReportInfo report_info; ObTabletLocation location; location.tablet_version_ = tablet_version_; info1_.range_.table_id_ = 10001; info1_.range_.border_flag_.set_inclusive_end(); info1_.range_.border_flag_.unset_inclusive_start(); info1_.range_.border_flag_.set_min_value(); info1_.range_.border_flag_.unset_max_value(); info1_.range_.start_key_.assign_buffer(buf1[0], 30); info1_.range_.end_key_.assign_buffer(buf2[0], 30); info1_.range_.start_key_.write("aa1", 3); info1_.range_.end_key_.write("ba1", 3); location.chunkserver_ = cs1_; report_info.tablet_info_ = info1_; report_info.tablet_location_ = location; report_list1.add_tablet(report_info); info1_.range_.border_flag_.unset_min_value(); info1_.range_.border_flag_.set_max_value(); info1_.range_.start_key_.assign_buffer(buf1[1], 30); info1_.range_.end_key_.assign_buffer(buf2[1], 30); info1_.range_.start_key_.write("ba1", 3); info1_.range_.end_key_.write("ca1", 3); report_info.tablet_info_ = info1_; report_info.tablet_location_ = location; report_list1.add_tablet(report_info); int64_t now = tbsys::CTimeUtil::getTime(); ASSERT_EQ(OB_SUCCESS, rs->report_tablets(cs1_, report_list1, now)); ASSERT_EQ(OB_SUCCESS, rs->report_tablets(cs2_, report_list2, now)); // wait init finish sleep(5); }
TEST(ObRootServer2LogTest, do_load_report) { int32_t port = 1001; ObServer server(ObServer::IPV4, "10.10.10.1", port); int32_t status = 1; int64_t ts = 123456; int64_t cap = 12345; int64_t used = 1234; ObRootServer2 master; ObRootWorkerForTest master_worker; ASSERT_TRUE(master.init("./root_server.conf", 100, &master_worker)); ObRootServerTester master_wrapper(&master); master_wrapper.stop_thread(); ObRootServer2 slave; ObRootWorkerForTest slave_worker; ASSERT_TRUE(slave.init("./root_server.conf", 100, &slave_worker)); ObRootServerTester slave_wrapper(&slave); slave_wrapper.stop_thread(); int ret = master.regist_server(server, false, status, ts); ASSERT_EQ(OB_SUCCESS, ret); ret = master.update_capacity_info(server, cap, used); ASSERT_EQ(OB_SUCCESS, ret); ObRootLogWorker log_worker = slave_wrapper.get_log_worker(); log_worker.do_cs_regist(server, ts); log_worker.do_cs_load_report(server, cap, used); ObChunkServerManager& master_server_manager = master_wrapper.get_server_manager(); ObChunkServerManager::iterator it = master_server_manager.find_by_ip(server); ASSERT_TRUE(it != master_server_manager.end()); int64_t master_cap = it->disk_info_.get_capacity(); int32_t master_used = it->disk_info_.get_used(); ObChunkServerManager& slave_server_manager = slave_wrapper.get_server_manager(); it = slave_server_manager.find_by_ip(server); ASSERT_TRUE(it != slave_server_manager.end()); int64_t slave_cap = it->disk_info_.get_capacity(); int32_t slave_used = it->disk_info_.get_used(); ASSERT_EQ(cap, master_cap); ASSERT_EQ(used, master_used); ASSERT_EQ(master_cap, slave_cap); ASSERT_EQ(master_used, slave_used); }
TEST(ObRootServer2LogTest, do_cs_regist) { int32_t port = 1001; ObServer server(ObServer::IPV4, "10.10.10.1", port); int32_t status = 1; int64_t ts = 123456; ObRootServer2 master; ObRootWorkerForTest master_worker; ASSERT_TRUE(master.init("./root_server.conf", 100, &master_worker)); ObRootServerTester master_wrapper(&master); master_wrapper.stop_thread(); ObRootServer2 slave; ObRootWorkerForTest slave_worker; ASSERT_TRUE(slave.init("./root_server.conf", 100, &slave_worker)); ObRootServerTester slave_wrapper(&slave); slave_wrapper.stop_thread(); int ret = master.regist_server(server, false, status, ts); ASSERT_EQ(OB_SUCCESS, ret); ObRootLogWorker log_worker = slave_wrapper.get_log_worker(); log_worker.do_cs_regist(server, ts); ObChunkServerManager& master_server_manager = master_wrapper.get_server_manager(); ObChunkServerManager::iterator it = master_server_manager.find_by_ip(server); ASSERT_TRUE(it != master_server_manager.end()); int64_t master_hb = it->last_hb_time_; int32_t master_port = it->port_cs_; ObChunkServerManager& slave_server_manager = slave_wrapper.get_server_manager(); it = slave_server_manager.find_by_ip(server); ASSERT_TRUE(it != slave_server_manager.end()); int64_t slave_hb = it->last_hb_time_; int32_t slave_port = it->port_cs_; ASSERT_EQ(ts, master_hb); ASSERT_EQ(port, master_port); ASSERT_EQ(master_hb, slave_hb); ASSERT_EQ(master_port, slave_port); }