diff options
Diffstat (limited to 'src/mongo/s/write_ops/batched_insert_request_test.cpp')
-rw-r--r-- | src/mongo/s/write_ops/batched_insert_request_test.cpp | 220 |
1 files changed, 108 insertions, 112 deletions
diff --git a/src/mongo/s/write_ops/batched_insert_request_test.cpp b/src/mongo/s/write_ops/batched_insert_request_test.cpp index 5be837ae17a..66f99c7ffc6 100644 --- a/src/mongo/s/write_ops/batched_insert_request_test.cpp +++ b/src/mongo/s/write_ops/batched_insert_request_test.cpp @@ -36,115 +36,111 @@ namespace { - using namespace mongo; - using std::unique_ptr; - using std::string; - - TEST(RoundTrip, Normal) { - BSONArray insertArray = BSON_ARRAY(BSON("a" << 1) << BSON("b" << 1)); - - BSONObj writeConcernObj = BSON("w" << 1); - - // The BSON_ARRAY macro doesn't support Timestamps. - BSONArrayBuilder arrBuilder; - arrBuilder.append(Timestamp(1,1)); - arrBuilder.append(OID::gen()); - BSONArray shardVersionArray = arrBuilder.arr(); - - BSONObj origInsertRequestObj = - BSON(BatchedInsertRequest::collName("test") << - BatchedInsertRequest::documents() << insertArray << - BatchedInsertRequest::writeConcern(writeConcernObj) << - BatchedInsertRequest::ordered(true) << - BatchedInsertRequest::metadata() << BSON( - BatchedRequestMetadata::shardName("shard0000") << - BatchedRequestMetadata::shardVersion() << shardVersionArray << - BatchedRequestMetadata::session(0))); - - string errMsg; - BatchedInsertRequest request; - bool ok = request.parseBSON(origInsertRequestObj, &errMsg); - ASSERT_TRUE(ok); - - BSONObj genInsertRequestObj = request.toBSON(); - ASSERT_EQUALS(0, genInsertRequestObj.woCompare(origInsertRequestObj)); - } - - TEST(GenID, All) { - - BatchedCommandRequest cmdRequest(BatchedCommandRequest::BatchType_Insert); - BatchedInsertRequest& request = *cmdRequest.getInsertRequest(); - - request.setCollName("foo.bar"); - request.setOrdered(false); - - BSONObj insertA = BSON( "a" << 1 ); - BSONObj insertB = BSON( "b" << 1 ); - request.addToDocuments(insertA); - request.addToDocuments(insertB); - - unique_ptr<BatchedCommandRequest> idCmdRequest; - idCmdRequest.reset(BatchedCommandRequest::cloneWithIds(cmdRequest)); - ASSERT(idCmdRequest.get()); - - BatchedInsertRequest* idRequest = idCmdRequest->getInsertRequest(); - ASSERT_EQUALS(idRequest->getCollName(), request.getCollName()); - ASSERT_EQUALS(idRequest->getOrdered(), request.getOrdered()); - - ASSERT(!idRequest->getDocumentsAt(0)["_id"].eoo()); - ASSERT_EQUALS(idRequest->getDocumentsAt(0).nFields(), 2); - ASSERT(!idRequest->getDocumentsAt(1)["_id"].eoo()); - ASSERT_EQUALS(idRequest->getDocumentsAt(1).nFields(), 2); - } - - TEST(GenID, Partial) { - - BatchedCommandRequest cmdRequest(BatchedCommandRequest::BatchType_Insert); - BatchedInsertRequest& request = *cmdRequest.getInsertRequest(); - - request.setCollName("foo.bar"); - request.setOrdered(false); - - BSONObj insertA = BSON( "a" << 1 ); - BSONObj insertB = BSON( "b" << 1 << "_id" << 1 ); - BSONObj insertC = BSON( "c" << 1 ); - request.addToDocuments(insertA); - request.addToDocuments(insertB); - request.addToDocuments(insertC); - - unique_ptr<BatchedCommandRequest> idCmdRequest; - idCmdRequest.reset(BatchedCommandRequest::cloneWithIds(cmdRequest)); - ASSERT(idCmdRequest.get()); - - BatchedInsertRequest* idRequest = idCmdRequest->getInsertRequest(); - ASSERT_EQUALS(idRequest->getCollName(), request.getCollName()); - ASSERT_EQUALS(idRequest->getOrdered(), request.getOrdered()); - - ASSERT(!idRequest->getDocumentsAt(0)["_id"].eoo()); - ASSERT_EQUALS(idRequest->getDocumentsAt(0).nFields(), 2); - ASSERT(!idRequest->getDocumentsAt(1)["_id"].eoo()); - ASSERT_EQUALS(idRequest->getDocumentsAt(1).nFields(), 2); - ASSERT(!idRequest->getDocumentsAt(2)["_id"].eoo()); - ASSERT_EQUALS(idRequest->getDocumentsAt(1).nFields(), 2); - } - - TEST(GenID, None) { - - BatchedCommandRequest cmdRequest(BatchedCommandRequest::BatchType_Insert); - BatchedInsertRequest& request = *cmdRequest.getInsertRequest(); - - // We need to check for system.indexes namespace - request.setCollName("foo.bar"); - - BSONObj insertA = BSON( "_id" << 0 << "a" << 1 ); - BSONObj insertB = BSON( "b" << 1 << "_id" << 1 ); - request.addToDocuments(insertA); - request.addToDocuments(insertB); - - unique_ptr<BatchedCommandRequest> idCmdRequest; - idCmdRequest.reset(BatchedCommandRequest::cloneWithIds(cmdRequest)); - ASSERT(!idCmdRequest.get()); - } - - -} // unnamed namespace +using namespace mongo; +using std::unique_ptr; +using std::string; + +TEST(RoundTrip, Normal) { + BSONArray insertArray = BSON_ARRAY(BSON("a" << 1) << BSON("b" << 1)); + + BSONObj writeConcernObj = BSON("w" << 1); + + // The BSON_ARRAY macro doesn't support Timestamps. + BSONArrayBuilder arrBuilder; + arrBuilder.append(Timestamp(1, 1)); + arrBuilder.append(OID::gen()); + BSONArray shardVersionArray = arrBuilder.arr(); + + BSONObj origInsertRequestObj = + BSON(BatchedInsertRequest::collName("test") + << BatchedInsertRequest::documents() << insertArray + << BatchedInsertRequest::writeConcern(writeConcernObj) + << BatchedInsertRequest::ordered(true) << BatchedInsertRequest::metadata() + << BSON(BatchedRequestMetadata::shardName("shard0000") + << BatchedRequestMetadata::shardVersion() << shardVersionArray + << BatchedRequestMetadata::session(0))); + + string errMsg; + BatchedInsertRequest request; + bool ok = request.parseBSON(origInsertRequestObj, &errMsg); + ASSERT_TRUE(ok); + + BSONObj genInsertRequestObj = request.toBSON(); + ASSERT_EQUALS(0, genInsertRequestObj.woCompare(origInsertRequestObj)); +} + +TEST(GenID, All) { + BatchedCommandRequest cmdRequest(BatchedCommandRequest::BatchType_Insert); + BatchedInsertRequest& request = *cmdRequest.getInsertRequest(); + + request.setCollName("foo.bar"); + request.setOrdered(false); + + BSONObj insertA = BSON("a" << 1); + BSONObj insertB = BSON("b" << 1); + request.addToDocuments(insertA); + request.addToDocuments(insertB); + + unique_ptr<BatchedCommandRequest> idCmdRequest; + idCmdRequest.reset(BatchedCommandRequest::cloneWithIds(cmdRequest)); + ASSERT(idCmdRequest.get()); + + BatchedInsertRequest* idRequest = idCmdRequest->getInsertRequest(); + ASSERT_EQUALS(idRequest->getCollName(), request.getCollName()); + ASSERT_EQUALS(idRequest->getOrdered(), request.getOrdered()); + + ASSERT(!idRequest->getDocumentsAt(0)["_id"].eoo()); + ASSERT_EQUALS(idRequest->getDocumentsAt(0).nFields(), 2); + ASSERT(!idRequest->getDocumentsAt(1)["_id"].eoo()); + ASSERT_EQUALS(idRequest->getDocumentsAt(1).nFields(), 2); +} + +TEST(GenID, Partial) { + BatchedCommandRequest cmdRequest(BatchedCommandRequest::BatchType_Insert); + BatchedInsertRequest& request = *cmdRequest.getInsertRequest(); + + request.setCollName("foo.bar"); + request.setOrdered(false); + + BSONObj insertA = BSON("a" << 1); + BSONObj insertB = BSON("b" << 1 << "_id" << 1); + BSONObj insertC = BSON("c" << 1); + request.addToDocuments(insertA); + request.addToDocuments(insertB); + request.addToDocuments(insertC); + + unique_ptr<BatchedCommandRequest> idCmdRequest; + idCmdRequest.reset(BatchedCommandRequest::cloneWithIds(cmdRequest)); + ASSERT(idCmdRequest.get()); + + BatchedInsertRequest* idRequest = idCmdRequest->getInsertRequest(); + ASSERT_EQUALS(idRequest->getCollName(), request.getCollName()); + ASSERT_EQUALS(idRequest->getOrdered(), request.getOrdered()); + + ASSERT(!idRequest->getDocumentsAt(0)["_id"].eoo()); + ASSERT_EQUALS(idRequest->getDocumentsAt(0).nFields(), 2); + ASSERT(!idRequest->getDocumentsAt(1)["_id"].eoo()); + ASSERT_EQUALS(idRequest->getDocumentsAt(1).nFields(), 2); + ASSERT(!idRequest->getDocumentsAt(2)["_id"].eoo()); + ASSERT_EQUALS(idRequest->getDocumentsAt(1).nFields(), 2); +} + +TEST(GenID, None) { + BatchedCommandRequest cmdRequest(BatchedCommandRequest::BatchType_Insert); + BatchedInsertRequest& request = *cmdRequest.getInsertRequest(); + + // We need to check for system.indexes namespace + request.setCollName("foo.bar"); + + BSONObj insertA = BSON("_id" << 0 << "a" << 1); + BSONObj insertB = BSON("b" << 1 << "_id" << 1); + request.addToDocuments(insertA); + request.addToDocuments(insertB); + + unique_ptr<BatchedCommandRequest> idCmdRequest; + idCmdRequest.reset(BatchedCommandRequest::cloneWithIds(cmdRequest)); + ASSERT(!idCmdRequest.get()); +} + + +} // unnamed namespace |