Skip to content

Commit

Permalink
Add a new cancelAfterDowngradingAndUpgrading scenario for downgrade e…
Browse files Browse the repository at this point in the history
…2e test

Address #19252 (comment)

Tested with the following command:
clear; PASSES="release e2e" PKG=./tests/e2e TESTCASE="TestDowngradeCancellation" TIMEOUT=20m ./scripts/test.sh -v -failfast

Signed-off-by: Chun-Hung Tseng <[email protected]>
  • Loading branch information
Chun-Hung Tseng committed Feb 9, 2025
1 parent 9de211d commit 49d4339
Showing 1 changed file with 31 additions and 2 deletions.
33 changes: 31 additions & 2 deletions tests/e2e/cluster_downgrade_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ const (
cancelRightBeforeEnable
cancelRightAfterEnable
cancelAfterDowngrading
cancelAfterDowngradingAndUpgrading
)

func TestDowngradeUpgradeClusterOf1(t *testing.T) {
Expand Down Expand Up @@ -88,6 +89,14 @@ func TestDowngradeCancellationAfterDowngrading2InClusterOf3(t *testing.T) {
testDowngradeUpgrade(t, 2, 3, false, cancelAfterDowngrading)
}

func TestDowngradeCancellationAfterDowngradingAndUpgrading1InClusterOf3(t *testing.T) {
testDowngradeUpgrade(t, 1, 3, false, cancelAfterDowngradingAndUpgrading)
}

func TestDowngradeCancellationAfterDowngradingAndUpgrading2InClusterOf3(t *testing.T) {
testDowngradeUpgrade(t, 2, 3, false, cancelAfterDowngradingAndUpgrading)
}

func testDowngradeUpgrade(t *testing.T, numberOfMembersToDowngrade int, clusterSize int, triggerSnapshot bool, triggerCancellation CancellationState) {
currentEtcdBinary := e2e.BinPath.Etcd
lastReleaseBinary := e2e.BinPath.EtcdLastRelease
Expand Down Expand Up @@ -182,7 +191,7 @@ func testDowngradeUpgrade(t *testing.T, numberOfMembersToDowngrade int, clusterS
if triggerCancellation == cancelAfterDowngrading {
e2e.DowngradeCancel(t, epc)
t.Log("Downgrade cancelled, validating if cluster is in the right state")
e2e.ValidateMemberVersions(t, epc, generatePartialCancellationVersions(clusterSize, membersToChange, lastClusterVersion))
e2e.ValidateMemberVersions(t, epc, generateCancellationVersionsAfterDowngrading(clusterSize, membersToChange, lastClusterVersion))
}

t.Log("Adding learner to test membership, but avoid breaking quorum")
Expand All @@ -203,6 +212,12 @@ func testDowngradeUpgrade(t *testing.T, numberOfMembersToDowngrade int, clusterS
require.NoError(t, err)
t.Log("Upgrade complete")

if triggerCancellation == cancelAfterDowngradingAndUpgrading {
e2e.DowngradeCancel(t, epc)
t.Log("Downgrade cancelled, validating if cluster is in the right state")
e2e.ValidateMemberVersions(t, epc, generateCancellationVersionsAfterDowngradingAndUpgrading(clusterSize, currentVersion))
}

afterMembers, afterKV = getMembersAndKeys(t, cc)
assert.Equal(t, beforeKV.Kvs, afterKV.Kvs)
assert.Equal(t, beforeMembers.Members, afterMembers.Members)
Expand Down Expand Up @@ -313,7 +328,7 @@ func generateIdenticalVersions(clusterSize int, ver *semver.Version) []*version.
return ret
}

func generatePartialCancellationVersions(clusterSize int, membersToChange []int, ver *semver.Version) []*version.Versions {
func generateCancellationVersionsAfterDowngrading(clusterSize int, membersToChange []int, ver *semver.Version) []*version.Versions {
ret := make([]*version.Versions, clusterSize)

for i := range clusterSize {
Expand All @@ -330,3 +345,17 @@ func generatePartialCancellationVersions(clusterSize int, membersToChange []int,

return ret
}

func generateCancellationVersionsAfterDowngradingAndUpgrading(clusterSize int, ver *semver.Version) []*version.Versions {
ret := make([]*version.Versions, clusterSize)

for i := range clusterSize {
ret[i] = &version.Versions{
Cluster: ver.String(),
Server: ver.String(),
Storage: "",
}
}

return ret
}

0 comments on commit 49d4339

Please sign in to comment.