This is an automated email from the ASF dual-hosted git repository.
laiyingchun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pegasus.git
The following commit(s) were added to refs/heads/master by this push:
new 2f262b295 refactor(FQDN): Simplify function generate_node_list()
(#1973)
2f262b295 is described below
commit 2f262b295d80ae2cfa0b7f7cd51e9a6cad975dcf
Author: Yingchun Lai <[email protected]>
AuthorDate: Tue Apr 16 19:52:22 2024 +0800
refactor(FQDN): Simplify function generate_node_list() (#1973)
Simplify the 2 forms of generate_node_list(...), they are widely used in
tests, they generate a std::vector with std::pair<host_port, rpc_address>
before, this patch simplify the code to generate std::vector with host_host
elements only.
---
src/meta/test/backup_test.cpp | 12 +-
.../test/balancer_simulator/balancer_simulator.cpp | 7 +-
src/meta/test/balancer_validator.cpp | 6 +-
src/meta/test/meta_data.cpp | 177 ++++++++-------
src/meta/test/meta_duplication_service_test.cpp | 9 +-
src/meta/test/meta_partition_guardian_test.cpp | 241 ++++++++++-----------
src/meta/test/meta_test_base.cpp | 5 +-
src/meta/test/misc/misc.cpp | 9 +-
src/meta/test/misc/misc.h | 20 +-
src/meta/test/state_sync_test.cpp | 42 ++--
src/meta/test/update_configuration_test.cpp | 93 ++++----
11 files changed, 288 insertions(+), 333 deletions(-)
diff --git a/src/meta/test/backup_test.cpp b/src/meta/test/backup_test.cpp
index 21af00ef6..0ea2e4c75 100644
--- a/src/meta/test/backup_test.cpp
+++ b/src/meta/test/backup_test.cpp
@@ -43,6 +43,7 @@
#include "meta_service_test_app.h"
#include "meta_test_base.h"
#include "runtime/api_layer1.h"
+#include "runtime/rpc/dns_resolver.h"
#include "runtime/rpc/rpc_address.h"
#include "runtime/rpc/rpc_holder.h"
#include "runtime/rpc/rpc_host_port.h"
@@ -499,16 +500,17 @@ TEST_F(policy_context_test,
test_app_dropped_during_backup)
int64_t cur_start_time_ms = static_cast<int64_t>(dsn_now_ms());
{
zauto_lock l(_mp._lock);
- std::vector<std::pair<dsn::host_port, dsn::rpc_address>> node_list;
+ std::vector<dsn::host_port> node_list;
generate_node_list(node_list, 3, 3);
app_state *app = state->_all_apps[3].get();
app->status = dsn::app_status::AS_AVAILABLE;
for (partition_configuration &pc : app->partitions) {
- pc.primary = node_list[0].second;
- pc.secondaries = {node_list[1].second, node_list[2].second};
- pc.__set_hp_primary(node_list[0].first);
- pc.__set_hp_secondaries({node_list[1].first,
node_list[2].first});
+ pc.primary =
dsn::dns_resolver::instance().resolve_address(node_list[0]);
+ pc.secondaries =
{dsn::dns_resolver::instance().resolve_address(node_list[1]),
+
dsn::dns_resolver::instance().resolve_address(node_list[2])};
+ pc.__set_hp_primary(node_list[0]);
+ pc.__set_hp_secondaries({node_list[1], node_list[2]});
}
_mp._backup_history.clear();
diff --git a/src/meta/test/balancer_simulator/balancer_simulator.cpp
b/src/meta/test/balancer_simulator/balancer_simulator.cpp
index 5e1bf5a52..a70e8a14d 100644
--- a/src/meta/test/balancer_simulator/balancer_simulator.cpp
+++ b/src/meta/test/balancer_simulator/balancer_simulator.cpp
@@ -42,7 +42,6 @@
#include "meta/test/misc/misc.h"
#include "meta_admin_types.h"
#include "runtime/app_model.h"
-#include "runtime/rpc/rpc_address.h"
#include "runtime/rpc/rpc_host_port.h"
#include "utils/fmt_logging.h"
@@ -166,12 +165,8 @@ void greedy_balancer_perfect_move_primary()
{
app_mapper apps;
node_mapper nodes;
- std::vector<std::pair<dsn::host_port, dsn::rpc_address>> node_pairs;
std::vector<dsn::host_port> node_list;
- generate_node_list(node_pairs, 19, 100);
- for (const auto &p : node_pairs) {
- node_list.emplace_back(p.first);
- }
+ generate_node_list(node_list, 19, 100);
generate_balanced_apps(apps, nodes, node_list);
diff --git a/src/meta/test/balancer_validator.cpp
b/src/meta/test/balancer_validator.cpp
index bca7d4fde..aacf72bb8 100644
--- a/src/meta/test/balancer_validator.cpp
+++ b/src/meta/test/balancer_validator.cpp
@@ -120,12 +120,8 @@ static void check_cure(app_mapper &apps, node_mapper
&nodes, ::dsn::partition_co
void meta_service_test_app::balancer_validator()
{
- std::vector<std::pair<dsn::host_port, dsn::rpc_address>> node_pairs;
std::vector<dsn::host_port> node_list;
- generate_node_list(node_pairs, 20, 100);
- for (const auto &p : node_pairs) {
- node_list.emplace_back(p.first);
- }
+ generate_node_list(node_list, 20, 100);
app_mapper apps;
node_mapper nodes;
diff --git a/src/meta/test/meta_data.cpp b/src/meta/test/meta_data.cpp
index 33a2f4954..2f28bd793 100644
--- a/src/meta/test/meta_data.cpp
+++ b/src/meta/test/meta_data.cpp
@@ -26,7 +26,6 @@
#include <memory>
#include <string>
-#include <utility>
#include <vector>
#include "client/partition_resolver.h"
@@ -36,6 +35,7 @@
#include "meta/meta_data.h"
#include "metadata_types.h"
#include "misc/misc.h"
+#include "runtime/rpc/dns_resolver.h"
#include "runtime/rpc/rpc_address.h"
#include "runtime/rpc/rpc_host_port.h"
@@ -131,7 +131,7 @@ TEST(meta_data, collect_replica)
dsn::partition_configuration &pc = *get_config(app, rep.pid);
config_context &cc = *get_config_context(app, rep.pid);
- std::vector<std::pair<dsn::host_port, dsn::rpc_address>> node_list;
+ std::vector<dsn::host_port> node_list;
generate_node_list(node_list, 10, 10);
#define CLEAR_REPLICA
\
@@ -153,59 +153,60 @@ TEST(meta_data, collect_replica)
CLEAR_REPLICA;
\
CLEAR_DROP_LIST
+ const auto addr =
dsn::dns_resolver::instance().resolve_address(node_list[0]);
{
// replica is primary of partition
CLEAR_ALL;
rep.ballot = 10;
pc.ballot = 9;
- pc.primary = node_list[0].second;
- pc.__set_hp_primary(node_list[0].first);
- ASSERT_TRUE(collect_replica(view, node_list[0].first, rep));
+ pc.primary = addr;
+ pc.__set_hp_primary(node_list[0]);
+ ASSERT_TRUE(collect_replica(view, node_list[0], rep));
}
{
// replica is secondary of partition
CLEAR_ALL;
- pc.secondaries.push_back(node_list[0].second);
- pc.hp_secondaries.push_back(node_list[0].first);
- ASSERT_TRUE(collect_replica(view, node_list[0].first, rep));
+ pc.secondaries.push_back(addr);
+ pc.hp_secondaries.push_back(node_list[0]);
+ ASSERT_TRUE(collect_replica(view, node_list[0], rep));
}
{
// replica has been in the drop_list
CLEAR_ALL;
- cc.dropped.push_back({node_list[0].first, 5, 0, 0});
- ASSERT_TRUE(collect_replica(view, node_list[0].first, rep));
+ cc.dropped.push_back({node_list[0], 5, 0, 0});
+ ASSERT_TRUE(collect_replica(view, node_list[0], rep));
}
{
// drop_list all have timestamp, full
CLEAR_ALL;
cc.dropped = {
- dropped_replica{node_list[0].first, 5, 1, 1, 2},
- dropped_replica{node_list[1].first, 6, 1, 1, 2},
- dropped_replica{node_list[2].first, 7, 1, 1, 2},
- dropped_replica{node_list[3].first, 8, 1, 1, 2},
+ dropped_replica{node_list[0], 5, 1, 1, 2},
+ dropped_replica{node_list[1], 6, 1, 1, 2},
+ dropped_replica{node_list[2], 7, 1, 1, 2},
+ dropped_replica{node_list[3], 8, 1, 1, 2},
};
rep.ballot = 10;
rep.last_prepared_decree = 10;
- ASSERT_FALSE(collect_replica(view, node_list[5].first, rep));
+ ASSERT_FALSE(collect_replica(view, node_list[5], rep));
}
{
// drop_list all have timestamp, not full
CLEAR_ALL;
cc.dropped = {
- dropped_replica{node_list[0].first, 5, 1, 1, 2},
- dropped_replica{node_list[1].first, 6, 1, 1, 2},
- dropped_replica{node_list[2].first, 7, 1, 1, 2},
+ dropped_replica{node_list[0], 5, 1, 1, 2},
+ dropped_replica{node_list[1], 6, 1, 1, 2},
+ dropped_replica{node_list[2], 7, 1, 1, 2},
};
rep.ballot = 10;
rep.last_durable_decree = 6;
rep.last_committed_decree = 8;
rep.last_prepared_decree = 10;
- ASSERT_TRUE(collect_replica(view, node_list[4].first, rep));
+ ASSERT_TRUE(collect_replica(view, node_list[4], rep));
dropped_replica &d = cc.dropped.front();
ASSERT_EQ(d.ballot, rep.ballot);
ASSERT_EQ(d.last_prepared_decree, rep.last_prepared_decree);
@@ -215,33 +216,33 @@ TEST(meta_data, collect_replica)
// drop_list mixed, full, minimal position
CLEAR_ALL;
cc.dropped = {
- dropped_replica{node_list[0].first,
dropped_replica::INVALID_TIMESTAMP, 2, 3, 5},
- dropped_replica{node_list[1].first,
dropped_replica::INVALID_TIMESTAMP, 2, 4, 5},
- dropped_replica{node_list[2].first, 7, 1, 1, 5},
- dropped_replica{node_list[3].first, 8, 1, 1, 5},
+ dropped_replica{node_list[0], dropped_replica::INVALID_TIMESTAMP,
2, 3, 5},
+ dropped_replica{node_list[1], dropped_replica::INVALID_TIMESTAMP,
2, 4, 5},
+ dropped_replica{node_list[2], 7, 1, 1, 5},
+ dropped_replica{node_list[3], 8, 1, 1, 5},
};
rep.ballot = 1;
rep.last_committed_decree = 3;
rep.last_prepared_decree = 5;
- ASSERT_FALSE(collect_replica(view, node_list[5].first, rep));
+ ASSERT_FALSE(collect_replica(view, node_list[5], rep));
}
{
// drop_list mixed, not full, minimal position
CLEAR_ALL;
cc.dropped = {
- dropped_replica{node_list[0].first,
dropped_replica::INVALID_TIMESTAMP, 2, 3, 5},
- dropped_replica{node_list[1].first,
dropped_replica::INVALID_TIMESTAMP, 2, 4, 5},
- dropped_replica{node_list[2].first, 7, 1, 1, 6},
+ dropped_replica{node_list[0], dropped_replica::INVALID_TIMESTAMP,
2, 3, 5},
+ dropped_replica{node_list[1], dropped_replica::INVALID_TIMESTAMP,
2, 4, 5},
+ dropped_replica{node_list[2], 7, 1, 1, 6},
};
rep.ballot = 1;
rep.last_committed_decree = 3;
rep.last_prepared_decree = 5;
- ASSERT_TRUE(collect_replica(view, node_list[5].first, rep));
+ ASSERT_TRUE(collect_replica(view, node_list[5], rep));
dropped_replica &d = cc.dropped.front();
- ASSERT_EQ(d.node, node_list[5].first);
+ ASSERT_EQ(d.node, node_list[5]);
ASSERT_EQ(d.ballot, rep.ballot);
ASSERT_EQ(d.last_prepared_decree, rep.last_prepared_decree);
}
@@ -250,16 +251,16 @@ TEST(meta_data, collect_replica)
// drop_list mixed, full, not minimal position
CLEAR_ALL;
cc.dropped = {
- dropped_replica{node_list[0].first,
dropped_replica::INVALID_TIMESTAMP, 2, 2, 6},
- dropped_replica{node_list[1].first,
dropped_replica::INVALID_TIMESTAMP, 2, 4, 6},
- dropped_replica{node_list[2].first, 7, 1, 1, 6},
- dropped_replica{node_list[3].first, 8, 1, 1, 6},
+ dropped_replica{node_list[0], dropped_replica::INVALID_TIMESTAMP,
2, 2, 6},
+ dropped_replica{node_list[1], dropped_replica::INVALID_TIMESTAMP,
2, 4, 6},
+ dropped_replica{node_list[2], 7, 1, 1, 6},
+ dropped_replica{node_list[3], 8, 1, 1, 6},
};
rep.ballot = 2;
rep.last_committed_decree = 3;
rep.last_prepared_decree = 6;
- ASSERT_TRUE(collect_replica(view, node_list[5].first, rep));
+ ASSERT_TRUE(collect_replica(view, node_list[5], rep));
dropped_replica &d = cc.dropped.front();
ASSERT_EQ(rep.ballot, d.ballot);
ASSERT_EQ(rep.last_committed_decree, rep.last_committed_decree);
@@ -270,21 +271,20 @@ TEST(meta_data, collect_replica)
{
// drop_list mixed, not full, not minimal position
CLEAR_ALL;
- cc.dropped = {
- dropped_replica{node_list[0].first,
dropped_replica::INVALID_TIMESTAMP, 2, 2, 6},
- dropped_replica{node_list[1].first,
dropped_replica::INVALID_TIMESTAMP, 2, 4, 6},
- dropped_replica{node_list[2].first, 7, 1, 1, 6}};
+ cc.dropped = {dropped_replica{node_list[0],
dropped_replica::INVALID_TIMESTAMP, 2, 2, 6},
+ dropped_replica{node_list[1],
dropped_replica::INVALID_TIMESTAMP, 2, 4, 6},
+ dropped_replica{node_list[2], 7, 1, 1, 6}};
rep.ballot = 3;
rep.last_committed_decree = 1;
rep.last_prepared_decree = 6;
- ASSERT_TRUE(collect_replica(view, node_list[5].first, rep));
+ ASSERT_TRUE(collect_replica(view, node_list[5], rep));
std::vector<dropped_replica> result_dropped = {
- dropped_replica{node_list[0].first,
dropped_replica::INVALID_TIMESTAMP, 2, 2, 6},
- dropped_replica{node_list[1].first,
dropped_replica::INVALID_TIMESTAMP, 2, 4, 6},
- dropped_replica{node_list[5].first,
dropped_replica::INVALID_TIMESTAMP, 3, 1, 6},
- dropped_replica{node_list[2].first, 7, 1, 1, 6}};
+ dropped_replica{node_list[0], dropped_replica::INVALID_TIMESTAMP,
2, 2, 6},
+ dropped_replica{node_list[1], dropped_replica::INVALID_TIMESTAMP,
2, 4, 6},
+ dropped_replica{node_list[5], dropped_replica::INVALID_TIMESTAMP,
3, 1, 6},
+ dropped_replica{node_list[2], 7, 1, 1, 6}};
ASSERT_TRUE(vec_equal(result_dropped, cc.dropped));
}
@@ -293,38 +293,38 @@ TEST(meta_data, collect_replica)
// drop_list no timestamp, full, minimal position
CLEAR_ALL;
cc.dropped = {
- dropped_replica{node_list[0].first,
dropped_replica::INVALID_TIMESTAMP, 2, 2, 8},
- dropped_replica{node_list[1].first,
dropped_replica::INVALID_TIMESTAMP, 2, 4, 8},
- dropped_replica{node_list[2].first,
dropped_replica::INVALID_TIMESTAMP, 2, 6, 8},
- dropped_replica{node_list[3].first,
dropped_replica::INVALID_TIMESTAMP, 4, 2, 8},
+ dropped_replica{node_list[0], dropped_replica::INVALID_TIMESTAMP,
2, 2, 8},
+ dropped_replica{node_list[1], dropped_replica::INVALID_TIMESTAMP,
2, 4, 8},
+ dropped_replica{node_list[2], dropped_replica::INVALID_TIMESTAMP,
2, 6, 8},
+ dropped_replica{node_list[3], dropped_replica::INVALID_TIMESTAMP,
4, 2, 8},
};
rep.ballot = 1;
rep.last_committed_decree = 7;
rep.last_prepared_decree = 10;
- ASSERT_FALSE(collect_replica(view, node_list[5].first, rep));
+ ASSERT_FALSE(collect_replica(view, node_list[5], rep));
}
{
// drop_list no timestamp, full, middle position
CLEAR_ALL;
cc.dropped = {
- dropped_replica{node_list[0].first,
dropped_replica::INVALID_TIMESTAMP, 2, 2, 8},
- dropped_replica{node_list[1].first,
dropped_replica::INVALID_TIMESTAMP, 2, 4, 8},
- dropped_replica{node_list[2].first,
dropped_replica::INVALID_TIMESTAMP, 2, 6, 8},
- dropped_replica{node_list[3].first,
dropped_replica::INVALID_TIMESTAMP, 4, 2, 8},
+ dropped_replica{node_list[0], dropped_replica::INVALID_TIMESTAMP,
2, 2, 8},
+ dropped_replica{node_list[1], dropped_replica::INVALID_TIMESTAMP,
2, 4, 8},
+ dropped_replica{node_list[2], dropped_replica::INVALID_TIMESTAMP,
2, 6, 8},
+ dropped_replica{node_list[3], dropped_replica::INVALID_TIMESTAMP,
4, 2, 8},
};
rep.ballot = 3;
rep.last_committed_decree = 6;
rep.last_prepared_decree = 8;
- ASSERT_TRUE(collect_replica(view, node_list[5].first, rep));
+ ASSERT_TRUE(collect_replica(view, node_list[5], rep));
std::vector<dropped_replica> result_dropped = {
- dropped_replica{node_list[1].first,
dropped_replica::INVALID_TIMESTAMP, 2, 4, 8},
- dropped_replica{node_list[2].first,
dropped_replica::INVALID_TIMESTAMP, 2, 6, 8},
- dropped_replica{node_list[5].first,
dropped_replica::INVALID_TIMESTAMP, 3, 6, 8},
- dropped_replica{node_list[3].first,
dropped_replica::INVALID_TIMESTAMP, 4, 2, 8},
+ dropped_replica{node_list[1], dropped_replica::INVALID_TIMESTAMP,
2, 4, 8},
+ dropped_replica{node_list[2], dropped_replica::INVALID_TIMESTAMP,
2, 6, 8},
+ dropped_replica{node_list[5], dropped_replica::INVALID_TIMESTAMP,
3, 6, 8},
+ dropped_replica{node_list[3], dropped_replica::INVALID_TIMESTAMP,
4, 2, 8},
};
ASSERT_TRUE(vec_equal(result_dropped, cc.dropped));
@@ -333,22 +333,21 @@ TEST(meta_data, collect_replica)
{
// drop_list no timestamp, full, largest position
CLEAR_ALL;
- cc.dropped = {
- dropped_replica{node_list[1].first,
dropped_replica::INVALID_TIMESTAMP, 2, 4, 8},
- dropped_replica{node_list[2].first,
dropped_replica::INVALID_TIMESTAMP, 2, 6, 8},
- dropped_replica{node_list[3].first,
dropped_replica::INVALID_TIMESTAMP, 4, 2, 8},
- dropped_replica{node_list[4].first,
dropped_replica::INVALID_TIMESTAMP, 4, 6, 8}};
+ cc.dropped = {dropped_replica{node_list[1],
dropped_replica::INVALID_TIMESTAMP, 2, 4, 8},
+ dropped_replica{node_list[2],
dropped_replica::INVALID_TIMESTAMP, 2, 6, 8},
+ dropped_replica{node_list[3],
dropped_replica::INVALID_TIMESTAMP, 4, 2, 8},
+ dropped_replica{node_list[4],
dropped_replica::INVALID_TIMESTAMP, 4, 6, 8}};
rep.ballot = 4;
rep.last_committed_decree = 8;
rep.last_prepared_decree = 8;
- ASSERT_TRUE(collect_replica(view, node_list[5].first, rep));
+ ASSERT_TRUE(collect_replica(view, node_list[5], rep));
std::vector<dropped_replica> result_dropped = {
- dropped_replica{node_list[2].first,
dropped_replica::INVALID_TIMESTAMP, 2, 6, 8},
- dropped_replica{node_list[3].first,
dropped_replica::INVALID_TIMESTAMP, 4, 2, 8},
- dropped_replica{node_list[4].first,
dropped_replica::INVALID_TIMESTAMP, 4, 6, 8},
- dropped_replica{node_list[5].first,
dropped_replica::INVALID_TIMESTAMP, 4, 8, 8}};
+ dropped_replica{node_list[2], dropped_replica::INVALID_TIMESTAMP,
2, 6, 8},
+ dropped_replica{node_list[3], dropped_replica::INVALID_TIMESTAMP,
4, 2, 8},
+ dropped_replica{node_list[4], dropped_replica::INVALID_TIMESTAMP,
4, 6, 8},
+ dropped_replica{node_list[5], dropped_replica::INVALID_TIMESTAMP,
4, 8, 8}};
ASSERT_TRUE(vec_equal(result_dropped, cc.dropped));
}
@@ -381,7 +380,7 @@ TEST(meta_data, construct_replica)
dsn::partition_configuration &pc = *get_config(app, rep.pid);
config_context &cc = *get_config_context(app, rep.pid);
- std::vector<std::pair<dsn::host_port, dsn::rpc_address>> node_list;
+ std::vector<dsn::host_port> node_list;
generate_node_list(node_list, 10, 10);
#define CLEAR_REPLICA
\
@@ -413,10 +412,9 @@ TEST(meta_data, construct_replica)
// only have one node in drop_list
{
CLEAR_ALL;
- cc.dropped = {
- dropped_replica{node_list[0].first,
dropped_replica::INVALID_TIMESTAMP, 5, 10, 12}};
+ cc.dropped = {dropped_replica{node_list[0],
dropped_replica::INVALID_TIMESTAMP, 5, 10, 12}};
ASSERT_TRUE(construct_replica(view, rep.pid, 3));
- ASSERT_EQ(node_list[0].first, pc.hp_primary);
+ ASSERT_EQ(node_list[0], pc.hp_primary);
ASSERT_TRUE(pc.hp_secondaries.empty());
ASSERT_TRUE(cc.dropped.empty());
ASSERT_EQ(-1, cc.prefered_dropped);
@@ -425,16 +423,15 @@ TEST(meta_data, construct_replica)
// have multiple nodes, ballots are not same
{
CLEAR_ALL;
- cc.dropped = {
- dropped_replica{node_list[1].first,
dropped_replica::INVALID_TIMESTAMP, 6, 10, 12},
- dropped_replica{node_list[2].first,
dropped_replica::INVALID_TIMESTAMP, 7, 10, 12},
- dropped_replica{node_list[3].first,
dropped_replica::INVALID_TIMESTAMP, 8, 10, 12},
- dropped_replica{node_list[4].first,
dropped_replica::INVALID_TIMESTAMP, 9, 11, 12}};
+ cc.dropped = {dropped_replica{node_list[1],
dropped_replica::INVALID_TIMESTAMP, 6, 10, 12},
+ dropped_replica{node_list[2],
dropped_replica::INVALID_TIMESTAMP, 7, 10, 12},
+ dropped_replica{node_list[3],
dropped_replica::INVALID_TIMESTAMP, 8, 10, 12},
+ dropped_replica{node_list[4],
dropped_replica::INVALID_TIMESTAMP, 9, 11, 12}};
ASSERT_TRUE(construct_replica(view, rep.pid, 3));
- ASSERT_EQ(node_list[4].first, pc.hp_primary);
+ ASSERT_EQ(node_list[4], pc.hp_primary);
ASSERT_TRUE(pc.hp_secondaries.empty());
- std::vector<dsn::host_port> nodes = {node_list[2].first,
node_list[3].first};
+ std::vector<dsn::host_port> nodes = {node_list[2], node_list[3]};
ASSERT_EQ(nodes, pc.hp_last_drops);
ASSERT_EQ(3, cc.dropped.size());
ASSERT_EQ(2, cc.prefered_dropped);
@@ -443,16 +440,15 @@ TEST(meta_data, construct_replica)
// have multiple node, two have same ballots
{
CLEAR_ALL;
- cc.dropped = {
- dropped_replica{node_list[0].first,
dropped_replica::INVALID_TIMESTAMP, 5, 10, 12},
- dropped_replica{node_list[1].first,
dropped_replica::INVALID_TIMESTAMP, 7, 11, 12},
- dropped_replica{node_list[2].first,
dropped_replica::INVALID_TIMESTAMP, 7, 12, 12}};
+ cc.dropped = {dropped_replica{node_list[0],
dropped_replica::INVALID_TIMESTAMP, 5, 10, 12},
+ dropped_replica{node_list[1],
dropped_replica::INVALID_TIMESTAMP, 7, 11, 12},
+ dropped_replica{node_list[2],
dropped_replica::INVALID_TIMESTAMP, 7, 12, 12}};
ASSERT_TRUE(construct_replica(view, rep.pid, 3));
- ASSERT_EQ(node_list[2].first, pc.hp_primary);
+ ASSERT_EQ(node_list[2], pc.hp_primary);
ASSERT_TRUE(pc.hp_secondaries.empty());
- std::vector<dsn::host_port> nodes = {node_list[0].first,
node_list[1].first};
+ std::vector<dsn::host_port> nodes = {node_list[0], node_list[1]};
ASSERT_EQ(nodes, pc.hp_last_drops);
ASSERT_EQ(2, cc.dropped.size());
ASSERT_EQ(1, cc.prefered_dropped);
@@ -461,17 +457,16 @@ TEST(meta_data, construct_replica)
// have multiple nodes, all have same ballots
{
CLEAR_ALL;
- cc.dropped = {
- dropped_replica{node_list[0].first,
dropped_replica::INVALID_TIMESTAMP, 7, 11, 14},
- dropped_replica{node_list[1].first,
dropped_replica::INVALID_TIMESTAMP, 7, 12, 14},
- dropped_replica{node_list[2].first,
dropped_replica::INVALID_TIMESTAMP, 7, 13, 14},
- dropped_replica{node_list[3].first,
dropped_replica::INVALID_TIMESTAMP, 7, 14, 14}};
+ cc.dropped = {dropped_replica{node_list[0],
dropped_replica::INVALID_TIMESTAMP, 7, 11, 14},
+ dropped_replica{node_list[1],
dropped_replica::INVALID_TIMESTAMP, 7, 12, 14},
+ dropped_replica{node_list[2],
dropped_replica::INVALID_TIMESTAMP, 7, 13, 14},
+ dropped_replica{node_list[3],
dropped_replica::INVALID_TIMESTAMP, 7, 14, 14}};
ASSERT_TRUE(construct_replica(view, rep.pid, 3));
- ASSERT_EQ(node_list[3].first, pc.hp_primary);
+ ASSERT_EQ(node_list[3], pc.hp_primary);
ASSERT_TRUE(pc.hp_secondaries.empty());
- std::vector<dsn::host_port> nodes = {node_list[1].first,
node_list[2].first};
+ std::vector<dsn::host_port> nodes = {node_list[1], node_list[2]};
ASSERT_EQ(nodes, pc.hp_last_drops);
ASSERT_EQ(3, cc.dropped.size());
diff --git a/src/meta/test/meta_duplication_service_test.cpp
b/src/meta/test/meta_duplication_service_test.cpp
index 40570ce09..4e6b05656 100644
--- a/src/meta/test/meta_duplication_service_test.cpp
+++ b/src/meta/test/meta_duplication_service_test.cpp
@@ -817,13 +817,14 @@ TEST_F(meta_duplication_service_test, fail_mode)
ASSERT_EQ(dup->status(), duplication_status::DS_PAUSE);
// ensure dup_sync will synchronize fail_mode
- auto node = generate_node_list(3)[0];
+ const auto hp = generate_node_list(3)[0];
+ const auto addr = dsn::dns_resolver::instance().resolve_address(hp);
for (partition_configuration &pc : app->partitions) {
- pc.primary = node.second;
- pc.__set_hp_primary(node.first);
+ pc.primary = addr;
+ pc.__set_hp_primary(hp);
}
initialize_node_state();
- auto sync_resp = duplication_sync(node.second, node.first, {});
+ auto sync_resp = duplication_sync(addr, hp, {});
ASSERT_TRUE(sync_resp.dup_map[app->app_id][dup->id].__isset.fail_mode);
ASSERT_EQ(sync_resp.dup_map[app->app_id][dup->id].fail_mode,
duplication_fail_mode::FAIL_SKIP);
diff --git a/src/meta/test/meta_partition_guardian_test.cpp
b/src/meta/test/meta_partition_guardian_test.cpp
index 0d4be4bf5..6946e1ab5 100644
--- a/src/meta/test/meta_partition_guardian_test.cpp
+++ b/src/meta/test/meta_partition_guardian_test.cpp
@@ -54,6 +54,7 @@
#include "meta_service_test_app.h"
#include "meta_test_base.h"
#include "metadata_types.h"
+#include "runtime/rpc/dns_resolver.h"
#include "runtime/rpc/rpc_address.h"
#include "runtime/rpc/rpc_host_port.h"
#include "runtime/rpc/rpc_message.h"
@@ -204,12 +205,8 @@ void meta_partition_guardian_test::cure_test()
ASSERT_TRUE(state->spin_wait_staging(20));
svc->_started = true;
- std::vector<std::pair<dsn::host_port, dsn::rpc_address>> nodes;
+ std::vector<dsn::host_port> nodes;
generate_node_list(nodes, 4, 4);
- std::vector<dsn::host_port> nodes_list;
- for (const auto &p : nodes) {
- nodes_list.emplace_back(p.first);
- }
dsn::partition_configuration &pc = app->partitions[0];
config_context &cc = *get_config_context(state->_all_apps, dsn::gpid(1,
0));
@@ -225,11 +222,12 @@ void meta_partition_guardian_test::cure_test()
state->_nodes.clear();
pc.primary.set_invalid();
pc.hp_primary.reset();
- pc.secondaries = {nodes[0].second, nodes[1].second};
- pc.__set_hp_secondaries({nodes[0].first, nodes[1].first});
+ pc.secondaries = {dsn::dns_resolver::instance().resolve_address(nodes[0]),
+ dsn::dns_resolver::instance().resolve_address(nodes[1])};
+ pc.__set_hp_secondaries({nodes[0], nodes[1]});
pc.ballot = 1;
state->initialize_node_state();
- svc->set_node_state(nodes_list, true);
+ svc->set_node_state(nodes, true);
proposal_sent = false;
// check partitions, then ignore the proposal
@@ -287,11 +285,12 @@ void meta_partition_guardian_test::cure_test()
state->_nodes.clear();
pc.primary.set_invalid();
pc.hp_primary.reset();
- pc.secondaries = {nodes[0].second, nodes[1].second};
- pc.__set_hp_secondaries({nodes[0].first, nodes[1].first});
+ pc.secondaries = {dsn::dns_resolver::instance().resolve_address(nodes[0]),
+ dsn::dns_resolver::instance().resolve_address(nodes[1])};
+ pc.__set_hp_secondaries({nodes[0], nodes[1]});
pc.ballot = 1;
state->initialize_node_state();
- svc->set_node_state(nodes_list, true);
+ svc->set_node_state(nodes, true);
proposal_sent = false;
// check partitions, then inject a event that node[0] is dead
@@ -348,13 +347,13 @@ void meta_partition_guardian_test::cure_test()
std::cerr << "Case: add secondary, and the message lost" << std::endl;
// initialize
state->_nodes.clear();
- pc.primary = nodes[0].second;
- pc.secondaries = {nodes[1].second};
- pc.__set_hp_primary(nodes[0].first);
- pc.__set_hp_secondaries({nodes[1].first});
+ pc.primary = dsn::dns_resolver::instance().resolve_address(nodes[0]);
+ pc.secondaries = {dsn::dns_resolver::instance().resolve_address(nodes[1])};
+ pc.__set_hp_primary(nodes[0]);
+ pc.__set_hp_secondaries({nodes[1]});
pc.ballot = 1;
state->initialize_node_state();
- svc->set_node_state(nodes_list, true);
+ svc->set_node_state(nodes, true);
proposal_sent = false;
// check partitions, then ignore the proposal
@@ -366,7 +365,7 @@ void meta_partition_guardian_test::cure_test()
EXPECT_EQ(update_req->type, config_type::CT_ADD_SECONDARY);
EXPECT_FALSE(is_secondary(pc, update_req->hp_node));
- EXPECT_EQ(target, nodes[0].first);
+ EXPECT_EQ(target, nodes[0]);
last_addr = update_req->hp_node;
proposal_sent = true;
@@ -389,7 +388,7 @@ void meta_partition_guardian_test::cure_test()
EXPECT_EQ(update_req->type, config_type::CT_ADD_SECONDARY);
EXPECT_EQ(update_req->hp_node, last_addr);
- EXPECT_EQ(target, nodes[0].first);
+ EXPECT_EQ(target, nodes[0]);
proposal_sent = true;
apply_update_request(*update_req);
@@ -409,13 +408,13 @@ void meta_partition_guardian_test::cure_test()
std::cerr << "Case: add secondary, but the primary is removing another" <<
std::endl;
// initialize
state->_nodes.clear();
- pc.primary = nodes[0].second;
- pc.secondaries = {nodes[1].second};
- pc.__set_hp_primary(nodes[0].first);
- pc.__set_hp_secondaries({nodes[1].first});
+ pc.primary = dsn::dns_resolver::instance().resolve_address(nodes[0]);
+ pc.secondaries = {dsn::dns_resolver::instance().resolve_address(nodes[1])};
+ pc.__set_hp_primary(nodes[0]);
+ pc.__set_hp_secondaries({nodes[1]});
pc.ballot = 1;
state->initialize_node_state();
- svc->set_node_state(nodes_list, true);
+ svc->set_node_state(nodes, true);
proposal_sent = false;
// check partitions, then inject another update_request
@@ -427,7 +426,7 @@ void meta_partition_guardian_test::cure_test()
EXPECT_EQ(update_req->type, config_type::CT_ADD_SECONDARY);
EXPECT_FALSE(is_secondary(pc, update_req->hp_node));
- EXPECT_EQ(target, nodes[0].first);
+ EXPECT_EQ(target, nodes[0]);
update_req->config.ballot++;
update_req->type = config_type::CT_DOWNGRADE_TO_INACTIVE;
@@ -454,13 +453,13 @@ void meta_partition_guardian_test::cure_test()
std::cerr << "Case: add secondary, and the added secondary is dead" <<
std::endl;
// initialize
state->_nodes.clear();
- pc.primary = nodes[0].second;
- pc.secondaries = {nodes[1].second};
- pc.__set_hp_primary(nodes[0].first);
- pc.__set_hp_secondaries({nodes[1].first});
+ pc.primary = dsn::dns_resolver::instance().resolve_address(nodes[0]);
+ pc.secondaries = {dsn::dns_resolver::instance().resolve_address(nodes[1])};
+ pc.__set_hp_primary(nodes[0]);
+ pc.__set_hp_secondaries({nodes[1]});
pc.ballot = 1;
state->initialize_node_state();
- svc->set_node_state(nodes_list, true);
+ svc->set_node_state(nodes, true);
proposal_sent = false;
// check partitions, then inject the nodes[2] dead
@@ -472,7 +471,7 @@ void meta_partition_guardian_test::cure_test()
EXPECT_EQ(update_req->type, config_type::CT_ADD_SECONDARY);
EXPECT_FALSE(is_secondary(pc, update_req->hp_node));
- EXPECT_EQ(target, nodes[0].first);
+ EXPECT_EQ(target, nodes[0]);
last_addr = update_req->hp_node;
svc->set_node_state({update_req->hp_node}, false);
@@ -497,7 +496,7 @@ void meta_partition_guardian_test::cure_test()
EXPECT_EQ(update_req->type, config_type::CT_ADD_SECONDARY);
EXPECT_NE(update_req->hp_node, last_addr);
EXPECT_FALSE(is_secondary(pc, update_req->hp_node));
- EXPECT_EQ(target, nodes[0].first);
+ EXPECT_EQ(target, nodes[0]);
proposal_sent = true;
last_addr = update_req->hp_node;
@@ -518,13 +517,13 @@ void meta_partition_guardian_test::cure_test()
std::cerr << "Case: add secondary, and the primary is dead" << std::endl;
// initialize
state->_nodes.clear();
- pc.primary = nodes[0].second;
- pc.__set_hp_primary(nodes[0].first);
- pc.secondaries = {nodes[1].second};
- pc.__set_hp_secondaries({nodes[1].first});
+ pc.primary = dsn::dns_resolver::instance().resolve_address(nodes[0]);
+ pc.__set_hp_primary(nodes[0]);
+ pc.secondaries = {dsn::dns_resolver::instance().resolve_address(nodes[1])};
+ pc.__set_hp_secondaries({nodes[1]});
pc.ballot = 1;
state->initialize_node_state();
- svc->set_node_state(nodes_list, true);
+ svc->set_node_state(nodes, true);
proposal_sent = false;
// check partitions, then ignore the proposal
@@ -550,18 +549,20 @@ void meta_partition_guardian_test::cure_test()
server_state::sStateHash);
t->wait();
PROPOSAL_FLAG_CHECK;
- CONDITION_CHECK([&] { return pc.hp_primary == nodes[1].first; });
+ CONDITION_CHECK([&] { return pc.hp_primary == nodes[1]; });
std::this_thread::sleep_for(std::chrono::milliseconds(500));
state->_nodes.clear();
pc.primary.set_invalid();
pc.hp_primary.reset();
pc.hp_secondaries.clear();
- pc.last_drops = {nodes[0].second, nodes[1].second, nodes[2].second};
- pc.__set_hp_last_drops({nodes[0].first, nodes[1].first, nodes[2].first});
+ pc.last_drops = {dsn::dns_resolver::instance().resolve_address(nodes[0]),
+ dsn::dns_resolver::instance().resolve_address(nodes[1]),
+ dsn::dns_resolver::instance().resolve_address(nodes[2])};
+ pc.__set_hp_last_drops({nodes[0], nodes[1], nodes[2]});
pc.ballot = 4;
state->initialize_node_state();
- svc->set_node_state(nodes_list, true);
+ svc->set_node_state(nodes, true);
svc->set_filter([&](const dsn::host_port &target, dsn::message_ex *req) ->
cur_ptr {
dsn::message_ex *recv_request = create_corresponding_receive(req);
@@ -570,8 +571,8 @@ void meta_partition_guardian_test::cure_test()
destroy_message(recv_request);
EXPECT_EQ(update_req->type, config_type::CT_ASSIGN_PRIMARY);
- EXPECT_EQ(update_req->hp_node, nodes[2].first);
- EXPECT_EQ(target, nodes[2].first);
+ EXPECT_EQ(update_req->hp_node, nodes[2]);
+ EXPECT_EQ(target, nodes[2]);
proposal_sent = true;
svc->set_filter(default_filter);
@@ -580,11 +581,11 @@ void meta_partition_guardian_test::cure_test()
});
std::cerr << "Case: recover from DDD state, nodes[1] isn't alive" <<
std::endl;
- svc->set_node_state({nodes[1].first}, false);
+ svc->set_node_state({nodes[1]}, false);
cc.dropped = {
- dropped_replica{nodes[0].first, dropped_replica::INVALID_TIMESTAMP, 1,
1, 1},
- dropped_replica{nodes[1].first, dropped_replica::INVALID_TIMESTAMP, 1,
1, 1},
- dropped_replica{nodes[2].first, dropped_replica::INVALID_TIMESTAMP, 1,
1, 1},
+ dropped_replica{nodes[0], dropped_replica::INVALID_TIMESTAMP, 1, 1, 1},
+ dropped_replica{nodes[1], dropped_replica::INVALID_TIMESTAMP, 1, 1, 1},
+ dropped_replica{nodes[2], dropped_replica::INVALID_TIMESTAMP, 1, 1, 1},
};
t = dsn::tasking::enqueue(LPC_META_STATE_NORMAL,
nullptr,
@@ -596,9 +597,9 @@ void meta_partition_guardian_test::cure_test()
std::this_thread::sleep_for(std::chrono::milliseconds(500));
std::cerr << "Case: recover from DDD state, nodes[2] is not in dropped" <<
std::endl;
- svc->set_node_state({nodes[1].first}, true);
- cc.dropped = {dropped_replica{nodes[0].first,
dropped_replica::INVALID_TIMESTAMP, 1, 1, 1},
- dropped_replica{nodes[1].first,
dropped_replica::INVALID_TIMESTAMP, 1, 1, 1}};
+ svc->set_node_state({nodes[1]}, true);
+ cc.dropped = {dropped_replica{nodes[0],
dropped_replica::INVALID_TIMESTAMP, 1, 1, 1},
+ dropped_replica{nodes[1],
dropped_replica::INVALID_TIMESTAMP, 1, 1, 1}};
t = dsn::tasking::enqueue(LPC_META_STATE_NORMAL,
nullptr,
@@ -612,9 +613,9 @@ void meta_partition_guardian_test::cure_test()
std::cerr << "Case: recover from DDD state, haven't collect nodes[2]'s
info from replica, and "
"nodes[2]'s info haven't updated"
<< std::endl;
- cc.dropped = {dropped_replica{nodes[0].first,
dropped_replica::INVALID_TIMESTAMP, 1, 1, 1},
- dropped_replica{nodes[1].first,
dropped_replica::INVALID_TIMESTAMP, 1, 1, 1},
- dropped_replica{nodes[2].first, 500, -1, -1, -1}};
+ cc.dropped = {dropped_replica{nodes[0],
dropped_replica::INVALID_TIMESTAMP, 1, 1, 1},
+ dropped_replica{nodes[1],
dropped_replica::INVALID_TIMESTAMP, 1, 1, 1},
+ dropped_replica{nodes[2], 500, -1, -1, -1}};
t = dsn::tasking::enqueue(LPC_META_STATE_NORMAL,
nullptr,
@@ -635,8 +636,8 @@ void meta_partition_guardian_test::cure_test()
destroy_message(recv_request);
EXPECT_EQ(update_req->type, config_type::CT_ASSIGN_PRIMARY);
- EXPECT_EQ(update_req->hp_node, nodes[1].first);
- EXPECT_EQ(target, nodes[1].first);
+ EXPECT_EQ(update_req->hp_node, nodes[1]);
+ EXPECT_EQ(target, nodes[1]);
proposal_sent = true;
svc->set_filter(default_filter);
@@ -644,11 +645,11 @@ void meta_partition_guardian_test::cure_test()
return update_req;
});
- cc.dropped = {dropped_replica{nodes[0].first,
dropped_replica::INVALID_TIMESTAMP, 1, 1, 1},
- dropped_replica{nodes[1].first,
dropped_replica::INVALID_TIMESTAMP, 1, 1, 1},
- dropped_replica{nodes[2].first, 500, -1, -1, -1}};
+ cc.dropped = {dropped_replica{nodes[0],
dropped_replica::INVALID_TIMESTAMP, 1, 1, 1},
+ dropped_replica{nodes[1],
dropped_replica::INVALID_TIMESTAMP, 1, 1, 1},
+ dropped_replica{nodes[2], 500, -1, -1, -1}};
pc.last_committed_decree = 0;
- get_node_state(state->_nodes, nodes[2].first,
false)->set_replicas_collect_flag(true);
+ get_node_state(state->_nodes, nodes[2],
false)->set_replicas_collect_flag(true);
t = dsn::tasking::enqueue(LPC_META_STATE_NORMAL,
nullptr,
std::bind(&server_state::check_all_partitions,
state),
@@ -656,23 +657,25 @@ void meta_partition_guardian_test::cure_test()
t->wait();
PROPOSAL_FLAG_CHECK;
- CONDITION_CHECK([&] { return pc.hp_primary == nodes[1].first; });
+ CONDITION_CHECK([&] { return pc.hp_primary == nodes[1]; });
std::this_thread::sleep_for(std::chrono::milliseconds(200));
std::cerr << "Case: recover from DDD, haven't collect nodes[1/2]'s info
from replica, and "
"nodes[1/2]'s info both have updated"
<< std::endl;
- cc.dropped = {dropped_replica{nodes[0].first,
dropped_replica::INVALID_TIMESTAMP, 1, 1, 1},
- dropped_replica{nodes[1].first, 500, -1, -1, -1},
- dropped_replica{nodes[2].first, 500, -1, -1, -1}};
- get_node_state(state->_nodes, nodes[1].first,
false)->set_replicas_collect_flag(true);
- get_node_state(state->_nodes, nodes[2].first,
false)->set_replicas_collect_flag(true);
+ cc.dropped = {dropped_replica{nodes[0],
dropped_replica::INVALID_TIMESTAMP, 1, 1, 1},
+ dropped_replica{nodes[1], 500, -1, -1, -1},
+ dropped_replica{nodes[2], 500, -1, -1, -1}};
+ get_node_state(state->_nodes, nodes[1],
false)->set_replicas_collect_flag(true);
+ get_node_state(state->_nodes, nodes[2],
false)->set_replicas_collect_flag(true);
pc.primary.set_invalid();
pc.hp_primary.reset();
pc.hp_secondaries.clear();
- pc.last_drops = {nodes[0].second, nodes[1].second, nodes[2].second};
- pc.__set_hp_last_drops({nodes[0].first, nodes[1].first, nodes[2].first});
+ pc.last_drops = {dsn::dns_resolver::instance().resolve_address(nodes[0]),
+ dsn::dns_resolver::instance().resolve_address(nodes[1]),
+ dsn::dns_resolver::instance().resolve_address(nodes[2])};
+ pc.__set_hp_last_drops({nodes[0], nodes[1], nodes[2]});
t = dsn::tasking::enqueue(LPC_META_STATE_NORMAL,
nullptr,
@@ -686,9 +689,9 @@ void meta_partition_guardian_test::cure_test()
std::cerr << "Case: recover from DDD state, larger ballot not match with
larger decree"
<< std::endl;
cc.dropped = {
- dropped_replica{nodes[0].first, dropped_replica::INVALID_TIMESTAMP, 1,
1, 1},
- dropped_replica{nodes[1].first, dropped_replica::INVALID_TIMESTAMP, 1,
0, 1},
- dropped_replica{nodes[2].first, dropped_replica::INVALID_TIMESTAMP, 0,
1, 1},
+ dropped_replica{nodes[0], dropped_replica::INVALID_TIMESTAMP, 1, 1, 1},
+ dropped_replica{nodes[1], dropped_replica::INVALID_TIMESTAMP, 1, 0, 1},
+ dropped_replica{nodes[2], dropped_replica::INVALID_TIMESTAMP, 0, 1, 1},
};
t = dsn::tasking::enqueue(LPC_META_STATE_NORMAL,
@@ -702,9 +705,9 @@ void meta_partition_guardian_test::cure_test()
std::cerr << "Case: recover from DDD state, committed decree less than
meta's" << std::endl;
cc.dropped = {
- dropped_replica{nodes[0].first, dropped_replica::INVALID_TIMESTAMP, 1,
1, 1},
- dropped_replica{nodes[1].first, dropped_replica::INVALID_TIMESTAMP, 1,
10, 15},
- dropped_replica{nodes[2].first, dropped_replica::INVALID_TIMESTAMP, 1,
15, 15},
+ dropped_replica{nodes[0], dropped_replica::INVALID_TIMESTAMP, 1, 1, 1},
+ dropped_replica{nodes[1], dropped_replica::INVALID_TIMESTAMP, 1, 10,
15},
+ dropped_replica{nodes[2], dropped_replica::INVALID_TIMESTAMP, 1, 15,
15},
};
pc.last_committed_decree = 30;
t = dsn::tasking::enqueue(LPC_META_STATE_NORMAL,
@@ -719,9 +722,9 @@ void meta_partition_guardian_test::cure_test()
std::cerr << "Case: recover from DDD state, select primary from
config_context::dropped"
<< std::endl;
cc.dropped = {
- dropped_replica{nodes[0].first, 12344, -1, -1, -1},
- dropped_replica{nodes[2].first, dropped_replica::INVALID_TIMESTAMP, 4,
2, 4},
- dropped_replica{nodes[1].first, dropped_replica::INVALID_TIMESTAMP, 4,
3, 4},
+ dropped_replica{nodes[0], 12344, -1, -1, -1},
+ dropped_replica{nodes[2], dropped_replica::INVALID_TIMESTAMP, 4, 2, 4},
+ dropped_replica{nodes[1], dropped_replica::INVALID_TIMESTAMP, 4, 3, 4},
};
pc.last_committed_decree = 2;
svc->set_filter([&](const dsn::host_port &target, dsn::message_ex *req) ->
cur_ptr {
@@ -731,8 +734,8 @@ void meta_partition_guardian_test::cure_test()
destroy_message(recv_request);
EXPECT_EQ(update_req->type, config_type::CT_ASSIGN_PRIMARY);
- EXPECT_EQ(update_req->hp_node, nodes[1].first);
- EXPECT_EQ(target, nodes[1].first);
+ EXPECT_EQ(update_req->hp_node, nodes[1]);
+ EXPECT_EQ(target, nodes[1]);
proposal_sent = true;
svc->set_filter(default_filter);
@@ -746,7 +749,7 @@ void meta_partition_guardian_test::cure_test()
server_state::sStateHash);
t->wait();
PROPOSAL_FLAG_CHECK;
- CONDITION_CHECK([&] { return pc.hp_primary == nodes[1].first; });
+ CONDITION_CHECK([&] { return pc.hp_primary == nodes[1]; });
std::this_thread::sleep_for(std::chrono::milliseconds(200));
std::cerr << "Case: recover from DDD state, only one primary" << std::endl;
@@ -757,8 +760,8 @@ void meta_partition_guardian_test::cure_test()
destroy_message(recv_request);
EXPECT_EQ(update_req->type, config_type::CT_ASSIGN_PRIMARY);
- EXPECT_EQ(update_req->hp_node, nodes[0].first);
- EXPECT_EQ(target, nodes[0].first);
+ EXPECT_EQ(update_req->hp_node, nodes[0]);
+ EXPECT_EQ(target, nodes[0]);
proposal_sent = true;
svc->set_filter(default_filter);
@@ -769,12 +772,12 @@ void meta_partition_guardian_test::cure_test()
pc.primary.set_invalid();
pc.hp_primary.reset();
pc.hp_secondaries.clear();
- pc.last_drops = {nodes[0].second};
- pc.__set_hp_last_drops({nodes[0].first});
+ pc.last_drops = {dsn::dns_resolver::instance().resolve_address(nodes[0])};
+ pc.__set_hp_last_drops({nodes[0]});
state->_nodes.clear();
pc.ballot = 1;
state->initialize_node_state();
- svc->set_node_state({nodes[0].first, nodes[1].first, nodes[2].first},
true);
+ svc->set_node_state({nodes[0], nodes[1], nodes[2]}, true);
t = dsn::tasking::enqueue(LPC_META_STATE_NORMAL,
nullptr,
@@ -782,7 +785,7 @@ void meta_partition_guardian_test::cure_test()
server_state::sStateHash);
t->wait();
PROPOSAL_FLAG_CHECK;
- CONDITION_CHECK([&] { return pc.hp_primary == nodes[0].first; });
+ CONDITION_CHECK([&] { return pc.hp_primary == nodes[0]; });
}
static void check_nodes_loads(node_mapper &nodes)
@@ -803,12 +806,8 @@ static void check_nodes_loads(node_mapper &nodes)
void meta_partition_guardian_test::cure()
{
- std::vector<std::pair<dsn::host_port, dsn::rpc_address>> nodes_pairs;
std::vector<dsn::host_port> nodes_list;
- generate_node_list(nodes_pairs, 20, 100);
- for (const auto &p : nodes_pairs) {
- nodes_list.emplace_back(p.first);
- }
+ generate_node_list(nodes_list, 20, 100);
app_mapper app;
node_mapper nodes;
@@ -860,7 +859,7 @@ void meta_partition_guardian_test::cure()
void meta_partition_guardian_test::from_proposal_test()
{
- std::vector<std::pair<dsn::host_port, dsn::rpc_address>> nodes_list;
+ std::vector<dsn::host_port> nodes_list;
generate_node_list(nodes_list, 3, 3);
app_mapper app;
@@ -880,8 +879,8 @@ void meta_partition_guardian_test::from_proposal_test()
std::shared_ptr<app_state> the_app = app_state::create(info);
app.emplace(the_app->app_id, the_app);
- for (const auto &p : nodes_list) {
- get_node_state(nodes, p.first, true)->set_alive(true);
+ for (const auto &hp : nodes_list) {
+ get_node_state(nodes, hp, true)->set_alive(true);
}
meta_view mv{&app, &nodes};
@@ -897,49 +896,43 @@ void meta_partition_guardian_test::from_proposal_test()
ASSERT_EQ(config_type::CT_INVALID, cpa.type);
std::cerr << "Case 2: test invalid proposal: invalid target" << std::endl;
- cpa2 = new_proposal_action(
- dsn::host_port(), nodes_list[0].first,
config_type::CT_UPGRADE_TO_PRIMARY);
+ cpa2 = new_proposal_action(dsn::host_port(), nodes_list[0],
config_type::CT_UPGRADE_TO_PRIMARY);
cc.lb_actions.assign_balancer_proposals({cpa2});
ASSERT_FALSE(guardian.from_proposals(mv, p, cpa));
ASSERT_EQ(config_type::CT_INVALID, cpa.type);
std::cerr << "Case 3: test invalid proposal: invalid node" << std::endl;
- cpa2 = new_proposal_action(
- nodes_list[0].first, dsn::host_port(),
config_type::CT_UPGRADE_TO_PRIMARY);
+ cpa2 = new_proposal_action(nodes_list[0], dsn::host_port(),
config_type::CT_UPGRADE_TO_PRIMARY);
cc.lb_actions.assign_balancer_proposals({cpa2});
ASSERT_FALSE(guardian.from_proposals(mv, p, cpa));
ASSERT_EQ(config_type::CT_INVALID, cpa.type);
std::cerr << "Case 4: test invalid proposal: dead target" << std::endl;
- cpa2 = new_proposal_action(
- nodes_list[0].first, nodes_list[0].first,
config_type::CT_UPGRADE_TO_PRIMARY);
+ cpa2 = new_proposal_action(nodes_list[0], nodes_list[0],
config_type::CT_UPGRADE_TO_PRIMARY);
cc.lb_actions.assign_balancer_proposals({cpa2});
- get_node_state(nodes, nodes_list[0].first, false)->set_alive(false);
+ get_node_state(nodes, nodes_list[0], false)->set_alive(false);
ASSERT_FALSE(guardian.from_proposals(mv, p, cpa));
ASSERT_EQ(config_type::CT_INVALID, cpa.type);
- get_node_state(nodes, nodes_list[0].first, false)->set_alive(true);
+ get_node_state(nodes, nodes_list[0], false)->set_alive(true);
std::cerr << "Case 5: test invalid proposal: dead node" << std::endl;
- cpa2 = new_proposal_action(
- nodes_list[0].first, nodes_list[1].first,
config_type::CT_ADD_SECONDARY);
+ cpa2 = new_proposal_action(nodes_list[0], nodes_list[1],
config_type::CT_ADD_SECONDARY);
cc.lb_actions.assign_balancer_proposals({cpa2});
- get_node_state(nodes, nodes_list[1].first, false)->set_alive(false);
+ get_node_state(nodes, nodes_list[1], false)->set_alive(false);
ASSERT_FALSE(guardian.from_proposals(mv, p, cpa));
ASSERT_EQ(config_type::CT_INVALID, cpa.type);
- get_node_state(nodes, nodes_list[1].first, false)->set_alive(true);
+ get_node_state(nodes, nodes_list[1], false)->set_alive(true);
std::cerr << "Case 6: test invalid proposal: already have priamry but
assign" << std::endl;
- cpa2 = new_proposal_action(
- nodes_list[0].first, nodes_list[0].first,
config_type::CT_ASSIGN_PRIMARY);
+ cpa2 = new_proposal_action(nodes_list[0], nodes_list[0],
config_type::CT_ASSIGN_PRIMARY);
cc.lb_actions.assign_balancer_proposals({cpa2});
- pc.primary = nodes_list[1].second;
- pc.__set_hp_primary(nodes_list[1].first);
+ pc.primary = dsn::dns_resolver::instance().resolve_address(nodes_list[1]);
+ pc.__set_hp_primary(nodes_list[1]);
ASSERT_FALSE(guardian.from_proposals(mv, p, cpa));
ASSERT_EQ(config_type::CT_INVALID, cpa.type);
std::cerr << "Case 7: test invalid proposal: upgrade non-secondary" <<
std::endl;
- cpa2 = new_proposal_action(
- nodes_list[0].first, nodes_list[0].first,
config_type::CT_UPGRADE_TO_PRIMARY);
+ cpa2 = new_proposal_action(nodes_list[0], nodes_list[0],
config_type::CT_UPGRADE_TO_PRIMARY);
cc.lb_actions.assign_balancer_proposals({cpa2});
pc.primary.set_invalid();
pc.hp_primary.reset();
@@ -947,30 +940,28 @@ void meta_partition_guardian_test::from_proposal_test()
ASSERT_EQ(config_type::CT_INVALID, cpa.type);
std::cerr << "Case 8: test invalid proposal: add exist secondary" <<
std::endl;
- cpa2 = new_proposal_action(
- nodes_list[0].first, nodes_list[1].first,
config_type::CT_ADD_SECONDARY);
+ cpa2 = new_proposal_action(nodes_list[0], nodes_list[1],
config_type::CT_ADD_SECONDARY);
cc.lb_actions.assign_balancer_proposals({cpa2});
- pc.primary = nodes_list[1].second;
- pc.__set_hp_primary(nodes_list[1].first);
- pc.secondaries = {nodes_list[1].second};
- pc.__set_hp_secondaries({nodes_list[1].first});
+ pc.primary = dsn::dns_resolver::instance().resolve_address(nodes_list[1]);
+ pc.__set_hp_primary(nodes_list[1]);
+ pc.secondaries =
{dsn::dns_resolver::instance().resolve_address(nodes_list[1])};
+ pc.__set_hp_secondaries({nodes_list[1]});
ASSERT_FALSE(guardian.from_proposals(mv, p, cpa));
ASSERT_EQ(config_type::CT_INVALID, cpa.type);
std::cerr << "Case 9: test invalid proposal: downgrade non member" <<
std::endl;
- cpa2 = new_proposal_action(nodes_list[0].first, nodes_list[1].first,
config_type::CT_REMOVE);
+ cpa2 = new_proposal_action(nodes_list[0], nodes_list[1],
config_type::CT_REMOVE);
cc.lb_actions.assign_balancer_proposals({cpa2});
- pc.primary = nodes_list[0].second;
- pc.__set_hp_primary(nodes_list[0].first);
+ pc.primary = dsn::dns_resolver::instance().resolve_address(nodes_list[0]);
+ pc.__set_hp_primary(nodes_list[0]);
pc.hp_secondaries.clear();
ASSERT_FALSE(guardian.from_proposals(mv, p, cpa));
ASSERT_EQ(config_type::CT_INVALID, cpa.type);
std::cerr << "Case 10: test abnormal learning detect" << std::endl;
- cpa2 = new_proposal_action(
- nodes_list[0].first, nodes_list[1].first,
config_type::CT_ADD_SECONDARY);
- pc.primary = nodes_list[0].second;
- pc.__set_hp_primary(nodes_list[0].first);
+ cpa2 = new_proposal_action(nodes_list[0], nodes_list[1],
config_type::CT_ADD_SECONDARY);
+ pc.primary = dsn::dns_resolver::instance().resolve_address(nodes_list[0]);
+ pc.__set_hp_primary(nodes_list[0]);
pc.hp_secondaries.clear();
cc.lb_actions.assign_balancer_proposals({cpa2});
@@ -982,12 +973,12 @@ void meta_partition_guardian_test::from_proposal_test()
i.last_committed_decree = 10;
i.last_prepared_decree = 10;
- collect_replica(mv, nodes_list[1].first, i);
+ collect_replica(mv, nodes_list[1], i);
ASSERT_TRUE(guardian.from_proposals(mv, p, cpa));
ASSERT_EQ(config_type::CT_ADD_SECONDARY, cpa.type);
i.status = partition_status::PS_ERROR;
- collect_replica(mv, nodes_list[1].first, i);
+ collect_replica(mv, nodes_list[1], i);
ASSERT_FALSE(guardian.from_proposals(mv, p, cpa));
ASSERT_EQ(config_type::CT_INVALID, cpa.type);
}
diff --git a/src/meta/test/meta_test_base.cpp b/src/meta/test/meta_test_base.cpp
index be808b7c7..4fb188370 100644
--- a/src/meta/test/meta_test_base.cpp
+++ b/src/meta/test/meta_test_base.cpp
@@ -161,10 +161,7 @@ std::vector<host_port>
meta_test_base::ensure_enough_alive_nodes(int min_node_co
return nodes;
}
- auto node_pairs = generate_node_list(min_node_count);
- for (const auto &p : node_pairs) {
- nodes.emplace_back(p.first);
- }
+ nodes = generate_node_list(min_node_count);
_ms->set_node_state(nodes, true);
while (true) {
diff --git a/src/meta/test/misc/misc.cpp b/src/meta/test/misc/misc.cpp
index 6037e1605..2e1b6d640 100644
--- a/src/meta/test/misc/misc.cpp
+++ b/src/meta/test/misc/misc.cpp
@@ -61,15 +61,12 @@ uint32_t random32(uint32_t min, uint32_t max)
return res + min;
}
-void generate_node_list(std::vector<std::pair<dsn::host_port,
dsn::rpc_address>> &output_list,
- int min_count,
- int max_count)
+void generate_node_list(std::vector<dsn::host_port> &output_list, int
min_count, int max_count)
{
const auto count = random32(min_count, max_count);
- output_list.resize(count);
+ output_list.reserve(count);
for (int i = 0; i < count; ++i) {
- const dsn::host_port hp("localhost", i + 1);
- output_list[i] = std::make_pair(hp,
dsn::dns_resolver::instance().resolve_address(hp));
+ output_list.emplace_back(dsn::host_port("localhost", i + 1));
}
}
diff --git a/src/meta/test/misc/misc.h b/src/meta/test/misc/misc.h
index 917f4cd8e..45ab38ac1 100644
--- a/src/meta/test/misc/misc.h
+++ b/src/meta/test/misc/misc.h
@@ -33,13 +33,10 @@
#include <functional>
#include <map>
#include <memory>
-#include <string>
#include <utility>
#include <vector>
#include "meta/meta_data.h"
-#include "runtime/rpc/dns_resolver.h"
-#include "runtime/rpc/rpc_address.h"
#include "runtime/rpc/rpc_host_port.h"
namespace dsn {
@@ -68,20 +65,15 @@ uint32_t random32(uint32_t min, uint32_t max);
// Generates a random number [min_count, max_count] of node addresses
// each node is given a random port value in range of [min_count, max_count]
void generate_node_list(
- /*out*/ std::vector<std::pair<dsn::host_port, dsn::rpc_address>>
&output_list,
- int min_count,
- int max_count);
+ /*out*/ std::vector<dsn::host_port> &output_list, int min_count, int
max_count);
-// Generates `size` of node addresses, each with port value in range
[start_port, start_port + size]
-inline std::vector<std::pair<dsn::host_port, dsn::rpc_address>>
-generate_node_list(size_t size, int start_port = 12321)
+// Generates `size` of node host_port, each with port value in range
[start_port, start_port + size]
+inline std::vector<dsn::host_port> generate_node_list(size_t size, int
start_port = 12321)
{
- std::vector<std::pair<dsn::host_port, dsn::rpc_address>> result;
- result.resize(size);
+ std::vector<dsn::host_port> result;
+ result.reserve(size);
for (int i = 0; i < size; ++i) {
- const dsn::host_port hp("localhost", static_cast<uint16_t>(start_port
+ i + 1));
- result[i].first = hp;
- result[i].second = dsn::dns_resolver::instance().resolve_address(hp);
+ result.emplace_back(dsn::host_port("localhost",
static_cast<uint16_t>(start_port + i + 1)));
}
return result;
}
diff --git a/src/meta/test/state_sync_test.cpp
b/src/meta/test/state_sync_test.cpp
index 54f3d5a4d..a6eee0249 100644
--- a/src/meta/test/state_sync_test.cpp
+++ b/src/meta/test/state_sync_test.cpp
@@ -46,6 +46,7 @@
#include "meta/test/misc/misc.h"
#include "meta_admin_types.h"
#include "meta_service_test_app.h"
+#include "runtime/rpc/dns_resolver.h"
#include "runtime/rpc/rpc_address.h"
#include "runtime/rpc/rpc_host_port.h"
#include "runtime/task/task.h"
@@ -62,14 +63,13 @@ namespace dsn {
namespace replication {
class meta_options;
-static void random_assign_partition_config(
- std::shared_ptr<app_state> &app,
- std::vector<std::pair<dsn::host_port, dsn::rpc_address>> &server_list,
- int max_replica_count)
+static void random_assign_partition_config(std::shared_ptr<app_state> &app,
+ std::vector<dsn::host_port>
&server_list,
+ int max_replica_count)
{
auto get_server = [&server_list](int indice) {
if (indice % 2 != 0) {
- return std::make_pair(dsn::host_port(), dsn::rpc_address());
+ return dsn::host_port();
}
return server_list[indice / 2];
};
@@ -82,21 +82,23 @@ static void random_assign_partition_config(
indices.push_back(random32(start, max_servers));
start = indices.back() + 1;
}
- const auto &server = get_server(indices[0]);
- pc.primary = server.second;
- pc.__set_hp_primary(server.first);
+ const auto &primary = get_server(indices[0]);
+ pc.primary = dsn::dns_resolver::instance().resolve_address(primary);
+ pc.__set_hp_primary(primary);
if (!pc.__isset.hp_secondaries) {
pc.__set_hp_secondaries({});
}
for (int i = 1; i < indices.size(); ++i) {
- const auto &s = get_server(indices[i]);
- if (!s.first.is_invalid()) {
- pc.secondaries.push_back(s.second);
- pc.hp_secondaries.push_back(s.first);
+ const auto &secondary = get_server(indices[i]);
+ if (!secondary.is_invalid()) {
+
pc.secondaries.push_back(dsn::dns_resolver::instance().resolve_address(secondary));
+ pc.hp_secondaries.push_back(secondary);
}
}
- pc.__set_hp_last_drops({server_list.back().first});
- pc.last_drops = {server_list.back().second};
+ const auto hp = server_list.back();
+ const auto addr = dsn::dns_resolver::instance().resolve_address(hp);
+ pc.__set_hp_last_drops({hp});
+ pc.last_drops = {addr};
}
}
@@ -131,7 +133,7 @@ void meta_service_test_app::state_sync_test()
{
int apps_count = 15;
int drop_ratio = 5;
- std::vector<std::pair<dsn::host_port, dsn::rpc_address>> server_list;
+ std::vector<dsn::host_port> server_list;
std::vector<int> drop_set;
generate_node_list(server_list, 10, 10);
@@ -198,7 +200,7 @@ void meta_service_test_app::state_sync_test()
for (int j = 0; j < app->partition_count; ++j) {
config_context &cc = app->helpers->contexts[j];
ASSERT_EQ(1, cc.dropped.size());
- ASSERT_NE(cc.dropped.end(),
cc.find_from_dropped(server_list.back().first));
+ ASSERT_NE(cc.dropped.end(),
cc.find_from_dropped(server_list.back()));
}
}
ec = ss2->dump_from_remote_storage("meta_state.dump1", false);
@@ -392,14 +394,10 @@ void meta_service_test_app::construct_apps_test()
std::shared_ptr<meta_service> svc(new meta_service());
- std::vector<std::pair<dsn::host_port, dsn::rpc_address>> nodes;
+ std::vector<dsn::host_port> nodes;
std::string hint_message;
generate_node_list(nodes, 1, 1);
- std::vector<dsn::host_port> hps;
- for (const auto &p : nodes) {
- hps.emplace_back(p.first);
- }
- svc->_state->construct_apps({resp}, hps, hint_message);
+ svc->_state->construct_apps({resp}, nodes, hint_message);
meta_view mv = svc->_state->get_meta_view();
const app_mapper &mapper = *(mv.apps);
diff --git a/src/meta/test/update_configuration_test.cpp
b/src/meta/test/update_configuration_test.cpp
index f7ab3f754..7bb666c08 100644
--- a/src/meta/test/update_configuration_test.cpp
+++ b/src/meta/test/update_configuration_test.cpp
@@ -54,6 +54,7 @@
#include "meta_admin_types.h"
#include "meta_service_test_app.h"
#include "metadata_types.h"
+#include "runtime/rpc/dns_resolver.h"
#include "runtime/rpc/rpc_address.h"
#include "runtime/rpc/rpc_holder.h"
#include "runtime/rpc/rpc_host_port.h"
@@ -247,27 +248,29 @@ void meta_service_test_app::update_configuration_test()
ss->_all_apps.emplace(1, app);
- std::vector<std::pair<dsn::host_port, dsn::rpc_address>> nodes;
+ std::vector<dsn::host_port> nodes;
generate_node_list(nodes, 4, 4);
dsn::partition_configuration &pc0 = app->partitions[0];
- pc0.primary = nodes[0].second;
- pc0.__set_hp_primary(nodes[0].first);
- pc0.secondaries = {nodes[1].second, nodes[2].second};
- pc0.__set_hp_secondaries({nodes[1].first, nodes[2].first});
+ pc0.primary = dsn::dns_resolver::instance().resolve_address(nodes[0]);
+ pc0.__set_hp_primary(nodes[0]);
+ pc0.secondaries = {dsn::dns_resolver::instance().resolve_address(nodes[1]),
+
dsn::dns_resolver::instance().resolve_address(nodes[2])};
+ pc0.__set_hp_secondaries({nodes[1], nodes[2]});
pc0.ballot = 3;
dsn::partition_configuration &pc1 = app->partitions[1];
- pc1.primary = nodes[1].second;
- pc1.__set_hp_primary(nodes[1].first);
- pc1.secondaries = {nodes[0].second, nodes[2].second};
- pc1.__set_hp_secondaries({nodes[0].first, nodes[2].first});
+ pc1.primary = dsn::dns_resolver::instance().resolve_address(nodes[1]);
+ pc1.__set_hp_primary(nodes[1]);
+ pc1.secondaries = {dsn::dns_resolver::instance().resolve_address(nodes[0]),
+
dsn::dns_resolver::instance().resolve_address(nodes[2])};
+ pc1.__set_hp_secondaries({nodes[0], nodes[2]});
pc1.ballot = 3;
ss->sync_apps_to_remote_storage();
ASSERT_TRUE(ss->spin_wait_staging(30));
ss->initialize_node_state();
- svc->set_node_state({nodes[0].first, nodes[1].first, nodes[2].first},
true);
+ svc->set_node_state({nodes[0], nodes[1], nodes[2]}, true);
svc->_started = true;
// test remove primary
@@ -279,19 +282,19 @@ void meta_service_test_app::update_configuration_test()
};
// test kickoff secondary
- auto hp = nodes[0].first;
+ const auto &hp = nodes[0];
state_validator validator2 = [pc1, hp](const app_mapper &apps) {
const dsn::partition_configuration *pc = get_config(apps, pc1.pid);
return pc->ballot == pc1.ballot + 1 && pc->hp_secondaries.size() == 1
&&
pc->hp_secondaries.front() != hp;
};
- svc->set_node_state({nodes[0].first}, false);
+ svc->set_node_state({nodes[0]}, false);
ASSERT_TRUE(wait_state(ss, validator1, 30));
ASSERT_TRUE(wait_state(ss, validator2, 30));
// test add secondary
- svc->set_node_state({nodes[3].first}, true);
+ svc->set_node_state({nodes[3]}, true);
state_validator validator3 = [pc0](const app_mapper &apps) {
const dsn::partition_configuration *pc = get_config(apps, pc0.pid);
return pc->ballot == pc0.ballot + 1 && pc->hp_secondaries.size() == 2;
@@ -329,41 +332,38 @@ void meta_service_test_app::adjust_dropped_size()
ss->_all_apps.emplace(1, app);
- std::vector<std::pair<dsn::host_port, dsn::rpc_address>> nodes;
+ std::vector<dsn::host_port> nodes;
generate_node_list(nodes, 10, 10);
// first, the replica is healthy, and there are 2 dropped
dsn::partition_configuration &pc = app->partitions[0];
- pc.primary = nodes[0].second;
- pc.__set_hp_primary(nodes[0].first);
- pc.secondaries = {nodes[1].second, nodes[2].second};
- pc.__set_hp_secondaries({nodes[1].first, nodes[2].first});
+ pc.primary = dsn::dns_resolver::instance().resolve_address(nodes[0]);
+ pc.__set_hp_primary(nodes[0]);
+ pc.secondaries = {dsn::dns_resolver::instance().resolve_address(nodes[1]),
+ dsn::dns_resolver::instance().resolve_address(nodes[2])};
+ pc.__set_hp_secondaries({nodes[1], nodes[2]});
pc.ballot = 10;
config_context &cc = *get_config_context(ss->_all_apps, pc.pid);
cc.dropped = {
- dropped_replica{nodes[3].first, dropped_replica::INVALID_TIMESTAMP, 7,
11, 14},
- dropped_replica{nodes[4].first, 20, invalid_ballot, invalid_decree,
invalid_decree},
+ dropped_replica{nodes[3], dropped_replica::INVALID_TIMESTAMP, 7, 11,
14},
+ dropped_replica{nodes[4], 20, invalid_ballot, invalid_decree,
invalid_decree},
};
ss->sync_apps_to_remote_storage();
- std::vector<dsn::host_port> hps;
- for (const auto &p : nodes) {
- hps.emplace_back(p.first);
- }
- generate_node_mapper(ss->_nodes, ss->_all_apps, hps);
+ generate_node_mapper(ss->_nodes, ss->_all_apps, nodes);
// then we receive a request for upgrade a node to secondary
std::shared_ptr<configuration_update_request> req =
std::make_shared<configuration_update_request>();
req->config = pc;
req->config.ballot++;
- req->config.secondaries.push_back(nodes[5].second);
- req->config.__set_hp_secondaries({nodes[5].first});
+
req->config.secondaries.push_back(dsn::dns_resolver::instance().resolve_address(nodes[5]));
+ req->config.__set_hp_secondaries({nodes[5]});
req->info = info;
- req->node = nodes[5].second;
- req->__set_hp_node(nodes[5].first);
+ req->node = dsn::dns_resolver::instance().resolve_address(nodes[5]);
+ req->__set_hp_node(nodes[5]);
req->type = config_type::CT_UPGRADE_TO_SECONDARY;
call_update_configuration(svc.get(), req);
@@ -372,8 +372,8 @@ void meta_service_test_app::adjust_dropped_size()
// then receive a config_sync request fro nodes[4], which has less data
than node[3]
std::shared_ptr<configuration_query_by_node_request> req2 =
std::make_shared<configuration_query_by_node_request>();
- req2->node = nodes[4].second;
- req2->__set_hp_node(nodes[4].first);
+ req2->node = dsn::dns_resolver::instance().resolve_address(nodes[4]);
+ req2->__set_hp_node(nodes[4]);
replica_info rep_info;
rep_info.pid = pc.pid;
@@ -393,7 +393,7 @@ void meta_service_test_app::adjust_dropped_size()
dropped_replica &d = cc.dropped[0];
if (d.time != dropped_replica::INVALID_TIMESTAMP)
return false;
- if (d.node != nodes[4].first)
+ if (d.node != nodes[4])
return false;
if (d.last_committed_decree != rep_info.last_committed_decree)
return false;
@@ -429,13 +429,8 @@ void meta_service_test_app::apply_balancer_test()
meta_svc->_balancer.reset(new greedy_load_balancer(meta_svc.get()));
// initialize data structure
- std::vector<std::pair<dsn::host_port, dsn::rpc_address>> node_list;
- generate_node_list(node_list, 5, 10);
-
std::vector<dsn::host_port> hps;
- for (const auto &p : node_list) {
- hps.emplace_back(p.first);
- }
+ generate_node_list(hps, 5, 10);
server_state *ss = meta_svc->_state.get();
generate_apps(ss->_all_apps, hps, 5, 5, std::pair<uint32_t, uint32_t>(2,
5), false);
@@ -506,7 +501,7 @@ void meta_service_test_app::cannot_run_balancer_test()
svc->_balancer.reset(new dummy_balancer(svc.get()));
svc->_partition_guardian.reset(new dummy_partition_guardian(svc.get()));
- std::vector<std::pair<dsn::host_port, dsn::rpc_address>> nodes;
+ std::vector<dsn::host_port> nodes;
generate_node_list(nodes, 10, 10);
dsn::app_info info;
@@ -525,19 +520,15 @@ void meta_service_test_app::cannot_run_balancer_test()
svc->_state->_table_metric_entities.create_entity(info.app_id,
info.partition_count);
dsn::partition_configuration &pc = the_app->partitions[0];
- pc.primary = nodes[0].second;
- pc.__set_hp_primary(nodes[0].first);
- pc.secondaries = {nodes[1].second, nodes[2].second};
- pc.__set_hp_secondaries({nodes[1].first, nodes[2].first});
-
- std::vector<dsn::host_port> hps;
- for (const auto &p : nodes) {
- hps.emplace_back(p.first);
- }
+ pc.primary = dsn::dns_resolver::instance().resolve_address(nodes[0]);
+ pc.__set_hp_primary(nodes[0]);
+ pc.secondaries = {dsn::dns_resolver::instance().resolve_address(nodes[1]),
+ dsn::dns_resolver::instance().resolve_address(nodes[2])};
+ pc.__set_hp_secondaries({nodes[1], nodes[2]});
#define REGENERATE_NODE_MAPPER
\
svc->_state->_nodes.clear();
\
- generate_node_mapper(svc->_state->_nodes, svc->_state->_all_apps, hps)
+ generate_node_mapper(svc->_state->_nodes, svc->_state->_all_apps, nodes)
REGENERATE_NODE_MAPPER;
// stage are freezed
@@ -557,8 +548,8 @@ void meta_service_test_app::cannot_run_balancer_test()
ASSERT_FALSE(svc->_state->check_all_partitions());
// some dropped node still exists in nodes
- pc.primary = nodes[0].second;
- pc.__set_hp_primary(nodes[0].first);
+ pc.primary = dsn::dns_resolver::instance().resolve_address(nodes[0]);
+ pc.__set_hp_primary(nodes[0]);
REGENERATE_NODE_MAPPER;
get_node_state(svc->_state->_nodes, pc.hp_primary, true)->set_alive(false);
ASSERT_FALSE(svc->_state->check_all_partitions());
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]