Merge pull request #16638 from fuweid/fix-stylecheck

*: fix stylecheck/unused/unconvert linter issues
This commit is contained in:
Marek Siarkowicz 2023-09-26 12:15:53 +02:00 committed by GitHub
commit 4e7f114fa7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 10 additions and 202 deletions

View File

@ -15,23 +15,11 @@
package client_test package client_test
import ( import (
"net/http"
"testing" "testing"
"go.etcd.io/etcd/client/pkg/v3/testutil" "go.etcd.io/etcd/client/pkg/v3/testutil"
) )
func exampleEndpoints() []string { return nil }
func exampleTransport() *http.Transport { return nil }
func forUnitTestsRunInMockedContext(mocking func(), example func()) {
mocking()
// TODO: Call 'example' when mocking() provides realistic mocking of transport.
// The real testing logic of examples gets executed
// as part of ./tests/integration/client/example/...
}
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
testutil.MustTestMainWithLeakDetection(m) testutil.MustTestMainWithLeakDetection(m)
} }

View File

@ -15,7 +15,6 @@
package testutil package testutil
import ( import (
"reflect"
"testing" "testing"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
@ -52,11 +51,3 @@ func AssertFalse(t *testing.T, v bool, msg ...string) {
newMsg := copyToInterface(msg...) newMsg := copyToInterface(msg...)
assert.Equal(t, false, v, newMsg) assert.Equal(t, false, v, newMsg)
} }
func isNil(v any) bool {
if v == nil {
return true
}
rv := reflect.ValueOf(v)
return rv.Kind() != reflect.Struct && rv.IsNil()
}

View File

@ -16,7 +16,6 @@ package ordering
import ( import (
"context" "context"
gContext "context"
"sync" "sync"
"testing" "testing"
@ -29,7 +28,7 @@ type mockKV struct {
response clientv3.OpResponse response clientv3.OpResponse
} }
func (kv *mockKV) Do(ctx gContext.Context, op clientv3.Op) (clientv3.OpResponse, error) { func (kv *mockKV) Do(ctx context.Context, op clientv3.Op) (clientv3.OpResponse, error) {
return kv.response, nil return kv.response, nil
} }

View File

@ -37,9 +37,6 @@ import (
) )
var ( var (
authEnabled = []byte{1}
authDisabled = []byte{0}
rootPerm = authpb.Permission{PermType: authpb.READWRITE, Key: []byte{}, RangeEnd: []byte{0}} rootPerm = authpb.Permission{PermType: authpb.READWRITE, Key: []byte{}, RangeEnd: []byte{0}}
ErrRootUserNotExist = errors.New("auth: root user does not exist") ErrRootUserNotExist = errors.New("auth: root user does not exist")

View File

@ -1116,14 +1116,6 @@ func (cfg *Config) getListenClientUrls() (ss []string) {
return ss return ss
} }
func (cfg *Config) getListenClientHttpUrls() (ss []string) {
ss = make([]string, len(cfg.ListenClientHttpUrls))
for i := range cfg.ListenClientHttpUrls {
ss[i] = cfg.ListenClientHttpUrls[i].String()
}
return ss
}
func (cfg *Config) getMetricsURLs() (ss []string) { func (cfg *Config) getMetricsURLs() (ss []string) {
ss = make([]string, len(cfg.ListenMetricsUrls)) ss = make([]string, len(cfg.ListenMetricsUrls))
for i := range cfg.ListenMetricsUrls { for i := range cfg.ListenMetricsUrls {

View File

@ -23,7 +23,6 @@ import (
"github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus"
"go.uber.org/zap" "go.uber.org/zap"
"go.etcd.io/etcd/api/v3/etcdserverpb"
pb "go.etcd.io/etcd/api/v3/etcdserverpb" pb "go.etcd.io/etcd/api/v3/etcdserverpb"
"go.etcd.io/etcd/client/pkg/v3/types" "go.etcd.io/etcd/client/pkg/v3/types"
"go.etcd.io/etcd/server/v3/auth" "go.etcd.io/etcd/server/v3/auth"
@ -154,9 +153,9 @@ func checkAlarms(lg *zap.Logger, srv ServerHealth, excludedAlarms AlarmSet) Heal
h.Health = "false" h.Health = "false"
switch v.Alarm { switch v.Alarm {
case etcdserverpb.AlarmType_NOSPACE: case pb.AlarmType_NOSPACE:
h.Reason = "ALARM NOSPACE" h.Reason = "ALARM NOSPACE"
case etcdserverpb.AlarmType_CORRUPT: case pb.AlarmType_CORRUPT:
h.Reason = "ALARM CORRUPT" h.Reason = "ALARM CORRUPT"
default: default:
h.Reason = "ALARM UNKNOWN" h.Reason = "ALARM UNKNOWN"
@ -183,7 +182,7 @@ func checkAPI(lg *zap.Logger, srv ServerHealth, serializable bool) Health {
h := Health{Health: "true"} h := Health{Health: "true"}
cfg := srv.Config() cfg := srv.Config()
ctx, cancel := context.WithTimeout(context.Background(), cfg.ReqTimeout()) ctx, cancel := context.WithTimeout(context.Background(), cfg.ReqTimeout())
_, err := srv.Range(ctx, &etcdserverpb.RangeRequest{KeysOnly: true, Limit: 1, Serializable: serializable}) _, err := srv.Range(ctx, &pb.RangeRequest{KeysOnly: true, Limit: 1, Serializable: serializable})
cancel() cancel()
if err != nil && err != auth.ErrUserEmpty && err != auth.ErrPermissionDenied { if err != nil && err != auth.ErrUserEmpty && err != auth.ErrPermissionDenied {
h.Health = "false" h.Health = "false"

View File

@ -34,12 +34,6 @@ import (
"go.etcd.io/raft/v3" "go.etcd.io/raft/v3"
) )
type fakeStats struct{}
func (s *fakeStats) SelfStats() []byte { return nil }
func (s *fakeStats) LeaderStats() []byte { return nil }
func (s *fakeStats) StoreStats() []byte { return nil }
type fakeHealthServer struct { type fakeHealthServer struct {
fakeServer fakeServer
health string health string

View File

@ -410,7 +410,6 @@ type storageMock struct {
clusterVersion *semver.Version clusterVersion *semver.Version
storageVersion *semver.Version storageVersion *semver.Version
downgradeInfo *DowngradeInfo downgradeInfo *DowngradeInfo
locked bool
} }
var _ Server = (*storageMock)(nil) var _ Server = (*storageMock)(nil)

View File

@ -90,13 +90,6 @@ func newMigrationStep(v semver.Version, isUpgrade bool, changes []schemaChange)
return step return step
} }
// execute runs actions required to migrate etcd storage between two minor versions.
func (s migrationStep) execute(lg *zap.Logger, tx backend.BatchTx) error {
tx.LockOutsideApply()
defer tx.Unlock()
return s.unsafeExecute(lg, tx)
}
// unsafeExecute is non thread-safe version of execute. // unsafeExecute is non thread-safe version of execute.
func (s migrationStep) unsafeExecute(lg *zap.Logger, tx backend.UnsafeReadWriter) error { func (s migrationStep) unsafeExecute(lg *zap.Logger, tx backend.UnsafeReadWriter) error {
err := s.actions.unsafeExecute(lg, tx) err := s.actions.unsafeExecute(lg, tx)

View File

@ -34,15 +34,6 @@ func maintenanceInitKeys(cx ctlCtx) {
} }
} }
func ctlV3OnlineDefrag(cx ctlCtx) error {
cmdArgs := append(cx.PrefixArgs(), "defrag")
lines := make([]expect.ExpectedResponse, cx.epc.Cfg.ClusterSize)
for i := range lines {
lines[i] = expect.ExpectedResponse{Value: "Finished defragmenting etcd member"}
}
return e2e.SpawnWithExpects(cmdArgs, cx.envMap, lines...)
}
func ctlV3OfflineDefrag(cx ctlCtx) error { func ctlV3OfflineDefrag(cx ctlCtx) error {
cmdArgs := append(cx.PrefixArgsUtl(), "defrag", "--data-dir", cx.dataDir) cmdArgs := append(cx.PrefixArgsUtl(), "defrag", "--data-dir", cx.dataDir)
lines := []expect.ExpectedResponse{{Value: "finished defragmenting directory"}} lines := []expect.ExpectedResponse{{Value: "finished defragmenting directory"}}

View File

@ -96,11 +96,3 @@ func ctlV3LeaseRevoke(cx ctlCtx, leaseID string) error {
cmdArgs := append(cx.PrefixArgs(), "lease", "revoke", leaseID) cmdArgs := append(cx.PrefixArgs(), "lease", "revoke", leaseID)
return e2e.SpawnWithExpectWithEnv(cmdArgs, cx.envMap, expect.ExpectedResponse{Value: fmt.Sprintf("lease %s revoked", leaseID)}) return e2e.SpawnWithExpectWithEnv(cmdArgs, cx.envMap, expect.ExpectedResponse{Value: fmt.Sprintf("lease %s revoked", leaseID)})
} }
func ctlV3LeaseTimeToLive(cx ctlCtx, leaseID string, withKeys bool) error {
cmdArgs := append(cx.PrefixArgs(), "lease", "timetolive", leaseID)
if withKeys {
cmdArgs = append(cmdArgs, "--keys")
}
return e2e.SpawnWithExpectWithEnv(cmdArgs, cx.envMap, expect.ExpectedResponse{Value: fmt.Sprintf("lease %s granted with", leaseID)})
}

View File

@ -162,11 +162,6 @@ func memberListWithHexTest(cx ctlCtx) {
} }
} }
func ctlV3MemberRemove(cx ctlCtx, ep, memberID, clusterID string) error {
cmdArgs := append(cx.prefixArgs([]string{ep}), "member", "remove", memberID)
return e2e.SpawnWithExpectWithEnv(cmdArgs, cx.envMap, expect.ExpectedResponse{Value: fmt.Sprintf("%s removed from cluster %s", memberID, clusterID)})
}
func memberAddTest(cx ctlCtx) { func memberAddTest(cx ctlCtx) {
peerURL := fmt.Sprintf("http://localhost:%d", e2e.EtcdProcessBasePort+11) peerURL := fmt.Sprintf("http://localhost:%d", e2e.EtcdProcessBasePort+11)
if err := ctlV3MemberAdd(cx, peerURL, false); err != nil { if err := ctlV3MemberAdd(cx, peerURL, false); err != nil {

View File

@ -182,10 +182,6 @@ func withCorruptFunc(f func(string) error) ctlOption {
return func(cx *ctlCtx) { cx.corruptFunc = f } return func(cx *ctlCtx) { cx.corruptFunc = f }
} }
func withDisableStrictReconfig() ctlOption {
return func(cx *ctlCtx) { cx.disableStrictReconfigCheck = true }
}
func withFlagByEnv() ctlOption { func withFlagByEnv() ctlOption {
return func(cx *ctlCtx) { cx.envMap = make(map[string]string) } return func(cx *ctlCtx) { cx.envMap = make(map[string]string) }
} }
@ -345,24 +341,3 @@ func (cx *ctlCtx) PrefixArgsUtl() []string {
func isGRPCTimedout(err error) bool { func isGRPCTimedout(err error) bool {
return strings.Contains(err.Error(), "grpc: timed out trying to connect") return strings.Contains(err.Error(), "grpc: timed out trying to connect")
} }
func (cx *ctlCtx) memberToRemove() (ep string, memberID string, clusterID string) {
n1 := cx.cfg.ClusterSize
if n1 < 2 {
cx.t.Fatalf("%d-node is too small to test 'member remove'", n1)
}
resp, err := getMemberList(*cx, false)
if err != nil {
cx.t.Fatal(err)
}
if n1 != len(resp.Members) {
cx.t.Fatalf("expected %d, got %d", n1, len(resp.Members))
}
ep = resp.Members[0].ClientURLs[0]
clusterID = fmt.Sprintf("%x", resp.Header.ClusterId)
memberID = fmt.Sprintf("%x", resp.Members[1].ID)
return ep, memberID, clusterID
}

View File

@ -1,90 +0,0 @@
// Copyright 2016 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.
package e2e
import (
"go.etcd.io/etcd/tests/v3/framework/e2e"
)
type txnRequests struct {
compare []string
ifSuccess []string
ifFail []string
results []string
}
func ctlV3Txn(cx ctlCtx, rqs txnRequests, expectedExitErr bool) error {
// TODO: support non-interactive mode
cmdArgs := append(cx.PrefixArgs(), "txn")
if cx.interactive {
cmdArgs = append(cmdArgs, "--interactive")
}
proc, err := e2e.SpawnCmd(cmdArgs, cx.envMap)
if err != nil {
return err
}
_, err = proc.Expect("compares:")
if err != nil {
return err
}
for _, req := range rqs.compare {
if err = proc.Send(req + "\r"); err != nil {
return err
}
}
if err = proc.Send("\r"); err != nil {
return err
}
_, err = proc.Expect("success requests (get, put, del):")
if err != nil {
return err
}
for _, req := range rqs.ifSuccess {
if err = proc.Send(req + "\r"); err != nil {
return err
}
}
if err = proc.Send("\r"); err != nil {
return err
}
_, err = proc.Expect("failure requests (get, put, del):")
if err != nil {
return err
}
for _, req := range rqs.ifFail {
if err = proc.Send(req + "\r"); err != nil {
return err
}
}
if err = proc.Send("\r"); err != nil {
return err
}
for _, line := range rqs.results {
_, err = proc.Expect(line)
if err != nil {
return err
}
}
err = proc.Close()
if expectedExitErr {
return nil
}
return err
}

View File

@ -183,7 +183,7 @@ func mustExecuteTxn(cx ctlCtx, reqData string) (bool, []any) {
clus := cx.epc clus := cx.epc
args := e2e.CURLPrefixArgsCluster(clus.Cfg, clus.Procs[0], "POST", e2e.CURLReq{ args := e2e.CURLPrefixArgsCluster(clus.Cfg, clus.Procs[0], "POST", e2e.CURLReq{
Endpoint: "/v3/kv/txn", Endpoint: "/v3/kv/txn",
Value: string(reqData), Value: reqData,
}) })
resp, err := runCommandAndReadJsonOutput(args) resp, err := runCommandAndReadJsonOutput(args)
require.NoError(cx.t, err) require.NoError(cx.t, err)

View File

@ -53,7 +53,7 @@ func (e integrationRunner) NewCluster(ctx context.Context, t testing.TB, opts ..
QuotaBackendBytes: cfg.QuotaBackendBytes, QuotaBackendBytes: cfg.QuotaBackendBytes,
DisableStrictReconfigCheck: !cfg.StrictReconfigCheck, DisableStrictReconfigCheck: !cfg.StrictReconfigCheck,
AuthToken: cfg.AuthToken, AuthToken: cfg.AuthToken,
SnapshotCount: uint64(cfg.SnapshotCount), SnapshotCount: cfg.SnapshotCount,
} }
integrationCfg.ClientTLS, err = tlsInfo(t, cfg.ClientTLS) integrationCfg.ClientTLS, err = tlsInfo(t, cfg.ClientTLS)
if err != nil { if err != nil {

View File

@ -126,7 +126,7 @@ func testEtcdGrpcResolver(t *testing.T, lbPolicy string) {
// Allow 25% tolerance as round robin is not perfect and we don't want the test to flake // Allow 25% tolerance as round robin is not perfect and we don't want the test to flake
expected := float64(totalRequests) * 0.5 expected := float64(totalRequests) * 0.5
assert.InEpsilon(t, float64(expected), float64(responses), 0.25, "unexpected total responses from foo: %s", string(lastResponse)) assert.InEpsilon(t, expected, float64(responses), 0.25, "unexpected total responses from foo: %s", string(lastResponse))
} }
} }

View File

@ -175,13 +175,6 @@ func verifyClusterHealth(ctx context.Context, t *testing.T, clus *e2e.EtcdProces
return nil return nil
} }
type FailpointConfig struct {
failpoint Failpoint
count int
retries int
waitBetweenTriggers time.Duration
}
type Failpoint interface { type Failpoint interface {
Inject(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2e.EtcdProcessCluster) error Inject(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2e.EtcdProcessCluster) error
Name() string Name() string

View File

@ -21,9 +21,9 @@ linters:
- ineffassign - ineffassign
- revive - revive
- staticcheck - staticcheck
# - stylecheck # TODO: enable by #16610 - stylecheck
# - unused # TODO: enable by #16610 - unused
# - unconvert # Remove unnecessary type conversions TODO: enable by #16610 - unconvert # Remove unnecessary type conversions
linters-settings: # please keep this alphabetized linters-settings: # please keep this alphabetized
goimports: goimports:
local-prefixes: go.etcd.io # Put imports beginning with prefix after 3rd-party packages. local-prefixes: go.etcd.io # Put imports beginning with prefix after 3rd-party packages.