summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/document_source_limit_test.cpp
diff options
context:
space:
mode:
authorCharlie Swanson <cswanson310@gmail.com>2016-09-01 17:32:55 -0400
committerCharlie Swanson <cswanson310@gmail.com>2016-09-12 16:55:21 -0400
commit8383c8731ba18b8443e424783c5aa63a8aed9202 (patch)
treec8126726ac5255fc2f3410337627714944036c66 /src/mongo/db/pipeline/document_source_limit_test.cpp
parentec61ddf3e46fdc4c5c960968d3766195cd3a2c34 (diff)
downloadmongo-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.cpp22
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