summaryrefslogtreecommitdiff
path: root/jstests/sharding/limit_push.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/sharding/limit_push.js')
-rw-r--r--jstests/sharding/limit_push.js111
1 files changed, 56 insertions, 55 deletions
diff --git a/jstests/sharding/limit_push.js b/jstests/sharding/limit_push.js
index ec744207e97..ef6b7a1c903 100644
--- a/jstests/sharding/limit_push.js
+++ b/jstests/sharding/limit_push.js
@@ -2,59 +2,60 @@
// See: http://jira.mongodb.org/browse/SERVER-1896
(function() {
- var s = new ShardingTest({name: "limit_push", shards: 2, mongos: 1});
- var db = s.getDB("test");
-
- // Create some data
- for (i = 0; i < 100; i++) {
- db.limit_push.insert({_id: i, x: i});
- }
- db.limit_push.ensureIndex({x: 1});
- assert.eq(100, db.limit_push.find().length(), "Incorrect number of documents");
-
- // Shard the collection
- s.adminCommand({enablesharding: "test"});
- s.ensurePrimaryShard('test', s.shard1.shardName);
- s.adminCommand({shardcollection: "test.limit_push", key: {x: 1}});
-
- // Now split the and move the data between the shards
- s.adminCommand({split: "test.limit_push", middle: {x: 50}});
- s.adminCommand({
- moveChunk: "test.limit_push",
- find: {x: 51},
- to: s.getOther(s.getPrimaryShard("test")).name,
- _waitForDelete: true
- });
-
- // Check that the chunck have split correctly
- assert.eq(2, s.config.chunks.count({"ns": "test.limit_push"}), "wrong number of chunks");
-
- // The query is asking for the maximum value below a given value
- // db.limit_push.find( { x : { $lt : 60} } ).sort( { x:-1} ).limit(1)
- q = {x: {$lt: 60}};
-
- // Make sure the basic queries are correct
- assert.eq(60, db.limit_push.find(q).count(), "Did not find 60 documents");
- // rs = db.limit_push.find( q ).sort( { x:-1} ).limit(1)
- // assert.eq( rs , { _id : "1" , x : 59 } , "Did not find document with value 59" );
-
- // Now make sure that the explain shos that each shard is returning a single document as
- // indicated
- // by the "n" element for each shard
- exp = db.limit_push.find(q).sort({x: -1}).limit(1).explain("executionStats");
- printjson(exp);
-
- var execStages = exp.executionStats.executionStages;
- assert.eq("SHARD_MERGE_SORT", execStages.stage, "Expected SHARD_MERGE_SORT as root stage");
-
- var k = 0;
- for (var j in execStages.shards) {
- assert.eq(1,
- execStages.shards[j].executionStages.nReturned,
- "'n' is not 1 from shard000" + k.toString());
- k++;
- }
-
- s.stop();
-
+var s = new ShardingTest({name: "limit_push", shards: 2, mongos: 1});
+var db = s.getDB("test");
+
+// Create some data
+for (i = 0; i < 100; i++) {
+ db.limit_push.insert({_id: i, x: i});
+}
+db.limit_push.ensureIndex({x: 1});
+assert.eq(100, db.limit_push.find().length(), "Incorrect number of documents");
+
+// Shard the collection
+s.adminCommand({enablesharding: "test"});
+s.ensurePrimaryShard('test', s.shard1.shardName);
+s.adminCommand({shardcollection: "test.limit_push", key: {x: 1}});
+
+// Now split the and move the data between the shards
+s.adminCommand({split: "test.limit_push", middle: {x: 50}});
+s.adminCommand({
+ moveChunk: "test.limit_push",
+ find: {x: 51},
+ to: s.getOther(s.getPrimaryShard("test")).name,
+ _waitForDelete: true
+});
+
+// Check that the chunck have split correctly
+assert.eq(2, s.config.chunks.count({"ns": "test.limit_push"}), "wrong number of chunks");
+
+// The query is asking for the maximum value below a given value
+// db.limit_push.find( { x : { $lt : 60} } ).sort( { x:-1} ).limit(1)
+q = {
+ x: {$lt: 60}
+};
+
+// Make sure the basic queries are correct
+assert.eq(60, db.limit_push.find(q).count(), "Did not find 60 documents");
+// rs = db.limit_push.find( q ).sort( { x:-1} ).limit(1)
+// assert.eq( rs , { _id : "1" , x : 59 } , "Did not find document with value 59" );
+
+// Now make sure that the explain shos that each shard is returning a single document as
+// indicated
+// by the "n" element for each shard
+exp = db.limit_push.find(q).sort({x: -1}).limit(1).explain("executionStats");
+printjson(exp);
+
+var execStages = exp.executionStats.executionStages;
+assert.eq("SHARD_MERGE_SORT", execStages.stage, "Expected SHARD_MERGE_SORT as root stage");
+
+var k = 0;
+for (var j in execStages.shards) {
+ assert.eq(1,
+ execStages.shards[j].executionStages.nReturned,
+ "'n' is not 1 from shard000" + k.toString());
+ k++;
+}
+
+s.stop();
})();