summaryrefslogtreecommitdiff
path: root/src/mongo/client/replica_set_monitor_read_preference_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/client/replica_set_monitor_read_preference_test.cpp')
-rw-r--r--src/mongo/client/replica_set_monitor_read_preference_test.cpp1523
1 files changed, 769 insertions, 754 deletions
diff --git a/src/mongo/client/replica_set_monitor_read_preference_test.cpp b/src/mongo/client/replica_set_monitor_read_preference_test.cpp
index 245363dc35c..1e786f74fea 100644
--- a/src/mongo/client/replica_set_monitor_read_preference_test.cpp
+++ b/src/mongo/client/replica_set_monitor_read_preference_test.cpp
@@ -38,1014 +38,1029 @@
namespace {
- using namespace mongo;
- using std::set;
- using std::vector;
+using namespace mongo;
+using std::set;
+using std::vector;
- // Pull nested types to top-level scope
- typedef ReplicaSetMonitor::SetState SetState;
- typedef SetState::Node Node;
+// Pull nested types to top-level scope
+typedef ReplicaSetMonitor::SetState SetState;
+typedef SetState::Node Node;
- HostAndPort selectNode(const vector<Node>& nodes,
- ReadPreference pref,
- const TagSet& tagSet,
- int latencyThresholdMillis,
- bool* isPrimarySelected) {
+HostAndPort selectNode(const vector<Node>& nodes,
+ ReadPreference pref,
+ const TagSet& tagSet,
+ int latencyThresholdMillis,
+ bool* isPrimarySelected) {
+ invariant(!nodes.empty());
- invariant(!nodes.empty());
+ set<HostAndPort> seeds;
+ seeds.insert(nodes.front().host);
- set<HostAndPort> seeds;
- seeds.insert(nodes.front().host);
+ SetState set("name", seeds);
+ set.nodes = nodes;
+ set.latencyThresholdMicros = latencyThresholdMillis * 1000;
- 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;
+ ReadPreferenceSetting criteria(pref, tagSet);
+ HostAndPort out = set.getMatchingHost(criteria);
+ if (isPrimarySelected) {
+ *isPrimarySelected = !out.empty() && set.findNode(out)->isMaster;
}
- vector<Node> 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;
- }
-
- BSONArray getDefaultTagSet() {
- BSONArrayBuilder arrayBuilder;
- arrayBuilder.append(BSONObj());
- return arrayBuilder.arr();
- }
+ return out;
+}
- BSONArray getP2TagSet() {
- BSONArrayBuilder arrayBuilder;
- arrayBuilder.append(BSON("p" << "2"));
- return arrayBuilder.arr();
- }
+vector<Node> 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;
+}
- BSONArray getSingleNoMatchTag() {
- BSONArrayBuilder arrayBuilder;
- arrayBuilder.append(BSON("k" << "x"));
- return arrayBuilder.arr();
- }
+BSONArray getDefaultTagSet() {
+ BSONArrayBuilder arrayBuilder;
+ arrayBuilder.append(BSONObj());
+ return arrayBuilder.arr();
+}
- BSONArray getMultiNoMatchTag() {
- BSONArrayBuilder arrayBuilder;
- arrayBuilder.append(BSON("mongo" << "db"));
- arrayBuilder.append(BSON("by" << "10gen"));
- return arrayBuilder.arr();
- }
+BSONArray getP2TagSet() {
+ BSONArrayBuilder arrayBuilder;
+ arrayBuilder.append(BSON("p"
+ << "2"));
+ return arrayBuilder.arr();
+}
- TEST(ReplSetMonitorReadPref, PrimaryOnly) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getDefaultTagSet());
+BSONArray getSingleNoMatchTag() {
+ BSONArrayBuilder arrayBuilder;
+ arrayBuilder.append(BSON("k"
+ << "x"));
+ return arrayBuilder.arr();
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryOnly, tags, 3,
- &isPrimarySelected);
+BSONArray getMultiNoMatchTag() {
+ BSONArrayBuilder arrayBuilder;
+ arrayBuilder.append(BSON("mongo"
+ << "db"));
+ arrayBuilder.append(BSON("by"
+ << "10gen"));
+ return arrayBuilder.arr();
+}
- ASSERT(isPrimarySelected);
- ASSERT_EQUALS("b", host.host());
- }
+TEST(ReplSetMonitorReadPref, PrimaryOnly) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getDefaultTagSet());
- TEST(ReplSetMonitorReadPref, PrimaryOnlyPriNotOk) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getDefaultTagSet());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::PrimaryOnly, tags, 3, &isPrimarySelected);
- nodes[1].markFailed();
+ ASSERT(isPrimarySelected);
+ ASSERT_EQUALS("b", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryOnly, tags, 3,
- &isPrimarySelected);
+TEST(ReplSetMonitorReadPref, PrimaryOnlyPriNotOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getDefaultTagSet());
- ASSERT(host.empty());
- }
+ nodes[1].markFailed();
- TEST(ReplSetMonitorReadPref, PrimaryMissing) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getDefaultTagSet());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::PrimaryOnly, tags, 3, &isPrimarySelected);
- nodes[1].isMaster = false;
+ ASSERT(host.empty());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryOnly, tags, 3,
- &isPrimarySelected);
+TEST(ReplSetMonitorReadPref, PrimaryMissing) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getDefaultTagSet());
- ASSERT(host.empty());
- }
+ nodes[1].isMaster = false;
- TEST(ReplSetMonitorReadPref, PriPrefWithPriOk) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getDefaultTagSet());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::PrimaryOnly, tags, 3, &isPrimarySelected);
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryPreferred, tags, 1,
- &isPrimarySelected);
+ ASSERT(host.empty());
+}
- ASSERT(isPrimarySelected);
- ASSERT_EQUALS("b", host.host());
- }
+TEST(ReplSetMonitorReadPref, PriPrefWithPriOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getDefaultTagSet());
- TEST(ReplSetMonitorReadPref, PriPrefWithPriNotOk) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getDefaultTagSet());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::PrimaryPreferred, tags, 1, &isPrimarySelected);
- nodes[1].markFailed();
+ ASSERT(isPrimarySelected);
+ ASSERT_EQUALS("b", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryPreferred, tags, 1,
- &isPrimarySelected);
+TEST(ReplSetMonitorReadPref, PriPrefWithPriNotOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getDefaultTagSet());
- ASSERT(!isPrimarySelected);
- ASSERT(host.host() == "a" || host.host() == "c");
- }
+ nodes[1].markFailed();
- TEST(ReplSetMonitorReadPref, SecOnly) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getDefaultTagSet());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::PrimaryPreferred, tags, 1, &isPrimarySelected);
- nodes[2].markFailed();
+ ASSERT(!isPrimarySelected);
+ ASSERT(host.host() == "a" || host.host() == "c");
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryOnly, tags, 1,
- &isPrimarySelected);
+TEST(ReplSetMonitorReadPref, SecOnly) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getDefaultTagSet());
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("a", host.host());
- }
+ nodes[2].markFailed();
- TEST(ReplSetMonitorReadPref, SecOnlyOnlyPriOk) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getDefaultTagSet());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::SecondaryOnly, tags, 1, &isPrimarySelected);
- nodes[0].markFailed();
- nodes[2].markFailed();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryOnly, tags, 1,
- &isPrimarySelected);
+TEST(ReplSetMonitorReadPref, SecOnlyOnlyPriOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getDefaultTagSet());
- ASSERT(host.empty());
- }
+ nodes[0].markFailed();
+ nodes[2].markFailed();
- TEST(ReplSetMonitorReadPref, SecPref) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getDefaultTagSet());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::SecondaryOnly, tags, 1, &isPrimarySelected);
- nodes[2].markFailed();
+ ASSERT(host.empty());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryPreferred, tags, 1,
- &isPrimarySelected);
+TEST(ReplSetMonitorReadPref, SecPref) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getDefaultTagSet());
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("a", host.host());
- }
+ nodes[2].markFailed();
- TEST(ReplSetMonitorReadPref, SecPrefWithNoSecOk) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getDefaultTagSet());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::SecondaryPreferred, tags, 1, &isPrimarySelected);
- nodes[0].markFailed();
- nodes[2].markFailed();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryPreferred, tags, 1,
- &isPrimarySelected);
+TEST(ReplSetMonitorReadPref, SecPrefWithNoSecOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getDefaultTagSet());
- ASSERT(isPrimarySelected);
- ASSERT_EQUALS("b", host.host());
- }
+ nodes[0].markFailed();
+ nodes[2].markFailed();
- TEST(ReplSetMonitorReadPref, SecPrefWithNoNodeOk) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getDefaultTagSet());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::SecondaryPreferred, tags, 1, &isPrimarySelected);
- nodes[0].markFailed();
- nodes[1].markFailed();
- nodes[2].markFailed();
+ ASSERT(isPrimarySelected);
+ ASSERT_EQUALS("b", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryPreferred, tags, 1,
- &isPrimarySelected);
+TEST(ReplSetMonitorReadPref, SecPrefWithNoNodeOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getDefaultTagSet());
- ASSERT(host.empty());
- }
+ nodes[0].markFailed();
+ nodes[1].markFailed();
+ nodes[2].markFailed();
- TEST(ReplSetMonitorReadPref, NearestAllLocal) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getDefaultTagSet());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::SecondaryPreferred, tags, 1, &isPrimarySelected);
- nodes[0].latencyMicros = 1 * 1000;
- nodes[1].latencyMicros = 2 * 1000;
- nodes[2].latencyMicros = 3 * 1000;
+ ASSERT(host.empty());
+}
- bool isPrimarySelected = 0;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::Nearest, tags, 3,
- &isPrimarySelected);
+TEST(ReplSetMonitorReadPref, NearestAllLocal) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getDefaultTagSet());
- // Any host is ok
- ASSERT(!host.empty());
- ASSERT_EQUALS(isPrimarySelected, host.host() == "b");
- }
+ nodes[0].latencyMicros = 1 * 1000;
+ nodes[1].latencyMicros = 2 * 1000;
+ nodes[2].latencyMicros = 3 * 1000;
- TEST(ReplSetMonitorReadPref, NearestOneLocal) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getDefaultTagSet());
+ bool isPrimarySelected = 0;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::Nearest, tags, 3, &isPrimarySelected);
- nodes[0].latencyMicros = 10 * 1000;
- nodes[1].latencyMicros = 20 * 1000;
- nodes[2].latencyMicros = 30 * 1000;
+ // Any host is ok
+ ASSERT(!host.empty());
+ ASSERT_EQUALS(isPrimarySelected, host.host() == "b");
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::Nearest, tags, 3,
- &isPrimarySelected);
+TEST(ReplSetMonitorReadPref, NearestOneLocal) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getDefaultTagSet());
- ASSERT_EQUALS("a", host.host());
- ASSERT(!isPrimarySelected);
- }
+ nodes[0].latencyMicros = 10 * 1000;
+ nodes[1].latencyMicros = 20 * 1000;
+ nodes[2].latencyMicros = 30 * 1000;
- TEST(ReplSetMonitorReadPref, PriOnlyWithTagsNoMatch) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getP2TagSet());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::Nearest, tags, 3, &isPrimarySelected);
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryOnly, tags, 3,
- &isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+ ASSERT(!isPrimarySelected);
+}
- ASSERT(isPrimarySelected);
- // Note: PrimaryOnly ignores tag
- ASSERT_EQUALS("b", host.host());
- }
+TEST(ReplSetMonitorReadPref, PriOnlyWithTagsNoMatch) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getP2TagSet());
- TEST(ReplSetMonitorReadPref, PriPrefPriNotOkWithTags) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getP2TagSet());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::PrimaryOnly, tags, 3, &isPrimarySelected);
- nodes[1].markFailed();
+ ASSERT(isPrimarySelected);
+ // Note: PrimaryOnly ignores tag
+ ASSERT_EQUALS("b", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryPreferred, tags, 3,
- &isPrimarySelected);
+TEST(ReplSetMonitorReadPref, PriPrefPriNotOkWithTags) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getP2TagSet());
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("c", host.host());
- }
+ nodes[1].markFailed();
- TEST(ReplSetMonitorReadPref, PriPrefPriOkWithTagsNoMatch) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getSingleNoMatchTag());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::PrimaryPreferred, tags, 3, &isPrimarySelected);
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryPreferred, tags, 3,
- &isPrimarySelected);
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("c", host.host());
+}
- ASSERT(isPrimarySelected);
- ASSERT_EQUALS("b", host.host());
- }
+TEST(ReplSetMonitorReadPref, PriPrefPriOkWithTagsNoMatch) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getSingleNoMatchTag());
- TEST(ReplSetMonitorReadPref, PriPrefPriNotOkWithTagsNoMatch) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getSingleNoMatchTag());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::PrimaryPreferred, tags, 3, &isPrimarySelected);
- nodes[1].markFailed();
+ ASSERT(isPrimarySelected);
+ ASSERT_EQUALS("b", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryPreferred, tags, 3,
- &isPrimarySelected);
+TEST(ReplSetMonitorReadPref, PriPrefPriNotOkWithTagsNoMatch) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getSingleNoMatchTag());
- ASSERT(host.empty());
- }
+ nodes[1].markFailed();
- TEST(ReplSetMonitorReadPref, SecOnlyWithTags) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getP2TagSet());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::PrimaryPreferred, tags, 3, &isPrimarySelected);
- bool isPrimarySelected;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryOnly, tags, 3,
- &isPrimarySelected);
+ ASSERT(host.empty());
+}
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("c", host.host());
- }
+TEST(ReplSetMonitorReadPref, SecOnlyWithTags) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getP2TagSet());
- TEST(ReplSetMonitorReadPref, SecOnlyWithTagsMatchOnlyPri) {
- vector<Node> nodes = getThreeMemberWithTags();
+ bool isPrimarySelected;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::SecondaryOnly, tags, 3, &isPrimarySelected);
- BSONArrayBuilder arrayBuilder;
- arrayBuilder.append(BSON("dc" << "sf"));
- TagSet tags(arrayBuilder.arr());
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("c", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryOnly, tags, 3,
- &isPrimarySelected);
+TEST(ReplSetMonitorReadPref, SecOnlyWithTagsMatchOnlyPri) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(host.empty());
- }
+ BSONArrayBuilder arrayBuilder;
+ arrayBuilder.append(BSON("dc"
+ << "sf"));
+ TagSet tags(arrayBuilder.arr());
- TEST(ReplSetMonitorReadPref, SecPrefWithTags) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getP2TagSet());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::SecondaryOnly, tags, 3, &isPrimarySelected);
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryPreferred, tags, 3,
- &isPrimarySelected);
+ ASSERT(host.empty());
+}
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("c", host.host());
- }
+TEST(ReplSetMonitorReadPref, SecPrefWithTags) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getP2TagSet());
- TEST(ReplSetMonitorReadPref, SecPrefSecNotOkWithTags) {
- vector<Node> nodes = getThreeMemberWithTags();
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::SecondaryPreferred, tags, 3, &isPrimarySelected);
- BSONArrayBuilder arrayBuilder;
- arrayBuilder.append(BSON("dc" << "nyc"));
- TagSet tags(arrayBuilder.arr());
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("c", host.host());
+}
- nodes[2].markFailed();
+TEST(ReplSetMonitorReadPref, SecPrefSecNotOkWithTags) {
+ vector<Node> nodes = getThreeMemberWithTags();
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryPreferred, tags, 3,
- &isPrimarySelected);
+ BSONArrayBuilder arrayBuilder;
+ arrayBuilder.append(BSON("dc"
+ << "nyc"));
+ TagSet tags(arrayBuilder.arr());
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("a", host.host());
- }
+ nodes[2].markFailed();
- TEST(ReplSetMonitorReadPref, SecPrefPriOkWithTagsNoMatch) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getSingleNoMatchTag());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::SecondaryPreferred, tags, 3, &isPrimarySelected);
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryPreferred, tags, 3,
- &isPrimarySelected);
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+}
- ASSERT(isPrimarySelected);
- ASSERT_EQUALS("b", host.host());
- }
+TEST(ReplSetMonitorReadPref, SecPrefPriOkWithTagsNoMatch) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getSingleNoMatchTag());
- TEST(ReplSetMonitorReadPref, SecPrefPriNotOkWithTagsNoMatch) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getSingleNoMatchTag());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::SecondaryPreferred, tags, 3, &isPrimarySelected);
- nodes[1].markFailed();
+ ASSERT(isPrimarySelected);
+ ASSERT_EQUALS("b", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryPreferred, tags, 3,
- &isPrimarySelected);
+TEST(ReplSetMonitorReadPref, SecPrefPriNotOkWithTagsNoMatch) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getSingleNoMatchTag());
- ASSERT(host.empty());
- }
+ nodes[1].markFailed();
- TEST(ReplSetMonitorReadPref, SecPrefPriOkWithSecNotMatchTag) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getSingleNoMatchTag());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::SecondaryPreferred, tags, 3, &isPrimarySelected);
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryPreferred, tags, 3,
- &isPrimarySelected);
+ ASSERT(host.empty());
+}
- ASSERT(isPrimarySelected);
- ASSERT_EQUALS("b", host.host());
- }
+TEST(ReplSetMonitorReadPref, SecPrefPriOkWithSecNotMatchTag) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getSingleNoMatchTag());
- TEST(ReplSetMonitorReadPref, NearestWithTags) {
- vector<Node> nodes = getThreeMemberWithTags();
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::SecondaryPreferred, tags, 3, &isPrimarySelected);
- BSONArrayBuilder arrayBuilder;
- arrayBuilder.append(BSON("p" << "1"));
- TagSet tags(arrayBuilder.arr());
+ ASSERT(isPrimarySelected);
+ ASSERT_EQUALS("b", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::Nearest, tags, 3,
- &isPrimarySelected);
+TEST(ReplSetMonitorReadPref, NearestWithTags) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("a", host.host());
- }
+ BSONArrayBuilder arrayBuilder;
+ arrayBuilder.append(BSON("p"
+ << "1"));
+ TagSet tags(arrayBuilder.arr());
- TEST(ReplSetMonitorReadPref, NearestWithTagsNoMatch) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getSingleNoMatchTag());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::Nearest, tags, 3, &isPrimarySelected);
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::Nearest, tags, 3,
- &isPrimarySelected);
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+}
- ASSERT(host.empty());
- }
+TEST(ReplSetMonitorReadPref, NearestWithTagsNoMatch) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getSingleNoMatchTag());
- TEST(ReplSetMonitorReadPref, MultiPriOnlyTag) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getMultiNoMatchTag());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::Nearest, tags, 3, &isPrimarySelected);
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryOnly, tags, 3,
- &isPrimarySelected);
+ ASSERT(host.empty());
+}
- ASSERT(isPrimarySelected);
- ASSERT_EQUALS("b", host.host());
- }
+TEST(ReplSetMonitorReadPref, MultiPriOnlyTag) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getMultiNoMatchTag());
- TEST(ReplSetMonitorReadPref, MultiPriOnlyPriNotOkTag) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getMultiNoMatchTag());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::PrimaryOnly, tags, 3, &isPrimarySelected);
- nodes[1].markFailed();
+ ASSERT(isPrimarySelected);
+ ASSERT_EQUALS("b", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryOnly, tags, 3,
- &isPrimarySelected);
+TEST(ReplSetMonitorReadPref, MultiPriOnlyPriNotOkTag) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getMultiNoMatchTag());
- ASSERT(host.empty());
- }
+ nodes[1].markFailed();
- TEST(ReplSetMonitorReadPref, PriPrefPriOk) {
- vector<Node> nodes = getThreeMemberWithTags();
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::PrimaryOnly, tags, 3, &isPrimarySelected);
- BSONArrayBuilder arrayBuilder;
- arrayBuilder.append(BSON("p" << "1"));
- arrayBuilder.append(BSON("p" << "2"));
+ ASSERT(host.empty());
+}
- TagSet tags(arrayBuilder.arr());
+TEST(ReplSetMonitorReadPref, PriPrefPriOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryPreferred, tags, 3,
- &isPrimarySelected);
+ BSONArrayBuilder arrayBuilder;
+ arrayBuilder.append(BSON("p"
+ << "1"));
+ arrayBuilder.append(BSON("p"
+ << "2"));
- ASSERT(isPrimarySelected);
- ASSERT_EQUALS("b", host.host());
- }
+ TagSet tags(arrayBuilder.arr());
- class MultiTags : public mongo::unittest::Test {
- public:
- const TagSet& getMatchesFirstTagSet() {
- if (matchFirstTags.get() != NULL) {
- return *matchFirstTags;
- }
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::PrimaryPreferred, tags, 3, &isPrimarySelected);
- BSONArrayBuilder arrayBuilder;
- arrayBuilder.append(BSON("p" << "1"));
- arrayBuilder.append(BSON("p" << "2"));
- matchFirstTags.reset(new TagSet(arrayBuilder.arr()));
+ ASSERT(isPrimarySelected);
+ ASSERT_EQUALS("b", host.host());
+}
+class MultiTags : public mongo::unittest::Test {
+public:
+ const TagSet& getMatchesFirstTagSet() {
+ if (matchFirstTags.get() != NULL) {
return *matchFirstTags;
}
- const TagSet& getMatchesSecondTagSet() {
- if (matchSecondTags.get() != NULL) {
- return *matchSecondTags;
- }
+ BSONArrayBuilder arrayBuilder;
+ arrayBuilder.append(BSON("p"
+ << "1"));
+ arrayBuilder.append(BSON("p"
+ << "2"));
+ matchFirstTags.reset(new TagSet(arrayBuilder.arr()));
- BSONArrayBuilder arrayBuilder;
- arrayBuilder.append(BSON("p" << "3"));
- arrayBuilder.append(BSON("p" << "2"));
- arrayBuilder.append(BSON("p" << "1"));
- matchSecondTags.reset(new TagSet(arrayBuilder.arr()));
+ return *matchFirstTags;
+ }
+ const TagSet& getMatchesSecondTagSet() {
+ if (matchSecondTags.get() != NULL) {
return *matchSecondTags;
}
- const TagSet& getMatchesLastTagSet() {
- if (matchLastTags.get() != NULL) {
- return *matchLastTags;
- }
+ BSONArrayBuilder arrayBuilder;
+ arrayBuilder.append(BSON("p"
+ << "3"));
+ arrayBuilder.append(BSON("p"
+ << "2"));
+ arrayBuilder.append(BSON("p"
+ << "1"));
+ matchSecondTags.reset(new TagSet(arrayBuilder.arr()));
- 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 *matchSecondTags;
+ }
+ const TagSet& getMatchesLastTagSet() {
+ if (matchLastTags.get() != NULL) {
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()));
-
+ 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;
}
- private:
- std::unique_ptr<TagSet> matchFirstTags;
- std::unique_ptr<TagSet> matchSecondTags;
- std::unique_ptr<TagSet> matchLastTags;
- std::unique_ptr<TagSet> matchPriTags;
- };
+ BSONArrayBuilder arrayBuilder;
+ arrayBuilder.append(BSON("dc"
+ << "sf"));
+ arrayBuilder.append(BSON("p"
+ << "1"));
+ matchPriTags.reset(new TagSet(arrayBuilder.arr()));
- TEST_F(MultiTags, MultiTagsMatchesFirst) {
- vector<Node> nodes = getThreeMemberWithTags();
+ return *matchPriTags;
+ }
- nodes[1].markFailed();
+private:
+ std::unique_ptr<TagSet> matchFirstTags;
+ std::unique_ptr<TagSet> matchSecondTags;
+ std::unique_ptr<TagSet> matchLastTags;
+ std::unique_ptr<TagSet> matchPriTags;
+};
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryPreferred,
- getMatchesFirstTagSet(),
- 3,
- &isPrimarySelected);
+TEST_F(MultiTags, MultiTagsMatchesFirst) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("a", host.host());
- }
+ nodes[1].markFailed();
- TEST_F(MultiTags, PriPrefPriNotOkMatchesFirstNotOk) {
- vector<Node> nodes = getThreeMemberWithTags();
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(nodes,
+ mongo::ReadPreference::PrimaryPreferred,
+ getMatchesFirstTagSet(),
+ 3,
+ &isPrimarySelected);
- nodes[0].markFailed();
- nodes[1].markFailed();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryPreferred, getMatchesFirstTagSet(),
- 3, &isPrimarySelected);
+TEST_F(MultiTags, PriPrefPriNotOkMatchesFirstNotOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("c", host.host());
- }
+ nodes[0].markFailed();
+ nodes[1].markFailed();
- TEST_F(MultiTags, PriPrefPriNotOkMatchesSecondTest) {
- vector<Node> nodes = getThreeMemberWithTags();
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(nodes,
+ mongo::ReadPreference::PrimaryPreferred,
+ getMatchesFirstTagSet(),
+ 3,
+ &isPrimarySelected);
- nodes[1].markFailed();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("c", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryPreferred,
- getMatchesSecondTagSet(),
- 3,
- &isPrimarySelected);
+TEST_F(MultiTags, PriPrefPriNotOkMatchesSecondTest) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("c", host.host());
- }
+ nodes[1].markFailed();
- TEST_F(MultiTags, PriPrefPriNotOkMatchesSecondNotOkTest) {
- vector<Node> nodes = getThreeMemberWithTags();
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(nodes,
+ mongo::ReadPreference::PrimaryPreferred,
+ getMatchesSecondTagSet(),
+ 3,
+ &isPrimarySelected);
- nodes[1].markFailed();
- nodes[2].markFailed();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("c", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryPreferred, getMatchesSecondTagSet(),
- 3, &isPrimarySelected);
+TEST_F(MultiTags, PriPrefPriNotOkMatchesSecondNotOkTest) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("a", host.host());
- }
+ nodes[1].markFailed();
+ nodes[2].markFailed();
- TEST_F(MultiTags, PriPrefPriNotOkMatchesLastTest) {
- vector<Node> nodes = getThreeMemberWithTags();
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(nodes,
+ mongo::ReadPreference::PrimaryPreferred,
+ getMatchesSecondTagSet(),
+ 3,
+ &isPrimarySelected);
- nodes[1].markFailed();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryPreferred, getMatchesLastTagSet(),
- 3, &isPrimarySelected);
+TEST_F(MultiTags, PriPrefPriNotOkMatchesLastTest) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("a", host.host());
- }
+ nodes[1].markFailed();
- TEST_F(MultiTags, PriPrefPriNotOkMatchesLastNotOkTest) {
- vector<Node> nodes = getThreeMemberWithTags();
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(nodes,
+ mongo::ReadPreference::PrimaryPreferred,
+ getMatchesLastTagSet(),
+ 3,
+ &isPrimarySelected);
- nodes[0].markFailed();
- nodes[1].markFailed();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryPreferred, getMatchesLastTagSet(),
- 3, &isPrimarySelected);
+TEST_F(MultiTags, PriPrefPriNotOkMatchesLastNotOkTest) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(host.empty());
- }
+ nodes[0].markFailed();
+ nodes[1].markFailed();
- TEST(MultiTags, PriPrefPriOkNoMatch) {
- vector<Node> nodes = getThreeMemberWithTags();
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(nodes,
+ mongo::ReadPreference::PrimaryPreferred,
+ getMatchesLastTagSet(),
+ 3,
+ &isPrimarySelected);
- TagSet tags(getMultiNoMatchTag());
+ ASSERT(host.empty());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryPreferred, tags, 3,
- &isPrimarySelected);
+TEST(MultiTags, PriPrefPriOkNoMatch) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(isPrimarySelected);
- ASSERT_EQUALS("b", host.host());
- }
+ TagSet tags(getMultiNoMatchTag());
- TEST(MultiTags, PriPrefPriNotOkNoMatch) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getMultiNoMatchTag());
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::PrimaryPreferred, tags, 3, &isPrimarySelected);
- nodes[1].markFailed();
+ ASSERT(isPrimarySelected);
+ ASSERT_EQUALS("b", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::PrimaryPreferred, tags, 3,
- &isPrimarySelected);
+TEST(MultiTags, PriPrefPriNotOkNoMatch) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getMultiNoMatchTag());
- ASSERT(host.empty());
- }
+ nodes[1].markFailed();
- TEST_F(MultiTags, SecOnlyMatchesFirstTest) {
- vector<Node> nodes = getThreeMemberWithTags();
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::PrimaryPreferred, tags, 3, &isPrimarySelected);
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryOnly, getMatchesFirstTagSet(),
- 3, &isPrimarySelected);
+ ASSERT(host.empty());
+}
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("a", host.host());
- }
+TEST_F(MultiTags, SecOnlyMatchesFirstTest) {
+ vector<Node> nodes = getThreeMemberWithTags();
- TEST_F(MultiTags, SecOnlyMatchesFirstNotOk) {
- vector<Node> nodes = getThreeMemberWithTags();
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(nodes,
+ mongo::ReadPreference::SecondaryOnly,
+ getMatchesFirstTagSet(),
+ 3,
+ &isPrimarySelected);
- nodes[0].markFailed();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryOnly, getMatchesFirstTagSet(),
- 3, &isPrimarySelected);
+TEST_F(MultiTags, SecOnlyMatchesFirstNotOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("c", host.host());
- }
+ nodes[0].markFailed();
+
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(nodes,
+ mongo::ReadPreference::SecondaryOnly,
+ getMatchesFirstTagSet(),
+ 3,
+ &isPrimarySelected);
- TEST_F(MultiTags, SecOnlyMatchesSecond) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("c", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryOnly, getMatchesSecondTagSet(),
- 3, &isPrimarySelected);
+TEST_F(MultiTags, SecOnlyMatchesSecond) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("c", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(nodes,
+ mongo::ReadPreference::SecondaryOnly,
+ getMatchesSecondTagSet(),
+ 3,
+ &isPrimarySelected);
- TEST_F(MultiTags, SecOnlyMatchesSecondNotOk) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("c", host.host());
+}
- nodes[2].markFailed();
+TEST_F(MultiTags, SecOnlyMatchesSecondNotOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryOnly, getMatchesSecondTagSet(),
- 3, &isPrimarySelected);
+ nodes[2].markFailed();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("a", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(nodes,
+ mongo::ReadPreference::SecondaryOnly,
+ getMatchesSecondTagSet(),
+ 3,
+ &isPrimarySelected);
- TEST_F(MultiTags, SecOnlyMatchesLast) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryOnly, getMatchesLastTagSet(),
- 3, &isPrimarySelected);
+TEST_F(MultiTags, SecOnlyMatchesLast) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("a", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(
+ nodes, mongo::ReadPreference::SecondaryOnly, getMatchesLastTagSet(), 3, &isPrimarySelected);
- TEST_F(MultiTags, SecOnlyMatchesLastNotOk) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+}
- nodes[0].markFailed();
+TEST_F(MultiTags, SecOnlyMatchesLastNotOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryOnly, getMatchesLastTagSet(),
- 3, &isPrimarySelected);
+ nodes[0].markFailed();
- ASSERT(host.empty());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(
+ nodes, mongo::ReadPreference::SecondaryOnly, getMatchesLastTagSet(), 3, &isPrimarySelected);
- TEST_F(MultiTags, SecOnlyMultiTagsWithPriMatch) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(host.empty());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryOnly, getMatchesPriTagSet(),
- 3, &isPrimarySelected);
+TEST_F(MultiTags, SecOnlyMultiTagsWithPriMatch) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("a", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(
+ nodes, mongo::ReadPreference::SecondaryOnly, getMatchesPriTagSet(), 3, &isPrimarySelected);
- TEST_F(MultiTags, SecOnlyMultiTagsNoMatch) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getMultiNoMatchTag());
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryOnly, tags, 3,
- &isPrimarySelected);
+TEST_F(MultiTags, SecOnlyMultiTagsNoMatch) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getMultiNoMatchTag());
- ASSERT(host.empty());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::SecondaryOnly, tags, 3, &isPrimarySelected);
- TEST_F(MultiTags, SecPrefMatchesFirst) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(host.empty());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryPreferred, getMatchesFirstTagSet(),
- 3, &isPrimarySelected);
+TEST_F(MultiTags, SecPrefMatchesFirst) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("a", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(nodes,
+ mongo::ReadPreference::SecondaryPreferred,
+ getMatchesFirstTagSet(),
+ 3,
+ &isPrimarySelected);
- TEST_F(MultiTags, SecPrefMatchesFirstNotOk) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+}
- nodes[0].markFailed();
+TEST_F(MultiTags, SecPrefMatchesFirstNotOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryPreferred, getMatchesFirstTagSet(),
- 3, &isPrimarySelected);
+ nodes[0].markFailed();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("c", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(nodes,
+ mongo::ReadPreference::SecondaryPreferred,
+ getMatchesFirstTagSet(),
+ 3,
+ &isPrimarySelected);
- TEST_F(MultiTags, SecPrefMatchesSecond) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("c", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryPreferred, getMatchesSecondTagSet(),
- 3, &isPrimarySelected);
+TEST_F(MultiTags, SecPrefMatchesSecond) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("c", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(nodes,
+ mongo::ReadPreference::SecondaryPreferred,
+ getMatchesSecondTagSet(),
+ 3,
+ &isPrimarySelected);
- TEST_F(MultiTags, SecPrefMatchesSecondNotOk) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("c", host.host());
+}
- nodes[2].markFailed();
+TEST_F(MultiTags, SecPrefMatchesSecondNotOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryPreferred, getMatchesSecondTagSet(),
- 3, &isPrimarySelected);
+ nodes[2].markFailed();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("a", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(nodes,
+ mongo::ReadPreference::SecondaryPreferred,
+ getMatchesSecondTagSet(),
+ 3,
+ &isPrimarySelected);
- TEST_F(MultiTags, SecPrefMatchesLast) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryPreferred, getMatchesLastTagSet(),
- 3, &isPrimarySelected);
+TEST_F(MultiTags, SecPrefMatchesLast) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("a", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(nodes,
+ mongo::ReadPreference::SecondaryPreferred,
+ getMatchesLastTagSet(),
+ 3,
+ &isPrimarySelected);
- TEST_F(MultiTags, SecPrefMatchesLastNotOk) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+}
- nodes[0].markFailed();
+TEST_F(MultiTags, SecPrefMatchesLastNotOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryPreferred, getMatchesLastTagSet(),
- 3, &isPrimarySelected);
+ nodes[0].markFailed();
- ASSERT(isPrimarySelected);
- ASSERT_EQUALS("b", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(nodes,
+ mongo::ReadPreference::SecondaryPreferred,
+ getMatchesLastTagSet(),
+ 3,
+ &isPrimarySelected);
- TEST_F(MultiTags, SecPrefMultiTagsWithPriMatch) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(isPrimarySelected);
+ ASSERT_EQUALS("b", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryPreferred, getMatchesPriTagSet(),
- 3, &isPrimarySelected);
+TEST_F(MultiTags, SecPrefMultiTagsWithPriMatch) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("a", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(nodes,
+ mongo::ReadPreference::SecondaryPreferred,
+ getMatchesPriTagSet(),
+ 3,
+ &isPrimarySelected);
- TEST(MultiTags, SecPrefMultiTagsNoMatch) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getMultiNoMatchTag());
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryPreferred, tags, 3,
- &isPrimarySelected);
+TEST(MultiTags, SecPrefMultiTagsNoMatch) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getMultiNoMatchTag());
- ASSERT(isPrimarySelected);
- ASSERT_EQUALS("b", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::SecondaryPreferred, tags, 3, &isPrimarySelected);
- TEST(MultiTags, SecPrefMultiTagsNoMatchPriNotOk) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getMultiNoMatchTag());
+ ASSERT(isPrimarySelected);
+ ASSERT_EQUALS("b", host.host());
+}
- nodes[1].markFailed();
+TEST(MultiTags, SecPrefMultiTagsNoMatchPriNotOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getMultiNoMatchTag());
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::SecondaryPreferred, tags, 3,
- &isPrimarySelected);
+ nodes[1].markFailed();
- ASSERT(host.empty());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::SecondaryPreferred, tags, 3, &isPrimarySelected);
- TEST_F(MultiTags, NearestMatchesFirst) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(host.empty());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::Nearest, getMatchesFirstTagSet(),
- 3, &isPrimarySelected);
+TEST_F(MultiTags, NearestMatchesFirst) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("a", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(
+ nodes, mongo::ReadPreference::Nearest, getMatchesFirstTagSet(), 3, &isPrimarySelected);
- TEST(MultiTags, NearestMatchesFirstNotOk) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+}
- BSONArrayBuilder arrayBuilder;
- arrayBuilder.append(BSON("p" << "1"));
- arrayBuilder.append(BSON("dc" << "sf"));
+TEST(MultiTags, NearestMatchesFirstNotOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(arrayBuilder.arr());
+ BSONArrayBuilder arrayBuilder;
+ arrayBuilder.append(BSON("p"
+ << "1"));
+ arrayBuilder.append(BSON("dc"
+ << "sf"));
- nodes[0].markFailed();
+ TagSet tags(arrayBuilder.arr());
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::Nearest,
- tags,
- 3,
- &isPrimarySelected);
+ nodes[0].markFailed();
- ASSERT(isPrimarySelected);
- ASSERT_EQUALS("b", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::Nearest, tags, 3, &isPrimarySelected);
- TEST_F(MultiTags, NearestMatchesSecond) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(isPrimarySelected);
+ ASSERT_EQUALS("b", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::Nearest, getMatchesSecondTagSet(), 3,
- &isPrimarySelected);
+TEST_F(MultiTags, NearestMatchesSecond) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("c", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(
+ nodes, mongo::ReadPreference::Nearest, getMatchesSecondTagSet(), 3, &isPrimarySelected);
- TEST_F(MultiTags, NearestMatchesSecondNotOk) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("c", host.host());
+}
- BSONArrayBuilder arrayBuilder;
- arrayBuilder.append(BSON("z" << "2"));
- arrayBuilder.append(BSON("p" << "2"));
- arrayBuilder.append(BSON("dc" << "sf"));
+TEST_F(MultiTags, NearestMatchesSecondNotOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(arrayBuilder.arr());
+ BSONArrayBuilder arrayBuilder;
+ arrayBuilder.append(BSON("z"
+ << "2"));
+ arrayBuilder.append(BSON("p"
+ << "2"));
+ arrayBuilder.append(BSON("dc"
+ << "sf"));
- nodes[2].markFailed();
+ TagSet tags(arrayBuilder.arr());
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::Nearest, tags, 3,
- &isPrimarySelected);
+ nodes[2].markFailed();
- ASSERT(isPrimarySelected);
- ASSERT_EQUALS("b", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::Nearest, tags, 3, &isPrimarySelected);
- TEST_F(MultiTags, NearestMatchesLast) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(isPrimarySelected);
+ ASSERT_EQUALS("b", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::Nearest, getMatchesLastTagSet(), 3,
- &isPrimarySelected);
+TEST_F(MultiTags, NearestMatchesLast) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(!isPrimarySelected);
- ASSERT_EQUALS("a", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(
+ nodes, mongo::ReadPreference::Nearest, getMatchesLastTagSet(), 3, &isPrimarySelected);
- TEST_F(MultiTags, NeatestMatchesLastNotOk) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(!isPrimarySelected);
+ ASSERT_EQUALS("a", host.host());
+}
- nodes[0].markFailed();
+TEST_F(MultiTags, NeatestMatchesLastNotOk) {
+ vector<Node> nodes = getThreeMemberWithTags();
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::Nearest, getMatchesLastTagSet(), 3,
- &isPrimarySelected);
+ nodes[0].markFailed();
- ASSERT(host.empty());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(
+ nodes, mongo::ReadPreference::Nearest, getMatchesLastTagSet(), 3, &isPrimarySelected);
- TEST_F(MultiTags, NearestMultiTagsWithPriMatch) {
- vector<Node> nodes = getThreeMemberWithTags();
+ ASSERT(host.empty());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::Nearest, getMatchesPriTagSet(), 3,
- &isPrimarySelected);
+TEST_F(MultiTags, NearestMultiTagsWithPriMatch) {
+ vector<Node> nodes = getThreeMemberWithTags();
- ASSERT(isPrimarySelected);
- ASSERT_EQUALS("b", host.host());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host = selectNode(
+ nodes, mongo::ReadPreference::Nearest, getMatchesPriTagSet(), 3, &isPrimarySelected);
- TEST(MultiTags, NearestMultiTagsNoMatch) {
- vector<Node> nodes = getThreeMemberWithTags();
- TagSet tags(getMultiNoMatchTag());
+ ASSERT(isPrimarySelected);
+ ASSERT_EQUALS("b", host.host());
+}
- bool isPrimarySelected = false;
- HostAndPort host = selectNode(nodes,
- mongo::ReadPreference::Nearest, tags, 3,
- &isPrimarySelected);
+TEST(MultiTags, NearestMultiTagsNoMatch) {
+ vector<Node> nodes = getThreeMemberWithTags();
+ TagSet tags(getMultiNoMatchTag());
- ASSERT(host.empty());
- }
+ bool isPrimarySelected = false;
+ HostAndPort host =
+ selectNode(nodes, mongo::ReadPreference::Nearest, tags, 3, &isPrimarySelected);
- TEST(TagSet, DefaultConstructorMatchesAll) {
- TagSet tags;
- ASSERT_EQUALS(tags.getTagBSON(), BSON_ARRAY(BSONObj()));
- }
+ ASSERT(host.empty());
+}
+TEST(TagSet, DefaultConstructorMatchesAll) {
+ TagSet tags;
+ ASSERT_EQUALS(tags.getTagBSON(), BSON_ARRAY(BSONObj()));
+}
}