diff --git a/api/version/version.go b/api/version/version.go index ef3c09e7c115..31ca2f14d8a0 100644 --- a/api/version/version.go +++ b/api/version/version.go @@ -26,7 +26,7 @@ import ( var ( // MinClusterVersion is the min cluster version this etcd binary is compatible with. MinClusterVersion = "3.0.0" - Version = "3.6.0-alpha.0" + Version = "3.7.0-alpha.0" APIVersion = "unknown" // Git SHA Value will be set during build @@ -43,6 +43,7 @@ var ( V3_5 = semver.Version{Major: 3, Minor: 5} V3_6 = semver.Version{Major: 3, Minor: 6} V3_7 = semver.Version{Major: 3, Minor: 7} + V3_8 = semver.Version{Major: 3, Minor: 8} V4_0 = semver.Version{Major: 4, Minor: 0} // AllVersions keeps all the versions in ascending order. diff --git a/etcdutl/snapshot/v3_snapshot_test.go b/etcdutl/snapshot/v3_snapshot_test.go index 50f14008cb92..0fcc3540bd70 100644 --- a/etcdutl/snapshot/v3_snapshot_test.go +++ b/etcdutl/snapshot/v3_snapshot_test.go @@ -43,7 +43,7 @@ func TestSnapshotStatus(t *testing.T) { status, err := NewV3(zap.NewNop()).Status(dbpath) require.NoError(t, err) - assert.Equal(t, uint32(0x62132b4d), status.Hash) + assert.Equal(t, uint32(0xe7a6e44b), status.Hash) assert.Equal(t, int64(11), status.Revision) } diff --git a/server/etcdserver/api/capability.go b/server/etcdserver/api/capability.go index cf535ec4efaa..3efe6c74d704 100644 --- a/server/etcdserver/api/capability.go +++ b/server/etcdserver/api/capability.go @@ -41,6 +41,7 @@ var ( "3.4.0": {AuthCapability: true, V3rpcCapability: true}, "3.5.0": {AuthCapability: true, V3rpcCapability: true}, "3.6.0": {AuthCapability: true, V3rpcCapability: true}, + "3.7.0": {AuthCapability: true, V3rpcCapability: true}, } enableMapMu sync.RWMutex diff --git a/server/etcdserver/api/rafthttp/stream.go b/server/etcdserver/api/rafthttp/stream.go index fa02f42b9b9c..23eb9c9a9db2 100644 --- a/server/etcdserver/api/rafthttp/stream.go +++ b/server/etcdserver/api/rafthttp/stream.go @@ -60,6 +60,7 @@ var ( "3.4.0": {streamTypeMsgAppV2, streamTypeMessage}, "3.5.0": {streamTypeMsgAppV2, streamTypeMessage}, "3.6.0": {streamTypeMsgAppV2, streamTypeMessage}, + "3.7.0": {streamTypeMsgAppV2, streamTypeMessage}, } ) diff --git a/server/etcdserver/bootstrap_test.go b/server/etcdserver/bootstrap_test.go index ca16c5887b6b..823b9b7210bd 100644 --- a/server/etcdserver/bootstrap_test.go +++ b/server/etcdserver/bootstrap_test.go @@ -133,7 +133,7 @@ func mockBootstrapRoundTrip(members []etcdserverpb.Member) roundTripFunc { case strings.Contains(r.URL.String(), DowngradeEnabledPath): return &http.Response{ StatusCode: http.StatusOK, - Body: io.NopCloser(strings.NewReader(`true`)), + Body: io.NopCloser(strings.NewReader(`false`)), }, nil } return nil, nil diff --git a/server/storage/schema/migration_test.go b/server/storage/schema/migration_test.go index 2b1d563864de..0f762c406f28 100644 --- a/server/storage/schema/migration_test.go +++ b/server/storage/schema/migration_test.go @@ -51,11 +51,16 @@ func TestNewPlan(t *testing.T) { target: version.V3_5, }, { - name: "Upgrade v3.6 to v3.7 should fail as v3.7 is unknown", - current: version.V3_6, - target: version.V3_7, + name: "Upgrade v3.6 to v3.7 should work", + current: version.V3_6, + target: version.V3_7, + }, + { + name: "Upgrade v3.7 to v3.8 should fail as v3.8 is unknown", + current: version.V3_7, + target: version.V3_8, expectError: true, - expectErrorMsg: `version "3.7.0" is not supported`, + expectErrorMsg: `version "3.8.0" is not supported`, }, { name: "Upgrade v3.6 to v4.0 as major version changes are unsupported", diff --git a/server/storage/schema/schema.go b/server/storage/schema/schema.go index c0f5feb5319f..72f870a108bc 100644 --- a/server/storage/schema/schema.go +++ b/server/storage/schema/schema.go @@ -135,6 +135,7 @@ var ( version.V3_6: { addNewField(Meta, MetaStorageVersionName, emptyStorageVersion), }, + version.V3_7: {}, } // emptyStorageVersion is used for v3.6 Step for the first time, in all other version StoragetVersion should be set by migrator. // Adding a addNewField for StorageVersion we can reuse logic to remove it when downgrading to v3.5 diff --git a/server/storage/schema/schema_test.go b/server/storage/schema/schema_test.go index 5f062730f293..9e46be0dbfe8 100644 --- a/server/storage/schema/schema_test.go +++ b/server/storage/schema/schema_test.go @@ -73,10 +73,14 @@ func TestValidate(t *testing.T) { version: version.V3_6, }, { - name: `V3.7 schema is unknown and should return error`, - version: version.V3_7, + name: `V3.7 is correct`, + version: version.V3_7, + }, + { + name: `V3.8 schema is unknown and should return error`, + version: version.V3_8, expectError: true, - expectErrorMsg: `version "3.7.0" is not supported`, + expectErrorMsg: `version "3.8.0" is not supported`, }, } for _, tc := range tcs { @@ -157,20 +161,32 @@ func TestMigrate(t *testing.T) { expectVersion: &version.V3_7, }, { - name: "Upgrading 3.6 to v3.7 is not supported", - version: version.V3_6, - targetVersion: version.V3_7, - expectVersion: &version.V3_6, - expectError: true, - expectErrorMsg: `cannot create migration plan: version "3.7.0" is not supported`, + name: "Upgrading 3.6 to v3.7 should work", + version: version.V3_6, + targetVersion: version.V3_7, + expectVersion: &version.V3_7, }, { - name: "Downgrading v3.7 to v3.6 is not supported", + name: "Upgrading 3.7 to v3.8 is not supported", version: version.V3_7, - targetVersion: version.V3_6, + targetVersion: version.V3_8, expectVersion: &version.V3_7, expectError: true, - expectErrorMsg: `cannot create migration plan: version "3.7.0" is not supported`, + expectErrorMsg: `cannot create migration plan: version "3.8.0" is not supported`, + }, + { + name: "Downgrading v3.7 to v3.6 should work", + version: version.V3_7, + targetVersion: version.V3_6, + expectVersion: &version.V3_6, + }, + { + name: "Downgrading v3.8 to v3.7 is not supported", + version: version.V3_8, + targetVersion: version.V3_7, + expectVersion: &version.V3_8, + expectError: true, + expectErrorMsg: `cannot create migration plan: version "3.8.0" is not supported`, }, { name: "Downgrading v3.6 to v3.5 works as there are no v3.6 wal entries", @@ -319,6 +335,11 @@ func setupBackendData(t *testing.T, ver semver.Version, overrideKeys func(tx bac UnsafeUpdateConsistentIndex(tx, 1, 1) UnsafeSetStorageVersion(tx, &version.V3_7) tx.UnsafePut(Meta, []byte("future-key"), []byte("")) + case version.V3_8: + MustUnsafeSaveConfStateToBackend(zap.NewNop(), tx, &raftpb.ConfState{}) + UnsafeUpdateConsistentIndex(tx, 1, 1) + UnsafeSetStorageVersion(tx, &version.V3_8) + tx.UnsafePut(Meta, []byte("future-key"), []byte("")) default: t.Fatalf("Unsupported storage version") } diff --git a/tests/e2e/ctl_v3_snapshot_test.go b/tests/e2e/ctl_v3_snapshot_test.go index f793c320ed67..cbf6dee5e57b 100644 --- a/tests/e2e/ctl_v3_snapshot_test.go +++ b/tests/e2e/ctl_v3_snapshot_test.go @@ -286,8 +286,8 @@ func snapshotVersionTest(cx ctlCtx) { if err != nil { cx.t.Fatalf("snapshotVersionTest getSnapshotStatus error (%v)", err) } - if st.Version != "3.6.0" { - cx.t.Fatalf("expected %q, got %q", "3.6.0", st.Version) + if st.Version != "3.7.0" { + cx.t.Fatalf("expected %q, got %q", "3.7.0", st.Version) } } diff --git a/tests/e2e/discovery_test.go b/tests/e2e/discovery_test.go deleted file mode 100644 index 5ecccc51b8a5..000000000000 --- a/tests/e2e/discovery_test.go +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2022 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//go:build !cluster_proxy - -package e2e - -import ( - "context" - "fmt" - "net/http" - "strings" - "testing" - "time" - - "github.com/stretchr/testify/require" - - "go.etcd.io/etcd/client/pkg/v3/fileutil" - "go.etcd.io/etcd/client/pkg/v3/testutil" - "go.etcd.io/etcd/client/pkg/v3/transport" - "go.etcd.io/etcd/client/v2" - "go.etcd.io/etcd/pkg/v3/expect" - "go.etcd.io/etcd/server/v3/etcdserver/api/rafthttp" - "go.etcd.io/etcd/tests/v3/framework/e2e" - "go.etcd.io/etcd/tests/v3/framework/integration" -) - -func TestClusterOf1UsingDiscovery(t *testing.T) { testClusterUsingDiscovery(t, 1, false) } -func TestClusterOf3UsingDiscovery(t *testing.T) { testClusterUsingDiscovery(t, 3, false) } -func TestTLSClusterOf3UsingDiscovery(t *testing.T) { testClusterUsingDiscovery(t, 3, true) } - -func testClusterUsingDiscovery(t *testing.T, size int, peerTLS bool) { - e2e.BeforeTest(t) - - if !fileutil.Exist(e2e.BinPath.EtcdLastRelease) { - t.Skipf("%q does not exist", e2e.BinPath.EtcdLastRelease) - } - - dc, err := e2e.NewEtcdProcessCluster(t.Context(), t, - e2e.WithBasePort(2000), - e2e.WithVersion(e2e.LastVersion), - e2e.WithClusterSize(1), - e2e.WithEnableV2(true), - ) - if err != nil { - t.Fatalf("could not start etcd process cluster (%v)", err) - } - defer dc.Close() - - dcc := MustNewHTTPClient(t, dc.EndpointsHTTP(), nil) - dkapi := client.NewKeysAPI(dcc) - ctx, cancel := context.WithTimeout(t.Context(), integration.RequestTimeout) - _, err = dkapi.Create(ctx, "/_config/size", fmt.Sprintf("%d", size)) - require.NoError(t, err) - cancel() - - c, err := e2e.NewEtcdProcessCluster(t.Context(), t, - e2e.WithBasePort(3000), - e2e.WithClusterSize(size), - e2e.WithIsPeerTLS(peerTLS), - e2e.WithDiscovery(dc.EndpointsHTTP()[0]+"/v2/keys"), - ) - if err != nil { - t.Fatalf("could not start etcd process cluster (%v)", err) - } - defer c.Close() - - kubectl := []string{e2e.BinPath.Etcdctl, "--endpoints", strings.Join(c.EndpointsGRPC(), ",")} - require.NoError(t, e2e.SpawnWithExpect(append(kubectl, "put", "key", "value"), expect.ExpectedResponse{Value: "OK"})) - require.NoError(t, e2e.SpawnWithExpect(append(kubectl, "get", "key"), expect.ExpectedResponse{Value: "value"})) -} - -func MustNewHTTPClient(t testutil.TB, eps []string, tls *transport.TLSInfo) client.Client { - cfgtls := transport.TLSInfo{} - if tls != nil { - cfgtls = *tls - } - cfg := client.Config{Transport: mustNewTransport(t, cfgtls), Endpoints: eps} - c, err := client.New(cfg) - require.NoError(t, err) - return c -} - -func mustNewTransport(t testutil.TB, tlsInfo transport.TLSInfo) *http.Transport { - // tick in integration test is short, so 1s dial timeout could play well. - tr, err := transport.NewTimeoutTransport(tlsInfo, time.Second, rafthttp.ConnReadTimeout, rafthttp.ConnWriteTimeout) - require.NoError(t, err) - return tr -} diff --git a/tests/e2e/utl_migrate_test.go b/tests/e2e/utl_migrate_test.go index d002d4ef7a73..b6f887319c02 100644 --- a/tests/e2e/utl_migrate_test.go +++ b/tests/e2e/utl_migrate_test.go @@ -54,78 +54,79 @@ func TestEtctlutlMigrate(t *testing.T) { targetVersion: "abc", clusterSize: 1, expectLogsSubString: `Error: wrong target version format, expected "X.Y", got "abc"`, - expectStorageVersion: &version.V3_6, + expectStorageVersion: &version.V3_7, }, { name: "Invalid target version", targetVersion: "3.a", clusterSize: 1, expectLogsSubString: `Error: failed to parse target version: strconv.ParseInt: parsing "a": invalid syntax`, - expectStorageVersion: &version.V3_6, + expectStorageVersion: &version.V3_7, }, { name: "Target with only major version is invalid", targetVersion: "3", clusterSize: 1, expectLogsSubString: `Error: wrong target version format, expected "X.Y", got "3"`, - expectStorageVersion: &version.V3_6, + expectStorageVersion: &version.V3_7, }, { name: "Target with patch version is invalid", targetVersion: "3.6.0", clusterSize: 1, expectLogsSubString: `Error: wrong target version format, expected "X.Y", got "3.6.0"`, - expectStorageVersion: &version.V3_6, + expectStorageVersion: &version.V3_7, }, { - name: "Migrate v3.5 to v3.5 is no-op", - clusterVersion: e2e.LastVersion, - clusterSize: 1, - targetVersion: "3.5", - expectLogsSubString: "storage version up-to-date\t" + `{"storage-version": "3.5"}`, + name: "Migrate v3.6 to v3.6 is no-op", + clusterVersion: e2e.LastVersion, + clusterSize: 1, + targetVersion: "3.6", + expectStorageVersion: &version.V3_6, + expectLogsSubString: "storage version up-to-date\t" + `{"storage-version": "3.6"}`, }, { name: "Upgrade 1 member cluster from v3.5 to v3.6 should work", clusterVersion: e2e.LastVersion, clusterSize: 1, - targetVersion: "3.6", - expectStorageVersion: &version.V3_6, + targetVersion: "3.7", + expectStorageVersion: &version.V3_7, }, { - name: "Upgrade 3 member cluster from v3.5 to v3.6 should work", + name: "Upgrade 3 member cluster from v3.6 to v3.7 should work", clusterVersion: e2e.LastVersion, clusterSize: 3, - targetVersion: "3.6", - expectStorageVersion: &version.V3_6, + targetVersion: "3.7", + expectStorageVersion: &version.V3_7, }, { - name: "Migrate v3.6 to v3.6 is no-op", - targetVersion: "3.6", + name: "Migrate v3.7 to v3.7 is no-op", + targetVersion: "3.7", clusterSize: 1, - expectLogsSubString: "storage version up-to-date\t" + `{"storage-version": "3.6"}`, - expectStorageVersion: &version.V3_6, + expectLogsSubString: "storage version up-to-date\t" + `{"storage-version": "3.7"}`, + expectStorageVersion: &version.V3_7, }, { - name: "Downgrade 1 member cluster from v3.6 to v3.5 should work", - targetVersion: "3.5", + name: "Downgrade 1 member cluster from v3.7 to v3.6 should work", + targetVersion: "3.6", clusterSize: 1, expectLogsSubString: "updated storage version", - expectStorageVersion: nil, // 3.5 doesn't have the field `storageVersion`, so it returns nil. + expectStorageVersion: &version.V3_6, }, { - name: "Downgrade 3 member cluster from v3.6 to v3.5 should work", - targetVersion: "3.5", + name: "Downgrade 3 member cluster from v3.7 to v3.6 should work", + targetVersion: "3.6", clusterSize: 3, expectLogsSubString: "updated storage version", - expectStorageVersion: nil, // 3.5 doesn't have the field `storageVersion`, so it returns nil. + expectStorageVersion: &version.V3_6, }, { - name: "Upgrade v3.6 to v3.7 with force should work", - targetVersion: "3.7", + name: "Upgrade v3.7 to v3.8 with force should work", + targetVersion: "3.8", clusterSize: 1, force: true, - expectLogsSubString: "forcefully set storage version\t" + `{"storage-version": "3.7"}`, - expectStorageVersion: &semver.Version{Major: 3, Minor: 7}, + expectLogsSubString: "forcefully set storage version\t" + `{"storage-version": "3.8"}`, + expectStorageVersion: &semver.Version{Major: 3, Minor: 8}, }, } for _, tc := range tcs { diff --git a/tests/e2e/v2store_deprecation_test.go b/tests/e2e/v2store_deprecation_test.go index bc91e93b00f1..77a59a365889 100644 --- a/tests/e2e/v2store_deprecation_test.go +++ b/tests/e2e/v2store_deprecation_test.go @@ -30,7 +30,6 @@ import ( "go.uber.org/zap/zaptest" "go.etcd.io/etcd/client/pkg/v3/fileutil" - "go.etcd.io/etcd/pkg/v3/expect" "go.etcd.io/etcd/server/v3/etcdserver" "go.etcd.io/etcd/server/v3/etcdserver/api/membership" "go.etcd.io/etcd/server/v3/etcdserver/api/snap" @@ -41,17 +40,6 @@ import ( "go.etcd.io/etcd/tests/v3/framework/e2e" ) -func writeCustomV2Data(tb testing.TB, epc *e2e.EtcdProcessCluster, count int) { - for i := 0; i < count; i++ { - if err := e2e.CURLPut(epc, e2e.CURLReq{ - Endpoint: "/v2/keys/foo", Value: "bar" + fmt.Sprint(i), - Expected: expect.ExpectedResponse{Value: `{"action":"set","node":{"key":"/foo","value":"bar` + fmt.Sprint(i)}, - }); err != nil { - tb.Fatalf("failed put with curl (%v)", err) - } - } -} - func TestV2DeprecationNotYet(t *testing.T) { e2e.BeforeTest(t) t.Log("Verify its infeasible to start etcd with --v2-deprecation=not-yet mode") @@ -62,65 +50,6 @@ func TestV2DeprecationNotYet(t *testing.T) { assert.NoError(t, err) } -func TestV2DeprecationWriteOnlyWAL(t *testing.T) { - e2e.BeforeTest(t) - dataDirPath := t.TempDir() - - if !fileutil.Exist(e2e.BinPath.EtcdLastRelease) { - t.Skipf("%q does not exist", e2e.BinPath.EtcdLastRelease) - } - cfg := e2e.ConfigStandalone(*e2e.NewConfig( - e2e.WithVersion(e2e.LastVersion), - e2e.WithEnableV2(true), - e2e.WithDataDirPath(dataDirPath), - )) - epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg)) - require.NoError(t, err) - memberDataDir := epc.Procs[0].Config().DataDirPath - - writeCustomV2Data(t, epc, 1) - - require.NoError(t, epc.Stop()) - - t.Log("Verify its infeasible to start etcd with --v2-deprecation=write-only mode") - proc, err := e2e.SpawnCmd([]string{e2e.BinPath.Etcd, "--v2-deprecation=write-only", "--data-dir=" + memberDataDir}, nil) - require.NoError(t, err) - - _, err = proc.Expect("detected disallowed v2 WAL for stage --v2-deprecation=write-only") - assert.NoError(t, err) -} - -func TestV2DeprecationWriteOnlySnapshot(t *testing.T) { - e2e.BeforeTest(t) - dataDirPath := t.TempDir() - - if !fileutil.Exist(e2e.BinPath.EtcdLastRelease) { - t.Skipf("%q does not exist", e2e.BinPath.EtcdLastRelease) - } - cfg := e2e.ConfigStandalone(*e2e.NewConfig( - e2e.WithVersion(e2e.LastVersion), - e2e.WithEnableV2(true), - e2e.WithDataDirPath(dataDirPath), - e2e.WithSnapshotCount(10), - )) - epc, err := e2e.NewEtcdProcessCluster(t.Context(), t, e2e.WithConfig(cfg)) - require.NoError(t, err) - memberDataDir := epc.Procs[0].Config().DataDirPath - - // We need to exceed 'SnapshotCount' such that v2 snapshot is dumped. - writeCustomV2Data(t, epc, 10) - - require.NoError(t, epc.Stop()) - - t.Log("Verify its infeasible to start etcd with --v2-deprecation=write-only mode") - proc, err := e2e.SpawnCmd([]string{e2e.BinPath.Etcd, "--v2-deprecation=write-only", "--data-dir=" + memberDataDir}, nil) - require.NoError(t, err) - defer proc.Close() - - _, err = proc.Expect("detected disallowed custom content in v2store for stage --v2-deprecation=write-only") - assert.NoError(t, err) -} - func TestV2DeprecationSnapshotMatches(t *testing.T) { e2e.BeforeTest(t) lastReleaseData := t.TempDir() diff --git a/tests/framework/e2e/cluster.go b/tests/framework/e2e/cluster.go index 6e667f641b39..87e96491a7f4 100644 --- a/tests/framework/e2e/cluster.go +++ b/tests/framework/e2e/cluster.go @@ -178,10 +178,9 @@ type EtcdProcessClusterConfig struct { IsPeerAutoTLS bool CN bool - // Removed in v3.6 - + // Discovery is for v2discovery + // Note: remove this field when we remove the v2discovery Discovery string // v2 discovery - EnableV2 bool } func DefaultConfig() *EtcdProcessClusterConfig { @@ -287,10 +286,6 @@ func WithStrictReconfigCheck(strict bool) EPClusterOption { return func(c *EtcdProcessClusterConfig) { c.ServerConfig.StrictReconfigCheck = strict } } -func WithEnableV2(enable bool) EPClusterOption { - return func(c *EtcdProcessClusterConfig) { c.EnableV2 = enable } -} - func WithAuthTokenOpts(token string) EPClusterOption { return func(c *EtcdProcessClusterConfig) { c.ServerConfig.AuthToken = token } } @@ -618,9 +613,7 @@ func (cfg *EtcdProcessClusterConfig) EtcdServerProcessConfig(tb testing.TB, i in if !cfg.ServerConfig.StrictReconfigCheck { args = append(args, "--strict-reconfig-check=false") } - if cfg.EnableV2 { - args = append(args, "--enable-v2=true") - } + var murl string if cfg.MetricsURLScheme != "" { murl = (&url.URL{ diff --git a/tests/framework/e2e/cluster_test.go b/tests/framework/e2e/cluster_test.go index 24fa8a91bc6c..f5ff967203ae 100644 --- a/tests/framework/e2e/cluster_test.go +++ b/tests/framework/e2e/cluster_test.go @@ -23,8 +23,8 @@ import ( ) func TestEtcdServerProcessConfig(t *testing.T) { - v3_5_12 := semver.Version{Major: 3, Minor: 5, Patch: 12} - v3_5_14 := semver.Version{Major: 3, Minor: 5, Patch: 14} + v3_6_0 := semver.Version{Major: 3, Minor: 6, Patch: 0} + v3_7_0 := semver.Version{Major: 3, Minor: 7, Patch: 0} tcs := []struct { name string config *EtcdProcessClusterConfig @@ -81,9 +81,9 @@ func TestEtcdServerProcessConfig(t *testing.T) { name: "CatchUpEntries", config: NewConfig(WithSnapshotCatchUpEntries(100)), expectArgsContain: []string{ - "--experimental-snapshot-catchup-entries=100", + "--snapshot-catchup-entries=100", }, - mockBinaryVersion: &v3_5_14, + mockBinaryVersion: &v3_7_0, }, { name: "CatchUpEntriesNoVersion", @@ -95,10 +95,10 @@ func TestEtcdServerProcessConfig(t *testing.T) { { name: "CatchUpEntriesOldVersion", config: NewConfig(WithSnapshotCatchUpEntries(100), WithVersion(LastVersion)), - expectArgsNotContain: []string{ + expectArgsContain: []string{ "--snapshot-catchup-entries=100", }, - mockBinaryVersion: &v3_5_12, + mockBinaryVersion: &v3_6_0, }, { name: "ClientHTTPSeparate", @@ -114,13 +114,6 @@ func TestEtcdServerProcessConfig(t *testing.T) { "--force-new-cluster=true", }, }, - { - name: "EnableV2", - config: NewConfig(WithEnableV2(true)), - expectArgsContain: []string{ - "--enable-v2=true", - }, - }, { name: "MetricsURL", config: NewConfig(WithMetricsURLScheme("http")), diff --git a/tests/go.mod b/tests/go.mod index a5705ccb960c..b3f144bda8c7 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -32,7 +32,6 @@ require ( github.com/stretchr/testify v1.10.0 go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0 - go.etcd.io/etcd/client/v2 v2.306.0-alpha.0 go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 go.etcd.io/etcd/etcdctl/v3 v3.6.0-alpha.0 go.etcd.io/etcd/etcdutl/v3 v3.6.0-alpha.0 @@ -89,6 +88,7 @@ require ( github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect go.etcd.io/bbolt v1.4.0 // indirect + go.etcd.io/etcd/client/v2 v2.306.0-alpha.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect diff --git a/tests/integration/clientv3/maintenance_test.go b/tests/integration/clientv3/maintenance_test.go index 6c75b63b8e20..dc46bf1823a1 100644 --- a/tests/integration/clientv3/maintenance_test.go +++ b/tests/integration/clientv3/maintenance_test.go @@ -342,7 +342,7 @@ func TestMaintenanceSnapshotWithVersionVersion(t *testing.T) { resp, err := clus.RandClient().SnapshotWithVersion(context.Background()) require.NoError(t, err) defer resp.Snapshot.Close() - if resp.Version != "3.6.0" { + if resp.Version != "3.7.0" { t.Errorf("unexpected version, expected %q, got %q", version.Version, resp.Version) } } diff --git a/tests/integration/clientv3/snapshot/v3_snapshot_test.go b/tests/integration/clientv3/snapshot/v3_snapshot_test.go index 1da423f5cfb2..a306718839ea 100644 --- a/tests/integration/clientv3/snapshot/v3_snapshot_test.go +++ b/tests/integration/clientv3/snapshot/v3_snapshot_test.go @@ -63,7 +63,7 @@ func TestSaveSnapshotVersion(t *testing.T) { ver, dbPath := createSnapshotFile(t, cfg, kvs) defer os.RemoveAll(dbPath) - require.Equalf(t, "3.6.0", ver, "expected snapshot version %s, got %s:", "3.6.0", ver) + require.Equalf(t, "3.7.0", ver, "expected snapshot version %s, got %s:", "3.7.0", ver) } type kv struct {