示例#1
0
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_);
}
示例#2
0
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);
  }
}
示例#3
0
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);
}
示例#4
0
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);
}
示例#5
0
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);
}