34 lines
1.2 KiB
JavaScript
34 lines
1.2 KiB
JavaScript
/**
|
|
* Tests various update scenarios on capped collections:
|
|
* -- SERVER-20529: Ensure capped document sizes do not change
|
|
* -- SERVER-11983: Don't create _id field on capped updates
|
|
* @tags: [
|
|
* requires_capped,
|
|
* uses_testing_only_commands,
|
|
* ]
|
|
*/
|
|
(function() {
|
|
'use strict';
|
|
var t = db.getSiblingDB("local").cannot_change_capped_size;
|
|
t.drop();
|
|
assert.commandWorked(
|
|
t.getDB().createCollection(t.getName(), {capped: true, size: 1024, autoIndexId: false}));
|
|
assert.eq(0, t.getIndexes().length, "the capped collection has indexes");
|
|
|
|
for (var j = 1; j <= 10; j++) {
|
|
assert.commandWorked(t.insert({_id: j, s: "Hello, World!"}));
|
|
}
|
|
|
|
assert.commandWorked(t.update({_id: 3}, {s: "Hello, Mongo!"})); // Mongo is same length as World
|
|
assert.writeError(t.update({_id: 3}, {$set: {s: "Hello!"}}));
|
|
assert.writeError(t.update({_id: 10}, {}));
|
|
assert.writeError(t.update({_id: 10}, {s: "Hello, World!!!"}));
|
|
|
|
assert.commandWorked(t.getDB().runCommand({godinsert: t.getName(), obj: {a: 2}}));
|
|
var doc = t.findOne({a: 2});
|
|
assert.eq(undefined, doc["_id"], "now has _id after godinsert");
|
|
assert.commandWorked(t.update({a: 2}, {$inc: {a: 1}}));
|
|
doc = t.findOne({a: 3});
|
|
assert.eq(undefined, doc["_id"], "now has _id after update");
|
|
})();
|