diff options
author | Antonin Kral <a.kral@bobek.cz> | 2012-03-01 13:43:25 +0100 |
---|---|---|
committer | Antonin Kral <a.kral@bobek.cz> | 2012-03-01 13:43:25 +0100 |
commit | ba59b00736b5b8dc0f0bd46397575aaf0cd4d44f (patch) | |
tree | 6364cf3f69677758a13f7aa5f6f06a8ebb652d98 /jstests/sharding | |
parent | f0d9a01bccdaeb466c12c92057914bbfef59526c (diff) | |
download | mongodb-ba59b00736b5b8dc0f0bd46397575aaf0cd4d44f.tar.gz |
Imported Upstream version 2.0.3
Diffstat (limited to 'jstests/sharding')
-rw-r--r-- | jstests/sharding/inTiming.js | 58 | ||||
-rw-r--r-- | jstests/sharding/sharding_with_keyfile.js | 10 | ||||
-rw-r--r--[-rwxr-xr-x] | jstests/sharding/sharding_with_keyfile.key | 0 |
3 files changed, 66 insertions, 2 deletions
diff --git a/jstests/sharding/inTiming.js b/jstests/sharding/inTiming.js new file mode 100644 index 0000000..51387a6 --- /dev/null +++ b/jstests/sharding/inTiming.js @@ -0,0 +1,58 @@ +// Check that shard selection does not take a really long time on $in queries: SERVER-4745 + +s = new ShardingTest( 'sharding_inqueries', 3, 0, 1, {chunksize:1}); + +db = s.getDB( 'test' ); + +s.adminCommand( { enablesharding: 'test' } ); +s.adminCommand( { shardcollection: 'test.foo', key: { a:1, b:1 } } ); + +var lst = []; +for (var i = 0; i < 500; i++) { lst.push(i); } + +/* +* Time how long it takes to do $in querys on a sharded and unsharded collection. +* There is no data in either collection, so the query time is coming almost +* entirely from the code that selects which shard(s) to send the query to. +*/ +unshardedQuery = function() {db.bar.find({a:{$in:lst}, b:{$in:lst}}).itcount()}; +shardedQuery = function() {db.foo.find({a:{$in:lst}, b:{$in:lst}}).itcount()}; +// Run queries a few times to warm memory +for (var i = 0; i < 3; i++) { + unshardedQuery(); + shardedQuery(); +} + +unshardedTime = Date.timeFunc(unshardedQuery , 5); +shardedTime = Date.timeFunc(shardedQuery, 5); + +print("Unsharded $in query ran in " + unshardedTime); +print("Sharded $in query ran in " + shardedTime); +assert(unshardedTime * 10 > shardedTime, "Sharded query is more than 10 times as slow as unsharded query"); + +s.getDB('config').settings.update( { _id: "balancer" }, { $set : { stopped: true } } , true ); + +db.adminCommand({split : "test.foo", middle : { a:1, b:10}}); +db.adminCommand({split : "test.foo", middle : { a:3, b:0}}); + +db.adminCommand({moveChunk : "test.foo", find : {a:1, b:0}, to : "shard0000"}); +db.adminCommand({moveChunk : "test.foo", find : {a:1, b:15}, to : "shard0001"}); +db.adminCommand({moveChunk : "test.foo", find : {a:3, b:15}, to : "shard0002"}); + +// Now make sure we get the same results from sharded and unsharded query. + +for (var i = 0; i < 20; i++) { + db.foo.save({a:1, b:i}); + db.foo.save({a:2, b:i}); + db.foo.save({a:3, b:i}); + db.foo.save({a:4, b:i}); +} + +db.printShardingStatus(); + +assert.eq(6, db.foo.find({a : {$in : [1, 2]}, b : {$in : [0, 3, 5]}}).itcount()); +assert.eq(14, db.foo.find({a : {$in : [1, 2]}, b : {$in : [0, 3, 5, 10, 11, 15, 19]}}).itcount()); +assert.eq(28, db.foo.find({a : {$in : [1, 2, 3, 4]}, b : {$in : [0, 3, 5, 10, 11, 15, 19]}}).itcount()); +assert.eq(14, db.foo.find({a : {$in : [3, 4]}, b : {$in : [0, 3, 5, 10, 11, 15, 19]}}).itcount()); + +s.stop(); diff --git a/jstests/sharding/sharding_with_keyfile.js b/jstests/sharding/sharding_with_keyfile.js index 94aea57..bd8d038 100644 --- a/jstests/sharding/sharding_with_keyfile.js +++ b/jstests/sharding/sharding_with_keyfile.js @@ -1,9 +1,15 @@ // Tests sharding with a key file -var st = new ShardingTest({ name : jsTestName(), +myTestName = "sharding_with_keyfile" + +keyFile = "jstests/sharding/" + myTestName + ".key"; + +run( "chmod" , "600" , keyFile ); + +var st = new ShardingTest({ name : myTestName , shards : 2, mongos : 1, - keyFile : keyFile = "jstests/sharding/" + jsTestName() + ".key" }) + keyFile : keyFile }) // Make sure all our instances got the key var configs = st._configDB.split(",") diff --git a/jstests/sharding/sharding_with_keyfile.key b/jstests/sharding/sharding_with_keyfile.key index fe3344b..fe3344b 100755..100644 --- a/jstests/sharding/sharding_with_keyfile.key +++ b/jstests/sharding/sharding_with_keyfile.key |