mongo/jstests/replsets/cmd_hello_wire_version_comp...

51 lines
1.5 KiB
JavaScript

// This test is to ensure that we do not increase the minWireversion or decrease the max
// wire version in API Version 1.
// @tags: [
// ]
// See wire_version.h
const RELEASE_2_4_AND_BEFORE = NumberLong(0);
const WIRE_VERSION_49 = NumberLong(12);
const VERSION_4_9_COMPATIBILITY = {
minWireVersion: RELEASE_2_4_AND_BEFORE,
maxWireVersion: WIRE_VERSION_49,
};
(function() {
"use strict";
let testWireVersion = function(isSystem, compatibilityBounds) {
const rst = new ReplSetTest({nodes: 3, auth: ""});
rst.startSet();
rst.initiate();
const primary = rst.getPrimary();
let admin = primary.getDB("local");
if (isSystem) {
admin.auth("__system", "");
}
{ // Test deprecated isMaster command
let res = admin.runCommand({isMaster: 1, apiVersion: "1"});
assert.lte(res.minWireVersion, compatibilityBounds.minWireVersion);
assert.gte(res.maxWireVersion, compatibilityBounds.maxWireVersion);
}
{ // Test new hello command
let res = admin.runCommand({hello: 1, apiVersion: "1", apiStrict: true});
assert.lte(res.minWireVersion, compatibilityBounds.minWireVersion);
assert.gte(res.maxWireVersion, compatibilityBounds.maxWireVersion);
}
rst.stopSet();
};
// Test API version 1.
// Version 4.9 sends the same min and max wire version for internal and
// external user.
testWireVersion(false, VERSION_4_9_COMPATIBILITY);
testWireVersion(true, VERSION_4_9_COMPATIBILITY);
})();