diff options
Diffstat (limited to 'jstests/sharding/ismaster.js')
-rw-r--r-- | jstests/sharding/ismaster.js | 95 |
1 files changed, 58 insertions, 37 deletions
diff --git a/jstests/sharding/ismaster.js b/jstests/sharding/ismaster.js index 2d5cea7b586..d1ce254d711 100644 --- a/jstests/sharding/ismaster.js +++ b/jstests/sharding/ismaster.js @@ -1,42 +1,63 @@ +/** + * This test ensures that the hello command and its aliases, ismaster and isMaster, are all + * accepted by mongos. + * @tags: [requires_fcv_47] + */ "use strict"; var st = new ShardingTest({shards: 1, mongos: 1}); -var res = st.s0.getDB("admin").runCommand("ismaster"); -// check that the fields that should be there are there and have proper values -assert(res.maxBsonObjectSize && isNumber(res.maxBsonObjectSize) && res.maxBsonObjectSize > 0, - "maxBsonObjectSize possibly missing:" + tojson(res)); -assert(res.maxMessageSizeBytes && isNumber(res.maxMessageSizeBytes) && res.maxBsonObjectSize > 0, - "maxMessageSizeBytes possibly missing:" + tojson(res)); -assert.eq("boolean", typeof res.ismaster, "ismaster field is not a boolean" + tojson(res)); -assert(res.ismaster === true, "ismaster field is false" + tojson(res)); -assert(res.localTime, "localTime possibly missing:" + tojson(res)); -assert(res.msg && res.msg == "isdbgrid", "msg possibly missing or wrong:" + tojson(res)); -var unwantedFields = [ - "setName", - "setVersion", - "secondary", - "hosts", - "passives", - "arbiters", - "primary", - "aribterOnly", - "passive", - "slaveDelay", - "hidden", - "tags", - "buildIndexes", - "me" -]; -// check that the fields that shouldn't be there are not there -var badFields = []; -var field; -for (field in res) { - if (!res.hasOwnProperty(field)) { - continue; - } - if (Array.contains(unwantedFields, field)) { - badFields.push(field); + +function checkResponseFields(commandString) { + jsTestLog("Running the " + commandString + " command"); + var res = st.s0.getDB("admin").runCommand(commandString); + + // check that the fields that should be there are there and have proper values + assert(res.maxBsonObjectSize && isNumber(res.maxBsonObjectSize) && res.maxBsonObjectSize > 0, + "maxBsonObjectSize possibly missing:" + tojson(res)); + assert( + res.maxMessageSizeBytes && isNumber(res.maxMessageSizeBytes) && res.maxBsonObjectSize > 0, + "maxMessageSizeBytes possibly missing:" + tojson(res)); + + // TODO SERVER-49988: Check for res.isWritablePrimary instead of res.ismaster if a hello command + // was executed. + assert.eq("boolean", typeof res.ismaster, "ismaster field is not a boolean" + tojson(res)); + assert(res.ismaster === true, "ismaster field is false" + tojson(res)); + + assert(res.localTime, "localTime possibly missing:" + tojson(res)); + assert(res.msg && res.msg == "isdbgrid", "msg possibly missing or wrong:" + tojson(res)); + + var unwantedFields = [ + "setName", + "setVersion", + "secondary", + "hosts", + "passives", + "arbiters", + "primary", + "aribterOnly", + "passive", + "slaveDelay", + "hidden", + "tags", + "buildIndexes", + "me" + ]; + // check that the fields that shouldn't be there are not there + var badFields = []; + var field; + for (field in res) { + if (!res.hasOwnProperty(field)) { + continue; + } + if (Array.contains(unwantedFields, field)) { + badFields.push(field); + } } + assert(badFields.length === 0, + "\nthe result:\n" + tojson(res) + "\ncontained fields it shouldn't have: " + badFields); } -assert(badFields.length === 0, - "\nthe result:\n" + tojson(res) + "\ncontained fields it shouldn't have: " + badFields); + +checkResponseFields("hello"); +checkResponseFields("ismaster"); +checkResponseFields("isMaster"); + st.stop(); |