summaryrefslogtreecommitdiff
path: root/jstests/sharding/mapReduce_inSharded.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/sharding/mapReduce_inSharded.js')
-rw-r--r--jstests/sharding/mapReduce_inSharded.js165
1 files changed, 83 insertions, 82 deletions
diff --git a/jstests/sharding/mapReduce_inSharded.js b/jstests/sharding/mapReduce_inSharded.js
index 6737d5fec0c..b51b0111a1e 100644
--- a/jstests/sharding/mapReduce_inSharded.js
+++ b/jstests/sharding/mapReduce_inSharded.js
@@ -1,86 +1,87 @@
(function() {
- "use strict";
-
- var verifyOutput = function(out) {
- printjson(out);
- assert.commandWorked(out);
- assert.eq(out.counts.input, 51200, "input count is wrong");
- assert.eq(out.counts.emit, 51200, "emit count is wrong");
- assert.gt(out.counts.reduce, 99, "reduce count is wrong");
- assert.eq(out.counts.output, 512, "output count is wrong");
- };
-
- var st = new ShardingTest(
- {shards: 2, verbose: 1, mongos: 1, other: {chunkSize: 1, enableBalancer: true}});
-
- st.adminCommand({enablesharding: "mrShard"});
- st.ensurePrimaryShard('mrShard', st.shard1.shardName);
- st.adminCommand({shardcollection: "mrShard.srcSharded", key: {"_id": 1}});
-
- var db = st.getDB("mrShard");
-
- var bulk = db.srcSharded.initializeUnorderedBulkOp();
- for (var j = 0; j < 100; j++) {
- for (var i = 0; i < 512; i++) {
- bulk.insert({j: j, i: i});
- }
- }
- assert.writeOK(bulk.execute());
+"use strict";
- function map() {
- emit(this.i, 1);
- }
- function reduce(key, values) {
- return Array.sum(values);
- }
-
- // sharded src
- var suffix = "InSharded";
-
- var out = db.srcSharded.mapReduce(map, reduce, "mrBasic" + suffix);
- verifyOutput(out);
-
- out = db.srcSharded.mapReduce(map, reduce, {out: {replace: "mrReplace" + suffix}});
- verifyOutput(out);
-
- out = db.srcSharded.mapReduce(map, reduce, {out: {merge: "mrMerge" + suffix}});
- verifyOutput(out);
-
- out = db.srcSharded.mapReduce(map, reduce, {out: {reduce: "mrReduce" + suffix}});
- verifyOutput(out);
-
- out = db.srcSharded.mapReduce(map, reduce, {out: {inline: 1}});
- verifyOutput(out);
- assert(out.results != 'undefined', "no results for inline");
-
- // Ensure that mapReduce with a sharded input collection can accept the collation option.
- out = db.srcSharded.mapReduce(map, reduce, {out: {inline: 1}, collation: {locale: "en_US"}});
- verifyOutput(out);
- assert(out.results != 'undefined', "no results for inline with collation");
-
- out = db.srcSharded.mapReduce(
- map, reduce, {out: {replace: "mrReplace" + suffix, db: "mrShardOtherDB"}});
- verifyOutput(out);
-
- out = db.runCommand({
- mapReduce: "srcSharded", // use new name mapReduce rather than mapreduce
- map: map,
- reduce: reduce,
- out: "mrBasic" + "srcSharded",
- });
- verifyOutput(out);
-
- // Ensure that the collation option is propagated to the shards. This uses a case-insensitive
- // collation, and the query seeding the mapReduce should only match the document if the
- // collation is passed along to the shards.
- assert.writeOK(db.srcSharded.remove({}));
- assert.eq(db.srcSharded.find().itcount(), 0);
- assert.writeOK(db.srcSharded.insert({i: 0, j: 0, str: "FOO"}));
- out = db.srcSharded.mapReduce(
- map,
- reduce,
- {out: {inline: 1}, query: {str: "foo"}, collation: {locale: "en_US", strength: 2}});
+var verifyOutput = function(out) {
+ printjson(out);
assert.commandWorked(out);
- assert.eq(out.counts.input, 1);
- st.stop();
+ assert.eq(out.counts.input, 51200, "input count is wrong");
+ assert.eq(out.counts.emit, 51200, "emit count is wrong");
+ assert.gt(out.counts.reduce, 99, "reduce count is wrong");
+ assert.eq(out.counts.output, 512, "output count is wrong");
+};
+
+var st = new ShardingTest(
+ {shards: 2, verbose: 1, mongos: 1, other: {chunkSize: 1, enableBalancer: true}});
+
+st.adminCommand({enablesharding: "mrShard"});
+st.ensurePrimaryShard('mrShard', st.shard1.shardName);
+st.adminCommand({shardcollection: "mrShard.srcSharded", key: {"_id": 1}});
+
+var db = st.getDB("mrShard");
+
+var bulk = db.srcSharded.initializeUnorderedBulkOp();
+for (var j = 0; j < 100; j++) {
+ for (var i = 0; i < 512; i++) {
+ bulk.insert({j: j, i: i});
+ }
+}
+assert.writeOK(bulk.execute());
+
+function map() {
+ emit(this.i, 1);
+}
+function reduce(key, values) {
+ return Array.sum(values);
+}
+
+// sharded src
+var suffix = "InSharded";
+
+var out = db.srcSharded.mapReduce(map, reduce, "mrBasic" + suffix);
+verifyOutput(out);
+
+out = db.srcSharded.mapReduce(map, reduce, {out: {replace: "mrReplace" + suffix}});
+verifyOutput(out);
+
+out = db.srcSharded.mapReduce(map, reduce, {out: {merge: "mrMerge" + suffix}});
+verifyOutput(out);
+
+out = db.srcSharded.mapReduce(map, reduce, {out: {reduce: "mrReduce" + suffix}});
+verifyOutput(out);
+
+out = db.srcSharded.mapReduce(map, reduce, {out: {inline: 1}});
+verifyOutput(out);
+assert(out.results != 'undefined', "no results for inline");
+
+// Ensure that mapReduce with a sharded input collection can accept the collation option.
+out = db.srcSharded.mapReduce(map, reduce, {out: {inline: 1}, collation: {locale: "en_US"}});
+verifyOutput(out);
+assert(out.results != 'undefined', "no results for inline with collation");
+
+out = db.srcSharded.mapReduce(
+ map, reduce, {out: {replace: "mrReplace" + suffix, db: "mrShardOtherDB"}});
+verifyOutput(out);
+
+out = db.runCommand({
+ mapReduce: "srcSharded", // use new name mapReduce rather than mapreduce
+ map: map,
+ reduce: reduce,
+ out: "mrBasic" +
+ "srcSharded",
+});
+verifyOutput(out);
+
+// Ensure that the collation option is propagated to the shards. This uses a case-insensitive
+// collation, and the query seeding the mapReduce should only match the document if the
+// collation is passed along to the shards.
+assert.writeOK(db.srcSharded.remove({}));
+assert.eq(db.srcSharded.find().itcount(), 0);
+assert.writeOK(db.srcSharded.insert({i: 0, j: 0, str: "FOO"}));
+out = db.srcSharded.mapReduce(
+ map,
+ reduce,
+ {out: {inline: 1}, query: {str: "foo"}, collation: {locale: "en_US", strength: 2}});
+assert.commandWorked(out);
+assert.eq(out.counts.input, 1);
+st.stop();
})();