diff options
Diffstat (limited to 'jstests/sharding/listDatabases.js')
-rw-r--r-- | jstests/sharding/listDatabases.js | 174 |
1 files changed, 87 insertions, 87 deletions
diff --git a/jstests/sharding/listDatabases.js b/jstests/sharding/listDatabases.js index f5b046c26b7..ce13ea5871d 100644 --- a/jstests/sharding/listDatabases.js +++ b/jstests/sharding/listDatabases.js @@ -1,93 +1,93 @@ (function() { - 'use strict'; - var test = new ShardingTest({shards: 1, mongos: 1, other: {chunkSize: 1}}); - - var mongos = test.s0; - var mongod = test.shard0; - - var res; - var dbArray; - - // grab the config db instance by name - var getDBSection = function(dbsArray, dbToFind) { - for (var pos in dbsArray) { - if (dbsArray[pos].name && dbsArray[pos].name === dbToFind) - return dbsArray[pos]; - } - return null; - }; - - // Function to verify information for a database entry in listDatabases. - var dbEntryCheck = function(dbEntry, onConfig) { - assert.neq(null, dbEntry); - assert.neq(null, dbEntry.sizeOnDisk); - assert.eq(false, dbEntry.empty); - - // Check against shards - var shards = dbEntry.shards; - assert(shards); - assert((shards["config"] && onConfig) || (!shards["config"] && !onConfig)); - }; - - // Non-config-server db checks. - { - assert.writeOK(mongos.getDB("blah").foo.insert({_id: 1})); - assert.writeOK(mongos.getDB("foo").foo.insert({_id: 1})); - assert.writeOK(mongos.getDB("raw").foo.insert({_id: 1})); - - res = mongos.adminCommand("listDatabases"); - dbArray = res.databases; - - dbEntryCheck(getDBSection(dbArray, "blah"), false); - dbEntryCheck(getDBSection(dbArray, "foo"), false); - dbEntryCheck(getDBSection(dbArray, "raw"), false); - } - - // Local db is never returned. - { - res = mongos.adminCommand("listDatabases"); - dbArray = res.databases; - - assert(!getDBSection(dbArray, 'local')); - } +'use strict'; +var test = new ShardingTest({shards: 1, mongos: 1, other: {chunkSize: 1}}); - // Admin and config are always reported on the config shard. - { - assert.writeOK(mongos.getDB("admin").test.insert({_id: 1})); - assert.writeOK(mongos.getDB("config").test.insert({_id: 1})); +var mongos = test.s0; +var mongod = test.shard0; - res = mongos.adminCommand("listDatabases"); - dbArray = res.databases; +var res; +var dbArray; - dbEntryCheck(getDBSection(dbArray, "config"), true); - dbEntryCheck(getDBSection(dbArray, "admin"), true); +// grab the config db instance by name +var getDBSection = function(dbsArray, dbToFind) { + for (var pos in dbsArray) { + if (dbsArray[pos].name && dbsArray[pos].name === dbToFind) + return dbsArray[pos]; } - - // Config db can be present on config shard and on other shards. - { - mongod.getDB("config").foo.insert({_id: 1}); - - res = mongos.adminCommand("listDatabases"); - dbArray = res.databases; - - var entry = getDBSection(dbArray, "config"); - dbEntryCheck(entry, true); - assert(entry["shards"]); - assert.eq(Object.keys(entry["shards"]).length, 2); - } - - // Admin db is only reported on the config shard, never on other shards. - { - mongod.getDB("admin").foo.insert({_id: 1}); - - res = mongos.adminCommand("listDatabases"); - dbArray = res.databases; - - var entry = getDBSection(dbArray, "admin"); - dbEntryCheck(entry, true); - assert(entry["shards"]); - assert.eq(Object.keys(entry["shards"]).length, 1); - } - - test.stop(); + return null; +}; + +// Function to verify information for a database entry in listDatabases. +var dbEntryCheck = function(dbEntry, onConfig) { + assert.neq(null, dbEntry); + assert.neq(null, dbEntry.sizeOnDisk); + assert.eq(false, dbEntry.empty); + + // Check against shards + var shards = dbEntry.shards; + assert(shards); + assert((shards["config"] && onConfig) || (!shards["config"] && !onConfig)); +}; + +// Non-config-server db checks. +{ + assert.writeOK(mongos.getDB("blah").foo.insert({_id: 1})); + assert.writeOK(mongos.getDB("foo").foo.insert({_id: 1})); + assert.writeOK(mongos.getDB("raw").foo.insert({_id: 1})); + + res = mongos.adminCommand("listDatabases"); + dbArray = res.databases; + + dbEntryCheck(getDBSection(dbArray, "blah"), false); + dbEntryCheck(getDBSection(dbArray, "foo"), false); + dbEntryCheck(getDBSection(dbArray, "raw"), false); +} + +// Local db is never returned. +{ + res = mongos.adminCommand("listDatabases"); + dbArray = res.databases; + + assert(!getDBSection(dbArray, 'local')); +} + +// Admin and config are always reported on the config shard. +{ + assert.writeOK(mongos.getDB("admin").test.insert({_id: 1})); + assert.writeOK(mongos.getDB("config").test.insert({_id: 1})); + + res = mongos.adminCommand("listDatabases"); + dbArray = res.databases; + + dbEntryCheck(getDBSection(dbArray, "config"), true); + dbEntryCheck(getDBSection(dbArray, "admin"), true); +} + +// Config db can be present on config shard and on other shards. +{ + mongod.getDB("config").foo.insert({_id: 1}); + + res = mongos.adminCommand("listDatabases"); + dbArray = res.databases; + + var entry = getDBSection(dbArray, "config"); + dbEntryCheck(entry, true); + assert(entry["shards"]); + assert.eq(Object.keys(entry["shards"]).length, 2); +} + +// Admin db is only reported on the config shard, never on other shards. +{ + mongod.getDB("admin").foo.insert({_id: 1}); + + res = mongos.adminCommand("listDatabases"); + dbArray = res.databases; + + var entry = getDBSection(dbArray, "admin"); + dbEntryCheck(entry, true); + assert(entry["shards"]); + assert.eq(Object.keys(entry["shards"]).length, 1); +} + +test.stop(); })(); |