@@ -377,6 +377,36 @@ TEST(meta_data, construct_replica)
377377 std::vector<dsn::host_port> node_list;
378378 generate_node_list (node_list, 10 , 10 );
379379
380+ auto print_pc_cc = [&](const char *tag) {
381+ std::cout << " --------------------------------------------------" << std::endl;
382+ std::cout << " [" << tag << " ] PC State:" << std::endl;
383+ std::cout << " Primary: " << (pc.__isset .hp_primary ? " SET" : " UNSET" ) << " "
384+ << pc.hp_primary << std::endl;
385+
386+ std::cout << " Secondaries (" << (pc.__isset .hp_secondaries ? " SET" : " UNSET" )
387+ << " , size=" << pc.hp_secondaries .size () << " ):" << std::endl;
388+ if (pc.__isset .hp_secondaries ) {
389+ for (const auto &hp : pc.hp_secondaries )
390+ std::cout << " " << hp << std::endl;
391+ }
392+
393+ std::cout << " Last Drops (" << (pc.__isset .hp_last_drops ? " SET" : " UNSET" )
394+ << " , size=" << pc.hp_last_drops .size () << " ):" << std::endl;
395+ if (pc.__isset .hp_last_drops ) {
396+ for (const auto &hp : pc.hp_last_drops )
397+ std::cout << " " << hp << std::endl;
398+ }
399+
400+ std::cout << " [" << tag << " ] CC State:" << std::endl;
401+ std::cout << " Dropped List (" << cc.dropped .size () << " ):" << std::endl;
402+ for (const auto &dr : cc.dropped )
403+ std::cout << " Node=" << dr.node << " , Ballot=" << dr.ballot << std::endl;
404+ std::cout << " Prefered Dropped Index: " << cc.prefered_dropped << std::endl;
405+ std::cout << " --------------------------------------------------" << std::endl;
406+ };
407+
408+ print_pc_cc (" BEFORE Test" );
409+
380410#define CLEAR_REPLICA \
381411 do { \
382412 RESET_IP_AND_HOST_PORT (pc, primary); \
@@ -405,8 +435,12 @@ TEST(meta_data, construct_replica)
405435 CLEAR_ALL;
406436 cc.dropped = {dropped_replica{node_list[0 ], dropped_replica::INVALID_TIMESTAMP, 5 , 10 , 12 }};
407437 ASSERT_TRUE (construct_replica (view, rep.pid , 3 ));
408- ASSERT_EQ (node_list[0 ], pc.hp_primary );
409- ASSERT_TRUE (pc.hp_secondaries .empty ());
438+ dsn::host_port primary;
439+ GET_HOST_PORT (pc, primary, primary);
440+ ASSERT_EQ (node_list[0 ], primary);
441+ std::vector<dsn::host_port> secondaries;
442+ GET_HOST_PORTS (pc, secondaries, secondaries);
443+ ASSERT_TRUE (secondaries.empty ());
410444 ASSERT_TRUE (cc.dropped .empty ());
411445 ASSERT_EQ (-1 , cc.prefered_dropped );
412446 }
@@ -418,12 +452,20 @@ TEST(meta_data, construct_replica)
418452 dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 7 , 10 , 12 },
419453 dropped_replica{node_list[3 ], dropped_replica::INVALID_TIMESTAMP, 8 , 10 , 12 },
420454 dropped_replica{node_list[4 ], dropped_replica::INVALID_TIMESTAMP, 9 , 11 , 12 }};
455+ print_pc_cc (" BEFORE construct_replica" );
421456 ASSERT_TRUE (construct_replica (view, rep.pid , 3 ));
422- ASSERT_EQ (node_list[4 ], pc.hp_primary );
423- ASSERT_TRUE (pc.hp_secondaries .empty ());
457+ print_pc_cc (" AFTER construct_replica" );
458+ dsn::host_port primary;
459+ GET_HOST_PORT (pc, primary, primary);
460+ ASSERT_EQ (node_list[4 ], primary);
461+ std::vector<dsn::host_port> secondaries;
462+ GET_HOST_PORTS (pc, secondaries, secondaries);
463+ ASSERT_TRUE (secondaries.empty ());
424464
425465 std::vector<dsn::host_port> nodes = {node_list[2 ], node_list[3 ]};
426- ASSERT_EQ (nodes, pc.hp_last_drops );
466+ std::vector<dsn::host_port> last_drops;
467+ GET_HOST_PORTS (pc, last_drops, last_drops);
468+ ASSERT_EQ (nodes, last_drops);
427469 ASSERT_EQ (3 , cc.dropped .size ());
428470 ASSERT_EQ (2 , cc.prefered_dropped );
429471 }
@@ -436,11 +478,17 @@ TEST(meta_data, construct_replica)
436478 dropped_replica{node_list[2 ], dropped_replica::INVALID_TIMESTAMP, 7 , 12 , 12 }};
437479
438480 ASSERT_TRUE (construct_replica (view, rep.pid , 3 ));
439- ASSERT_EQ (node_list[2 ], pc.hp_primary );
440- ASSERT_TRUE (pc.hp_secondaries .empty ());
481+ dsn::host_port primary;
482+ GET_HOST_PORT (pc, primary, primary);
483+ ASSERT_EQ (node_list[4 ], primary);
484+ std::vector<dsn::host_port> secondaries;
485+ GET_HOST_PORTS (pc, secondaries, secondaries);
486+ ASSERT_TRUE (secondaries.empty ());
441487
442488 std::vector<dsn::host_port> nodes = {node_list[0 ], node_list[1 ]};
443- ASSERT_EQ (nodes, pc.hp_last_drops );
489+ std::vector<dsn::host_port> last_drops;
490+ GET_HOST_PORTS (pc, last_drops, last_drops);
491+ ASSERT_EQ (nodes, last_drops);
444492 ASSERT_EQ (2 , cc.dropped .size ());
445493 ASSERT_EQ (1 , cc.prefered_dropped );
446494 }
@@ -454,11 +502,17 @@ TEST(meta_data, construct_replica)
454502 dropped_replica{node_list[3 ], dropped_replica::INVALID_TIMESTAMP, 7 , 14 , 14 }};
455503
456504 ASSERT_TRUE (construct_replica (view, rep.pid , 3 ));
457- ASSERT_EQ (node_list[3 ], pc.hp_primary );
458- ASSERT_TRUE (pc.hp_secondaries .empty ());
505+ dsn::host_port primary;
506+ GET_HOST_PORT (pc, primary, primary);
507+ ASSERT_EQ (node_list[3 ], primary);
508+ std::vector<dsn::host_port> secondaries;
509+ GET_HOST_PORTS (pc, secondaries, secondaries);
510+ ASSERT_TRUE (secondaries.empty ());
459511
460512 std::vector<dsn::host_port> nodes = {node_list[1 ], node_list[2 ]};
461- ASSERT_EQ (nodes, pc.hp_last_drops );
513+ std::vector<dsn::host_port> last_drops;
514+ GET_HOST_PORTS (pc, last_drops, last_drops);
515+ ASSERT_EQ (nodes, last_drops);
462516
463517 ASSERT_EQ (3 , cc.dropped .size ());
464518 ASSERT_EQ (2 , cc.prefered_dropped );
0 commit comments