void run() { buildCollection(); WorkingSetID id; setupFromQuery(BSON( "ts" << BSON( "$gte" << tsGte() ))); // ensure that we go into extent hopping mode immediately _stage->setBackwardsScanTime(0); // collection scan needs to initialize itself ASSERT_EQUALS(_stage->work(&id), PlanStage::NEED_TIME); // collection scan finds the first diskloc in // the backwards scan ASSERT_EQUALS(_stage->work(&id), PlanStage::NEED_TIME); ASSERT(_stage->isBackwardsScanning()); // hop back extent by extent for (int i = 0; i < numHops(); i++) { ASSERT_EQUALS(_stage->work(&id), PlanStage::NEED_TIME); ASSERT(_stage->isExtentHopping()); } // find the right loc without hopping again ASSERT_EQUALS(_stage->work(&id), finalState()); int startDocId = tsGte() - 1; if (startDocId >= 0) { assertWorkingSetMemberHasId(id, startDocId); } }
void run() { for(int i = 0; i < 10; ++i) { client()->insert(ns(), BSON( "_id" << i << "ts" << i )); } setupFromQuery(BSON( "ts" << BSON( "$gte" << 10 ))); WorkingSetID id = WorkingSet::INVALID_ID; // collection scan needs to be initialized ASSERT_EQUALS(_stage->work(&id), PlanStage::NEED_TIME); // finds starting record ASSERT_EQUALS(_stage->work(&id), PlanStage::ADVANCED); ASSERT(_stage->isBackwardsScanning()); assertWorkingSetMemberHasId(id, 9); }
void run() { for(int i = 0; i < 10; ++i) { client()->insert(ns(), BSON( "_id" << i << "ts" << i)); } setupFromQuery(BSON( "ts" << BSON( "$gte" << 1 ))); WorkingSetID id = WorkingSet::INVALID_ID; // ensure that we go into extent hopping mode immediately _stage->setBackwardsScanTime(0); // We immediately switch to extent hopping mode, and // should find the beginning of the extent ASSERT_EQUALS(_stage->work(&id), PlanStage::ADVANCED); ASSERT(_stage->isExtentHopping()); assertWorkingSetMemberHasId(id, 0); }
void run() { for(int i = 0; i < 10; ++i) { client()->insert(ns(), BSON( "_id" << i << "ts" << i )); } setupFromQuery(BSON( "ts" << BSON( "$gte" << 1 ))); WorkingSetID id; // collection scan needs to be initialized ASSERT_EQUALS(_stage->work(&id), PlanStage::NEED_TIME); // full collection scan back to the first oplog record for (int i = 0; i < 9; ++i) { ASSERT_EQUALS(_stage->work(&id), PlanStage::NEED_TIME); ASSERT(_stage->isBackwardsScanning()); } ASSERT_EQUALS(_stage->work(&id), PlanStage::ADVANCED); assertWorkingSetMemberHasId(id, 0); }
void run() { for(int i = 0; i < 10; ++i) { client()->insert(ns(), BSON( "_id" << i << "ts" << i)); } setupFromQuery(BSON( "ts" << BSON( "$gte" << 1 ))); WorkingSetID id; // ensure that we go into extent hopping mode immediately _stage->setBackwardsScanTime(0); // collection scan needs to initialize itself ASSERT_EQUALS(_stage->work(&id), PlanStage::NEED_TIME); // collection scan finds the first diskloc in // the backwards scan ASSERT_EQUALS(_stage->work(&id), PlanStage::NEED_TIME); ASSERT(_stage->isBackwardsScanning()); // Now we switch to extent hopping mode, and // should find the beginning of the extent ASSERT_EQUALS(_stage->work(&id), PlanStage::ADVANCED); ASSERT(_stage->isExtentHopping()); assertWorkingSetMemberHasId(id, 0); }