diff options
author | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2015-05-26 14:28:32 -0400 |
---|---|---|
committer | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2015-05-28 07:56:01 -0400 |
commit | cb4aaa05318c532b7df2f363555df5f49cd4ff7f (patch) | |
tree | 022876e06a3dd6875733768a0d5eaf9846a23e3f /src/mongo/dbtests | |
parent | 845a2dcc23a597520065d1258089cc87dabf6cb8 (diff) | |
download | mongo-cb4aaa05318c532b7df2f363555df5f49cd4ff7f.tar.gz |
SERVER-18438 Move replica set monitor tests out of dbtest
Diffstat (limited to 'src/mongo/dbtests')
-rw-r--r-- | src/mongo/dbtests/replica_set_monitor_test.cpp | 1369 |
1 files changed, 20 insertions, 1349 deletions
diff --git a/src/mongo/dbtests/replica_set_monitor_test.cpp b/src/mongo/dbtests/replica_set_monitor_test.cpp index a7e384766dd..33d489b2973 100644 --- a/src/mongo/dbtests/replica_set_monitor_test.cpp +++ b/src/mongo/dbtests/replica_set_monitor_test.cpp @@ -39,1345 +39,15 @@ #include <set> #include <vector> -using std::map; -using std::vector; -using std::set; -using std::string; -using boost::scoped_ptr; - -using mongo::BSONObj; -using mongo::BSONObjBuilder; -using mongo::BSONArray; -using mongo::BSONArrayBuilder; -using mongo::BSONElement; -using mongo::ConnectionString; -using mongo::HostAndPort; -using mongo::MockReplicaSet; -using mongo::ReadPreference; -using mongo::ReadPreferenceSetting; -using mongo::repl::ReplicaSetConfig; -using mongo::ReplicaSetMonitor; -using mongo::ReplicaSetMonitorPtr; -using mongo::ScopedDbConnection; -using mongo::TagSet; - -// Pull nested types to top-level scope -typedef ReplicaSetMonitor::IsMasterReply IsMasterReply; -typedef ReplicaSetMonitor::ScanState ScanState; -typedef ReplicaSetMonitor::ScanStatePtr ScanStatePtr; -typedef ReplicaSetMonitor::SetState SetState; -typedef ReplicaSetMonitor::SetStatePtr SetStatePtr; -typedef ReplicaSetMonitor::Refresher Refresher; -typedef Refresher::NextStep NextStep; -typedef ScanState::UnconfirmedReplies UnconfirmedReplies; -typedef SetState::Node Node; -typedef SetState::Nodes Nodes; - -namespace mongo_test { - - bool isCompatible(const Node& node, ReadPreference pref, const TagSet& tagSet) { - set<HostAndPort> seeds; - seeds.insert(node.host); - SetState set("name", seeds); - set.nodes.push_back(node); - - ReadPreferenceSetting criteria(pref, tagSet); - return !set.getMatchingHost(criteria).empty(); - } - - HostAndPort selectNode(const vector<Node>& nodes, - ReadPreference pref, - const TagSet& tagSet, - int latencyThresholdMillis, - bool* isPrimarySelected) - { - invariant(!nodes.empty()); - set<HostAndPort> seeds; - seeds.insert(nodes.front().host); - SetState set("name", seeds); - set.nodes = nodes; - set.latencyThresholdMicros = latencyThresholdMillis * 1000; - - ReadPreferenceSetting criteria(pref, tagSet); - HostAndPort out = set.getMatchingHost(criteria); - if (isPrimarySelected) - *isPrimarySelected = !out.empty() && set.findNode(out)->isMaster; - return out; - } - - - const BSONObj SampleIsMasterDoc = BSON("tags" - << BSON("dc" << "NYC" - << "p" << "2" - << "region" << "NA")); - const BSONObj SampleTags = SampleIsMasterDoc["tags"].Obj(); - const BSONObj NoTags = BSONObj(); - const BSONObj NoTagIsMasterDoc = BSON("isMaster" << true); - - TEST(ReplSetMonitorNode, SimpleGoodMatch) { - Node node(((HostAndPort()))); - node.tags = BSON("dc" << "sf"); - ASSERT(node.matches(BSON("dc" << "sf"))); - } - - TEST(ReplSetMonitorNode, SimpleBadMatch) { - Node node((HostAndPort())); - node.tags = BSON("dc" << "nyc"); - ASSERT(!node.matches(BSON("dc" << "sf"))); - } - - TEST(ReplSetMonitorNode, ExactMatch) { - Node node((HostAndPort())); - node.tags = SampleTags; - ASSERT(node.matches(SampleIsMasterDoc["tags"].Obj())); - } - - TEST(ReplSetMonitorNode, EmptyTag) { - Node node((HostAndPort())); - node.tags = SampleTags; - ASSERT(node.matches(BSONObj())); - } - - TEST(ReplSetMonitorNode, MemberNoTagMatchesEmptyTag) { - Node node((HostAndPort())); - node.tags = NoTags; - ASSERT(node.matches(BSONObj())); - } - - TEST(ReplSetMonitorNode, MemberNoTagDoesNotMatch) { - Node node((HostAndPort())); - node.tags = NoTags; - ASSERT(!node.matches(BSON("dc" << "NYC"))); - } - - TEST(ReplSetMonitorNode, IncompleteMatch) { - Node node((HostAndPort())); - node.tags = SampleTags; - ASSERT(!node.matches(BSON("dc" << "NYC" - << "p" << "2" - << "hello" << "world"))); - } - - TEST(ReplSetMonitorNode, PartialMatch) { - Node node((HostAndPort())); - node.tags = SampleTags; - ASSERT(node.matches(BSON("dc" << "NYC" - << "p" << "2"))); - } - - TEST(ReplSetMonitorNode, SingleTagCrit) { - Node node((HostAndPort())); - node.tags = SampleTags; - ASSERT(node.matches(BSON("p" << "2"))); - } - - TEST(ReplSetMonitorNode, BadSingleTagCrit) { - Node node((HostAndPort())); - node.tags = SampleTags; - ASSERT(!node.matches(BSON("dc" << "SF"))); - } - - TEST(ReplSetMonitorNode, NonExistingFieldTag) { - Node node((HostAndPort())); - node.tags = SampleTags; - ASSERT(!node.matches(BSON("noSQL" << "Mongo"))); - } - - TEST(ReplSetMonitorNode, UnorederedMatching) { - Node node((HostAndPort())); - node.tags = SampleTags; - ASSERT(node.matches(BSON("p" << "2" << "dc" << "NYC"))); - } - - TEST(ReplSetMonitorNode, SameValueDiffKey) { - Node node((HostAndPort())); - node.tags = SampleTags; - ASSERT(!node.matches(BSON("datacenter" << "NYC"))); - } - - TEST(ReplSetMonitorNode, PriNodeCompatibleTag) { - Node node(HostAndPort("dummy", 3)); - node.tags = SampleTags; - - node.isUp = true; - node.isMaster = true; - - BSONArrayBuilder builder; - builder.append(BSON("dc" << "NYC")); - - TagSet tags(BSONArray(builder.done())); - - ASSERT(isCompatible(node, mongo::ReadPreference::PrimaryOnly, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::PrimaryPreferred, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::SecondaryPreferred, tags)); - ASSERT(!isCompatible(node, mongo::ReadPreference::SecondaryOnly, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::Nearest, tags)); - } - - TEST(ReplSetMonitorNode, SecNodeCompatibleTag) { - Node node(HostAndPort("dummy", 3)); - node.tags = SampleTags; - - node.isUp = true; - node.isMaster = false; - - BSONArrayBuilder builder; - builder.append(BSON("dc" << "NYC")); - - TagSet tags(BSONArray(builder.done())); - - ASSERT(!isCompatible(node, mongo::ReadPreference::PrimaryOnly, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::PrimaryPreferred, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::SecondaryPreferred, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::SecondaryOnly, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::Nearest, tags)); - } - - TEST(ReplSetMonitorNode, PriNodeNotCompatibleTag) { - Node node(HostAndPort("dummy", 3)); - node.tags = SampleTags; - - node.isUp = true; - node.isMaster = true; - - BSONArrayBuilder builder; - builder.append(BSON("dc" << "SF")); - - TagSet tags(BSONArray(builder.done())); - - ASSERT(isCompatible(node, mongo::ReadPreference::PrimaryOnly, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::PrimaryPreferred, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::SecondaryPreferred, tags)); - ASSERT(!isCompatible(node, mongo::ReadPreference::SecondaryOnly, tags)); - ASSERT(!isCompatible(node, mongo::ReadPreference::Nearest, tags)); - } - - TEST(ReplSetMonitorNode, SecNodeNotCompatibleTag) { - Node node(HostAndPort("dummy", 3)); - node.tags = SampleTags; - - node.isUp = true; - node.isMaster = false; - - BSONArrayBuilder builder; - builder.append(BSON("dc" << "SF")); - - TagSet tags(BSONArray(builder.done())); - - ASSERT(!isCompatible(node, mongo::ReadPreference::PrimaryOnly, tags)); - ASSERT(!isCompatible(node, mongo::ReadPreference::PrimaryPreferred, tags)); - ASSERT(!isCompatible(node, mongo::ReadPreference::SecondaryPreferred, tags)); - ASSERT(!isCompatible(node, mongo::ReadPreference::SecondaryOnly, tags)); - ASSERT(!isCompatible(node, mongo::ReadPreference::Nearest, tags)); - } - - TEST(ReplSetMonitorNode, PriNodeCompatiblMultiTag) { - Node node(HostAndPort("dummy", 3)); - node.tags = SampleTags; - - node.isUp = true; - node.isMaster = true; - - BSONArrayBuilder builder; - builder.append(BSON("dc" << "RP")); - builder.append(BSON("dc" << "NYC" << "p" << "2")); - - TagSet tags(BSONArray(builder.done())); - - ASSERT(isCompatible(node, mongo::ReadPreference::PrimaryOnly, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::PrimaryPreferred, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::SecondaryPreferred, tags)); - ASSERT(!isCompatible(node, mongo::ReadPreference::SecondaryOnly, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::Nearest, tags)); - } - - TEST(ReplSetMonitorNode, SecNodeCompatibleMultiTag) { - Node node(HostAndPort("dummy", 3)); - node.tags = SampleTags; - - node.isUp = true; - node.isMaster = false; - - BSONArrayBuilder builder; - builder.append(BSON("dc" << "RP")); - builder.append(BSON("dc" << "NYC" << "p" << "2")); - - TagSet tags(BSONArray(builder.done())); - - ASSERT(!isCompatible(node, mongo::ReadPreference::PrimaryOnly, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::PrimaryPreferred, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::SecondaryPreferred, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::SecondaryOnly, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::Nearest, tags)); - } - - TEST(ReplSetMonitorNode, PriNodeNotCompatibleMultiTag) { - Node node(HostAndPort("dummy", 3)); - node.tags = SampleTags; - - node.isUp = true; - node.isMaster = true; - - BSONArrayBuilder builder; - builder.append(BSON("dc" << "sf")); - builder.append(BSON("dc" << "NYC" << "P" << "4")); - - TagSet tags(BSONArray(builder.done())); - - ASSERT(isCompatible(node, mongo::ReadPreference::PrimaryOnly, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::PrimaryPreferred, tags)); - ASSERT(isCompatible(node, mongo::ReadPreference::SecondaryPreferred, tags)); - ASSERT(!isCompatible(node, mongo::ReadPreference::SecondaryOnly, tags)); - ASSERT(!isCompatible(node, mongo::ReadPreference::Nearest, tags)); - } - - TEST(ReplSetMonitorNode, SecNodeNotCompatibleMultiTag) { - Node node(HostAndPort("dummy", 3)); - node.tags = SampleTags; - - node.isUp = true; - node.isMaster = false; - - BSONArrayBuilder builder; - builder.append(BSON("dc" << "sf")); - builder.append(BSON("dc" << "NYC" << "P" << "4")); - - TagSet tags(BSONArray(builder.done())); - - ASSERT(!isCompatible(node, mongo::ReadPreference::PrimaryOnly, tags)); - ASSERT(!isCompatible(node, mongo::ReadPreference::PrimaryPreferred, tags)); - ASSERT(!isCompatible(node, mongo::ReadPreference::SecondaryPreferred, tags)); - ASSERT(!isCompatible(node, mongo::ReadPreference::SecondaryOnly, tags)); - ASSERT(!isCompatible(node, mongo::ReadPreference::Nearest, tags)); - } - - - class NodeSetFixtures { - public: - static vector<Node> getThreeMemberWithTags(); - }; - - vector<Node> NodeSetFixtures::getThreeMemberWithTags() { - vector<Node> nodes; - - nodes.push_back(Node(HostAndPort("a"))); - nodes.push_back(Node(HostAndPort("b"))); - nodes.push_back(Node(HostAndPort("c"))); - - nodes[0].isUp = true; - nodes[1].isUp = true; - nodes[2].isUp = true; - - nodes[0].isMaster = false; - nodes[1].isMaster = true; - nodes[2].isMaster = false; - - nodes[0].tags = BSON("dc" << "nyc" << "p" << "1"); - nodes[1].tags = BSON("dc" << "sf"); - nodes[2].tags = BSON("dc" << "nyc" << "p" << "2"); - - return nodes; - } - - class TagSetFixtures { - public: - static BSONArray getDefaultSet(); - static BSONArray getP2Tag(); - static BSONArray getSingleNoMatchTag(); - static BSONArray getMultiNoMatchTag(); - }; - - BSONArray TagSetFixtures::getDefaultSet() { - BSONArrayBuilder arrayBuilder; - arrayBuilder.append(BSONObj()); - return arrayBuilder.arr(); - } - - BSONArray TagSetFixtures::getP2Tag() { - BSONArrayBuilder arrayBuilder; - arrayBuilder.append(BSON("p" << "2")); - return arrayBuilder.arr(); - } - - BSONArray TagSetFixtures::getSingleNoMatchTag() { - BSONArrayBuilder arrayBuilder; - arrayBuilder.append(BSON("k" << "x")); - return arrayBuilder.arr(); - } - - BSONArray TagSetFixtures::getMultiNoMatchTag() { - BSONArrayBuilder arrayBuilder; - arrayBuilder.append(BSON("mongo" << "db")); - arrayBuilder.append(BSON("by" << "10gen")); - return arrayBuilder.arr(); - } - - TEST(ReplSetMonitorReadPref, PrimaryOnly) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getDefaultSet()); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryOnly, tags, 3, - &isPrimarySelected); - - ASSERT(isPrimarySelected); - ASSERT_EQUALS("b", host.host()); - } - - TEST(ReplSetMonitorReadPref, PrimaryOnlyPriNotOk) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getDefaultSet()); - - nodes[1].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryOnly, tags, 3, - &isPrimarySelected); - - ASSERT(host.empty()); - } - - TEST(ReplSetMonitorReadPref, PrimaryMissing) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getDefaultSet()); - - nodes[1].isMaster = false; - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryOnly, tags, 3, - &isPrimarySelected); - - ASSERT(host.empty()); - } - - TEST(ReplSetMonitorReadPref, PriPrefWithPriOk) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - - TagSet tags(TagSetFixtures::getDefaultSet()); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryPreferred, tags, 1, - &isPrimarySelected); - - ASSERT(isPrimarySelected); - ASSERT_EQUALS("b", host.host()); - } - - TEST(ReplSetMonitorReadPref, PriPrefWithPriNotOk) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getDefaultSet()); - - nodes[1].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryPreferred, tags, 1, - &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT(host.host() == "a" || host.host() == "c"); - } - - TEST(ReplSetMonitorReadPref, SecOnly) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getDefaultSet()); - - nodes[2].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryOnly, tags, 1, - &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("a", host.host()); - } - - TEST(ReplSetMonitorReadPref, SecOnlyOnlyPriOk) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getDefaultSet()); - - nodes[0].markFailed(); - nodes[2].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryOnly, tags, 1, - &isPrimarySelected); - - ASSERT(host.empty()); - } - - TEST(ReplSetMonitorReadPref, SecPref) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getDefaultSet()); - - nodes[2].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryPreferred, tags, 1, - &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("a", host.host()); - } - - TEST(ReplSetMonitorReadPref, SecPrefWithNoSecOk) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getDefaultSet()); - - nodes[0].markFailed(); - nodes[2].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryPreferred, tags, 1, - &isPrimarySelected); - - ASSERT(isPrimarySelected); - ASSERT_EQUALS("b", host.host()); - } - - TEST(ReplSetMonitorReadPref, SecPrefWithNoNodeOk) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getDefaultSet()); - - nodes[0].markFailed(); - nodes[1].markFailed(); - nodes[2].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryPreferred, tags, 1, - &isPrimarySelected); - - ASSERT(host.empty()); - } - - TEST(ReplSetMonitorReadPref, NearestAllLocal) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getDefaultSet()); - - nodes[0].latencyMicros = 1*1000; - nodes[1].latencyMicros = 2*1000; - nodes[2].latencyMicros = 3*1000; - - bool isPrimarySelected = 0; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::Nearest, tags, 3, - &isPrimarySelected); - - // Any host is ok - ASSERT(!host.empty()); - ASSERT_EQUALS(isPrimarySelected, host.host() == "b"); - } - - TEST(ReplSetMonitorReadPref, NearestOneLocal) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getDefaultSet()); - - nodes[0].latencyMicros = 10*1000; - nodes[1].latencyMicros = 20*1000; - nodes[2].latencyMicros = 30*1000; - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::Nearest, tags, 3, - &isPrimarySelected); - - ASSERT_EQUALS("a", host.host()); - ASSERT(!isPrimarySelected); - } - - TEST(ReplSetMonitorReadPref, PriOnlyWithTagsNoMatch) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getP2Tag()); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryOnly, tags, 3, - &isPrimarySelected); - - ASSERT(isPrimarySelected); - // Note: PrimaryOnly ignores tag - ASSERT_EQUALS("b", host.host()); - } - - TEST(ReplSetMonitorReadPref, PriPrefPriNotOkWithTags) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getP2Tag()); - - nodes[1].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryPreferred, tags, 3, - &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("c", host.host()); - } - - TEST(ReplSetMonitorReadPref, PriPrefPriOkWithTagsNoMatch) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getSingleNoMatchTag()); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryPreferred, tags, 3, - &isPrimarySelected); - - ASSERT(isPrimarySelected); - ASSERT_EQUALS("b", host.host()); - } - - TEST(ReplSetMonitorReadPref, PriPrefPriNotOkWithTagsNoMatch) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getSingleNoMatchTag()); - - nodes[1].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryPreferred, tags, 3, - &isPrimarySelected); - - ASSERT(host.empty()); - } - - TEST(ReplSetMonitorReadPref, SecOnlyWithTags) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getP2Tag()); - - bool isPrimarySelected; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryOnly, tags, 3, - &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("c", host.host()); - } - - TEST(ReplSetMonitorReadPref, SecOnlyWithTagsMatchOnlyPri) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - - BSONArrayBuilder arrayBuilder; - arrayBuilder.append(BSON("dc" << "sf")); - TagSet tags(arrayBuilder.arr()); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryOnly, tags, 3, - &isPrimarySelected); - - ASSERT(host.empty()); - } - - TEST(ReplSetMonitorReadPref, SecPrefWithTags) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getP2Tag()); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryPreferred, tags, 3, - &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("c", host.host()); - } - - TEST(ReplSetMonitorReadPref, SecPrefSecNotOkWithTags) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - - BSONArrayBuilder arrayBuilder; - arrayBuilder.append(BSON("dc" << "nyc")); - TagSet tags(arrayBuilder.arr()); - - nodes[2].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryPreferred, tags, 3, - &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("a", host.host()); - } - - TEST(ReplSetMonitorReadPref, SecPrefPriOkWithTagsNoMatch) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getSingleNoMatchTag()); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryPreferred, tags, 3, - &isPrimarySelected); - - ASSERT(isPrimarySelected); - ASSERT_EQUALS("b", host.host()); - } - - TEST(ReplSetMonitorReadPref, SecPrefPriNotOkWithTagsNoMatch) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getSingleNoMatchTag()); - - nodes[1].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryPreferred, tags, 3, - &isPrimarySelected); - - ASSERT(host.empty()); - } - - TEST(ReplSetMonitorReadPref, SecPrefPriOkWithSecNotMatchTag) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getSingleNoMatchTag()); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryPreferred, tags, 3, - &isPrimarySelected); - - ASSERT(isPrimarySelected); - ASSERT_EQUALS("b", host.host()); - } - - TEST(ReplSetMonitorReadPref, NearestWithTags) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - - BSONArrayBuilder arrayBuilder; - arrayBuilder.append(BSON("p" << "1")); - TagSet tags(arrayBuilder.arr()); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::Nearest, tags, 3, - &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("a", host.host()); - } - - TEST(ReplSetMonitorReadPref, NearestWithTagsNoMatch) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getSingleNoMatchTag()); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::Nearest, tags, 3, - &isPrimarySelected); - - ASSERT(host.empty()); - } - - TEST(ReplSetMonitorReadPref, MultiPriOnlyTag) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getMultiNoMatchTag()); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryOnly, tags, 3, - &isPrimarySelected); - - ASSERT(isPrimarySelected); - ASSERT_EQUALS("b", host.host()); - } - - TEST(ReplSetMonitorReadPref, MultiPriOnlyPriNotOkTag) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getMultiNoMatchTag()); - - nodes[1].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryOnly, tags, 3, - &isPrimarySelected); - - ASSERT(host.empty()); - } - - TEST(ReplSetMonitorReadPref, PriPrefPriOk) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - - BSONArrayBuilder arrayBuilder; - arrayBuilder.append(BSON("p" << "1")); - arrayBuilder.append(BSON("p" << "2")); - - TagSet tags(arrayBuilder.arr()); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryPreferred, tags, 3, - &isPrimarySelected); - - ASSERT(isPrimarySelected); - ASSERT_EQUALS("b", host.host()); - } - - class MultiTags: public mongo::unittest::Test { - public: - vector<Node> getNodes() const { - return NodeSetFixtures::getThreeMemberWithTags(); - } - - const TagSet& getMatchesFirstTagSet() { - if (matchFirstTags.get() != NULL) { - return *matchFirstTags; - } - - BSONArrayBuilder arrayBuilder; - arrayBuilder.append(BSON("p" << "1")); - arrayBuilder.append(BSON("p" << "2")); - matchFirstTags.reset(new TagSet(arrayBuilder.arr())); - - return *matchFirstTags; - } - - const TagSet& getMatchesSecondTagSet() { - if (matchSecondTags.get() != NULL) { - return *matchSecondTags; - } - - BSONArrayBuilder arrayBuilder; - arrayBuilder.append(BSON("p" << "3")); - arrayBuilder.append(BSON("p" << "2")); - arrayBuilder.append(BSON("p" << "1")); - matchSecondTags.reset(new TagSet(arrayBuilder.arr())); - - return *matchSecondTags; - } - - const TagSet& getMatchesLastTagSet() { - if (matchLastTags.get() != NULL) { - return *matchLastTags; - } - - BSONArrayBuilder arrayBuilder; - arrayBuilder.append(BSON("p" << "12")); - arrayBuilder.append(BSON("p" << "23")); - arrayBuilder.append(BSON("p" << "19")); - arrayBuilder.append(BSON("p" << "34")); - arrayBuilder.append(BSON("p" << "1")); - matchLastTags.reset(new TagSet(arrayBuilder.arr())); - - return *matchLastTags; - } - - const TagSet& getMatchesPriTagSet() { - if (matchPriTags.get() != NULL) { - return *matchPriTags; - } - - BSONArrayBuilder arrayBuilder; - arrayBuilder.append(BSON("dc" << "sf")); - arrayBuilder.append(BSON("p" << "1")); - matchPriTags.reset(new TagSet(arrayBuilder.arr())); - - return *matchPriTags; - } - - private: - scoped_ptr<TagSet> matchFirstTags; - scoped_ptr<TagSet> matchSecondTags; - scoped_ptr<TagSet> matchLastTags; - scoped_ptr<TagSet> matchPriTags; - }; - - TEST_F(MultiTags, MultiTagsMatchesFirst) { - vector<Node> nodes = getNodes(); - - nodes[1].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryPreferred, getMatchesFirstTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("a", host.host()); - } - - TEST_F(MultiTags, PriPrefPriNotOkMatchesFirstNotOk) { - vector<Node> nodes = getNodes(); - - nodes[0].markFailed(); - nodes[1].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryPreferred, getMatchesFirstTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("c", host.host()); - } - - TEST_F(MultiTags, PriPrefPriNotOkMatchesSecondTest) { - vector<Node> nodes = getNodes(); - - nodes[1].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryPreferred, getMatchesSecondTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("c", host.host()); - } - - TEST_F(MultiTags, PriPrefPriNotOkMatchesSecondNotOkTest) { - vector<Node> nodes = getNodes(); - - nodes[1].markFailed(); - nodes[2].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryPreferred, getMatchesSecondTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("a", host.host()); - } - - TEST_F(MultiTags, PriPrefPriNotOkMatchesLastTest) { - vector<Node> nodes = getNodes(); - - nodes[1].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryPreferred, getMatchesLastTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("a", host.host()); - } - - TEST_F(MultiTags, PriPrefPriNotOkMatchesLastNotOkTest) { - vector<Node> nodes = getNodes(); - - nodes[0].markFailed(); - nodes[1].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryPreferred, getMatchesLastTagSet(), - 3, &isPrimarySelected); - - ASSERT(host.empty()); - } - - TEST(MultiTags, PriPrefPriOkNoMatch) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - - TagSet tags(TagSetFixtures::getMultiNoMatchTag()); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryPreferred, tags, 3, - &isPrimarySelected); - - ASSERT(isPrimarySelected); - ASSERT_EQUALS("b", host.host()); - } - - TEST(MultiTags, PriPrefPriNotOkNoMatch) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getMultiNoMatchTag()); - - nodes[1].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::PrimaryPreferred, tags, 3, - &isPrimarySelected); - - ASSERT(host.empty()); - } - - TEST_F(MultiTags, SecOnlyMatchesFirstTest) { - vector<Node> nodes = getNodes(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryOnly, getMatchesFirstTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("a", host.host()); - } - - TEST_F(MultiTags, SecOnlyMatchesFirstNotOk) { - vector<Node> nodes = getNodes(); - - nodes[0].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryOnly, getMatchesFirstTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("c", host.host()); - } - - TEST_F(MultiTags, SecOnlyMatchesSecond) { - vector<Node> nodes = getNodes(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryOnly, getMatchesSecondTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("c", host.host()); - } - - TEST_F(MultiTags, SecOnlyMatchesSecondNotOk) { - vector<Node> nodes = getNodes(); - - nodes[2].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryOnly, getMatchesSecondTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("a", host.host()); - } - - TEST_F(MultiTags, SecOnlyMatchesLast) { - vector<Node> nodes = getNodes(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryOnly, getMatchesLastTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("a", host.host()); - } - - TEST_F(MultiTags, SecOnlyMatchesLastNotOk) { - vector<Node> nodes = getNodes(); - - nodes[0].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryOnly, getMatchesLastTagSet(), - 3, &isPrimarySelected); - - ASSERT(host.empty()); - } - - TEST_F(MultiTags, SecOnlyMultiTagsWithPriMatch) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryOnly, getMatchesPriTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("a", host.host()); - } - - TEST_F(MultiTags, SecOnlyMultiTagsNoMatch) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getMultiNoMatchTag()); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryOnly, tags, 3, - &isPrimarySelected); - - ASSERT(host.empty()); - } - - TEST_F(MultiTags, SecPrefMatchesFirst) { - vector<Node> nodes = getNodes(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryPreferred, getMatchesFirstTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("a", host.host()); - } - - TEST_F(MultiTags, SecPrefMatchesFirstNotOk) { - vector<Node> nodes = getNodes(); - - nodes[0].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryPreferred, getMatchesFirstTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("c", host.host()); - } - - TEST_F(MultiTags, SecPrefMatchesSecond) { - vector<Node> nodes = getNodes(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryPreferred, getMatchesSecondTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("c", host.host()); - } - - TEST_F(MultiTags, SecPrefMatchesSecondNotOk) { - vector<Node> nodes = getNodes(); - - nodes[2].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryPreferred, getMatchesSecondTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("a", host.host()); - } - - TEST_F(MultiTags, SecPrefMatchesLast) { - vector<Node> nodes = getNodes(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryPreferred, getMatchesLastTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("a", host.host()); - } - - TEST_F(MultiTags, SecPrefMatchesLastNotOk) { - vector<Node> nodes = getNodes(); - - nodes[0].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryPreferred, getMatchesLastTagSet(), - 3, &isPrimarySelected); - - ASSERT(isPrimarySelected); - ASSERT_EQUALS("b", host.host()); - } - - TEST_F(MultiTags, SecPrefMultiTagsWithPriMatch) { - vector<Node> nodes = getNodes(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryPreferred, getMatchesPriTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("a", host.host()); - } - - TEST(MultiTags, SecPrefMultiTagsNoMatch) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getMultiNoMatchTag()); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryPreferred, tags, 3, - &isPrimarySelected); - - ASSERT(isPrimarySelected); - ASSERT_EQUALS("b", host.host()); - } - - TEST(MultiTags, SecPrefMultiTagsNoMatchPriNotOk) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getMultiNoMatchTag()); - - nodes[1].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::SecondaryPreferred, tags, 3, - &isPrimarySelected); - - ASSERT(host.empty()); - } - - TEST_F(MultiTags, NearestMatchesFirst) { - vector<Node> nodes = getNodes(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::Nearest, getMatchesFirstTagSet(), - 3, &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("a", host.host()); - } - - TEST(MultiTags, NearestMatchesFirstNotOk) { - vector<Node> nodes = NodeSetFixtures::getThreeMemberWithTags(); - - BSONArrayBuilder arrayBuilder; - arrayBuilder.append(BSON("p" << "1")); - arrayBuilder.append(BSON("dc" << "sf")); - - TagSet tags(arrayBuilder.arr()); - - nodes[0].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::Nearest, tags, 3, - &isPrimarySelected); - - ASSERT(isPrimarySelected); - ASSERT_EQUALS("b", host.host()); - } - - TEST_F(MultiTags, NearestMatchesSecond) { - vector<Node> nodes = getNodes(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::Nearest, getMatchesSecondTagSet(), 3, - &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("c", host.host()); - } - - TEST_F(MultiTags, NearestMatchesSecondNotOk) { - vector<Node> nodes = NodeSetFixtures::getThreeMemberWithTags(); - - BSONArrayBuilder arrayBuilder; - arrayBuilder.append(BSON("z" << "2")); - arrayBuilder.append(BSON("p" << "2")); - arrayBuilder.append(BSON("dc" << "sf")); - - TagSet tags(arrayBuilder.arr()); - - nodes[2].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::Nearest, tags, 3, - &isPrimarySelected); - - ASSERT(isPrimarySelected); - ASSERT_EQUALS("b", host.host()); - } - - TEST_F(MultiTags, NearestMatchesLast) { - vector<Node> nodes = getNodes(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::Nearest, getMatchesLastTagSet(), 3, - &isPrimarySelected); - - ASSERT(!isPrimarySelected); - ASSERT_EQUALS("a", host.host()); - } - - TEST_F(MultiTags, NeatestMatchesLastNotOk) { - vector<Node> nodes = getNodes(); - - nodes[0].markFailed(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::Nearest, getMatchesLastTagSet(), 3, - &isPrimarySelected); - - ASSERT(host.empty()); - } - - TEST_F(MultiTags, NearestMultiTagsWithPriMatch) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::Nearest, getMatchesPriTagSet(), 3, - &isPrimarySelected); - - ASSERT(isPrimarySelected); - ASSERT_EQUALS("b", host.host()); - } - - TEST(MultiTags, NearestMultiTagsNoMatch) { - vector<Node> nodes = - NodeSetFixtures::getThreeMemberWithTags(); - TagSet tags(TagSetFixtures::getMultiNoMatchTag()); - - bool isPrimarySelected = false; - HostAndPort host = selectNode(nodes, - mongo::ReadPreference::Nearest, tags, 3, - &isPrimarySelected); - - ASSERT(host.empty()); - } +namespace { - TEST(TagSet, DefaultConstructorMatchesAll) { - TagSet tags; - ASSERT_EQUALS(tags.getTagBSON(), BSON_ARRAY(BSONObj())); - } + using namespace mongo; + using std::map; + using std::vector; + using std::set; + using std::string; + using boost::scoped_ptr; // TODO: Port these existing tests here: replmonitor_bad_seed.js, repl_monitor_refresh.js @@ -1433,18 +103,18 @@ namespace mongo_test { namespace { /** - * Takes a ReplicaSetConfig and a node to remove and returns a new config with equivalent + * Takes a repl::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) { + repl::ReplicaSetConfig _getConfigWithMemberRemoved(const repl::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(); + for (repl::ReplicaSetConfig::MemberIterator member = oldConfig.membersBegin(); member != oldConfig.membersEnd(); ++member) { if (member->getHostAndPort() == toRemove) { continue; @@ -1455,7 +125,7 @@ namespace { } membersBuilder.done(); - ReplicaSetConfig newConfig; + repl::ReplicaSetConfig newConfig; ASSERT_OK(newConfig.initialize(newConfigBuilder.obj())); ASSERT_OK(newConfig.validate()); return newConfig; @@ -1478,7 +148,7 @@ namespace { seedList.insert(HostAndPort(replSet.getPrimary())); ReplicaSetMonitor::createIfNeeded(replSetName, seedList); - const ReplicaSetConfig& origConfig = replSet.getReplConfig(); + const repl::ReplicaSetConfig& origConfig = replSet.getReplConfig(); mongo::ReplicaSetMonitorPtr replMonitor = ReplicaSetMonitor::get(replSetName); for (size_t idxToRemove = 0; idxToRemove < NODE_COUNT; idxToRemove++) { @@ -1502,8 +172,8 @@ namespace { // Make sure the monitor sees the new primary replMonitor->startOrContinueRefresh().refreshAll(); - mongo::repl::ReplicaSetConfig newConfig = _getConfigWithMemberRemoved( - origConfig, HostAndPort(hostToRemove)); + repl::ReplicaSetConfig newConfig = + _getConfigWithMemberRemoved(origConfig, HostAndPort(hostToRemove)); replSet.setConfig(newConfig); replSet.setPrimary(newConfig.getMemberAt(0).getHostAndPort().toString()); // Force refresh -> should not crash @@ -1527,7 +197,7 @@ namespace { ConnectionString::setConnectionHook( mongo::MockConnRegistry::get()->getConnStrHook()); - mongo::repl::ReplicaSetConfig oldConfig = _replSet->getReplConfig(); + repl::ReplicaSetConfig oldConfig = _replSet->getReplConfig(); mongo::BSONObjBuilder newConfigBuilder; newConfigBuilder.append("_id", oldConfig.getReplSetName()); @@ -1556,11 +226,11 @@ namespace { } membersBuilder.done(); - mongo::repl::ReplicaSetConfig newConfig; + + repl::ReplicaSetConfig newConfig; fassert(28572, newConfig.initialize(newConfigBuilder.done())); fassert(28571, newConfig.validate()); _replSet->setConfig(newConfig); - } void tearDown() { @@ -1630,4 +300,5 @@ namespace { ASSERT_FALSE(monitor->isPrimary(node)); ASSERT_EQUALS(secHost, node.toString()); } -} + +} // namespace mongo |