diff options
author | Charlie Swanson <cswanson310@gmail.com> | 2016-09-01 17:32:55 -0400 |
---|---|---|
committer | Charlie Swanson <cswanson310@gmail.com> | 2016-09-12 16:55:21 -0400 |
commit | 8383c8731ba18b8443e424783c5aa63a8aed9202 (patch) | |
tree | c8126726ac5255fc2f3410337627714944036c66 /src/mongo/db/pipeline/document_source_limit_test.cpp | |
parent | ec61ddf3e46fdc4c5c960968d3766195cd3a2c34 (diff) | |
download | mongo-8383c8731ba18b8443e424783c5aa63a8aed9202.tar.gz |
SERVER-24153 Add unit tests for DocumentSource pausing behavior.
Diffstat (limited to 'src/mongo/db/pipeline/document_source_limit_test.cpp')
-rw-r--r-- | src/mongo/db/pipeline/document_source_limit_test.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/mongo/db/pipeline/document_source_limit_test.cpp b/src/mongo/db/pipeline/document_source_limit_test.cpp index 7de5bf85a3a..2fc83eed374 100644 --- a/src/mongo/db/pipeline/document_source_limit_test.cpp +++ b/src/mongo/db/pipeline/document_source_limit_test.cpp @@ -99,5 +99,27 @@ TEST_F(DocumentSourceLimitTest, ShouldNotIntroduceAnyDependencies) { ASSERT_EQUALS(false, dependencies.getNeedTextScore()); } +TEST_F(DocumentSourceLimitTest, ShouldPropagatePauses) { + auto limit = DocumentSourceLimit::create(getExpCtx(), 2); + auto mock = DocumentSourceMock::create({DocumentSource::GetNextResult::makePauseExecution(), + Document(), + DocumentSource::GetNextResult::makePauseExecution(), + Document(), + DocumentSource::GetNextResult::makePauseExecution(), + Document()}); + limit->setSource(mock.get()); + + ASSERT_TRUE(limit->getNext().isPaused()); + ASSERT_TRUE(limit->getNext().isAdvanced()); + ASSERT_TRUE(limit->getNext().isPaused()); + ASSERT_TRUE(limit->getNext().isAdvanced()); + + // We've reached the limit. + ASSERT_TRUE(mock->isDisposed); + ASSERT_TRUE(limit->getNext().isEOF()); + ASSERT_TRUE(limit->getNext().isEOF()); + ASSERT_TRUE(limit->getNext().isEOF()); +} + } // namespace } // namespace mongo |