diff options
author | Mark Benvenuto <mark.benvenuto@mongodb.com> | 2015-06-20 00:22:50 -0400 |
---|---|---|
committer | Mark Benvenuto <mark.benvenuto@mongodb.com> | 2015-06-20 10:56:02 -0400 |
commit | 9c2ed42daa8fbbef4a919c21ec564e2db55e8d60 (patch) | |
tree | 3814f79c10d7b490948d8cb7b112ac1dd41ceff1 /src/mongo/dbtests/mock_replica_set_test.cpp | |
parent | 01965cf52bce6976637ecb8f4a622aeb05ab256a (diff) | |
download | mongo-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.cpp | 580 |
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()); +} } - |