diff options
Diffstat (limited to 'jstests/sharding/findandmodify2.js')
-rw-r--r-- | jstests/sharding/findandmodify2.js | 198 |
1 files changed, 99 insertions, 99 deletions
diff --git a/jstests/sharding/findandmodify2.js b/jstests/sharding/findandmodify2.js index a1aa58ffefb..17af6c1a685 100644 --- a/jstests/sharding/findandmodify2.js +++ b/jstests/sharding/findandmodify2.js @@ -1,124 +1,124 @@ (function() { - 'use strict'; - load('jstests/sharding/autosplit_include.js'); - - var s = new ShardingTest({shards: 2, mongos: 1, other: {chunkSize: 1, enableAutoSplit: true}}); - assert.commandWorked(s.s0.adminCommand({enablesharding: "test"})); - - var db = s.getDB("test"); - s.ensurePrimaryShard('test', s.shard1.shardName); - var primary = s.getPrimaryShard("test").getDB("test"); - var secondary = s.getOther(primary).getDB("test"); - - var n = 100; - var collection = "stuff"; - var minChunks = 2; - - var col_update = collection + '_col_update'; - var col_update_upsert = col_update + '_upsert'; - var col_fam = collection + '_col_fam'; - var col_fam_upsert = col_fam + '_upsert'; - - var big = "x"; - for (var i = 0; i < 15; i++) { - big += big; +'use strict'; +load('jstests/sharding/autosplit_include.js'); + +var s = new ShardingTest({shards: 2, mongos: 1, other: {chunkSize: 1, enableAutoSplit: true}}); +assert.commandWorked(s.s0.adminCommand({enablesharding: "test"})); + +var db = s.getDB("test"); +s.ensurePrimaryShard('test', s.shard1.shardName); +var primary = s.getPrimaryShard("test").getDB("test"); +var secondary = s.getOther(primary).getDB("test"); + +var n = 100; +var collection = "stuff"; +var minChunks = 2; + +var col_update = collection + '_col_update'; +var col_update_upsert = col_update + '_upsert'; +var col_fam = collection + '_col_fam'; +var col_fam_upsert = col_fam + '_upsert'; + +var big = "x"; +for (var i = 0; i < 15; i++) { + big += big; +} + +// drop the collection +db[col_update].drop(); +db[col_update_upsert].drop(); +db[col_fam].drop(); +db[col_fam_upsert].drop(); + +// shard the collection on _id +s.adminCommand({shardcollection: 'test.' + col_update, key: {_id: 1}}); +s.adminCommand({shardcollection: 'test.' + col_update_upsert, key: {_id: 1}}); +s.adminCommand({shardcollection: 'test.' + col_fam, key: {_id: 1}}); +s.adminCommand({shardcollection: 'test.' + col_fam_upsert, key: {_id: 1}}); + +// update via findAndModify +function via_fam() { + for (var i = 0; i < n; i++) { + db[col_fam].save({_id: i}); } - // drop the collection - db[col_update].drop(); - db[col_update_upsert].drop(); - db[col_fam].drop(); - db[col_fam_upsert].drop(); - - // shard the collection on _id - s.adminCommand({shardcollection: 'test.' + col_update, key: {_id: 1}}); - s.adminCommand({shardcollection: 'test.' + col_update_upsert, key: {_id: 1}}); - s.adminCommand({shardcollection: 'test.' + col_fam, key: {_id: 1}}); - s.adminCommand({shardcollection: 'test.' + col_fam_upsert, key: {_id: 1}}); - - // update via findAndModify - function via_fam() { - for (var i = 0; i < n; i++) { - db[col_fam].save({_id: i}); - } - - for (var i = 0; i < n; i++) { - db[col_fam].findAndModify({query: {_id: i}, update: {$set: {big: big}}}); - } + for (var i = 0; i < n; i++) { + db[col_fam].findAndModify({query: {_id: i}, update: {$set: {big: big}}}); } +} - // upsert via findAndModify - function via_fam_upsert() { - for (var i = 0; i < n; i++) { - db[col_fam_upsert].findAndModify( - {query: {_id: i}, update: {$set: {big: big}}, upsert: true}); - } +// upsert via findAndModify +function via_fam_upsert() { + for (var i = 0; i < n; i++) { + db[col_fam_upsert].findAndModify( + {query: {_id: i}, update: {$set: {big: big}}, upsert: true}); } +} - // update data using basic update - function via_update() { - for (var i = 0; i < n; i++) { - db[col_update].save({_id: i}); - } +// update data using basic update +function via_update() { + for (var i = 0; i < n; i++) { + db[col_update].save({_id: i}); + } - for (var i = 0; i < n; i++) { - db[col_update].update({_id: i}, {$set: {big: big}}); - } + for (var i = 0; i < n; i++) { + db[col_update].update({_id: i}, {$set: {big: big}}); } +} - // upsert data using basic update - function via_update_upsert() { - for (var i = 0; i < n; i++) { - db[col_update_upsert].update({_id: i}, {$set: {big: big}}, true); - } +// upsert data using basic update +function via_update_upsert() { + for (var i = 0; i < n; i++) { + db[col_update_upsert].update({_id: i}, {$set: {big: big}}, true); } +} - print("---------- Update via findAndModify..."); - via_fam(); - waitForOngoingChunkSplits(s); +print("---------- Update via findAndModify..."); +via_fam(); +waitForOngoingChunkSplits(s); - print("---------- Done."); +print("---------- Done."); - print("---------- Upsert via findAndModify..."); - via_fam_upsert(); - waitForOngoingChunkSplits(s); +print("---------- Upsert via findAndModify..."); +via_fam_upsert(); +waitForOngoingChunkSplits(s); - print("---------- Done."); +print("---------- Done."); - print("---------- Basic update..."); - via_update(); - waitForOngoingChunkSplits(s); +print("---------- Basic update..."); +via_update(); +waitForOngoingChunkSplits(s); - print("---------- Done."); +print("---------- Done."); - print("---------- Basic update with upsert..."); - via_update_upsert(); - waitForOngoingChunkSplits(s); +print("---------- Basic update with upsert..."); +via_update_upsert(); +waitForOngoingChunkSplits(s); - print("---------- Done."); +print("---------- Done."); - print("---------- Printing chunks:"); - s.printChunks(); +print("---------- Printing chunks:"); +s.printChunks(); - print("---------- Verifying that both codepaths resulted in splits..."); - assert.gte(s.config.chunks.count({"ns": "test." + col_fam}), - minChunks, - "findAndModify update code path didn't result in splits"); - assert.gte(s.config.chunks.count({"ns": "test." + col_fam_upsert}), - minChunks, - "findAndModify upsert code path didn't result in splits"); - assert.gte(s.config.chunks.count({"ns": "test." + col_update}), - minChunks, - "update code path didn't result in splits"); - assert.gte(s.config.chunks.count({"ns": "test." + col_update_upsert}), - minChunks, - "upsert code path didn't result in splits"); +print("---------- Verifying that both codepaths resulted in splits..."); +assert.gte(s.config.chunks.count({"ns": "test." + col_fam}), + minChunks, + "findAndModify update code path didn't result in splits"); +assert.gte(s.config.chunks.count({"ns": "test." + col_fam_upsert}), + minChunks, + "findAndModify upsert code path didn't result in splits"); +assert.gte(s.config.chunks.count({"ns": "test." + col_update}), + minChunks, + "update code path didn't result in splits"); +assert.gte(s.config.chunks.count({"ns": "test." + col_update_upsert}), + minChunks, + "upsert code path didn't result in splits"); - printjson(db[col_update].stats()); +printjson(db[col_update].stats()); - // ensure that all chunks are smaller than chunkSize - // make sure not teensy - // test update without upsert and with upsert +// ensure that all chunks are smaller than chunkSize +// make sure not teensy +// test update without upsert and with upsert - s.stop(); +s.stop(); })(); |