Files
mongo/jstests/sharding/server_status.js

51 lines
1.7 KiB
JavaScript

/**
* Basic test for the 'sharding' section of the serverStatus response object for
* both mongos and the shard.
*/
(function() {
"use strict";
var st = new ShardingTest({shards: 1});
var testDB = st.s.getDB('test');
testDB.adminCommand({enableSharding: 'test'});
testDB.adminCommand({shardCollection: 'test.user', key: {_id: 1}});
// Initialize shard metadata in shards
testDB.user.insert({x: 1});
var checkShardingServerStatus = function(doc, isCSRS) {
var shardingSection = doc.sharding;
assert.neq(shardingSection, null);
var configConnStr = shardingSection.configsvrConnectionString;
var configConn = new Mongo(configConnStr);
var configIsMaster = configConn.getDB('admin').runCommand({isMaster: 1});
var configOpTimeObj = shardingSection.lastSeenConfigServerOpTime;
if (isCSRS) {
assert.gt(configConnStr.indexOf('/'), 0);
assert.gte(configIsMaster.configsvr, 1); // If it's a shard, this field won't exist.
assert.neq(null, configOpTimeObj);
assert.neq(null, configOpTimeObj.ts);
assert.neq(null, configOpTimeObj.t);
} else {
assert.eq(-1, configConnStr.indexOf('/'));
assert.gt(configConnStr.indexOf(','), 0);
assert.eq(0, configIsMaster.configsvr);
assert.eq(null, configOpTimeObj);
}
};
var mongosServerStatus = testDB.adminCommand({serverStatus: 1});
var isCSRS = st.configRS != null;
checkShardingServerStatus(mongosServerStatus, isCSRS);
var mongodServerStatus = st.d0.getDB('admin').runCommand({serverStatus: 1});
checkShardingServerStatus(mongodServerStatus, isCSRS);
st.stop();
})();