summaryrefslogtreecommitdiff
path: root/jstests/sharding/features2.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/sharding/features2.js')
-rw-r--r--jstests/sharding/features2.js286
1 files changed, 142 insertions, 144 deletions
diff --git a/jstests/sharding/features2.js b/jstests/sharding/features2.js
index 16d28c4d1ba..374acb15518 100644
--- a/jstests/sharding/features2.js
+++ b/jstests/sharding/features2.js
@@ -1,187 +1,185 @@
(function() {
- "use strict";
+"use strict";
- var s = new ShardingTest({name: "features2", shards: 2, mongos: 1});
+var s = new ShardingTest({name: "features2", shards: 2, mongos: 1});
- s.adminCommand({enablesharding: "test"});
- s.ensurePrimaryShard('test', s.shard1.shardName);
+s.adminCommand({enablesharding: "test"});
+s.ensurePrimaryShard('test', s.shard1.shardName);
- let a = s._connections[0].getDB("test");
- let b = s._connections[1].getDB("test");
+let a = s._connections[0].getDB("test");
+let b = s._connections[1].getDB("test");
- let db = s.getDB("test");
+let db = s.getDB("test");
- // ---- distinct ----
+// ---- distinct ----
- db.foo.save({x: 1});
- db.foo.save({x: 2});
- db.foo.save({x: 3});
- db.foo.ensureIndex({x: 1});
+db.foo.save({x: 1});
+db.foo.save({x: 2});
+db.foo.save({x: 3});
+db.foo.ensureIndex({x: 1});
- assert.eq("1,2,3", db.foo.distinct("x"), "distinct 1");
- assert(a.foo.distinct("x").length == 3 || b.foo.distinct("x").length == 3, "distinct 2");
- assert(a.foo.distinct("x").length == 0 || b.foo.distinct("x").length == 0, "distinct 3");
+assert.eq("1,2,3", db.foo.distinct("x"), "distinct 1");
+assert(a.foo.distinct("x").length == 3 || b.foo.distinct("x").length == 3, "distinct 2");
+assert(a.foo.distinct("x").length == 0 || b.foo.distinct("x").length == 0, "distinct 3");
- assert.eq(1, s.onNumShards("foo"), "A1");
+assert.eq(1, s.onNumShards("foo"), "A1");
- s.shardColl("foo", {x: 1}, {x: 2}, {x: 3}, null, true /* waitForDelete */);
+s.shardColl("foo", {x: 1}, {x: 2}, {x: 3}, null, true /* waitForDelete */);
- assert.eq(2, s.onNumShards("foo"), "A2");
+assert.eq(2, s.onNumShards("foo"), "A2");
- assert.eq("1,2,3", db.foo.distinct("x"), "distinct 4");
+assert.eq("1,2,3", db.foo.distinct("x"), "distinct 4");
- // ----- delete ---
+// ----- delete ---
- assert.eq(3, db.foo.count(), "D1");
+assert.eq(3, db.foo.count(), "D1");
- db.foo.remove({x: 3});
- assert.eq(2, db.foo.count(), "D2");
+db.foo.remove({x: 3});
+assert.eq(2, db.foo.count(), "D2");
- db.foo.save({x: 3});
- assert.eq(3, db.foo.count(), "D3");
+db.foo.save({x: 3});
+assert.eq(3, db.foo.count(), "D3");
- db.foo.remove({x: {$gt: 2}});
- assert.eq(2, db.foo.count(), "D4");
+db.foo.remove({x: {$gt: 2}});
+assert.eq(2, db.foo.count(), "D4");
- db.foo.remove({x: {$gt: -1}});
- assert.eq(0, db.foo.count(), "D5");
+db.foo.remove({x: {$gt: -1}});
+assert.eq(0, db.foo.count(), "D5");
- db.foo.save({x: 1});
- db.foo.save({x: 2});
- db.foo.save({x: 3});
- assert.eq(3, db.foo.count(), "D6");
- db.foo.remove({});
- assert.eq(0, db.foo.count(), "D7");
+db.foo.save({x: 1});
+db.foo.save({x: 2});
+db.foo.save({x: 3});
+assert.eq(3, db.foo.count(), "D6");
+db.foo.remove({});
+assert.eq(0, db.foo.count(), "D7");
- // --- _id key ---
+// --- _id key ---
- db.foo2.save({_id: new ObjectId()});
- db.foo2.save({_id: new ObjectId()});
- db.foo2.save({_id: new ObjectId()});
+db.foo2.save({_id: new ObjectId()});
+db.foo2.save({_id: new ObjectId()});
+db.foo2.save({_id: new ObjectId()});
- assert.eq(1, s.onNumShards("foo2"), "F1");
+assert.eq(1, s.onNumShards("foo2"), "F1");
- printjson(db.foo2.getIndexes());
- s.adminCommand({shardcollection: "test.foo2", key: {_id: 1}});
+printjson(db.foo2.getIndexes());
+s.adminCommand({shardcollection: "test.foo2", key: {_id: 1}});
- assert.eq(3, db.foo2.count(), "F2");
- db.foo2.insert({});
- assert.eq(4, db.foo2.count(), "F3");
+assert.eq(3, db.foo2.count(), "F2");
+db.foo2.insert({});
+assert.eq(4, db.foo2.count(), "F3");
- // --- map/reduce
+// --- map/reduce
- db.mr.save({x: 1, tags: ["a", "b"]});
- db.mr.save({x: 2, tags: ["b", "c"]});
- db.mr.save({x: 3, tags: ["c", "a"]});
- db.mr.save({x: 4, tags: ["b", "c"]});
- db.mr.ensureIndex({x: 1});
+db.mr.save({x: 1, tags: ["a", "b"]});
+db.mr.save({x: 2, tags: ["b", "c"]});
+db.mr.save({x: 3, tags: ["c", "a"]});
+db.mr.save({x: 4, tags: ["b", "c"]});
+db.mr.ensureIndex({x: 1});
- let m = function() {
- this.tags.forEach(function(z) {
- emit(z, {count: 1});
- });
- };
+let m = function() {
+ this.tags.forEach(function(z) {
+ emit(z, {count: 1});
+ });
+};
- let r = function(key, values) {
- var total = 0;
- for (var i = 0; i < values.length; i++) {
- total += values[i].count;
- }
- return {count: total};
- };
+let r = function(key, values) {
+ var total = 0;
+ for (var i = 0; i < values.length; i++) {
+ total += values[i].count;
+ }
+ return {count: total};
+};
- let doMR = function(n) {
- print(n);
+let doMR = function(n) {
+ print(n);
- // on-disk
+ // on-disk
- var res = db.mr.mapReduce(m, r, "smr1_out");
- printjson(res);
- assert.eq(4, res.counts.input, "MR T0 " + n);
+ var res = db.mr.mapReduce(m, r, "smr1_out");
+ printjson(res);
+ assert.eq(4, res.counts.input, "MR T0 " + n);
- var x = db[res.result];
- assert.eq(3, x.find().count(), "MR T1 " + n);
+ var x = db[res.result];
+ assert.eq(3, x.find().count(), "MR T1 " + n);
- var z = {};
- x.find().forEach(function(a) {
- z[a._id] = a.value.count;
- });
- assert.eq(3, Object.keySet(z).length, "MR T2 " + n);
- assert.eq(2, z.a, "MR T3 " + n);
- assert.eq(3, z.b, "MR T4 " + n);
- assert.eq(3, z.c, "MR T5 " + n);
+ var z = {};
+ x.find().forEach(function(a) {
+ z[a._id] = a.value.count;
+ });
+ assert.eq(3, Object.keySet(z).length, "MR T2 " + n);
+ assert.eq(2, z.a, "MR T3 " + n);
+ assert.eq(3, z.b, "MR T4 " + n);
+ assert.eq(3, z.c, "MR T5 " + n);
- x.drop();
+ x.drop();
- // inline
+ // inline
- var res = db.mr.mapReduce(m, r, {out: {inline: 1}});
- printjson(res);
- assert.eq(4, res.counts.input, "MR T6 " + n);
+ var res = db.mr.mapReduce(m, r, {out: {inline: 1}});
+ printjson(res);
+ assert.eq(4, res.counts.input, "MR T6 " + n);
- var z = {};
- res.find().forEach(function(a) {
- z[a._id] = a.value.count;
- });
- printjson(z);
- assert.eq(3, Object.keySet(z).length, "MR T7 " + n);
- assert.eq(2, z.a, "MR T8 " + n);
- assert.eq(3, z.b, "MR T9 " + n);
- assert.eq(3, z.c, "MR TA " + n);
+ var z = {};
+ res.find().forEach(function(a) {
+ z[a._id] = a.value.count;
+ });
+ printjson(z);
+ assert.eq(3, Object.keySet(z).length, "MR T7 " + n);
+ assert.eq(2, z.a, "MR T8 " + n);
+ assert.eq(3, z.b, "MR T9 " + n);
+ assert.eq(3, z.c, "MR TA " + n);
+};
- };
+doMR("before");
- doMR("before");
+assert.eq(1, s.onNumShards("mr"), "E1");
+s.shardColl("mr", {x: 1}, {x: 2}, {x: 3}, null, true /* waitForDelete */);
+assert.eq(2, s.onNumShards("mr"), "E1");
- assert.eq(1, s.onNumShards("mr"), "E1");
- s.shardColl("mr", {x: 1}, {x: 2}, {x: 3}, null, true /* waitForDelete */);
- assert.eq(2, s.onNumShards("mr"), "E1");
-
- doMR("after");
-
- s.adminCommand({split: 'test.mr', middle: {x: 3}});
- s.adminCommand({split: 'test.mr', middle: {x: 4}});
- s.adminCommand({movechunk: 'test.mr', find: {x: 3}, to: s.getPrimaryShard('test').name});
-
- doMR("after extra split");
-
- let cmd = {mapreduce: "mr", map: "emit( ", reduce: "fooz + ", out: "broken1"};
-
- let x = db.runCommand(cmd);
- let y = s._connections[0].getDB("test").runCommand(cmd);
-
- printjson(x);
- printjson(y);
-
- // count
-
- db.countaa.save({"regex": /foo/i});
- db.countaa.save({"regex": /foo/i});
- db.countaa.save({"regex": /foo/i});
- assert.eq(3, db.countaa.count(), "counta1");
- assert.eq(3, db.countaa.find().itcount(), "counta1");
-
- // isMaster and query-wrapped-command
- let isMaster = db.runCommand({isMaster: 1});
- assert(isMaster.ismaster);
- assert.eq('isdbgrid', isMaster.msg);
- delete isMaster.localTime;
- delete isMaster.$clusterTime;
- delete isMaster.operationTime;
-
- let im2 = db.runCommand({query: {isMaster: 1}});
- delete im2.localTime;
- delete im2.$clusterTime;
- delete im2.operationTime;
- assert.eq(isMaster, im2);
-
- im2 = db.runCommand({$query: {isMaster: 1}});
- delete im2.localTime;
- delete im2.$clusterTime;
- delete im2.operationTime;
- assert.eq(isMaster, im2);
-
- s.stop();
+doMR("after");
+
+s.adminCommand({split: 'test.mr', middle: {x: 3}});
+s.adminCommand({split: 'test.mr', middle: {x: 4}});
+s.adminCommand({movechunk: 'test.mr', find: {x: 3}, to: s.getPrimaryShard('test').name});
+
+doMR("after extra split");
+
+let cmd = {mapreduce: "mr", map: "emit( ", reduce: "fooz + ", out: "broken1"};
+
+let x = db.runCommand(cmd);
+let y = s._connections[0].getDB("test").runCommand(cmd);
+
+printjson(x);
+printjson(y);
+// count
+
+db.countaa.save({"regex": /foo/i});
+db.countaa.save({"regex": /foo/i});
+db.countaa.save({"regex": /foo/i});
+assert.eq(3, db.countaa.count(), "counta1");
+assert.eq(3, db.countaa.find().itcount(), "counta1");
+
+// isMaster and query-wrapped-command
+let isMaster = db.runCommand({isMaster: 1});
+assert(isMaster.ismaster);
+assert.eq('isdbgrid', isMaster.msg);
+delete isMaster.localTime;
+delete isMaster.$clusterTime;
+delete isMaster.operationTime;
+
+let im2 = db.runCommand({query: {isMaster: 1}});
+delete im2.localTime;
+delete im2.$clusterTime;
+delete im2.operationTime;
+assert.eq(isMaster, im2);
+
+im2 = db.runCommand({$query: {isMaster: 1}});
+delete im2.localTime;
+delete im2.$clusterTime;
+delete im2.operationTime;
+assert.eq(isMaster, im2);
+
+s.stop();
})();