diff options
author | Gregory Wlodarek <gregory.wlodarek@mongodb.com> | 2019-02-14 13:05:52 -0500 |
---|---|---|
committer | Gregory Wlodarek <gregory.wlodarek@mongodb.com> | 2019-02-22 23:40:01 -0500 |
commit | cbf90926f4bdc5f3fd6d20291a5e24218e5f77ba (patch) | |
tree | f4b7a8e1c4bc9a06f23ec05f1e5fdbc569a7d305 /src/mongo/db/index_builds_coordinator_mongod_test.cpp | |
parent | b5f25acf119fd8b2c6119474f6b9ef13180ccc59 (diff) | |
download | mongo-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.cpp | 44 |
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 |