virtual void run() { const BSONObj inputBson = pipelineFromJsonArray(inputPipeJson()); const BSONObj outputPipeExpected = pipelineFromJsonArray(outputPipeJson()); intrusive_ptr<ExpressionContext> ctx = new ExpressionContext(&_opCtx, NamespaceString("a.collection")); string errmsg; intrusive_ptr<Pipeline> outputPipe = Pipeline::parseCommand(errmsg, inputBson, ctx); ASSERT_EQUALS(errmsg, ""); ASSERT(outputPipe != NULL); ASSERT_EQUALS(Value(outputPipe->writeExplainOps()), Value(outputPipeExpected["pipeline"])); }
virtual void run() { const BSONObj inputBson = pipelineFromJsonArray(inputPipeJson()); const BSONObj shardPipeExpected = pipelineFromJsonArray(shardPipeJson()); const BSONObj mergePipeExpected = pipelineFromJsonArray(mergePipeJson()); intrusive_ptr<ExpressionContext> ctx = new ExpressionContext(&_opCtx, NamespaceString("a.collection")); string errmsg; intrusive_ptr<Pipeline> mergePipe = Pipeline::parseCommand(errmsg, inputBson, ctx); ASSERT_EQUALS(errmsg, ""); ASSERT(mergePipe != NULL); intrusive_ptr<Pipeline> shardPipe = mergePipe->splitForSharded(); ASSERT(shardPipe != NULL); ASSERT_EQUALS(shardPipe->serialize()["pipeline"], Value(shardPipeExpected["pipeline"])); ASSERT_EQUALS(mergePipe->serialize()["pipeline"], Value(mergePipeExpected["pipeline"])); }