3131#include " client/partition_resolver.h"
3232#include " common/gpid.h"
3333#include " dsn.layer2_types.h"
34- #include " gtest/gtest.h"
3534#include " meta/meta_data.h"
3635#include " metadata_types.h"
3736#include " misc/misc.h"
3837#include " rpc/dns_resolver.h" // IWYU pragma: keep
3938#include " rpc/rpc_address.h"
4039#include " rpc/rpc_host_port.h"
40+ #include " gtest/gtest.h"
4141
4242using namespace dsn ::replication;
4343
44- TEST (meta_data, dropped_cmp)
45- {
44+ TEST (meta_data, dropped_cmp) {
4645 dsn::host_port n;
4746
4847 dropped_replica d1, d2;
@@ -88,8 +87,7 @@ TEST(meta_data, dropped_cmp)
8887}
8988
9089static bool vec_equal (const std::vector<dropped_replica> &vec1,
91- const std::vector<dropped_replica> &vec2)
92- {
90+ const std::vector<dropped_replica> &vec2) {
9391 if (vec1.size () != vec2.size ())
9492 return false ;
9593 for (unsigned int i = 0 ; i != vec1.size (); ++i) {
@@ -107,8 +105,7 @@ static bool vec_equal(const std::vector<dropped_replica> &vec1,
107105 return true ;
108106}
109107
110- TEST (meta_data, collect_replica)
111- {
108+ TEST (meta_data, collect_replica) {
112109 app_mapper apps;
113110 node_mapper nodes;
114111
@@ -134,20 +131,20 @@ TEST(meta_data, collect_replica)
134131 std::vector<dsn::host_port> node_list;
135132 generate_node_list (node_list, 10 , 10 );
136133
137- #define CLEAR_REPLICA \
138- do { \
139- RESET_IP_AND_HOST_PORT (pc, primary); \
140- CLEAR_IP_AND_HOST_PORT (pc, secondaries); \
141- CLEAR_IP_AND_HOST_PORT (pc, last_drops); \
134+ #define CLEAR_REPLICA \
135+ do { \
136+ RESET_IP_AND_HOST_PORT (pc, primary); \
137+ CLEAR_IP_AND_HOST_PORT (pc, secondaries); \
138+ CLEAR_IP_AND_HOST_PORT (pc, last_drops); \
142139 } while (false )
143140
144- #define CLEAR_DROP_LIST \
145- do { \
146- cc.dropped .clear (); \
141+ #define CLEAR_DROP_LIST \
142+ do { \
143+ cc.dropped .clear (); \
147144 } while (false )
148145
149- #define CLEAR_ALL \
150- CLEAR_REPLICA; \
146+ #define CLEAR_ALL \
147+ CLEAR_REPLICA; \
151148 CLEAR_DROP_LIST
152149
153150 {
@@ -210,8 +207,10 @@ TEST(meta_data, collect_replica)
210207 // drop_list mixed, full, minimal position
211208 CLEAR_ALL;
212209 cc.dropped = {
213- dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 2 , 3 , 5 },
214- dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 , 4 , 5 },
210+ dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
211+ 3 , 5 },
212+ dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
213+ 4 , 5 },
215214 dropped_replica{node_list[2 ], 7 , 1 , 1 , 5 },
216215 dropped_replica{node_list[3 ], 8 , 1 , 1 , 5 },
217216 };
@@ -226,8 +225,10 @@ TEST(meta_data, collect_replica)
226225 // drop_list mixed, not full, minimal position
227226 CLEAR_ALL;
228227 cc.dropped = {
229- dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 2 , 3 , 5 },
230- dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 , 4 , 5 },
228+ dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
229+ 3 , 5 },
230+ dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
231+ 4 , 5 },
231232 dropped_replica{node_list[2 ], 7 , 1 , 1 , 6 },
232233 };
233234
@@ -245,8 +246,10 @@ TEST(meta_data, collect_replica)
245246 // drop_list mixed, full, not minimal position
246247 CLEAR_ALL;
247248 cc.dropped = {
248- dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 2 , 2 , 6 },
249- dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 , 4 , 6 },
249+ dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
250+ 2 , 6 },
251+ dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
252+ 4 , 6 },
250253 dropped_replica{node_list[2 ], 7 , 1 , 1 , 6 },
251254 dropped_replica{node_list[3 ], 8 , 1 , 1 , 6 },
252255 };
@@ -265,19 +268,25 @@ TEST(meta_data, collect_replica)
265268 {
266269 // drop_list mixed, not full, not minimal position
267270 CLEAR_ALL;
268- cc.dropped = {dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 2 , 2 , 6 },
269- dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 , 4 , 6 },
270- dropped_replica{node_list[2 ], 7 , 1 , 1 , 6 }};
271+ cc.dropped = {
272+ dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
273+ 2 , 6 },
274+ dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
275+ 4 , 6 },
276+ dropped_replica{node_list[2 ], 7 , 1 , 1 , 6 }};
271277
272278 rep.ballot = 3 ;
273279 rep.last_committed_decree = 1 ;
274280 rep.last_prepared_decree = 6 ;
275281 ASSERT_TRUE (collect_replica (view, node_list[5 ], rep));
276282
277283 std::vector<dropped_replica> result_dropped = {
278- dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 2 , 2 , 6 },
279- dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 , 4 , 6 },
280- dropped_replica{node_list[5 ], dropped_replica::INVALID_TIMESTAMP, 3 , 1 , 6 },
284+ dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
285+ 2 , 6 },
286+ dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
287+ 4 , 6 },
288+ dropped_replica{node_list[5 ], dropped_replica::INVALID_TIMESTAMP, 3 ,
289+ 1 , 6 },
281290 dropped_replica{node_list[2 ], 7 , 1 , 1 , 6 }};
282291
283292 ASSERT_TRUE (vec_equal (result_dropped, cc.dropped ));
@@ -287,10 +296,14 @@ TEST(meta_data, collect_replica)
287296 // drop_list no timestamp, full, minimal position
288297 CLEAR_ALL;
289298 cc.dropped = {
290- dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 2 , 2 , 8 },
291- dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 , 4 , 8 },
292- dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 2 , 6 , 8 },
293- dropped_replica{node_list[3 ], dropped_replica::INVALID_TIMESTAMP, 4 , 2 , 8 },
299+ dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
300+ 2 , 8 },
301+ dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
302+ 4 , 8 },
303+ dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
304+ 6 , 8 },
305+ dropped_replica{node_list[3 ], dropped_replica::INVALID_TIMESTAMP, 4 ,
306+ 2 , 8 },
294307 };
295308
296309 rep.ballot = 1 ;
@@ -303,10 +316,14 @@ TEST(meta_data, collect_replica)
303316 // drop_list no timestamp, full, middle position
304317 CLEAR_ALL;
305318 cc.dropped = {
306- dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 2 , 2 , 8 },
307- dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 , 4 , 8 },
308- dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 2 , 6 , 8 },
309- dropped_replica{node_list[3 ], dropped_replica::INVALID_TIMESTAMP, 4 , 2 , 8 },
319+ dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
320+ 2 , 8 },
321+ dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
322+ 4 , 8 },
323+ dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
324+ 6 , 8 },
325+ dropped_replica{node_list[3 ], dropped_replica::INVALID_TIMESTAMP, 4 ,
326+ 2 , 8 },
310327 };
311328
312329 rep.ballot = 3 ;
@@ -315,10 +332,14 @@ TEST(meta_data, collect_replica)
315332 ASSERT_TRUE (collect_replica (view, node_list[5 ], rep));
316333
317334 std::vector<dropped_replica> result_dropped = {
318- dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 , 4 , 8 },
319- dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 2 , 6 , 8 },
320- dropped_replica{node_list[5 ], dropped_replica::INVALID_TIMESTAMP, 3 , 6 , 8 },
321- dropped_replica{node_list[3 ], dropped_replica::INVALID_TIMESTAMP, 4 , 2 , 8 },
335+ dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
336+ 4 , 8 },
337+ dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
338+ 6 , 8 },
339+ dropped_replica{node_list[5 ], dropped_replica::INVALID_TIMESTAMP, 3 ,
340+ 6 , 8 },
341+ dropped_replica{node_list[3 ], dropped_replica::INVALID_TIMESTAMP, 4 ,
342+ 2 , 8 },
322343 };
323344
324345 ASSERT_TRUE (vec_equal (result_dropped, cc.dropped ));
@@ -327,21 +348,30 @@ TEST(meta_data, collect_replica)
327348 {
328349 // drop_list no timestamp, full, largest position
329350 CLEAR_ALL;
330- cc.dropped = {dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 , 4 , 8 },
331- dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 2 , 6 , 8 },
332- dropped_replica{node_list[3 ], dropped_replica::INVALID_TIMESTAMP, 4 , 2 , 8 },
333- dropped_replica{node_list[4 ], dropped_replica::INVALID_TIMESTAMP, 4 , 6 , 8 }};
351+ cc.dropped = {
352+ dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
353+ 4 , 8 },
354+ dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
355+ 6 , 8 },
356+ dropped_replica{node_list[3 ], dropped_replica::INVALID_TIMESTAMP, 4 ,
357+ 2 , 8 },
358+ dropped_replica{node_list[4 ], dropped_replica::INVALID_TIMESTAMP, 4 ,
359+ 6 , 8 }};
334360
335361 rep.ballot = 4 ;
336362 rep.last_committed_decree = 8 ;
337363 rep.last_prepared_decree = 8 ;
338364 ASSERT_TRUE (collect_replica (view, node_list[5 ], rep));
339365
340366 std::vector<dropped_replica> result_dropped = {
341- dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 2 , 6 , 8 },
342- dropped_replica{node_list[3 ], dropped_replica::INVALID_TIMESTAMP, 4 , 2 , 8 },
343- dropped_replica{node_list[4 ], dropped_replica::INVALID_TIMESTAMP, 4 , 6 , 8 },
344- dropped_replica{node_list[5 ], dropped_replica::INVALID_TIMESTAMP, 4 , 8 , 8 }};
367+ dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 2 ,
368+ 6 , 8 },
369+ dropped_replica{node_list[3 ], dropped_replica::INVALID_TIMESTAMP, 4 ,
370+ 2 , 8 },
371+ dropped_replica{node_list[4 ], dropped_replica::INVALID_TIMESTAMP, 4 ,
372+ 6 , 8 },
373+ dropped_replica{node_list[5 ], dropped_replica::INVALID_TIMESTAMP, 4 ,
374+ 8 , 8 }};
345375
346376 ASSERT_TRUE (vec_equal (result_dropped, cc.dropped ));
347377 }
@@ -350,8 +380,7 @@ TEST(meta_data, collect_replica)
350380#undef CLEAR_DROP_LIST
351381}
352382
353- TEST (meta_data, construct_replica)
354- {
383+ TEST (meta_data, construct_replica) {
355384 app_mapper apps;
356385 node_mapper nodes;
357386
@@ -377,20 +406,20 @@ TEST(meta_data, construct_replica)
377406 std::vector<dsn::host_port> node_list;
378407 generate_node_list (node_list, 10 , 10 );
379408
380- #define CLEAR_REPLICA \
381- do { \
382- RESET_IP_AND_HOST_PORT (pc, primary); \
383- CLEAR_IP_AND_HOST_PORT (pc, secondaries); \
384- CLEAR_IP_AND_HOST_PORT (pc, last_drops); \
409+ #define CLEAR_REPLICA \
410+ do { \
411+ RESET_IP_AND_HOST_PORT (pc, primary); \
412+ CLEAR_IP_AND_HOST_PORT (pc, secondaries); \
413+ CLEAR_IP_AND_HOST_PORT (pc, last_drops); \
385414 } while (false )
386415
387- #define CLEAR_DROP_LIST \
388- do { \
389- cc.dropped .clear (); \
416+ #define CLEAR_DROP_LIST \
417+ do { \
418+ cc.dropped .clear (); \
390419 } while (false )
391420
392- #define CLEAR_ALL \
393- CLEAR_REPLICA; \
421+ #define CLEAR_ALL \
422+ CLEAR_REPLICA; \
394423 CLEAR_DROP_LIST
395424
396425 // drop_list is empty, can't construct replica
@@ -403,7 +432,8 @@ TEST(meta_data, construct_replica)
403432 // only have one node in drop_list
404433 {
405434 CLEAR_ALL;
406- cc.dropped = {dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 5 , 10 , 12 }};
435+ cc.dropped = {dropped_replica{
436+ node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 5 , 10 , 12 }};
407437 ASSERT_TRUE (construct_replica (view, rep.pid , 3 ));
408438 ASSERT_EQ (node_list[0 ], pc.hp_primary );
409439 ASSERT_TRUE (pc.hp_secondaries .empty ());
@@ -414,51 +444,65 @@ TEST(meta_data, construct_replica)
414444 // have multiple nodes, ballots are not same
415445 {
416446 CLEAR_ALL;
417- cc.dropped = {dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 6 , 10 , 12 },
418- dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 7 , 10 , 12 },
419- dropped_replica{node_list[3 ], dropped_replica::INVALID_TIMESTAMP, 8 , 10 , 12 },
420- dropped_replica{node_list[4 ], dropped_replica::INVALID_TIMESTAMP, 9 , 11 , 12 }};
447+ cc.dropped = {
448+ dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 6 ,
449+ 10 , 12 },
450+ dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 7 ,
451+ 10 , 12 },
452+ dropped_replica{node_list[3 ], dropped_replica::INVALID_TIMESTAMP, 8 ,
453+ 10 , 12 },
454+ dropped_replica{node_list[4 ], dropped_replica::INVALID_TIMESTAMP, 9 ,
455+ 11 , 12 }};
421456 ASSERT_TRUE (construct_replica (view, rep.pid , 3 ));
422- ASSERT_EQ (node_list[4 ], primary );
423- ASSERT_TRUE (_secondaries .empty ());
457+ ASSERT_EQ (node_list[4 ], pc. hp_primary );
458+ ASSERT_TRUE (pc. hp_secondaries .empty ());
424459
425460 std::vector<dsn::host_port> nodes = {node_list[2 ], node_list[3 ]};
426- ASSERT_EQ (nodes, last_drops );
461+ ASSERT_EQ (nodes, pc. hp_last_drops );
427462 ASSERT_EQ (3 , cc.dropped .size ());
428463 ASSERT_EQ (2 , cc.prefered_dropped );
429464 }
430465
431466 // have multiple node, two have same ballots
432467 {
433468 CLEAR_ALL;
434- cc.dropped = {dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 5 , 10 , 12 },
435- dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 7 , 11 , 12 },
436- dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 7 , 12 , 12 }};
469+ cc.dropped = {
470+ dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 5 ,
471+ 10 , 12 },
472+ dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 7 ,
473+ 11 , 12 },
474+ dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 7 ,
475+ 12 , 12 }};
437476
438477 ASSERT_TRUE (construct_replica (view, rep.pid , 3 ));
439- ASSERT_EQ (node_list[2 ], primary );
440- ASSERT_TRUE (secondaries .empty ());
478+ ASSERT_EQ (node_list[2 ], pc. hp_primary );
479+ ASSERT_TRUE (pc. hp_secondaries .empty ());
441480
442481 std::vector<dsn::host_port> nodes = {node_list[0 ], node_list[1 ]};
443- ASSERT_EQ (nodes, last_drops );
482+ ASSERT_EQ (nodes, pc. hp_last_drops );
444483 ASSERT_EQ (2 , cc.dropped .size ());
445484 ASSERT_EQ (1 , cc.prefered_dropped );
446485 }
447486
448487 // have multiple nodes, all have same ballots
449488 {
450489 CLEAR_ALL;
451- cc.dropped = {dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 7 , 11 , 14 },
452- dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 7 , 12 , 14 },
453- dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 7 , 13 , 14 },
454- dropped_replica{node_list[3 ], dropped_replica::INVALID_TIMESTAMP, 7 , 14 , 14 }};
490+ cc.dropped = {
491+ dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 7 ,
492+ 11 , 14 },
493+ dropped_replica{node_list[1 ], dropped_replica::INVALID_TIMESTAMP, 7 ,
494+ 12 , 14 },
495+ dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 7 ,
496+ 13 , 14 },
497+ dropped_replica{node_list[3 ], dropped_replica::INVALID_TIMESTAMP, 7 ,
498+ 14 , 14 }};
455499
456500 ASSERT_TRUE (construct_replica (view, rep.pid , 3 ));
457- ASSERT_EQ (node_list[3 ], primary );
458- ASSERT_TRUE (secondaries .empty ());
501+ ASSERT_EQ (node_list[3 ], pc. hp_primary );
502+ ASSERT_TRUE (pc. hp_secondaries .empty ());
459503
460504 std::vector<dsn::host_port> nodes = {node_list[1 ], node_list[2 ]};
461- ASSERT_EQ (nodes, last_drops );
505+ ASSERT_EQ (nodes, pc. hp_last_drops );
462506
463507 ASSERT_EQ (3 , cc.dropped .size ());
464508 ASSERT_EQ (2 , cc.prefered_dropped );
0 commit comments