diff options
Diffstat (limited to 'jstests/sharding/presplit.js')
| -rw-r--r-- | jstests/sharding/presplit.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/jstests/sharding/presplit.js b/jstests/sharding/presplit.js new file mode 100644 index 00000000000..32f30a6aba7 --- /dev/null +++ b/jstests/sharding/presplit.js @@ -0,0 +1,47 @@ +/* + * @tags: [ + * requires_fcv_51, + * ] + */ + +(function() { + +load("jstests/sharding/libs/find_chunks_util.js"); + +var s = new ShardingTest({name: "presplit", shards: 2, mongos: 1, other: {chunkSize: 1}}); + +s.adminCommand({enablesharding: "test"}); +s.ensurePrimaryShard('test', s.shard1.shardName); + +// Insert enough data in 'test.foo' to fill several chunks, if it was sharded. +bigString = ""; +while (bigString.length < 10000) { + bigString += "asdasdasdasdadasdasdasdasdasdasdasdasda"; +} + +db = s.getDB("test"); +inserted = 0; +num = 0; +var bulk = db.foo.initializeUnorderedBulkOp(); +while (inserted < (20 * 1024 * 1024)) { + bulk.insert({_id: num++, s: bigString}); + inserted += bigString.length; +} +assert.commandWorked(bulk.execute()); + +// Make sure that there's only one chunk holding all the data. +s.printChunks(); +primary = s.getPrimaryShard("test").getDB("test"); +assert.eq(0, s.config.chunks.count({"ns": "test.foo"}), "single chunk assertion"); +assert.eq(num, primary.foo.count()); + +s.adminCommand({shardcollection: "test.foo", key: {_id: 1}}); + +// Make sure the collection's original chunk got split +s.printChunks(); +assert.lte(20, findChunksUtil.countChunksForNs(s.config, "test.foo"), "many chunks assertion"); +assert.eq(num, primary.foo.count()); + +s.printChangeLog(); +s.stop(); +})(); |
