Files
mongo/jstests/multiVersion/libs/mixed_version_fixture_test.js
Charlie Swanson bad5171545 SERVER-97919 Enable featureFlagRankFusionBasic by default. (#31487)
GitOrigin-RevId: ed9229520a78eef8e04588452ddf594698506faf
2025-01-24 04:22:19 +00:00

59 lines
1.6 KiB
JavaScript

import "jstests/multiVersion/libs/multi_rs.js";
import {ReplSetTest} from "jstests/libs/replsettest.js";
export function testPerformUpgradeDowngradeReplSet({
setupFn,
whenFullyDowngraded,
whenSecondariesAreLatestBinary,
whenBinariesAreLatestAndFCVIsLastLTS,
whenFullyUpgraded
}) {
const lastLTSVersion = {binVersion: "last-lts"};
const latestVersion = {binVersion: "latest"};
const rst = new ReplSetTest({
name: jsTestName(),
nodes: [
{...lastLTSVersion},
{...lastLTSVersion},
],
});
rst.startSet();
rst.initiate(null, null, {initiateWithDefaultElectionTimeout: true});
let primaryConnection = rst.getPrimary();
const getAdminDB = () => primaryConnection.getDB("admin");
setupFn(primaryConnection);
whenFullyDowngraded(primaryConnection);
// Upgrade the secondaries only.
rst.upgradeSecondaries({...latestVersion});
primaryConnection = rst.getPrimary();
whenSecondariesAreLatestBinary(primaryConnection = rst.getPrimary());
// Upgrade the primaries.
rst.upgradeSet({...latestVersion});
primaryConnection = rst.getPrimary();
whenBinariesAreLatestAndFCVIsLastLTS(primaryConnection);
// Upgrade the FCV.
assert.commandWorked(
getAdminDB().runCommand({setFeatureCompatibilityVersion: latestFCV, confirm: true}));
whenFullyUpgraded(primaryConnection);
// Downgrade FCV without restarting.
assert.commandWorked(
getAdminDB().runCommand({setFeatureCompatibilityVersion: lastLTSFCV, confirm: true}));
whenBinariesAreLatestAndFCVIsLastLTS(primaryConnection);
rst.stopSet();
}