summaryrefslogtreecommitdiff
path: root/jstests/core/create_indexes.js
diff options
context:
space:
mode:
authorBenety Goh <benety@mongodb.com>2015-01-20 09:23:42 -0500
committerBenety Goh <benety@mongodb.com>2015-01-21 09:16:04 -0500
commit7d504b66098d1cfcafdb536ff0db3f7eb53f8c99 (patch)
treecda2934cb2de79ec86f0a39f8d59b585bcad6363 /jstests/core/create_indexes.js
parent876f5f475bf9242c098e6de641aa7ee0982803c2 (diff)
downloadmongo-7d504b66098d1cfcafdb536ff0db3f7eb53f8c99.tar.gz
SERVER-16930 createIndexes should always set numIndexesBefore and numIndexesAfter when it runs successfully
Diffstat (limited to 'jstests/core/create_indexes.js')
-rw-r--r--jstests/core/create_indexes.js189
1 files changed, 106 insertions, 83 deletions
diff --git a/jstests/core/create_indexes.js b/jstests/core/create_indexes.js
index e78c87a30ea..2ace0cbb20e 100644
--- a/jstests/core/create_indexes.js
+++ b/jstests/core/create_indexes.js
@@ -1,83 +1,106 @@
-t = db.create_indexes;
-t.drop();
-
-// TODO: revisit this after createIndexes api stabilizes.
-var isMongos = ("isdbgrid" == db.runCommand("ismaster").msg);
-var extractResult = function(obj) {
- if (!isMongos) return obj;
-
- // Sample mongos format:
- // {
- // raw: {
- // "localhost:30000": {
- // createdCollectionAutomatically: false,
- // numIndexesBefore: 3,
- // numIndexesAfter: 5,
- // ok: 1
- // }
- // },
- // ok: 1
- // }
-
- var numFields = 0;
- var result = null;
- for (var field in obj.raw) {
- result = obj.raw[field];
- numFields++;
- }
-
- assert.neq(null, result);
- assert.eq(1, numFields);
- return result;
-};
-
-
-res = t.runCommand( "createIndexes", { indexes : [ { key : { "x" : 1 }, name : "x_1" } ] } );
-res = extractResult( res );
-assert( res.createdCollectionAutomatically );
-assert.eq( 1, res.numIndexesBefore );
-assert.eq( 2, res.numIndexesAfter );
-
-res = t.runCommand( "createIndexes", { indexes : [ { key : { "x" : 1 }, name : "x_1" } ] } );
-res = extractResult( res );
-assert.eq( 2, res.numIndexesBefore );
-assert.isnull( res.numIndexesAfter );
-
-res = t.runCommand( "createIndexes", { indexes : [ { key : { "x" : 1 }, name : "x_1" },
- { key : { "y" : 1 }, name : "y_1" } ] } );
-res = extractResult( res );
-assert( !res.createdCollectionAutomatically );
-assert.eq( 2, res.numIndexesBefore );
-assert.eq( 3, res.numIndexesAfter );
-
-res = t.runCommand( "createIndexes", { indexes : [ { key : { "a" : 1 }, name : "a_1" },
- { key : { "b" : 1 }, name : "b_1" } ] } );
-res = extractResult( res );
-assert( !res.createdCollectionAutomatically );
-assert.eq( 3, res.numIndexesBefore );
-assert.eq( 5, res.numIndexesAfter );
-
-res = t.runCommand( "createIndexes", { indexes : [ { key : { "a" : 1 }, name : "a_1" },
- { key : { "b" : 1 }, name : "b_1" } ] } );
-res = extractResult( res );
-assert.eq( 5, res.numIndexesBefore );
-assert.isnull( res.numIndexesAfter );
-
-res = t.runCommand( "createIndexes", { indexes : [ {} ] } );
-assert( !res.ok );
-
-res = t.runCommand( "createIndexes", { indexes : [ {} , { key : { m : 1 }, name : "asd" } ] } );
-assert( !res.ok );
-
-assert.eq( 5, t.getIndexes().length );
-
-res = t.runCommand( "createIndexes",
- { indexes : [ { key : { "c" : 1 }, sparse : true, name : "c_1" } ] } )
-assert.eq( 6, t.getIndexes().length );
-assert.eq( 1, t.getIndexes().filter( function(z){ return z.sparse; } ).length );
-
-res = t.runCommand( "createIndexes",
- { indexes : [ { key : { "x" : "foo" }, name : "x_1" } ] } );
-assert( !res.ok )
-
-assert.eq( 6, t.getIndexes().length );
+(function() {
+ 'use strict';
+
+ var t = db.create_indexes;
+ t.drop();
+
+ // TODO: revisit this after createIndexes api stabilizes.
+ var isMongos = ("isdbgrid" == db.runCommand("ismaster").msg);
+ var extractResult = function(obj) {
+ if (!isMongos) return obj;
+
+ // Sample mongos format:
+ // {
+ // raw: {
+ // "localhost:30000": {
+ // createdCollectionAutomatically: false,
+ // numIndexesBefore: 3,
+ // numIndexesAfter: 5,
+ // ok: 1
+ // }
+ // },
+ // ok: 1
+ // }
+
+ var numFields = 0;
+ var result = null;
+ for (var field in obj.raw) {
+ result = obj.raw[field];
+ numFields++;
+ }
+
+ assert.neq(null, result);
+ assert.eq(1, numFields);
+ return result;
+ };
+
+
+ var res = assert.commandWorked(t.runCommand('createIndexes',
+ {indexes: [{key: {x: 1}, name: 'x_1'}]}));
+ res = extractResult( res );
+ assert( res.createdCollectionAutomatically );
+ assert.eq( 1, res.numIndexesBefore );
+ assert.eq( 2, res.numIndexesAfter );
+ assert.isnull(res.note,
+ 'createIndexes.note should not be present in results when adding a new index: ' +
+ tojson(res));
+
+ res = assert.commandWorked(t.runCommand('createIndexes',
+ {indexes: [{key: {x: 1}, name: 'x_1'}]}));
+ res = extractResult( res );
+ assert.eq( 2, res.numIndexesBefore );
+ assert.eq(2, res.numIndexesAfter,
+ 'numIndexesAfter missing from createIndexes result when adding a duplicate index: ' +
+ tojson(res));
+ assert(res.note,
+ 'createIndexes.note should be present in results when adding a duplicate index: ' +
+ tojson(res));
+
+ res = t.runCommand( "createIndexes", { indexes : [ { key : { "x" : 1 }, name : "x_1" },
+ { key : { "y" : 1 }, name : "y_1" } ] } );
+ res = extractResult( res );
+ assert( !res.createdCollectionAutomatically );
+ assert.eq( 2, res.numIndexesBefore );
+ assert.eq( 3, res.numIndexesAfter );
+
+ res = assert.commandWorked(t.runCommand('createIndexes',
+ {indexes: [{key: {a: 1}, name: 'a_1'}, {key: {b: 1}, name: 'b_1'}]}));
+ res = extractResult( res );
+ assert( !res.createdCollectionAutomatically );
+ assert.eq( 3, res.numIndexesBefore );
+ assert.eq( 5, res.numIndexesAfter );
+ assert.isnull(res.note,
+ 'createIndexes.note should not be present in results when adding new indexes: ' +
+ tojson(res));
+
+ res = assert.commandWorked(t.runCommand('createIndexes',
+ {indexes: [{key: {a: 1}, name: 'a_1'}, {key: {b: 1}, name: 'b_1'}]}));
+
+ res = extractResult( res );
+ assert.eq( 5, res.numIndexesBefore );
+ assert.eq(5, res.numIndexesAfter,
+ 'numIndexesAfter missing from createIndexes result when adding duplicate indexes: ' +
+ tojson(res));
+ assert(res.note,
+ 'createIndexes.note should be present in results when adding a duplicate index: ' +
+ tojson(res));
+
+ res = t.runCommand( "createIndexes", { indexes : [ {} ] } );
+ assert( !res.ok );
+
+ res = t.runCommand( "createIndexes", { indexes : [ {} , { key : { m : 1 }, name : "asd" } ] } );
+ assert( !res.ok );
+
+ assert.eq( 5, t.getIndexes().length );
+
+ res = t.runCommand( "createIndexes",
+ { indexes : [ { key : { "c" : 1 }, sparse : true, name : "c_1" } ] } )
+ assert.eq( 6, t.getIndexes().length );
+ assert.eq( 1, t.getIndexes().filter( function(z){ return z.sparse; } ).length );
+
+ res = t.runCommand( "createIndexes",
+ { indexes : [ { key : { "x" : "foo" }, name : "x_1" } ] } );
+ assert( !res.ok )
+
+ assert.eq( 6, t.getIndexes().length );
+}());