diff options
Diffstat (limited to 'jstests/noPassthrough/feature_compatibility_version.js')
-rw-r--r-- | jstests/noPassthrough/feature_compatibility_version.js | 18 |
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"}}), |