summaryrefslogtreecommitdiff
path: root/jstests/noPassthrough/feature_compatibility_version.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/noPassthrough/feature_compatibility_version.js')
-rw-r--r--jstests/noPassthrough/feature_compatibility_version.js18
1 files changed, 17 insertions, 1 deletions
diff --git a/jstests/noPassthrough/feature_compatibility_version.js b/jstests/noPassthrough/feature_compatibility_version.js
index fa02e5eaada..2ee5627d2ed 100644
--- a/jstests/noPassthrough/feature_compatibility_version.js
+++ b/jstests/noPassthrough/feature_compatibility_version.js
@@ -20,7 +20,7 @@ for (let oldVersion of [lastLTSFCV, lastContinuousFCV]) {
{$set: {version: oldVersion}}));
checkFCV(adminDB, oldVersion);
- // Upgrading to lastest.
+ // Upgrading to latest.
assert.commandWorked(
adminDB.system.version.update({_id: "featureCompatibilityVersion"},
{$set: {version: oldVersion, targetVersion: latestFCV}}));
@@ -51,6 +51,22 @@ for (let oldVersion of [lastLTSFCV, lastContinuousFCV]) {
checkFCV(adminDB, latestFCV);
}
+if (lastLTSFCV !== lastContinuousFCV) {
+ // Test that we can update from last-lts to last-continuous when the two versions are not equal.
+ // This upgrade path is exposed to users through the setFeatureCompatibilityVersion command with
+ // fromConfigServer: true.
+ assert.commandWorked(adminDB.system.version.update(
+ {_id: "featureCompatibilityVersion"},
+ {$set: {version: lastLTSFCV, targetVersion: lastContinuousFCV}}));
+ checkFCV(adminDB, lastLTSFCV, lastContinuousFCV);
+
+ // Reset to latestFCV.
+ assert.commandWorked(adminDB.system.version.update(
+ {_id: "featureCompatibilityVersion"},
+ {$set: {version: latestFCV}, $unset: {targetVersion: true, previousVersion: true}}));
+ checkFCV(adminDB, latestFCV);
+}
+
// Updating the featureCompatibilityVersion document with an invalid version fails.
assert.writeErrorWithCode(
adminDB.system.version.update({_id: "featureCompatibilityVersion"}, {$set: {version: "3.2"}}),