summaryrefslogtreecommitdiff
path: root/src/mongo/dbtests/mock_replica_set_test.cpp
diff options
context:
space:
mode:
authorMark Benvenuto <mark.benvenuto@mongodb.com>2015-06-20 00:22:50 -0400
committerMark Benvenuto <mark.benvenuto@mongodb.com>2015-06-20 10:56:02 -0400
commit9c2ed42daa8fbbef4a919c21ec564e2db55e8d60 (patch)
tree3814f79c10d7b490948d8cb7b112ac1dd41ceff1 /src/mongo/dbtests/mock_replica_set_test.cpp
parent01965cf52bce6976637ecb8f4a622aeb05ab256a (diff)
downloadmongo-9c2ed42daa8fbbef4a919c21ec564e2db55e8d60.tar.gz
SERVER-18579: Clang-Format - reformat code, no comment reflow
Diffstat (limited to 'src/mongo/dbtests/mock_replica_set_test.cpp')
-rw-r--r--src/mongo/dbtests/mock_replica_set_test.cpp580
1 files changed, 285 insertions, 295 deletions
diff --git a/src/mongo/dbtests/mock_replica_set_test.cpp b/src/mongo/dbtests/mock_replica_set_test.cpp
index 6cda455fd3d..3b0ac16074c 100644
--- a/src/mongo/dbtests/mock_replica_set_test.cpp
+++ b/src/mongo/dbtests/mock_replica_set_test.cpp
@@ -48,100 +48,269 @@ using std::string;
using std::vector;
namespace mongo_test {
- TEST(MockReplicaSetTest, SetName) {
- MockReplicaSet replSet("n", 3);
- ASSERT_EQUALS("n", replSet.getSetName());
- }
+TEST(MockReplicaSetTest, SetName) {
+ MockReplicaSet replSet("n", 3);
+ ASSERT_EQUALS("n", replSet.getSetName());
+}
+
+TEST(MockReplicaSetTest, ConnectionString) {
+ MockReplicaSet replSet("n", 3);
+ ASSERT_EQUALS("n/$n0:27017,$n1:27017,$n2:27017", replSet.getConnectionString());
+}
+
+TEST(MockReplicaSetTest, GetNode) {
+ MockReplicaSet replSet("n", 3);
+ ASSERT_EQUALS("$n0:27017", replSet.getNode("$n0:27017")->getServerAddress());
+ ASSERT_EQUALS("$n1:27017", replSet.getNode("$n1:27017")->getServerAddress());
+ ASSERT_EQUALS("$n2:27017", replSet.getNode("$n2:27017")->getServerAddress());
+ ASSERT(replSet.getNode("$n3:27017") == NULL);
+}
- TEST(MockReplicaSetTest, ConnectionString) {
- MockReplicaSet replSet("n", 3);
- ASSERT_EQUALS("n/$n0:27017,$n1:27017,$n2:27017",
- replSet.getConnectionString());
+TEST(MockReplicaSetTest, IsMasterNode0) {
+ MockReplicaSet replSet("n", 3);
+ set<string> expectedHosts;
+ expectedHosts.insert("$n0:27017");
+ expectedHosts.insert("$n1:27017");
+ expectedHosts.insert("$n2:27017");
+
+ BSONObj cmdResponse;
+ MockRemoteDBServer* node = replSet.getNode("$n0:27017");
+ const MockRemoteDBServer::InstanceID id = node->getInstanceID();
+ bool ok = node->runCommand(id, "foo.bar", BSON("ismaster" << 1), cmdResponse);
+ ASSERT(ok);
+
+ ASSERT(cmdResponse["ismaster"].trueValue());
+ ASSERT(!cmdResponse["secondary"].trueValue());
+ ASSERT_EQUALS("$n0:27017", cmdResponse["me"].str());
+ ASSERT_EQUALS("$n0:27017", cmdResponse["primary"].str());
+ ASSERT_EQUALS("n", cmdResponse["setName"].str());
+
+ set<string> hostList;
+ BSONObjIterator iter(cmdResponse["hosts"].embeddedObject());
+ while (iter.more()) {
+ hostList.insert(iter.next().str());
}
- TEST(MockReplicaSetTest, GetNode) {
- MockReplicaSet replSet("n", 3);
- ASSERT_EQUALS("$n0:27017", replSet.getNode("$n0:27017")->getServerAddress());
- ASSERT_EQUALS("$n1:27017", replSet.getNode("$n1:27017")->getServerAddress());
- ASSERT_EQUALS("$n2:27017", replSet.getNode("$n2:27017")->getServerAddress());
- ASSERT(replSet.getNode("$n3:27017") == NULL);
+ ASSERT(expectedHosts == hostList);
+}
+
+TEST(MockReplicaSetTest, IsMasterNode1) {
+ MockReplicaSet replSet("n", 3);
+ set<string> expectedHosts;
+ expectedHosts.insert("$n0:27017");
+ expectedHosts.insert("$n1:27017");
+ expectedHosts.insert("$n2:27017");
+
+ BSONObj cmdResponse;
+ MockRemoteDBServer* node = replSet.getNode("$n1:27017");
+ const MockRemoteDBServer::InstanceID id = node->getInstanceID();
+ bool ok = node->runCommand(id, "foo.bar", BSON("ismaster" << 1), cmdResponse);
+ ASSERT(ok);
+
+ ASSERT(!cmdResponse["ismaster"].trueValue());
+ ASSERT(cmdResponse["secondary"].trueValue());
+ ASSERT_EQUALS("$n1:27017", cmdResponse["me"].str());
+ ASSERT_EQUALS("$n0:27017", cmdResponse["primary"].str());
+ ASSERT_EQUALS("n", cmdResponse["setName"].str());
+
+ set<string> hostList;
+ BSONObjIterator iter(cmdResponse["hosts"].embeddedObject());
+ while (iter.more()) {
+ hostList.insert(iter.next().str());
}
- TEST(MockReplicaSetTest, IsMasterNode0) {
- MockReplicaSet replSet("n", 3);
- set<string> expectedHosts;
- expectedHosts.insert("$n0:27017");
- expectedHosts.insert("$n1:27017");
- expectedHosts.insert("$n2:27017");
+ ASSERT(expectedHosts == hostList);
+}
- BSONObj cmdResponse;
- MockRemoteDBServer* node = replSet.getNode("$n0:27017");
- const MockRemoteDBServer::InstanceID id = node->getInstanceID();
- bool ok = node->runCommand(id, "foo.bar", BSON("ismaster" << 1), cmdResponse);
- ASSERT(ok);
+TEST(MockReplicaSetTest, IsMasterNode2) {
+ MockReplicaSet replSet("n", 3);
+ set<string> expectedHosts;
+ expectedHosts.insert("$n0:27017");
+ expectedHosts.insert("$n1:27017");
+ expectedHosts.insert("$n2:27017");
+
+ BSONObj cmdResponse;
+ MockRemoteDBServer* node = replSet.getNode("$n2:27017");
+ const MockRemoteDBServer::InstanceID id = node->getInstanceID();
+ bool ok = node->runCommand(id, "foo.bar", BSON("ismaster" << 1), cmdResponse);
+ ASSERT(ok);
+
+ ASSERT(!cmdResponse["ismaster"].trueValue());
+ ASSERT(cmdResponse["secondary"].trueValue());
+ ASSERT_EQUALS("$n2:27017", cmdResponse["me"].str());
+ ASSERT_EQUALS("$n0:27017", cmdResponse["primary"].str());
+ ASSERT_EQUALS("n", cmdResponse["setName"].str());
+
+ set<string> hostList;
+ BSONObjIterator iter(cmdResponse["hosts"].embeddedObject());
+ while (iter.more()) {
+ hostList.insert(iter.next().str());
+ }
- ASSERT(cmdResponse["ismaster"].trueValue());
- ASSERT(!cmdResponse["secondary"].trueValue());
- ASSERT_EQUALS("$n0:27017", cmdResponse["me"].str());
- ASSERT_EQUALS("$n0:27017", cmdResponse["primary"].str());
- ASSERT_EQUALS("n", cmdResponse["setName"].str());
+ ASSERT(expectedHosts == hostList);
+}
- set<string> hostList;
- BSONObjIterator iter(cmdResponse["hosts"].embeddedObject());
- while (iter.more()) {
- hostList.insert(iter.next().str());
+TEST(MockReplicaSetTest, ReplSetGetStatusNode0) {
+ MockReplicaSet replSet("n", 3);
+ set<string> expectedMembers;
+ expectedMembers.insert("$n0:27017");
+ expectedMembers.insert("$n1:27017");
+ expectedMembers.insert("$n2:27017");
+
+ BSONObj cmdResponse;
+ MockRemoteDBServer* node = replSet.getNode("$n0:27017");
+ const MockRemoteDBServer::InstanceID id = node->getInstanceID();
+ bool ok = node->runCommand(id, "foo.bar", BSON("replSetGetStatus" << 1), cmdResponse);
+ ASSERT(ok);
+
+ ASSERT_EQUALS("n", cmdResponse["set"].str());
+ ASSERT_EQUALS(1, cmdResponse["myState"].numberInt());
+
+ set<string> memberList;
+ BSONObjIterator iter(cmdResponse["members"].embeddedObject());
+ while (iter.more()) {
+ BSONElement member(iter.next());
+ memberList.insert(member["name"].str());
+
+ if (member["self"].trueValue()) {
+ ASSERT_EQUALS(1, member["state"].numberInt());
+ ASSERT_EQUALS("$n0:27017", member["name"].str());
+ } else {
+ ASSERT_EQUALS(2, member["state"].numberInt());
}
+ }
- ASSERT(expectedHosts == hostList);
+ ASSERT(expectedMembers == memberList);
+}
+
+TEST(MockReplicaSetTest, ReplSetGetStatusNode1) {
+ MockReplicaSet replSet("n", 3);
+ set<string> expectedMembers;
+ expectedMembers.insert("$n0:27017");
+ expectedMembers.insert("$n1:27017");
+ expectedMembers.insert("$n2:27017");
+
+ BSONObj cmdResponse;
+ MockRemoteDBServer* node = replSet.getNode("$n1:27017");
+ const MockRemoteDBServer::InstanceID id = node->getInstanceID();
+ bool ok = node->runCommand(id, "foo.bar", BSON("replSetGetStatus" << 1), cmdResponse);
+ ASSERT(ok);
+
+ ASSERT_EQUALS("n", cmdResponse["set"].str());
+ ASSERT_EQUALS(2, cmdResponse["myState"].numberInt());
+
+ set<string> memberList;
+ BSONObjIterator iter(cmdResponse["members"].embeddedObject());
+ while (iter.more()) {
+ BSONElement member(iter.next());
+ memberList.insert(member["name"].str());
+
+ if (member["self"].trueValue()) {
+ ASSERT_EQUALS(2, member["state"].numberInt());
+ ASSERT_EQUALS("$n1:27017", member["name"].str());
+ } else if (member["name"].str() == "$n0:27017") {
+ ASSERT_EQUALS(1, member["state"].numberInt());
+ } else {
+ ASSERT_EQUALS(2, member["state"].numberInt());
+ }
}
- TEST(MockReplicaSetTest, IsMasterNode1) {
- MockReplicaSet replSet("n", 3);
- set<string> expectedHosts;
- expectedHosts.insert("$n0:27017");
- expectedHosts.insert("$n1:27017");
- expectedHosts.insert("$n2:27017");
+ ASSERT(expectedMembers == memberList);
+}
- BSONObj cmdResponse;
- MockRemoteDBServer* node = replSet.getNode("$n1:27017");
- const MockRemoteDBServer::InstanceID id = node->getInstanceID();
- bool ok = node->runCommand(id, "foo.bar", BSON("ismaster" << 1), cmdResponse);
- ASSERT(ok);
+TEST(MockReplicaSetTest, ReplSetGetStatusNode2) {
+ MockReplicaSet replSet("n", 3);
+ set<string> expectedMembers;
+ expectedMembers.insert("$n0:27017");
+ expectedMembers.insert("$n1:27017");
+ expectedMembers.insert("$n2:27017");
+
+ BSONObj cmdResponse;
+ MockRemoteDBServer* node = replSet.getNode("$n2:27017");
+ const MockRemoteDBServer::InstanceID id = node->getInstanceID();
+ bool ok = node->runCommand(id, "foo.bar", BSON("replSetGetStatus" << 1), cmdResponse);
+ ASSERT(ok);
+
+ ASSERT_EQUALS("n", cmdResponse["set"].str());
+ ASSERT_EQUALS(2, cmdResponse["myState"].numberInt());
+
+ set<string> memberList;
+ BSONObjIterator iter(cmdResponse["members"].embeddedObject());
+ while (iter.more()) {
+ BSONElement member(iter.next());
+ memberList.insert(member["name"].str());
+
+ if (member["self"].trueValue()) {
+ ASSERT_EQUALS(2, member["state"].numberInt());
+ ASSERT_EQUALS("$n2:27017", member["name"].str());
+ } else if (member["name"].str() == "$n0:27017") {
+ ASSERT_EQUALS(1, member["state"].numberInt());
+ } else {
+ ASSERT_EQUALS(2, member["state"].numberInt());
+ }
+ }
- ASSERT(!cmdResponse["ismaster"].trueValue());
- ASSERT(cmdResponse["secondary"].trueValue());
- ASSERT_EQUALS("$n1:27017", cmdResponse["me"].str());
- ASSERT_EQUALS("$n0:27017", cmdResponse["primary"].str());
- ASSERT_EQUALS("n", cmdResponse["setName"].str());
+ ASSERT(expectedMembers == memberList);
+}
- set<string> hostList;
- BSONObjIterator iter(cmdResponse["hosts"].embeddedObject());
- while (iter.more()) {
- hostList.insert(iter.next().str());
+namespace {
+/**
+ * Takes a ReplicaSetConfig and a node to remove and returns a new config with equivalent
+ * members minus the one specified to be removed. NOTE: Does not copy over properties of the
+ * members other than their id and host.
+ */
+ReplicaSetConfig _getConfigWithMemberRemoved(const ReplicaSetConfig& oldConfig,
+ const HostAndPort& toRemove) {
+ BSONObjBuilder newConfigBuilder;
+ newConfigBuilder.append("_id", oldConfig.getReplSetName());
+ newConfigBuilder.append("version", oldConfig.getConfigVersion());
+
+ BSONArrayBuilder membersBuilder(newConfigBuilder.subarrayStart("members"));
+ for (ReplicaSetConfig::MemberIterator member = oldConfig.membersBegin();
+ member != oldConfig.membersEnd();
+ ++member) {
+ if (member->getHostAndPort() == toRemove) {
+ continue;
}
- ASSERT(expectedHosts == hostList);
+ membersBuilder.append(
+ BSON("_id" << member->getId() << "host" << member->getHostAndPort().toString()));
}
- TEST(MockReplicaSetTest, IsMasterNode2) {
- MockReplicaSet replSet("n", 3);
- set<string> expectedHosts;
- expectedHosts.insert("$n0:27017");
- expectedHosts.insert("$n1:27017");
- expectedHosts.insert("$n2:27017");
+ membersBuilder.done();
+ ReplicaSetConfig newConfig;
+ ASSERT_OK(newConfig.initialize(newConfigBuilder.obj()));
+ ASSERT_OK(newConfig.validate());
+ return newConfig;
+}
+} // namespace
+
+TEST(MockReplicaSetTest, IsMasterReconfigNodeRemoved) {
+ MockReplicaSet replSet("n", 3);
+
+ ReplicaSetConfig oldConfig = replSet.getReplConfig();
+ const string hostToRemove("$n1:27017");
+ ReplicaSetConfig newConfig = _getConfigWithMemberRemoved(oldConfig, HostAndPort(hostToRemove));
+ replSet.setConfig(newConfig);
+ {
+ // Check isMaster for node still in set
BSONObj cmdResponse;
- MockRemoteDBServer* node = replSet.getNode("$n2:27017");
+ MockRemoteDBServer* node = replSet.getNode("$n0:27017");
const MockRemoteDBServer::InstanceID id = node->getInstanceID();
bool ok = node->runCommand(id, "foo.bar", BSON("ismaster" << 1), cmdResponse);
ASSERT(ok);
- ASSERT(!cmdResponse["ismaster"].trueValue());
- ASSERT(cmdResponse["secondary"].trueValue());
- ASSERT_EQUALS("$n2:27017", cmdResponse["me"].str());
+ ASSERT(cmdResponse["ismaster"].trueValue());
+ ASSERT(!cmdResponse["secondary"].trueValue());
+ ASSERT_EQUALS("$n0:27017", cmdResponse["me"].str());
ASSERT_EQUALS("$n0:27017", cmdResponse["primary"].str());
ASSERT_EQUALS("n", cmdResponse["setName"].str());
+ set<string> expectedHosts;
+ expectedHosts.insert("$n0:27017");
+ expectedHosts.insert("$n2:27017");
+
set<string> hostList;
BSONObjIterator iter(cmdResponse["hosts"].embeddedObject());
while (iter.more()) {
@@ -149,51 +318,36 @@ namespace mongo_test {
}
ASSERT(expectedHosts == hostList);
+ ASSERT(hostList.count(hostToRemove) == 0);
}
- TEST(MockReplicaSetTest, ReplSetGetStatusNode0) {
- MockReplicaSet replSet("n", 3);
- set<string> expectedMembers;
- expectedMembers.insert("$n0:27017");
- expectedMembers.insert("$n1:27017");
- expectedMembers.insert("$n2:27017");
-
+ {
+ // Check isMaster for node still not in set anymore
BSONObj cmdResponse;
- MockRemoteDBServer* node = replSet.getNode("$n0:27017");
+ MockRemoteDBServer* node = replSet.getNode(hostToRemove);
const MockRemoteDBServer::InstanceID id = node->getInstanceID();
- bool ok = node->runCommand(id, "foo.bar", BSON("replSetGetStatus" << 1), cmdResponse);
+ bool ok = node->runCommand(id, "foo.bar", BSON("ismaster" << 1), cmdResponse);
ASSERT(ok);
- ASSERT_EQUALS("n", cmdResponse["set"].str());
- ASSERT_EQUALS(1, cmdResponse["myState"].numberInt());
-
- set<string> memberList;
- BSONObjIterator iter(cmdResponse["members"].embeddedObject());
- while (iter.more()) {
- BSONElement member(iter.next());
- memberList.insert(member["name"].str());
-
- if (member["self"].trueValue()) {
- ASSERT_EQUALS(1, member["state"].numberInt());
- ASSERT_EQUALS("$n0:27017", member["name"].str());
- }
- else {
- ASSERT_EQUALS(2, member["state"].numberInt());
- }
- }
-
- ASSERT(expectedMembers == memberList);
+ ASSERT(!cmdResponse["ismaster"].trueValue());
+ ASSERT(!cmdResponse["secondary"].trueValue());
+ ASSERT_EQUALS(hostToRemove, cmdResponse["me"].str());
+ ASSERT_EQUALS("n", cmdResponse["setName"].str());
}
+}
- TEST(MockReplicaSetTest, ReplSetGetStatusNode1) {
- MockReplicaSet replSet("n", 3);
- set<string> expectedMembers;
- expectedMembers.insert("$n0:27017");
- expectedMembers.insert("$n1:27017");
- expectedMembers.insert("$n2:27017");
+TEST(MockReplicaSetTest, replSetGetStatusReconfigNodeRemoved) {
+ MockReplicaSet replSet("n", 3);
+
+ ReplicaSetConfig oldConfig = replSet.getReplConfig();
+ const string hostToRemove("$n1:27017");
+ ReplicaSetConfig newConfig = _getConfigWithMemberRemoved(oldConfig, HostAndPort(hostToRemove));
+ replSet.setConfig(newConfig);
+ {
+ // Check replSetGetStatus for node still in set
BSONObj cmdResponse;
- MockRemoteDBServer* node = replSet.getNode("$n1:27017");
+ MockRemoteDBServer* node = replSet.getNode("$n2:27017");
const MockRemoteDBServer::InstanceID id = node->getInstanceID();
bool ok = node->runCommand(id, "foo.bar", BSON("replSetGetStatus" << 1), cmdResponse);
ASSERT(ok);
@@ -209,223 +363,59 @@ namespace mongo_test {
if (member["self"].trueValue()) {
ASSERT_EQUALS(2, member["state"].numberInt());
- ASSERT_EQUALS("$n1:27017", member["name"].str());
- }
- else if (member["name"].str() == "$n0:27017") {
+ ASSERT_EQUALS("$n2:27017", member["name"].str());
+ } else if (member["name"].str() == "$n0:27017") {
ASSERT_EQUALS(1, member["state"].numberInt());
- }
- else {
+ } else {
ASSERT_EQUALS(2, member["state"].numberInt());
}
}
- ASSERT(expectedMembers == memberList);
- }
-
- TEST(MockReplicaSetTest, ReplSetGetStatusNode2) {
- MockReplicaSet replSet("n", 3);
set<string> expectedMembers;
expectedMembers.insert("$n0:27017");
- expectedMembers.insert("$n1:27017");
expectedMembers.insert("$n2:27017");
+ ASSERT(expectedMembers == memberList);
+ }
+ {
+ // Check replSetGetStatus for node still not in set anymore
BSONObj cmdResponse;
- MockRemoteDBServer* node = replSet.getNode("$n2:27017");
+ MockRemoteDBServer* node = replSet.getNode(hostToRemove);
const MockRemoteDBServer::InstanceID id = node->getInstanceID();
bool ok = node->runCommand(id, "foo.bar", BSON("replSetGetStatus" << 1), cmdResponse);
ASSERT(ok);
ASSERT_EQUALS("n", cmdResponse["set"].str());
- ASSERT_EQUALS(2, cmdResponse["myState"].numberInt());
-
- set<string> memberList;
- BSONObjIterator iter(cmdResponse["members"].embeddedObject());
- while (iter.more()) {
- BSONElement member(iter.next());
- memberList.insert(member["name"].str());
-
- if (member["self"].trueValue()) {
- ASSERT_EQUALS(2, member["state"].numberInt());
- ASSERT_EQUALS("$n2:27017", member["name"].str());
- }
- else if (member["name"].str() == "$n0:27017") {
- ASSERT_EQUALS(1, member["state"].numberInt());
- }
- else {
- ASSERT_EQUALS(2, member["state"].numberInt());
- }
- }
-
- ASSERT(expectedMembers == memberList);
- }
-
-namespace {
- /**
- * Takes a ReplicaSetConfig and a node to remove and returns a new config with equivalent
- * members minus the one specified to be removed. NOTE: Does not copy over properties of the
- * members other than their id and host.
- */
- ReplicaSetConfig _getConfigWithMemberRemoved(
- const ReplicaSetConfig& oldConfig, const HostAndPort& toRemove) {
- BSONObjBuilder newConfigBuilder;
- newConfigBuilder.append("_id", oldConfig.getReplSetName());
- newConfigBuilder.append("version", oldConfig.getConfigVersion());
-
- BSONArrayBuilder membersBuilder(newConfigBuilder.subarrayStart("members"));
- for (ReplicaSetConfig::MemberIterator member = oldConfig.membersBegin();
- member != oldConfig.membersEnd(); ++member) {
- if (member->getHostAndPort() == toRemove) {
- continue;
- }
-
- membersBuilder.append(BSON("_id" << member->getId() <<
- "host" << member->getHostAndPort().toString()));
- }
-
- membersBuilder.done();
- ReplicaSetConfig newConfig;
- ASSERT_OK(newConfig.initialize(newConfigBuilder.obj()));
- ASSERT_OK(newConfig.validate());
- return newConfig;
- }
-} // namespace
-
- TEST(MockReplicaSetTest, IsMasterReconfigNodeRemoved) {
- MockReplicaSet replSet("n", 3);
-
- ReplicaSetConfig oldConfig = replSet.getReplConfig();
- const string hostToRemove("$n1:27017");
- ReplicaSetConfig newConfig = _getConfigWithMemberRemoved(oldConfig,
- HostAndPort(hostToRemove));
- replSet.setConfig(newConfig);
-
- {
- // Check isMaster for node still in set
- BSONObj cmdResponse;
- MockRemoteDBServer* node = replSet.getNode("$n0:27017");
- const MockRemoteDBServer::InstanceID id = node->getInstanceID();
- bool ok = node->runCommand(id, "foo.bar", BSON("ismaster" << 1), cmdResponse);
- ASSERT(ok);
-
- ASSERT(cmdResponse["ismaster"].trueValue());
- ASSERT(!cmdResponse["secondary"].trueValue());
- ASSERT_EQUALS("$n0:27017", cmdResponse["me"].str());
- ASSERT_EQUALS("$n0:27017", cmdResponse["primary"].str());
- ASSERT_EQUALS("n", cmdResponse["setName"].str());
-
- set<string> expectedHosts;
- expectedHosts.insert("$n0:27017");
- expectedHosts.insert("$n2:27017");
-
- set<string> hostList;
- BSONObjIterator iter(cmdResponse["hosts"].embeddedObject());
- while (iter.more()) {
- hostList.insert(iter.next().str());
- }
-
- ASSERT(expectedHosts == hostList);
- ASSERT(hostList.count(hostToRemove) == 0);
- }
-
- {
- // Check isMaster for node still not in set anymore
- BSONObj cmdResponse;
- MockRemoteDBServer* node = replSet.getNode(hostToRemove);
- const MockRemoteDBServer::InstanceID id = node->getInstanceID();
- bool ok = node->runCommand(id, "foo.bar", BSON("ismaster" << 1), cmdResponse);
- ASSERT(ok);
-
- ASSERT(!cmdResponse["ismaster"].trueValue());
- ASSERT(!cmdResponse["secondary"].trueValue());
- ASSERT_EQUALS(hostToRemove, cmdResponse["me"].str());
- ASSERT_EQUALS("n", cmdResponse["setName"].str());
- }
+ ASSERT_EQUALS(10, cmdResponse["myState"].numberInt());
}
+}
- TEST(MockReplicaSetTest, replSetGetStatusReconfigNodeRemoved) {
- MockReplicaSet replSet("n", 3);
-
- ReplicaSetConfig oldConfig = replSet.getReplConfig();
- const string hostToRemove("$n1:27017");
- ReplicaSetConfig newConfig = _getConfigWithMemberRemoved(oldConfig,
- HostAndPort(hostToRemove));
- replSet.setConfig(newConfig);
-
- {
- // Check replSetGetStatus for node still in set
- BSONObj cmdResponse;
- MockRemoteDBServer* node = replSet.getNode("$n2:27017");
- const MockRemoteDBServer::InstanceID id = node->getInstanceID();
- bool ok = node->runCommand(id, "foo.bar", BSON("replSetGetStatus" << 1), cmdResponse);
- ASSERT(ok);
-
- ASSERT_EQUALS("n", cmdResponse["set"].str());
- ASSERT_EQUALS(2, cmdResponse["myState"].numberInt());
-
- set<string> memberList;
- BSONObjIterator iter(cmdResponse["members"].embeddedObject());
- while (iter.more()) {
- BSONElement member(iter.next());
- memberList.insert(member["name"].str());
-
- if (member["self"].trueValue()) {
- ASSERT_EQUALS(2, member["state"].numberInt());
- ASSERT_EQUALS("$n2:27017", member["name"].str());
- }
- else if (member["name"].str() == "$n0:27017") {
- ASSERT_EQUALS(1, member["state"].numberInt());
- }
- else {
- ASSERT_EQUALS(2, member["state"].numberInt());
- }
- }
+TEST(MockReplicaSetTest, KillNode) {
+ MockReplicaSet replSet("n", 3);
+ const string priHostName(replSet.getPrimary());
+ replSet.kill(priHostName);
- set<string> expectedMembers;
- expectedMembers.insert("$n0:27017");
- expectedMembers.insert("$n2:27017");
- ASSERT(expectedMembers == memberList);
- }
+ ASSERT(!replSet.getNode(priHostName)->isRunning());
- {
- // Check replSetGetStatus for node still not in set anymore
- BSONObj cmdResponse;
- MockRemoteDBServer* node = replSet.getNode(hostToRemove);
- const MockRemoteDBServer::InstanceID id = node->getInstanceID();
- bool ok = node->runCommand(id, "foo.bar", BSON("replSetGetStatus" << 1), cmdResponse);
- ASSERT(ok);
-
- ASSERT_EQUALS("n", cmdResponse["set"].str());
- ASSERT_EQUALS(10, cmdResponse["myState"].numberInt());
- }
+ const vector<string> secondaries = replSet.getSecondaries();
+ for (vector<string>::const_iterator iter = secondaries.begin(); iter != secondaries.end();
+ ++iter) {
+ ASSERT(replSet.getNode(*iter)->isRunning());
}
+}
- TEST(MockReplicaSetTest, KillNode) {
- MockReplicaSet replSet("n", 3);
- const string priHostName(replSet.getPrimary());
- replSet.kill(priHostName);
+TEST(MockReplicaSetTest, KillMultipleNode) {
+ MockReplicaSet replSet("n", 3);
- ASSERT(!replSet.getNode(priHostName)->isRunning());
+ const vector<string> secondaries = replSet.getSecondaries();
+ replSet.kill(replSet.getSecondaries());
- const vector<string> secondaries = replSet.getSecondaries();
- for (vector<string>::const_iterator iter = secondaries.begin();
- iter != secondaries.end(); ++iter) {
- ASSERT(replSet.getNode(*iter)->isRunning());
- }
+ for (vector<string>::const_iterator iter = secondaries.begin(); iter != secondaries.end();
+ ++iter) {
+ ASSERT(!replSet.getNode(*iter)->isRunning());
}
- TEST(MockReplicaSetTest, KillMultipleNode) {
- MockReplicaSet replSet("n", 3);
-
- const vector<string> secondaries = replSet.getSecondaries();
- replSet.kill(replSet.getSecondaries());
-
- for (vector<string>::const_iterator iter = secondaries.begin();
- iter != secondaries.end(); ++iter) {
- ASSERT(!replSet.getNode(*iter)->isRunning());
- }
-
- const string priHostName(replSet.getPrimary());
- ASSERT(replSet.getNode(priHostName)->isRunning());
- }
+ const string priHostName(replSet.getPrimary());
+ ASSERT(replSet.getNode(priHostName)->isRunning());
+}
}
-