Files
mongo/jstests/sharding/large_chunk.js
Kaloian Manassiev 29ff4c8033 SERVER-23733 Tests should not write chunkSize to config.settings directly
Instead, they should pass it as parameter to ShardingTest.

This change is in preparation for removing the chunkSize parameter to
mongos.
2016-05-04 16:09:10 -04:00

66 lines
2.1 KiB
JavaScript

// Where we test operations dealing with large chunks
(function() {
'use strict';
// Starts a new sharding environment limiting the chunk size to 1GB (highest value allowed).
// Note that early splitting will start with a 1/4 of max size currently.
var s = new ShardingTest({name: 'large_chunk', shards: 2, other: {chunkSize: 1024}});
var db = s.getDB("test");
//
// Step 1 - Test moving a large chunk
//
// Turn on sharding on the 'test.foo' collection and generate a large chunk
assert.commandWorked(s.s0.adminCommand({enablesharding: "test"}));
s.ensurePrimaryShard('test', 'shard0001');
var bigString = "";
while (bigString.length < 10000) {
bigString += "asdasdasdasdadasdasdasdasdasdasdasdasda";
}
var inserted = 0;
var num = 0;
var bulk = db.foo.initializeUnorderedBulkOp();
while (inserted < (400 * 1024 * 1024)) {
bulk.insert({_id: num++, s: bigString});
inserted += bigString.length;
}
assert.writeOK(bulk.execute());
assert.commandWorked(s.s0.adminCommand({shardcollection: "test.foo", key: {_id: 1}}));
assert.eq(1, s.config.chunks.count(), "step 1 - need one large chunk");
var primary = s.getPrimaryShard("test").getDB("test");
var secondary = s.getOther(primary).getDB("test");
// Make sure that we don't move that chunk if it goes past what we consider the maximum chunk
// size
print("Checkpoint 1a");
var max = 200 * 1024 * 1024;
assert.throws(function() {
s.adminCommand({
movechunk: "test.foo",
find: {_id: 1},
to: secondary.getMongo().name,
maxChunkSizeBytes: max
});
});
// Move the chunk
print("checkpoint 1b");
var before = s.config.chunks.find().toArray();
assert.commandWorked(
s.s0.adminCommand({movechunk: "test.foo", find: {_id: 1}, to: secondary.getMongo().name}));
var after = s.config.chunks.find().toArray();
assert.neq(before[0].shard, after[0].shard, "move chunk did not work");
s.config.changelog.find().forEach(printjson);
s.stop();
})();