summaryrefslogtreecommitdiff
path: root/jstests/sharding/presplit.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/sharding/presplit.js')
-rw-r--r--jstests/sharding/presplit.js47
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();
+})();