Skip to content

Commit c4252fa

Browse files
authored
Merge pull request #19662 from fuweid/36-backport-test
[3.6] e2e: add upgrade test for clusters set up by promoted members
2 parents 347ed91 + a1c9687 commit c4252fa

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

tests/e2e/etcd_release_upgrade_test.go

+57
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"go.etcd.io/etcd/api/v3/version"
2828
"go.etcd.io/etcd/client/pkg/v3/fileutil"
2929
"go.etcd.io/etcd/pkg/v3/expect"
30+
"go.etcd.io/etcd/tests/v3/framework/config"
3031
"go.etcd.io/etcd/tests/v3/framework/e2e"
3132
)
3233

@@ -166,3 +167,59 @@ func TestReleaseUpgradeWithRestart(t *testing.T) {
166167

167168
require.NoError(t, ctlV3Get(cx, []string{kvs[0].key}, []kv{kvs[0]}...))
168169
}
170+
171+
func TestClusterUpgradeAfterPromotingMembers(t *testing.T) {
172+
if !fileutil.Exist(e2e.BinPath.EtcdLastRelease) {
173+
t.Skipf("%q does not exist", e2e.BinPath.EtcdLastRelease)
174+
}
175+
176+
e2e.BeforeTest(t)
177+
178+
currentVersion, err := e2e.GetVersionFromBinary(e2e.BinPath.Etcd)
179+
require.NoErrorf(t, err, "failed to get version from binary")
180+
181+
lastClusterVersion, err := e2e.GetVersionFromBinary(e2e.BinPath.EtcdLastRelease)
182+
require.NoErrorf(t, err, "failed to get version from last release binary")
183+
184+
clusterSize := 3
185+
186+
for _, tc := range []struct {
187+
name string
188+
snapshot int
189+
}{
190+
{
191+
name: "create snapshot after promoted",
192+
snapshot: 10,
193+
},
194+
{
195+
name: "no snapshot after promoted",
196+
},
197+
} {
198+
t.Run(tc.name, func(t *testing.T) {
199+
ctx := context.Background()
200+
201+
epc, _ := mustCreateNewClusterByPromotingMembers(t, e2e.LastVersion, clusterSize,
202+
e2e.WithSnapshotCount(uint64(tc.snapshot)))
203+
defer func() {
204+
require.NoError(t, epc.Close())
205+
}()
206+
207+
for i := 0; i < tc.snapshot; i++ {
208+
err = epc.Etcdctl().Put(ctx, "foo", "bar", config.PutOptions{})
209+
require.NoError(t, err)
210+
}
211+
212+
err = e2e.DowngradeUpgradeMembers(t, nil, epc, clusterSize, false, lastClusterVersion, currentVersion)
213+
require.NoError(t, err)
214+
215+
t.Logf("Checking all members' status after upgrading")
216+
ensureAllMembersAreVotingMembers(t, epc)
217+
218+
t.Logf("Checking all members are ready to serve client requests")
219+
for i := 0; i < clusterSize; i++ {
220+
err = epc.Procs[i].Etcdctl().Put(context.Background(), "foo", "bar", config.PutOptions{})
221+
require.NoError(t, err)
222+
}
223+
})
224+
}
225+
}

0 commit comments

Comments
 (0)