Skip to content

Commit 4e62477

Browse files
author
yangce
committed
issue=baidu#1271 Add mock zk adapter for test
1 parent 1bca282 commit 4e62477

7 files changed

+76
-38
lines changed

src/master/master_impl.cc

+3
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ DECLARE_string(tera_master_meta_table_path);
4949
DECLARE_int32(tera_master_meta_retry_times);
5050

5151
DECLARE_bool(tera_zk_enabled);
52+
DECLARE_bool(tera_mock_zk_enabled);
5253

5354
DECLARE_double(tera_master_workload_split_threshold);
5455
DECLARE_int64(tera_master_split_tablet_size);
@@ -167,6 +168,8 @@ MasterImpl::~MasterImpl() {
167168
bool MasterImpl::Init() {
168169
if (FLAGS_tera_zk_enabled) {
169170
zk_adapter_.reset(new MasterZkAdapter(this, local_addr_));
171+
} else if (FLAGS_tera_mock_zk_enabled) {
172+
zk_adapter_.reset(new MockMasterZkAdapter(this, local_addr_));
170173
} else if (FLAGS_tera_ins_enabled) {
171174
LOG(INFO) << "ins mode" ;
172175
zk_adapter_.reset(new InsMasterZkAdapter(this, local_addr_));

src/master/master_zk_adapter.h

+29-22
Original file line numberDiff line numberDiff line change
@@ -52,28 +52,28 @@ class MasterZkAdapter : public MasterZkAdapterBase {
5252
virtual bool UpdateRootTabletNode(const std::string& root_tablet_addr);
5353

5454
protected:
55-
bool Setup();
56-
void Reset();
57-
58-
bool LockMasterLock();
59-
bool UnlockMasterLock();
60-
bool CreateMasterNode();
61-
bool DeleteMasterNode();
62-
63-
bool WatchRootTabletNode(bool* is_exist, std::string* root_tablet_addr);
64-
bool WatchSafeModeMark(bool* is_safemode);
65-
bool WatchTabletNodeList(std::map<std::string, std::string>* tabletnode_list);
66-
67-
void OnSafeModeMarkCreated();
68-
void OnSafeModeMarkDeleted();
69-
void OnMasterLockLost();
70-
void OnTabletNodeListDeleted();
71-
void OnRootTabletNodeDeleted();
72-
void OnMasterNodeDeleted();
73-
void OnTabletServerKickMarkCreated();
74-
void OnTabletServerKickMarkDeleted();
75-
void OnTabletServerStart(const std::string& ts_host);
76-
void OnTabletServerExist(const std::string& ts_host);
55+
virtual bool Setup();
56+
virtual void Reset();
57+
58+
virtual bool LockMasterLock();
59+
virtual bool UnlockMasterLock();
60+
virtual bool CreateMasterNode();
61+
virtual bool DeleteMasterNode();
62+
63+
virtual bool WatchRootTabletNode(bool* is_exist, std::string* root_tablet_addr);
64+
virtual bool WatchSafeModeMark(bool* is_safemode);
65+
virtual bool WatchTabletNodeList(std::map<std::string, std::string>* tabletnode_list);
66+
67+
virtual void OnSafeModeMarkCreated();
68+
virtual void OnSafeModeMarkDeleted();
69+
virtual void OnMasterLockLost();
70+
virtual void OnTabletNodeListDeleted();
71+
virtual void OnRootTabletNodeDeleted();
72+
virtual void OnMasterNodeDeleted();
73+
virtual void OnTabletServerKickMarkCreated();
74+
virtual void OnTabletServerKickMarkDeleted();
75+
virtual void OnTabletServerStart(const std::string& ts_host);
76+
virtual void OnTabletServerExist(const std::string& ts_host);
7777

7878
virtual void OnChildrenChanged(const std::string& path,
7979
const std::vector<std::string>& name_list,
@@ -92,6 +92,13 @@ class MasterZkAdapter : public MasterZkAdapterBase {
9292
std::string server_addr_;
9393
};
9494

95+
class MockMasterZkAdapter : public MasterZkAdapter {
96+
public:
97+
MockMasterZkAdapter(MasterImpl* master_impl, const std::string & server_addr) :
98+
MasterZkAdapter(master_impl, server_addr) {}
99+
virtual ~MockMasterZkAdapter() {}
100+
};
101+
95102
/*
96103
* This is not zookeeper!
97104
* Just used on onebox for tasting tera briefly.

src/sdk/sdk_zk.cc

+3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
DECLARE_string(tera_zk_lib_log_path);
1616
DECLARE_string(tera_fake_zk_path_prefix);
1717
DECLARE_bool(tera_zk_enabled);
18+
DECLARE_bool(tera_mock_zk_enabled);
1819
DECLARE_string(tera_zk_addr_list);
1920
DECLARE_string(tera_zk_root_path);
2021
DECLARE_bool(tera_ins_enabled);
@@ -126,6 +127,8 @@ ClusterFinder* NewClusterFinder() {
126127
return new sdk::InsClusterFinder(FLAGS_tera_ins_root_path, FLAGS_tera_ins_addr_list);
127128
} else if (FLAGS_tera_mock_ins_enabled) {
128129
return new sdk::MockInsClusterFinder(FLAGS_tera_ins_root_path, FLAGS_tera_ins_addr_list);
130+
} else if (FLAGS_tera_mock_zk_enabled) {
131+
return new sdk::MockZkClusterFinder(FLAGS_tera_zk_root_path, FLAGS_tera_zk_addr_list);
129132
} else if (!FLAGS_tera_zk_enabled) {
130133
return new sdk::FakeZkClusterFinder(FLAGS_tera_fake_zk_path_prefix);
131134
} else {

src/sdk/sdk_zk.h

+8
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,14 @@ class ZkClusterFinder : public ClusterFinder {
4646
std::string zk_addr_list_;
4747
};
4848

49+
class MockZkClusterFinder : public ZkClusterFinder {
50+
public:
51+
MockZkClusterFinder(const std::string& zk_root_path, const std::string& zk_addr_list) :
52+
ZkClusterFinder(zk_root_path, zk_addr_list) {}
53+
protected:
54+
virtual std::string Name() { return "mock zk"; }
55+
};
56+
4957
class InsClusterFinder : public ClusterFinder {
5058
public:
5159
InsClusterFinder(const std::string& ins_root_path, const std::string& ins_addr_list);

src/tabletnode/tabletnode_impl.cc

+3
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ DECLARE_int32(tera_tabletnode_impl_thread_min_num);
4949
DECLARE_int32(tera_tabletnode_impl_thread_max_num);
5050

5151
DECLARE_bool(tera_zk_enabled);
52+
DECLARE_bool(tera_mock_zk_enabled);
5253

5354
DECLARE_string(tera_master_meta_table_name);
5455
DECLARE_int32(tera_tabletnode_retry_period);
@@ -158,6 +159,8 @@ TabletNodeImpl::~TabletNodeImpl() {
158159
bool TabletNodeImpl::Init() {
159160
if (FLAGS_tera_zk_enabled) {
160161
zk_adapter_.reset(new TabletNodeZkAdapter(this, local_addr_));
162+
} else if (FLAGS_tera_mock_zk_enabled) {
163+
zk_adapter_.reset(new MockTabletNodeZkAdapter(this, local_addr_));
161164
} else if(FLAGS_tera_ins_enabled) {
162165
LOG(INFO) << "ins mode!";
163166
zk_adapter_.reset(new InsTabletNodeZkAdapter(this, local_addr_));

src/tabletnode/tabletnode_zk_adapter.h

+29-16
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,22 @@ class TabletNodeZkAdapter : public TabletNodeZkAdapterBase {
3838
virtual bool GetRootTableAddr(std::string* root_table_addr);
3939

4040
private:
41-
bool Register(const std::string& session_id, int* zk_code);
42-
bool Unregister(int* zk_code);
43-
44-
bool WatchMaster(std::string* master, int* zk_code);
45-
bool WatchSafeModeMark(bool* is_exist, int* zk_code);
46-
bool WatchKickMark(bool* is_exist, int* zk_code);
47-
bool WatchSelfNode(bool* is_exist, int* zk_code);
48-
bool WatchRootNode(bool* is_exist, std::string* root_tablet_addr, int* zk_errno);
49-
50-
void OnSafeModeMarkCreated();
51-
void OnSafeModeMarkDeleted();
52-
void OnKickMarkCreated();
53-
void OnSelfNodeDeleted();
54-
void OnRootNodeCreated();
55-
void OnRootNodeDeleted();
56-
void OnRootNodeChanged(const std::string& root_tablet_addr);
41+
virtual bool Register(const std::string& session_id, int* zk_code);
42+
virtual bool Unregister(int* zk_code);
43+
44+
virtual bool WatchMaster(std::string* master, int* zk_code);
45+
virtual bool WatchSafeModeMark(bool* is_exist, int* zk_code);
46+
virtual bool WatchKickMark(bool* is_exist, int* zk_code);
47+
virtual bool WatchSelfNode(bool* is_exist, int* zk_code);
48+
virtual bool WatchRootNode(bool* is_exist, std::string* root_tablet_addr, int* zk_errno);
49+
50+
virtual void OnSafeModeMarkCreated();
51+
virtual void OnSafeModeMarkDeleted();
52+
virtual void OnKickMarkCreated();
53+
virtual void OnSelfNodeDeleted();
54+
virtual void OnRootNodeCreated();
55+
virtual void OnRootNodeDeleted();
56+
virtual void OnRootNodeChanged(const std::string& root_tablet_addr);
5757

5858
virtual void OnChildrenChanged(const std::string& path,
5959
const std::vector<std::string>& name_list,
@@ -72,6 +72,19 @@ class TabletNodeZkAdapter : public TabletNodeZkAdapterBase {
7272
std::string kick_node_path_;
7373
};
7474

75+
class MockTabletNodeZkAdapter : public TabletNodeZkAdapter {
76+
public:
77+
MockTabletNodeZkAdapter(TabletNodeImpl* tabletnode_impl,
78+
const std::string & server_addr) :
79+
TabletNodeZkAdapter(tabletnode_impl, server_addr) {}
80+
virtual ~MockTabletNodeZkAdapter() {}
81+
private:
82+
virtual void OnKickMarkCreated() {}
83+
virtual void OnSelfNodeDeleted() {}
84+
virtual void OnWatchFailed(const std::string& /*path*/, int /*watch_type*/, int /*err*/) {}
85+
virtual void OnSessionTimeout() {}
86+
};
87+
7588
class FakeTabletNodeZkAdapter : public TabletNodeZkAdapterBase {
7689
public:
7790
FakeTabletNodeZkAdapter(TabletNodeImpl* tabletnode_impl,

src/tera_flags.cc

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ DEFINE_int32(tera_heartbeat_retry_times, 5, "the max retry times when fail to se
2020
DEFINE_string(tera_working_dir, "./", "the base dir for system data");
2121

2222
DEFINE_bool(tera_zk_enabled, true, "enable zk adapter to collaborate with other master instances");
23+
DEFINE_bool(tera_mock_zk_enabled, false, "enable mock zk adapter to collaborate with other master instances");
2324
DEFINE_string(tera_zk_addr_list, "localhost:2180", "zookeeper server list");
2425
DEFINE_string(tera_zk_root_path, "/tera", "zookeeper root path");
2526
DEFINE_string(tera_fake_zk_path_prefix, "../fakezk", "fake zk path prefix in onebox tera");

0 commit comments

Comments
 (0)