diff options
Diffstat (limited to 'jstests/slow2/dur_big_atomic_update.js')
-rw-r--r-- | jstests/slow2/dur_big_atomic_update.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/jstests/slow2/dur_big_atomic_update.js b/jstests/slow2/dur_big_atomic_update.js new file mode 100644 index 00000000000..18a7c4a68f2 --- /dev/null +++ b/jstests/slow2/dur_big_atomic_update.js @@ -0,0 +1,48 @@ +// @file dur_big_atomic_update.js +// +// this tests writing 1GB in an atomic update to make sure we commit periodically + +var path = MongoRunner.dataDir + "/dur_big_atomic_update"; + +conn = startMongodEmpty("--port", 30001, "--dbpath", path, "--dur", "--durOptions", 8); +d = conn.getDB("test"); +d.foo.drop(); + +for (var i=0; i<1024; i++){ + d.foo.insert({_id:i}); +} + +big_string = 'xxxxxxxxxxxxxxxx'; +while (big_string.length < 1024*1024) { + big_string += big_string; +} + +d.foo.update({$atomic:1}, {$set: {big_string: big_string}}, false, /*multi*/true); +err = d.getLastErrorObj(); + +assert(err.err == null); +assert(err.n == 1024); + +d.dropDatabase(); + +for (var i=0; i<1024; i++){ + d.foo.insert({_id:i}); +} + +// Do it again but in a db.eval +d.eval( + function(big_string) { + new Mongo().getDB("test").foo.update({}, {$set: {big_string: big_string}}, false, /*multi*/true) + }, big_string); // Can't pass in connection or DB objects + +err = d.getLastErrorObj(); + +assert(err.err == null); +assert(err.n == 1024); + +// free up space +d.dropDatabase(); + +stopMongod(30001); + +print("dur big atomic update SUCCESS"); |