summaryrefslogtreecommitdiff
path: root/src/mongo/db/index_builds_coordinator_mongod_test.cpp
diff options
context:
space:
mode:
authorGregory Wlodarek <gregory.wlodarek@mongodb.com>2019-02-14 13:05:52 -0500
committerGregory Wlodarek <gregory.wlodarek@mongodb.com>2019-02-22 23:40:01 -0500
commitcbf90926f4bdc5f3fd6d20291a5e24218e5f77ba (patch)
treef4b7a8e1c4bc9a06f23ec05f1e5fdbc569a7d305 /src/mongo/db/index_builds_coordinator_mongod_test.cpp
parentb5f25acf119fd8b2c6119474f6b9ef13180ccc59 (diff)
downloadmongo-cbf90926f4bdc5f3fd6d20291a5e24218e5f77ba.tar.gz
SERVER-39527 Implement IndexBuildsCoordinatorMongod::setCommitQuorum
Diffstat (limited to 'src/mongo/db/index_builds_coordinator_mongod_test.cpp')
-rw-r--r--src/mongo/db/index_builds_coordinator_mongod_test.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/mongo/db/index_builds_coordinator_mongod_test.cpp b/src/mongo/db/index_builds_coordinator_mongod_test.cpp
index 566219732f7..5dd6938f730 100644
--- a/src/mongo/db/index_builds_coordinator_mongod_test.cpp
+++ b/src/mongo/db/index_builds_coordinator_mongod_test.cpp
@@ -406,6 +406,50 @@ TEST_F(IndexBuildsCoordinatorMongodTest, DisallowNewBuildsOnNamespace) {
}
}
+TEST_F(IndexBuildsCoordinatorMongodTest, SetCommitQuorumWithBadArguments) {
+ _indexBuildsCoord->sleepIndexBuilds_forTestOnly(true);
+
+ CommitQuorumOptions newCommitQuorum("majority");
+
+ // Pass in an empty index list.
+ Status status =
+ _indexBuildsCoord->setCommitQuorum(operationContext(), _testFooNss, {}, newCommitQuorum);
+ ASSERT_EQUALS(ErrorCodes::IndexNotFound, status);
+
+ // Use an invalid collection namespace.
+ NamespaceString nss("bad.collection");
+ status = _indexBuildsCoord->setCommitQuorum(
+ operationContext(), nss, {"a_1", "b_1"}, newCommitQuorum);
+ ASSERT_EQUALS(ErrorCodes::NamespaceNotFound, status);
+
+ // No index builds are happening on the collection.
+ status = _indexBuildsCoord->setCommitQuorum(
+ operationContext(), _testFooNss, {"a_1", "b_1"}, newCommitQuorum);
+ ASSERT_EQUALS(ErrorCodes::IndexNotFound, status);
+
+ // Register an index build on _testFooNss.
+ auto testFoo1Future =
+ assertGet(_indexBuildsCoord->startIndexBuild(operationContext(),
+ _testFooUUID,
+ makeSpecs(_testFooNss, {"a", "b"}),
+ UUID::gen(),
+ IndexBuildProtocol::kTwoPhase,
+ _indexBuildOptions));
+
+ // No index with the name "c" is being built.
+ status =
+ _indexBuildsCoord->setCommitQuorum(operationContext(), _testFooNss, {"c"}, newCommitQuorum);
+ ASSERT_EQUALS(ErrorCodes::IndexNotFound, status);
+
+ // Pass in extra indexes not being built by the same index builder.
+ status = _indexBuildsCoord->setCommitQuorum(
+ operationContext(), _testFooNss, {"a_1", "b_1", "c_1"}, newCommitQuorum);
+ ASSERT_EQUALS(ErrorCodes::IndexNotFound, status);
+
+ _indexBuildsCoord->sleepIndexBuilds_forTestOnly(false);
+ unittest::assertGet(testFoo1Future.getNoThrow());
+}
+
} // namespace
} // namespace mongo