// DRIVERS-151
|
TYPED_TEST(BulkOperationTest, ClientGeneratedUpsertId) {
|
if (!this->testSupported()) return;
|
|
BulkOperationBuilder bulk(this->c, TEST_NS, true);
|
BSONObj cmdResult;
|
this->c->runCommand("admin", BSON("buildinfo" << true), cmdResult);
|
|
bulk.find(BSON("_id" << 0)).upsert().updateOne(BSON("$set" << BSON("a" << 0)));
|
bulk.find(BSON("a" << 1)).upsert().replaceOne(BSON("_id" << 1));
|
|
if (versionCmp(cmdResult["version"].toString(), "2.6.0") >= 0)
|
bulk.find(BSON("_id" << 3)).upsert().replaceOne(BSON("_id" << 2));
|
else
|
bulk.find(BSON("_id" << 2)).upsert().replaceOne(BSON("_id" << 2));
|
|
WriteResult result;
|
bulk.execute(&WriteConcern::acknowledged, &result);
|
|
ASSERT_EQUALS(result.nUpserted(), 3);
|
ASSERT_EQUALS(result.upserted().size(), 3U);
|
|
for (int i = 0; i < 3; ++i) {
|
ASSERT_EQUALS(result.upserted()[i].getIntField("index"), i);
|
ASSERT_EQUALS(result.upserted()[i].getIntField("_id"), i);
|
}
|
}
|