summaryrefslogtreecommitdiff
path: root/src/mongo/dbtests
diff options
context:
space:
mode:
authorKaloian Manassiev <kaloian.manassiev@mongodb.com>2015-05-26 14:28:32 -0400
committerKaloian Manassiev <kaloian.manassiev@mongodb.com>2015-05-28 07:56:01 -0400
commitcb4aaa05318c532b7df2f363555df5f49cd4ff7f (patch)
tree022876e06a3dd6875733768a0d5eaf9846a23e3f /src/mongo/dbtests
parent845a2dcc23a597520065d1258089cc87dabf6cb8 (diff)
downloadmongo-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.cpp1369
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