summaryrefslogtreecommitdiff
path: root/src/mongo/client/dbclient_rs_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/client/dbclient_rs_test.cpp')
-rw-r--r--src/mongo/client/dbclient_rs_test.cpp223
1 files changed, 85 insertions, 138 deletions
diff --git a/src/mongo/client/dbclient_rs_test.cpp b/src/mongo/client/dbclient_rs_test.cpp
index 2bbbc78858a..7053d8fe623 100644
--- a/src/mongo/client/dbclient_rs_test.cpp
+++ b/src/mongo/client/dbclient_rs_test.cpp
@@ -152,57 +152,16 @@ void assertNodeSelected(MockReplicaSet* replSet, ReadPreference rp, StringData h
assertOneOfNodesSelected(replSet, rp, std::vector<std::string>{host.toString()});
}
-/**
- * Runs a find operation against 'replConn' using both the modern 'find()' API and the deprecated
- * API. In both cases, verifies the results by passing the resulting cursor to 'assertionFunc'.
- *
- * The operation is a simple find command against the given NamespaceString with no arguments other
- * than 'readPref'.
- */
-void assertWithBothQueryApis(DBClientReplicaSet& replConn,
- const NamespaceString& nss,
- ReadPreference readPref,
- std::function<void(std::unique_ptr<DBClientCursor>)> assertionFunc) {
- std::unique_ptr<DBClientCursor> cursor =
- replConn.find(FindCommandRequest{nss}, ReadPreferenceSetting{readPref});
- assertionFunc(std::move(cursor));
-
- client_deprecated::Query readPrefHolder;
- readPrefHolder.readPref(readPref, BSONArray{});
- cursor = replConn.query_DEPRECATED(nss, BSONObj{}, readPrefHolder);
- assertionFunc(std::move(cursor));
-}
-
-/**
- * Runs a find operation against 'replConn' using both the modern 'find()' API and the deprecated
- * API. In both cases, verifies that the find operation throws an exception.
- *
- * The operation is a simple find command against the given NamespaceString with no arguments other
- * than 'readPref'.
- */
-void assertBothQueryApisThrow(DBClientReplicaSet& replConn,
- const NamespaceString& nss,
- ReadPreference readPref) {
- ASSERT_THROWS(replConn.find(FindCommandRequest{nss}, ReadPreferenceSetting{readPref}),
- AssertionException);
-
- client_deprecated::Query readPrefHolder;
- readPrefHolder.readPref(readPref, BSONArray{});
- ASSERT_THROWS(replConn.query_DEPRECATED(nss, BSONObj{}, readPrefHolder), AssertionException);
-}
-
TEST_F(BasicRS, QueryPrimary) {
MockReplicaSet* replSet = getReplSet();
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
// Note: IdentityNS contains the name of the server.
- assertWithBothQueryApis(replConn,
- NamespaceString{IdentityNS},
- ReadPreference::PrimaryOnly,
- [&](std::unique_ptr<DBClientCursor> cursor) {
- BSONObj doc = cursor->next();
- ASSERT_EQUALS(replSet->getPrimary(), doc[HostField.name()].str());
- });
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ auto cursor =
+ replConn.find(std::move(findCmd), ReadPreferenceSetting{ReadPreference::PrimaryOnly});
+ BSONObj doc = cursor->next();
+ ASSERT_EQUALS(replSet->getPrimary(), doc[HostField.name()].str());
}
TEST_F(BasicRS, CommandPrimary) {
@@ -214,14 +173,11 @@ TEST_F(BasicRS, QuerySecondaryOnly) {
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
// Note: IdentityNS contains the name of the server.
- assertWithBothQueryApis(replConn,
- NamespaceString{IdentityNS},
- ReadPreference::SecondaryOnly,
- [&](std::unique_ptr<DBClientCursor> cursor) {
- BSONObj doc = cursor->next();
- ASSERT_EQUALS(replSet->getSecondaries().front(),
- doc[HostField.name()].str());
- });
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ auto cursor =
+ replConn.find(std::move(findCmd), ReadPreferenceSetting{ReadPreference::SecondaryOnly});
+ BSONObj doc = cursor->next();
+ ASSERT_EQUALS(replSet->getSecondaries().front(), doc[HostField.name()].str());
}
TEST_F(BasicRS, CommandSecondaryOnly) {
@@ -234,13 +190,11 @@ TEST_F(BasicRS, QueryPrimaryPreferred) {
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
// Note: IdentityNS contains the name of the server.
- assertWithBothQueryApis(replConn,
- NamespaceString{IdentityNS},
- ReadPreference::PrimaryPreferred,
- [&](std::unique_ptr<DBClientCursor> cursor) {
- BSONObj doc = cursor->next();
- ASSERT_EQUALS(replSet->getPrimary(), doc[HostField.name()].str());
- });
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ auto cursor =
+ replConn.find(std::move(findCmd), ReadPreferenceSetting{ReadPreference::PrimaryPreferred});
+ BSONObj doc = cursor->next();
+ ASSERT_EQUALS(replSet->getPrimary(), doc[HostField.name()].str());
}
TEST_F(BasicRS, CommandPrimaryPreferred) {
@@ -252,14 +206,11 @@ TEST_F(BasicRS, QuerySecondaryPreferred) {
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
// Note: IdentityNS contains the name of the server.
- assertWithBothQueryApis(replConn,
- NamespaceString{IdentityNS},
- ReadPreference::SecondaryPreferred,
- [&](std::unique_ptr<DBClientCursor> cursor) {
- BSONObj doc = cursor->next();
- ASSERT_EQUALS(replSet->getSecondaries().front(),
- doc[HostField.name()].str());
- });
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ auto cursor = replConn.find(std::move(findCmd),
+ ReadPreferenceSetting{ReadPreference::SecondaryPreferred});
+ BSONObj doc = cursor->next();
+ ASSERT_EQUALS(replSet->getSecondaries().front(), doc[HostField.name()].str());
}
TEST_F(BasicRS, CommandSecondaryPreferred) {
@@ -319,7 +270,10 @@ TEST_F(AllNodesDown, QueryPrimary) {
MockReplicaSet* replSet = getReplSet();
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
- assertBothQueryApisThrow(replConn, NamespaceString{IdentityNS}, ReadPreference::PrimaryOnly);
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ ASSERT_THROWS(
+ replConn.find(std::move(findCmd), ReadPreferenceSetting{ReadPreference::PrimaryOnly}),
+ AssertionException);
}
TEST_F(AllNodesDown, CommandPrimary) {
@@ -330,7 +284,10 @@ TEST_F(AllNodesDown, QuerySecondaryOnly) {
MockReplicaSet* replSet = getReplSet();
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
- assertBothQueryApisThrow(replConn, NamespaceString{IdentityNS}, ReadPreference::SecondaryOnly);
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ ASSERT_THROWS(
+ replConn.find(std::move(findCmd), ReadPreferenceSetting{ReadPreference::SecondaryOnly}),
+ AssertionException);
}
TEST_F(AllNodesDown, CommandSecondaryOnly) {
@@ -341,8 +298,10 @@ TEST_F(AllNodesDown, QueryPrimaryPreferred) {
MockReplicaSet* replSet = getReplSet();
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
- assertBothQueryApisThrow(
- replConn, NamespaceString{IdentityNS}, ReadPreference::PrimaryPreferred);
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ ASSERT_THROWS(
+ replConn.find(std::move(findCmd), ReadPreferenceSetting{ReadPreference::PrimaryPreferred}),
+ AssertionException);
}
TEST_F(AllNodesDown, CommandPrimaryPreferred) {
@@ -353,8 +312,10 @@ TEST_F(AllNodesDown, QuerySecondaryPreferred) {
MockReplicaSet* replSet = getReplSet();
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
- assertBothQueryApisThrow(
- replConn, NamespaceString{IdentityNS}, ReadPreference::SecondaryPreferred);
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ ASSERT_THROWS(replConn.find(std::move(findCmd),
+ ReadPreferenceSetting{ReadPreference::SecondaryPreferred}),
+ AssertionException);
}
TEST_F(AllNodesDown, CommandSecondaryPreferred) {
@@ -365,7 +326,9 @@ TEST_F(AllNodesDown, QueryNearest) {
MockReplicaSet* replSet = getReplSet();
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
- assertBothQueryApisThrow(replConn, NamespaceString{IdentityNS}, ReadPreference::Nearest);
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ ASSERT_THROWS(replConn.find(std::move(findCmd), ReadPreferenceSetting{ReadPreference::Nearest}),
+ AssertionException);
}
TEST_F(AllNodesDown, CommandNearest) {
@@ -409,7 +372,10 @@ TEST_F(PrimaryDown, QueryPrimary) {
MockReplicaSet* replSet = getReplSet();
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
- assertBothQueryApisThrow(replConn, NamespaceString{IdentityNS}, ReadPreference::PrimaryOnly);
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ ASSERT_THROWS(
+ replConn.find(std::move(findCmd), ReadPreferenceSetting{ReadPreference::PrimaryOnly}),
+ AssertionException);
}
TEST_F(PrimaryDown, CommandPrimary) {
@@ -421,14 +387,11 @@ TEST_F(PrimaryDown, QuerySecondaryOnly) {
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
// Note: IdentityNS contains the name of the server.
- assertWithBothQueryApis(replConn,
- NamespaceString{IdentityNS},
- ReadPreference::SecondaryOnly,
- [&](std::unique_ptr<DBClientCursor> cursor) {
- BSONObj doc = cursor->next();
- ASSERT_EQUALS(replSet->getSecondaries().front(),
- doc[HostField.name()].str());
- });
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ auto cursor =
+ replConn.find(std::move(findCmd), ReadPreferenceSetting{ReadPreference::SecondaryOnly});
+ BSONObj doc = cursor->next();
+ ASSERT_EQUALS(replSet->getSecondaries().front(), doc[HostField.name()].str());
}
TEST_F(PrimaryDown, CommandSecondaryOnly) {
@@ -441,14 +404,11 @@ TEST_F(PrimaryDown, QueryPrimaryPreferred) {
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
// Note: IdentityNS contains the name of the server.
- assertWithBothQueryApis(replConn,
- NamespaceString{IdentityNS},
- ReadPreference::PrimaryPreferred,
- [&](std::unique_ptr<DBClientCursor> cursor) {
- BSONObj doc = cursor->next();
- ASSERT_EQUALS(replSet->getSecondaries().front(),
- doc[HostField.name()].str());
- });
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ auto cursor =
+ replConn.find(std::move(findCmd), ReadPreferenceSetting{ReadPreference::PrimaryPreferred});
+ BSONObj doc = cursor->next();
+ ASSERT_EQUALS(replSet->getSecondaries().front(), doc[HostField.name()].str());
}
TEST_F(PrimaryDown, CommandPrimaryPreferred) {
@@ -461,14 +421,11 @@ TEST_F(PrimaryDown, QuerySecondaryPreferred) {
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
// Note: IdentityNS contains the name of the server.
- assertWithBothQueryApis(replConn,
- NamespaceString{IdentityNS},
- ReadPreference::SecondaryPreferred,
- [&](std::unique_ptr<DBClientCursor> cursor) {
- BSONObj doc = cursor->next();
- ASSERT_EQUALS(replSet->getSecondaries().front(),
- doc[HostField.name()].str());
- });
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ auto cursor = replConn.find(std::move(findCmd),
+ ReadPreferenceSetting{ReadPreference::SecondaryPreferred});
+ BSONObj doc = cursor->next();
+ ASSERT_EQUALS(replSet->getSecondaries().front(), doc[HostField.name()].str());
}
TEST_F(PrimaryDown, CommandSecondaryPreferred) {
@@ -480,14 +437,10 @@ TEST_F(PrimaryDown, Nearest) {
MockReplicaSet* replSet = getReplSet();
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
- assertWithBothQueryApis(replConn,
- NamespaceString{IdentityNS},
- ReadPreference::Nearest,
- [&](std::unique_ptr<DBClientCursor> cursor) {
- BSONObj doc = cursor->next();
- ASSERT_EQUALS(replSet->getSecondaries().front(),
- doc[HostField.name()].str());
- });
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ auto cursor = replConn.find(std::move(findCmd), ReadPreferenceSetting{ReadPreference::Nearest});
+ BSONObj doc = cursor->next();
+ ASSERT_EQUALS(replSet->getSecondaries().front(), doc[HostField.name()].str());
}
/**
@@ -529,13 +482,11 @@ TEST_F(SecondaryDown, QueryPrimary) {
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
// Note: IdentityNS contains the name of the server.
- assertWithBothQueryApis(replConn,
- NamespaceString{IdentityNS},
- ReadPreference::PrimaryOnly,
- [&](std::unique_ptr<DBClientCursor> cursor) {
- BSONObj doc = cursor->next();
- ASSERT_EQUALS(replSet->getPrimary(), doc[HostField.name()].str());
- });
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ auto cursor =
+ replConn.find(std::move(findCmd), ReadPreferenceSetting{ReadPreference::PrimaryOnly});
+ BSONObj doc = cursor->next();
+ ASSERT_EQUALS(replSet->getPrimary(), doc[HostField.name()].str());
}
TEST_F(SecondaryDown, CommandPrimary) {
@@ -546,7 +497,10 @@ TEST_F(SecondaryDown, QuerySecondaryOnly) {
MockReplicaSet* replSet = getReplSet();
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
- assertBothQueryApisThrow(replConn, NamespaceString{IdentityNS}, ReadPreference::SecondaryOnly);
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ ASSERT_THROWS(
+ replConn.find(std::move(findCmd), ReadPreferenceSetting{ReadPreference::SecondaryOnly}),
+ AssertionException);
}
TEST_F(SecondaryDown, CommandSecondaryOnly) {
@@ -558,13 +512,11 @@ TEST_F(SecondaryDown, QueryPrimaryPreferred) {
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
// Note: IdentityNS contains the name of the server.
- assertWithBothQueryApis(replConn,
- NamespaceString{IdentityNS},
- ReadPreference::PrimaryPreferred,
- [&](std::unique_ptr<DBClientCursor> cursor) {
- BSONObj doc = cursor->next();
- ASSERT_EQUALS(replSet->getPrimary(), doc[HostField.name()].str());
- });
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ auto cursor =
+ replConn.find(std::move(findCmd), ReadPreferenceSetting{ReadPreference::PrimaryPreferred});
+ BSONObj doc = cursor->next();
+ ASSERT_EQUALS(replSet->getPrimary(), doc[HostField.name()].str());
}
TEST_F(SecondaryDown, CommandPrimaryPreferred) {
@@ -575,13 +527,11 @@ TEST_F(SecondaryDown, QuerySecondaryPreferred) {
MockReplicaSet* replSet = getReplSet();
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
- assertWithBothQueryApis(replConn,
- NamespaceString{IdentityNS},
- ReadPreference::SecondaryPreferred,
- [&](std::unique_ptr<DBClientCursor> cursor) {
- BSONObj doc = cursor->next();
- ASSERT_EQUALS(replSet->getPrimary(), doc[HostField.name()].str());
- });
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ auto cursor = replConn.find(std::move(findCmd),
+ ReadPreferenceSetting{ReadPreference::SecondaryPreferred});
+ BSONObj doc = cursor->next();
+ ASSERT_EQUALS(replSet->getPrimary(), doc[HostField.name()].str());
}
TEST_F(SecondaryDown, CommandSecondaryPreferred) {
@@ -592,13 +542,10 @@ TEST_F(SecondaryDown, QueryNearest) {
MockReplicaSet* replSet = getReplSet();
DBClientReplicaSet replConn(replSet->getSetName(), replSet->getHosts(), StringData());
- assertWithBothQueryApis(replConn,
- NamespaceString{IdentityNS},
- ReadPreference::Nearest,
- [&](std::unique_ptr<DBClientCursor> cursor) {
- BSONObj doc = cursor->next();
- ASSERT_EQUALS(replSet->getPrimary(), doc[HostField.name()].str());
- });
+ FindCommandRequest findCmd{NamespaceString{IdentityNS}};
+ auto cursor = replConn.find(std::move(findCmd), ReadPreferenceSetting{ReadPreference::Nearest});
+ BSONObj doc = cursor->next();
+ ASSERT_EQUALS(replSet->getPrimary(), doc[HostField.name()].str());
}
TEST_F(SecondaryDown, CommandNearest) {