52 lines
1.6 KiB
JavaScript
52 lines
1.6 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.eq(1, configIsMaster.configsvr); // 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();
|
|
})();
|