summaryrefslogtreecommitdiff
path: root/src/mongo/dbtests/query_stage_limit_skip.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/dbtests/query_stage_limit_skip.cpp')
-rw-r--r--src/mongo/dbtests/query_stage_limit_skip.cpp110
1 files changed, 56 insertions, 54 deletions
diff --git a/src/mongo/dbtests/query_stage_limit_skip.cpp b/src/mongo/dbtests/query_stage_limit_skip.cpp
index 36e6dcc5756..8ed129a8f95 100644
--- a/src/mongo/dbtests/query_stage_limit_skip.cpp
+++ b/src/mongo/dbtests/query_stage_limit_skip.cpp
@@ -44,67 +44,69 @@ using namespace mongo;
namespace {
- using std::max;
- using std::min;
- using std::unique_ptr;
-
- static const int N = 50;
-
- /* Populate a QueuedDataStage and return it. Caller owns it. */
- QueuedDataStage* getMS(WorkingSet* ws) {
- unique_ptr<QueuedDataStage> ms(new QueuedDataStage(ws));
-
- // Put N ADVANCED results into the mock stage, and some other stalling results (YIELD/TIME).
- for (int i = 0; i < N; ++i) {
- ms->pushBack(PlanStage::NEED_TIME);
- WorkingSetMember wsm;
- wsm.state = WorkingSetMember::OWNED_OBJ;
- wsm.obj = Snapshotted<BSONObj>(SnapshotId(), BSON("x" << i));
- ms->pushBack(wsm);
- ms->pushBack(PlanStage::NEED_TIME);
- }
-
- return ms.release();
+using std::max;
+using std::min;
+using std::unique_ptr;
+
+static const int N = 50;
+
+/* Populate a QueuedDataStage and return it. Caller owns it. */
+QueuedDataStage* getMS(WorkingSet* ws) {
+ unique_ptr<QueuedDataStage> ms(new QueuedDataStage(ws));
+
+ // Put N ADVANCED results into the mock stage, and some other stalling results (YIELD/TIME).
+ for (int i = 0; i < N; ++i) {
+ ms->pushBack(PlanStage::NEED_TIME);
+ WorkingSetMember wsm;
+ wsm.state = WorkingSetMember::OWNED_OBJ;
+ wsm.obj = Snapshotted<BSONObj>(SnapshotId(), BSON("x" << i));
+ ms->pushBack(wsm);
+ ms->pushBack(PlanStage::NEED_TIME);
}
- int countResults(PlanStage* stage) {
- int count = 0;
- while (!stage->isEOF()) {
- WorkingSetID id = WorkingSet::INVALID_ID;
- PlanStage::StageState status = stage->work(&id);
- if (PlanStage::ADVANCED != status) { continue; }
- ++count;
+ return ms.release();
+}
+
+int countResults(PlanStage* stage) {
+ int count = 0;
+ while (!stage->isEOF()) {
+ WorkingSetID id = WorkingSet::INVALID_ID;
+ PlanStage::StageState status = stage->work(&id);
+ if (PlanStage::ADVANCED != status) {
+ continue;
}
- return count;
+ ++count;
}
-
- //
- // Insert 50 objects. Filter/skip 0, 1, 2, ..., 100 objects and expect the right # of results.
- //
- class QueryStageLimitSkipBasicTest {
- public:
- void run() {
- for (int i = 0; i < 2 * N; ++i) {
- WorkingSet ws;
-
- unique_ptr<PlanStage> skip(new SkipStage(i, &ws, getMS(&ws)));
- ASSERT_EQUALS(max(0, N - i), countResults(skip.get()));
-
- unique_ptr<PlanStage> limit(new LimitStage(i, &ws, getMS(&ws)));
- ASSERT_EQUALS(min(N, i), countResults(limit.get()));
- }
+ return count;
+}
+
+//
+// Insert 50 objects. Filter/skip 0, 1, 2, ..., 100 objects and expect the right # of results.
+//
+class QueryStageLimitSkipBasicTest {
+public:
+ void run() {
+ for (int i = 0; i < 2 * N; ++i) {
+ WorkingSet ws;
+
+ unique_ptr<PlanStage> skip(new SkipStage(i, &ws, getMS(&ws)));
+ ASSERT_EQUALS(max(0, N - i), countResults(skip.get()));
+
+ unique_ptr<PlanStage> limit(new LimitStage(i, &ws, getMS(&ws)));
+ ASSERT_EQUALS(min(N, i), countResults(limit.get()));
}
- };
+ }
+};
- class All : public Suite {
- public:
- All() : Suite( "query_stage_limit_skip" ) { }
+class All : public Suite {
+public:
+ All() : Suite("query_stage_limit_skip") {}
- void setupTests() {
- add<QueryStageLimitSkipBasicTest>();
- }
- };
+ void setupTests() {
+ add<QueryStageLimitSkipBasicTest>();
+ }
+};
- SuiteInstance<All> queryStageLimitSkipAll;
+SuiteInstance<All> queryStageLimitSkipAll;
} // namespace