Skip to content

Commit 302fb4c

Browse files
committed
Address comments from siyuanfoundation
1 parent b88f908 commit 302fb4c

File tree

3 files changed

+24
-32
lines changed

3 files changed

+24
-32
lines changed

tests/e2e/cluster_downgrade_test.go

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,12 @@ package e2e
1717
import (
1818
"context"
1919
"fmt"
20-
"math/rand"
2120
"testing"
2221
"time"
2322

2423
"github.com/coreos/go-semver/semver"
2524
"github.com/stretchr/testify/assert"
2625
"github.com/stretchr/testify/require"
27-
"go.uber.org/zap"
2826

2927
"go.etcd.io/etcd/api/v3/version"
3028
"go.etcd.io/etcd/client/pkg/v3/fileutil"
@@ -65,19 +63,19 @@ func TestDowngradeUpgradeClusterOf3WithSnapshot(t *testing.T) {
6563
}
6664

6765
func TestDowngradeCancellationWithoutEnablingClusterOf1(t *testing.T) {
68-
testDowngradeUpgrade(t, 1, 1, false, cancelRightBeforeEnable)
66+
testDowngradeUpgrade(t, 0, 1, false, cancelRightBeforeEnable)
6967
}
7068

7169
func TestDowngradeCancellationRightAfterEnablingClusterOf1(t *testing.T) {
72-
testDowngradeUpgrade(t, 1, 1, false, cancelRightAfterEnable)
70+
testDowngradeUpgrade(t, 0, 1, false, cancelRightAfterEnable)
7371
}
7472

7573
func TestDowngradeCancellationWithoutEnablingClusterOf3(t *testing.T) {
76-
testDowngradeUpgrade(t, 3, 3, false, cancelRightBeforeEnable)
74+
testDowngradeUpgrade(t, 0, 3, false, cancelRightBeforeEnable)
7775
}
7876

7977
func TestDowngradeCancellationRightAfterEnablingClusterOf3(t *testing.T) {
80-
testDowngradeUpgrade(t, 3, 3, false, cancelRightAfterEnable)
78+
testDowngradeUpgrade(t, 0, 3, false, cancelRightAfterEnable)
8179
}
8280

8381
func TestDowngradeCancellationAfterDowngrading1InClusterOf3(t *testing.T) {
@@ -88,7 +86,7 @@ func TestDowngradeCancellationAfterDowngrading2InClusterOf3(t *testing.T) {
8886
testDowngradeUpgrade(t, 2, 3, false, cancelAfterDowngrading)
8987
}
9088

91-
func testDowngradeUpgrade(t *testing.T, cancellationSize int, clusterSize int, triggerSnapshot bool, triggerCancellation CancellationState) {
89+
func testDowngradeUpgrade(t *testing.T, numberOfMembersToDowngrade int, clusterSize int, triggerSnapshot bool, triggerCancellation CancellationState) {
9290
currentEtcdBinary := e2e.BinPath.Etcd
9391
lastReleaseBinary := e2e.BinPath.EtcdLastRelease
9492
if !fileutil.Exist(lastReleaseBinary) {
@@ -159,13 +157,10 @@ func testDowngradeUpgrade(t *testing.T, cancellationSize int, clusterSize int, t
159157
return // No need to perform downgrading, end the test here
160158
}
161159

162-
membersToChange := rand.Perm(len(epc.Procs))[:cancellationSize]
163-
t.Logf(fmt.Sprintln("Elect members for operations"), zap.Any("members", membersToChange))
164-
165160
t.Logf("Starting downgrade process to %q", lastVersionStr)
166-
err = e2e.DowngradeUpgradeMembersByID(t, nil, epc, membersToChange, currentVersion, lastClusterVersion)
161+
membersChanged, err := e2e.DowngradeUpgradeMembers(t, nil, epc, numberOfMembersToDowngrade, currentVersion, lastClusterVersion)
167162
require.NoError(t, err)
168-
if len(membersToChange) == len(epc.Procs) {
163+
if len(membersChanged) == len(epc.Procs) {
169164
e2e.AssertProcessLogs(t, leader(t, epc), "the cluster has been downgraded")
170165
}
171166

@@ -182,7 +177,7 @@ func testDowngradeUpgrade(t *testing.T, cancellationSize int, clusterSize int, t
182177
if triggerCancellation == cancelAfterDowngrading {
183178
e2e.DowngradeCancel(t, epc)
184179
t.Log("Downgrade cancelled, validating if cluster is in the right state")
185-
e2e.ValidateMemberVersions(t, epc, generatePartialCancellationVersions(clusterSize, membersToChange, lastClusterVersion))
180+
e2e.ValidateMemberVersions(t, epc, generatePartialCancellationVersions(clusterSize, membersChanged, lastClusterVersion))
186181
}
187182

188183
t.Log("Adding learner to test membership, but avoid breaking quorum")
@@ -199,7 +194,7 @@ func testDowngradeUpgrade(t *testing.T, cancellationSize int, clusterSize int, t
199194
beforeMembers, beforeKV = getMembersAndKeys(t, cc)
200195

201196
t.Logf("Starting upgrade process to %q", currentVersionStr)
202-
err = e2e.DowngradeUpgradeMembersByID(t, nil, epc, membersToChange, lastClusterVersion, currentVersion)
197+
membersChanged, err = e2e.DowngradeUpgradeMembers(t, nil, epc, numberOfMembersToDowngrade, lastClusterVersion, currentVersion)
203198
require.NoError(t, err)
204199
t.Log("Upgrade complete")
205200

tests/framework/e2e/downgrade.go

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -64,17 +64,11 @@ func DowngradeCancel(t *testing.T, epc *EtcdProcessCluster) {
6464
t.Log("Cluster downgrade cancellation is completed")
6565
}
6666

67-
func DowngradeUpgradeMembers(t *testing.T, lg *zap.Logger, clus *EtcdProcessCluster, numberOfMembersToChange int, currentVersion, targetVersion *semver.Version) error {
68-
membersToChange := rand.Perm(len(clus.Procs))[:numberOfMembersToChange]
69-
t.Logf(fmt.Sprintln("Elect members for operations"), zap.Any("members", membersToChange))
70-
71-
return DowngradeUpgradeMembersByID(t, lg, clus, membersToChange, currentVersion, targetVersion)
72-
}
73-
74-
func DowngradeUpgradeMembersByID(t *testing.T, lg *zap.Logger, clus *EtcdProcessCluster, membersToChange []int, currentVersion, targetVersion *semver.Version) error {
67+
func DowngradeUpgradeMembers(t *testing.T, lg *zap.Logger, clus *EtcdProcessCluster, numberOfMembersToChange int, currentVersion, targetVersion *semver.Version) (membersChanged []int, err error) {
7568
if lg == nil {
7669
lg = clus.lg
7770
}
71+
7872
isDowngrade := targetVersion.LessThan(*currentVersion)
7973
opString := "upgrading"
8074
newExecPath := BinPath.Etcd
@@ -83,29 +77,32 @@ func DowngradeUpgradeMembersByID(t *testing.T, lg *zap.Logger, clus *EtcdProcess
8377
newExecPath = BinPath.EtcdLastRelease
8478
}
8579

80+
membersChanged = rand.Perm(len(clus.Procs))[:numberOfMembersToChange]
81+
t.Logf(fmt.Sprintln("Elect members for operations"), zap.Any("members", membersChanged))
82+
8683
// Need to wait health interval for cluster to prepare for downgrade/upgrade
8784
time.Sleep(etcdserver.HealthInterval)
8885

89-
for _, memberID := range membersToChange {
86+
for _, memberID := range membersChanged {
9087
member := clus.Procs[memberID]
9188
if member.Config().ExecPath == newExecPath {
92-
return fmt.Errorf("member:%s is already running with the %s target binary - %s", member.Config().Name, opString, member.Config().ExecPath)
89+
return nil, fmt.Errorf("member:%s is already running with the %s target binary - %s", member.Config().Name, opString, member.Config().ExecPath)
9390
}
9491
lg.Info(fmt.Sprintf("%s member", opString), zap.String("member", member.Config().Name))
9592
if err := member.Stop(); err != nil {
96-
return err
93+
return nil, err
9794
}
9895
member.Config().ExecPath = newExecPath
9996
lg.Info("Restarting member", zap.String("member", member.Config().Name))
10097
err := member.Start(context.TODO())
10198
if err != nil {
102-
return err
99+
return nil, err
103100
}
104101
}
105102
lg.Info("Validating versions")
106-
for _, memberID := range membersToChange {
103+
for _, memberID := range membersChanged {
107104
member := clus.Procs[memberID]
108-
if isDowngrade || len(membersToChange) == len(clus.Procs) {
105+
if isDowngrade || len(membersChanged) == len(clus.Procs) {
109106
ValidateVersion(t, clus.Cfg, member, version.Versions{
110107
Cluster: targetVersion.String(),
111108
Server: targetVersion.String(),
@@ -117,7 +114,7 @@ func DowngradeUpgradeMembersByID(t *testing.T, lg *zap.Logger, clus *EtcdProcess
117114
})
118115
}
119116
}
120-
return nil
117+
return membersChanged, nil
121118
}
122119

123120
func ValidateMemberVersions(t *testing.T, epc *EtcdProcessCluster, expect []*version.Versions) {

tests/robustness/failpoint/cluster.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ func (f memberDowngrade) Inject(ctx context.Context, t *testing.T, lg *zap.Logge
174174
time.Sleep(etcdserver.HealthInterval)
175175
e2e.DowngradeEnable(t, clus, lastVersion)
176176

177-
err = e2e.DowngradeUpgradeMembers(t, lg, clus, numberOfMembersToDowngrade, currentVersion, lastVersion)
177+
_, err = e2e.DowngradeUpgradeMembers(t, lg, clus, numberOfMembersToDowngrade, currentVersion, lastVersion)
178178
time.Sleep(etcdserver.HealthInterval)
179179
return nil, err
180180
}
@@ -230,13 +230,13 @@ func (f memberDowngradeUpgrade) Inject(ctx context.Context, t *testing.T, lg *za
230230
time.Sleep(etcdserver.HealthInterval)
231231
e2e.DowngradeEnable(t, clus, lastVersion)
232232
// downgrade all members first
233-
err = e2e.DowngradeUpgradeMembers(t, lg, clus, len(clus.Procs), currentVersion, lastVersion)
233+
_, err = e2e.DowngradeUpgradeMembers(t, lg, clus, len(clus.Procs), currentVersion, lastVersion)
234234
if err != nil {
235235
return nil, err
236236
}
237237
// partial upgrade the cluster
238238
numberOfMembersToUpgrade := rand.Int()%len(clus.Procs) + 1
239-
err = e2e.DowngradeUpgradeMembers(t, lg, clus, numberOfMembersToUpgrade, lastVersion, currentVersion)
239+
_, err = e2e.DowngradeUpgradeMembers(t, lg, clus, numberOfMembersToUpgrade, lastVersion, currentVersion)
240240
time.Sleep(etcdserver.HealthInterval)
241241
return nil, err
242242
}

0 commit comments

Comments
 (0)