From 5d242b05a320a035a2e1805afc431204f9e4eb45 Mon Sep 17 00:00:00 2001 From: redwrasse Date: Fri, 20 Sep 2024 15:50:29 -0700 Subject: [PATCH] server: remaining errors.Is conversions for error equality and inequality checks Signed-off-by: redwrasse --- client/internal/v2/client.go | 4 ++-- client/internal/v2/client_test.go | 10 +++++----- client/internal/v2/keys.go | 2 +- client/pkg/fileutil/lock_linux.go | 3 +-- client/pkg/fileutil/lock_solaris.go | 3 +-- client/pkg/fileutil/lock_test.go | 3 +-- client/pkg/fileutil/lock_windows.go | 4 ++-- client/pkg/fileutil/preallocate_darwin.go | 3 +-- client/v3/client.go | 6 +++--- client/v3/client_test.go | 2 +- client/v3/experimental/recipes/key.go | 5 ++--- client/v3/watch.go | 2 +- contrib/raftexample/kvstore.go | 3 +-- contrib/raftexample/raft.go | 3 +-- etcdctl/ctlv3/command/auth_command.go | 3 +-- etcdctl/ctlv3/command/watch_command_test.go | 3 +-- pkg/ioutil/readcloser_test.go | 5 ++--- tests/e2e/ctl_v3_member_test.go | 5 ++--- tests/e2e/ctl_v3_snapshot_test.go | 3 +-- .../clientv3/concurrency/example_mutex_test.go | 3 +-- .../clientv3/connectivity/black_hole_test.go | 11 +++++------ .../clientv3/connectivity/network_partition_test.go | 10 +++++----- .../clientv3/connectivity/server_shutdown_test.go | 3 +-- .../experimental/recipes/v3_double_barrier_test.go | 3 +-- .../clientv3/experimental/recipes/v3_lock_test.go | 3 +-- tests/integration/clientv3/lease/leasing_test.go | 7 +++---- tests/integration/clientv3/maintenance_test.go | 5 ++--- tests/integration/clientv3/ordering_kv_test.go | 6 +++--- tests/integration/clientv3/ordering_util_test.go | 5 ++--- tests/integration/clientv3/txn_test.go | 5 ++--- tests/integration/clientv3/user_test.go | 13 ++++++------- tests/integration/v3_grpc_test.go | 7 +++---- tests/integration/v3_tls_test.go | 3 +-- 33 files changed, 66 insertions(+), 90 deletions(-) diff --git a/client/internal/v2/client.go b/client/internal/v2/client.go index da45433549a..8a4ecdf7b4a 100644 --- a/client/internal/v2/client.go +++ b/client/internal/v2/client.go @@ -365,10 +365,10 @@ func (c *httpClusterClient) Do(ctx context.Context, act httpAction) (*http.Respo resp, body, err = hc.Do(ctx, action) if err != nil { cerr.Errors = append(cerr.Errors, err) - if errors.Is(err, ctx.Err()) { + if err == ctx.Err() { return nil, nil, ctx.Err() } - if errors.Is(err, context.Canceled) || errors.Is(err, context.DeadlineExceeded) { + if err == context.Canceled || err == context.DeadlineExceeded { return nil, nil, err } } else if resp.StatusCode/100 == 5 { diff --git a/client/internal/v2/client_test.go b/client/internal/v2/client_test.go index c7350ba8204..83aae018dad 100644 --- a/client/internal/v2/client_test.go +++ b/client/internal/v2/client_test.go @@ -169,7 +169,7 @@ func TestSimpleHTTPClientDoNilRequest(t *testing.T) { tr.errchan <- errors.New("fixture") _, _, err := c.Do(context.Background(), &nilAction{}) - if !errors.Is(err, ErrNoRequest) { + if err != ErrNoRequest { t.Fatalf("expected non-nil error, got nil") } } @@ -256,7 +256,7 @@ func TestSimpleHTTPClientDoCancelContextResponseBodyClosedWithBlockingBody(t *te }() _, _, err := c.Do(ctx, &fakeAction{}) - if !errors.Is(err, context.Canceled) { + if err != context.Canceled { t.Fatalf("expected %+v, got %+v", context.Canceled, err) } @@ -478,7 +478,7 @@ func TestHTTPClusterClientDoDeadlineExceedContext(t *testing.T) { select { case err := <-errc: - if !errors.Is(err, context.DeadlineExceeded) { + if err != context.DeadlineExceeded { t.Errorf("err = %+v, want %+v", err, context.DeadlineExceeded) } case <-time.After(time.Second): @@ -528,7 +528,7 @@ func TestHTTPClusterClientDoCanceledContext(t *testing.T) { select { case err := <-errc: - if !errors.Is(err, errFakeCancelContext) { + if err != errFakeCancelContext { t.Errorf("err = %+v, want %+v", err, errFakeCancelContext) } case <-time.After(time.Second): @@ -881,7 +881,7 @@ func TestHTTPClusterClientAutoSyncCancelContext(t *testing.T) { cancel() err = hc.AutoSync(ctx, time.Hour) - if !errors.Is(err, context.Canceled) { + if err != context.Canceled { t.Fatalf("incorrect error value: want=%v got=%v", context.Canceled, err) } } diff --git a/client/internal/v2/keys.go b/client/internal/v2/keys.go index 764cc7290d7..8be1057f04e 100644 --- a/client/internal/v2/keys.go +++ b/client/internal/v2/keys.go @@ -459,7 +459,7 @@ func (hw *httpWatcher) Next(ctx context.Context) (*Response, error) { resp, err := unmarshalHTTPResponse(httpresp.StatusCode, httpresp.Header, body) if err != nil { - if errors.Is(err, ErrEmptyBody) { + if err == ErrEmptyBody { continue } return nil, err diff --git a/client/pkg/fileutil/lock_linux.go b/client/pkg/fileutil/lock_linux.go index fd424be771b..c33a2f4afc7 100644 --- a/client/pkg/fileutil/lock_linux.go +++ b/client/pkg/fileutil/lock_linux.go @@ -17,7 +17,6 @@ package fileutil import ( - "errors" "fmt" "io" "os" @@ -65,7 +64,7 @@ func ofdTryLockFile(path string, flag int, perm os.FileMode) (*LockedFile, error flock := wrlck if err = syscall.FcntlFlock(f.Fd(), unix.F_OFD_SETLK, &flock); err != nil { f.Close() - if errors.Is(err, syscall.EWOULDBLOCK) { + if err == syscall.EWOULDBLOCK { err = ErrLocked } return nil, err diff --git a/client/pkg/fileutil/lock_solaris.go b/client/pkg/fileutil/lock_solaris.go index b4cba97f798..2e892fecc65 100644 --- a/client/pkg/fileutil/lock_solaris.go +++ b/client/pkg/fileutil/lock_solaris.go @@ -17,7 +17,6 @@ package fileutil import ( - "errors" "os" "syscall" ) @@ -36,7 +35,7 @@ func TryLockFile(path string, flag int, perm os.FileMode) (*LockedFile, error) { } if err := syscall.FcntlFlock(f.Fd(), syscall.F_SETLK, &lock); err != nil { f.Close() - if errors.Is(err, syscall.EAGAIN) { + if err == syscall.EAGAIN { err = ErrLocked } return nil, err diff --git a/client/pkg/fileutil/lock_test.go b/client/pkg/fileutil/lock_test.go index 49e7eb62320..b7f6fd5ce57 100644 --- a/client/pkg/fileutil/lock_test.go +++ b/client/pkg/fileutil/lock_test.go @@ -15,7 +15,6 @@ package fileutil import ( - "errors" "os" "testing" "time" @@ -41,7 +40,7 @@ func TestLockAndUnlock(t *testing.T) { } // try lock a locked file - if _, err = TryLockFile(f.Name(), os.O_WRONLY, PrivateFileMode); !errors.Is(err, ErrLocked) { + if _, err = TryLockFile(f.Name(), os.O_WRONLY, PrivateFileMode); err != ErrLocked { t.Fatal(err) } diff --git a/client/pkg/fileutil/lock_windows.go b/client/pkg/fileutil/lock_windows.go index a767b0f57f6..51010bdf81c 100644 --- a/client/pkg/fileutil/lock_windows.go +++ b/client/pkg/fileutil/lock_windows.go @@ -88,9 +88,9 @@ func lockFile(fd windows.Handle, flags uint32) error { err := windows.LockFileEx(fd, flags|windows.LOCKFILE_EXCLUSIVE_LOCK, 0, 1, 0, &windows.Overlapped{}) if err == nil { return nil - } else if errors.Is(err, errLocked) { + } else if err.Error() == errLocked.Error() { return ErrLocked - } else if !errors.Is(err, windows.ERROR_LOCK_VIOLATION) { + } else if err != windows.ERROR_LOCK_VIOLATION { return err } return nil diff --git a/client/pkg/fileutil/preallocate_darwin.go b/client/pkg/fileutil/preallocate_darwin.go index 79519959234..e74968d0351 100644 --- a/client/pkg/fileutil/preallocate_darwin.go +++ b/client/pkg/fileutil/preallocate_darwin.go @@ -17,7 +17,6 @@ package fileutil import ( - "errors" "os" "syscall" @@ -45,7 +44,7 @@ func preallocFixed(f *os.File, sizeInBytes int64) error { } // wrong argument to fallocate syscall - if errors.Is(err, unix.EINVAL) { + if err == unix.EINVAL { // filesystem "st_blocks" are allocated in the units of // "Allocation Block Size" (run "diskutil info /" command) var stat syscall.Stat_t diff --git a/client/v3/client.go b/client/v3/client.go index 6b7b5632fed..8789acb38c8 100644 --- a/client/v3/client.go +++ b/client/v3/client.go @@ -294,7 +294,7 @@ func (c *Client) getToken(ctx context.Context) error { resp, err := c.Auth.Authenticate(ctx, c.Username, c.Password) if err != nil { - if errors.Is(err, rpctypes.ErrAuthNotEnabled) { + if err == rpctypes.ErrAuthNotEnabled { c.authTokenBundle.UpdateAuthToken("") return nil } @@ -627,7 +627,7 @@ func canceledByCaller(stopCtx context.Context, err error) bool { return false } - return errors.Is(err, context.Canceled) || errors.Is(err, context.DeadlineExceeded) + return err == context.Canceled || err == context.DeadlineExceeded } // IsConnCanceled returns true, if error is from a closed gRPC connection. @@ -645,7 +645,7 @@ func IsConnCanceled(err error) bool { } // >= gRPC v1.10.x - if errors.Is(err, context.Canceled) { + if err == context.Canceled { return true } diff --git a/client/v3/client_test.go b/client/v3/client_test.go index fe996ea8e69..db8bb1773f9 100644 --- a/client/v3/client_test.go +++ b/client/v3/client_test.go @@ -449,7 +449,7 @@ func TestClientRejectOldCluster(t *testing.T) { }, } - if err := c.checkVersion(); !errors.Is(err, tt.expectedError) { + if err := c.checkVersion(); err != tt.expectedError { t.Errorf("heckVersion err:%v", err) } }) diff --git a/client/v3/experimental/recipes/key.go b/client/v3/experimental/recipes/key.go index ce90010538b..10362c18fbe 100644 --- a/client/v3/experimental/recipes/key.go +++ b/client/v3/experimental/recipes/key.go @@ -16,7 +16,6 @@ package recipe import ( "context" - "errors" "fmt" "strings" "time" @@ -52,7 +51,7 @@ func newUniqueKV(kv v3.KV, prefix string, val string) (*RemoteKV, error) { if err == nil { return &RemoteKV{kv, newKey, rev, val}, nil } - if !errors.Is(err, ErrKeyExists) { + if err != ErrKeyExists { return nil, err } } @@ -156,7 +155,7 @@ func newUniqueEphemeralKV(s *concurrency.Session, prefix, val string) (ek *Ephem for { newKey := fmt.Sprintf("%s/%v", prefix, time.Now().UnixNano()) ek, err = newEphemeralKV(s, newKey, val) - if err == nil || !errors.Is(err, ErrKeyExists) { + if err == nil || err != ErrKeyExists { break } } diff --git a/client/v3/watch.go b/client/v3/watch.go index c81a9e3e11d..bfa753cfd71 100644 --- a/client/v3/watch.go +++ b/client/v3/watch.go @@ -395,7 +395,7 @@ func (w *watcher) Close() (err error) { } } // Consider context.Canceled as a successful close - if errors.Is(err, context.Canceled) { + if err == context.Canceled { err = nil } return err diff --git a/contrib/raftexample/kvstore.go b/contrib/raftexample/kvstore.go index 11bbf1fc6e7..b319677cada 100644 --- a/contrib/raftexample/kvstore.go +++ b/contrib/raftexample/kvstore.go @@ -18,7 +18,6 @@ import ( "bytes" "encoding/gob" "encoding/json" - "errors" "log" "strings" "sync" @@ -114,7 +113,7 @@ func (s *kvstore) getSnapshot() ([]byte, error) { func (s *kvstore) loadSnapshot() (*raftpb.Snapshot, error) { snapshot, err := s.snapshotter.Load() - if errors.Is(err, snap.ErrNoSnapshot) { + if err == snap.ErrNoSnapshot { return nil, nil } if err != nil { diff --git a/contrib/raftexample/raft.go b/contrib/raftexample/raft.go index fac1a099ac5..18b5354dd32 100644 --- a/contrib/raftexample/raft.go +++ b/contrib/raftexample/raft.go @@ -16,7 +16,6 @@ package main import ( "context" - "errors" "fmt" "log" "net/http" @@ -393,7 +392,7 @@ func (rc *raftNode) maybeTriggerSnapshot(applyDoneC <-chan struct{}) { compactIndex = rc.appliedIndex - snapshotCatchUpEntriesN } if err := rc.raftStorage.Compact(compactIndex); err != nil { - if !errors.Is(err, raft.ErrCompacted) { + if err != raft.ErrCompacted { panic(err) } } else { diff --git a/etcdctl/ctlv3/command/auth_command.go b/etcdctl/ctlv3/command/auth_command.go index 13ccda44d16..0e443450013 100644 --- a/etcdctl/ctlv3/command/auth_command.go +++ b/etcdctl/ctlv3/command/auth_command.go @@ -15,7 +15,6 @@ package command import ( - "errors" "fmt" "github.com/spf13/cobra" @@ -83,7 +82,7 @@ func authEnableCommandFunc(cmd *cobra.Command, args []string) { if _, err = cli.AuthEnable(ctx); err == nil { break } - if errors.Is(err, rpctypes.ErrRootRoleNotExist) { + if err == rpctypes.ErrRootRoleNotExist { if _, err = cli.RoleAdd(ctx, "root"); err != nil { break } diff --git a/etcdctl/ctlv3/command/watch_command_test.go b/etcdctl/ctlv3/command/watch_command_test.go index ad4668606ec..2292deadcbb 100644 --- a/etcdctl/ctlv3/command/watch_command_test.go +++ b/etcdctl/ctlv3/command/watch_command_test.go @@ -15,7 +15,6 @@ package command import ( - "errors" "reflect" "testing" ) @@ -535,7 +534,7 @@ func Test_parseWatchArgs(t *testing.T) { } for i, ts := range tt { watchArgs, execArgs, err := parseWatchArgs(ts.osArgs, ts.commandArgs, ts.envKey, ts.envRange, ts.interactive) - if !errors.Is(err, ts.err) { + if err != ts.err { t.Fatalf("#%d: error expected %v, got %v", i, ts.err, err) } if !reflect.DeepEqual(watchArgs, ts.watchArgs) { diff --git a/pkg/ioutil/readcloser_test.go b/pkg/ioutil/readcloser_test.go index 381a797f7af..6d13bdcec02 100644 --- a/pkg/ioutil/readcloser_test.go +++ b/pkg/ioutil/readcloser_test.go @@ -16,7 +16,6 @@ package ioutil import ( "bytes" - "errors" "io" "testing" ) @@ -29,7 +28,7 @@ func (rc *readerNilCloser) Close() error { return nil } func TestExactReadCloserExpectEOF(t *testing.T) { buf := bytes.NewBuffer(make([]byte, 10)) rc := NewExactReadCloser(&readerNilCloser{buf}, 1) - if _, err := rc.Read(make([]byte, 10)); !errors.Is(err, ErrExpectEOF) { + if _, err := rc.Read(make([]byte, 10)); err != ErrExpectEOF { t.Fatalf("expected %v, got %v", ErrExpectEOF, err) } } @@ -41,7 +40,7 @@ func TestExactReadCloserShort(t *testing.T) { if _, err := rc.Read(make([]byte, 10)); err != nil { t.Fatalf("Read expected nil err, got %v", err) } - if err := rc.Close(); !errors.Is(err, ErrShortRead) { + if err := rc.Close(); err != ErrShortRead { t.Fatalf("Close expected %v, got %v", ErrShortRead, err) } } diff --git a/tests/e2e/ctl_v3_member_test.go b/tests/e2e/ctl_v3_member_test.go index 08faf741902..bd045e5f63b 100644 --- a/tests/e2e/ctl_v3_member_test.go +++ b/tests/e2e/ctl_v3_member_test.go @@ -17,7 +17,6 @@ package e2e import ( "context" "encoding/json" - "errors" "fmt" "io" "reflect" @@ -194,7 +193,7 @@ func getMemberList(cx ctlCtx, serializable bool) (etcdserverpb.MemberListRespons resp := etcdserverpb.MemberListResponse{} dec := json.NewDecoder(strings.NewReader(txt)) - if err := dec.Decode(&resp); errors.Is(err, io.EOF) { + if err := dec.Decode(&resp); err == io.EOF { return etcdserverpb.MemberListResponse{}, err } return resp, nil @@ -222,7 +221,7 @@ func memberListWithHexTest(cx ctlCtx) { } hexResp := etcdserverpb.MemberListResponse{} dec := json.NewDecoder(strings.NewReader(txt)) - if err := dec.Decode(&hexResp); errors.Is(err, io.EOF) { + if err := dec.Decode(&hexResp); err == io.EOF { cx.t.Fatalf("memberListWithHexTest error (%v)", err) } num := len(resp.Members) diff --git a/tests/e2e/ctl_v3_snapshot_test.go b/tests/e2e/ctl_v3_snapshot_test.go index b9ef782ffcf..bb3f1f06fe0 100644 --- a/tests/e2e/ctl_v3_snapshot_test.go +++ b/tests/e2e/ctl_v3_snapshot_test.go @@ -17,7 +17,6 @@ package e2e import ( "context" "encoding/json" - "errors" "fmt" "io" "os" @@ -157,7 +156,7 @@ func getSnapshotStatus(cx ctlCtx, fpath string) (snapshot.Status, error) { resp := snapshot.Status{} dec := json.NewDecoder(strings.NewReader(txt)) - if err := dec.Decode(&resp); errors.Is(err, io.EOF) { + if err := dec.Decode(&resp); err == io.EOF { return snapshot.Status{}, err } return resp, nil diff --git a/tests/integration/clientv3/concurrency/example_mutex_test.go b/tests/integration/clientv3/concurrency/example_mutex_test.go index eba8c543f2c..c3b593aed9b 100644 --- a/tests/integration/clientv3/concurrency/example_mutex_test.go +++ b/tests/integration/clientv3/concurrency/example_mutex_test.go @@ -16,7 +16,6 @@ package concurrency_test import ( "context" - "errors" "fmt" "log" @@ -65,7 +64,7 @@ func ExampleMutex_TryLock() { if err = m2.TryLock(context.TODO()); err == nil { log.Fatal("should not acquire lock") } - if errors.Is(err, concurrency.ErrLocked) { + if err == concurrency.ErrLocked { fmt.Println("cannot acquire lock for s2, as already locked in another session") } diff --git a/tests/integration/clientv3/connectivity/black_hole_test.go b/tests/integration/clientv3/connectivity/black_hole_test.go index e1fc1c57b97..c0e16aefe1d 100644 --- a/tests/integration/clientv3/connectivity/black_hole_test.go +++ b/tests/integration/clientv3/connectivity/black_hole_test.go @@ -18,7 +18,6 @@ package connectivity_test import ( "context" - "errors" "testing" "time" @@ -114,7 +113,7 @@ func TestBalancerUnderBlackholeKeepAliveWatch(t *testing.T) { func TestBalancerUnderBlackholeNoKeepAlivePut(t *testing.T) { testBalancerUnderBlackholeNoKeepAlive(t, func(cli *clientv3.Client, ctx context.Context) error { _, err := cli.Put(ctx, "foo", "bar") - if clientv3test.IsClientTimeout(err) || clientv3test.IsServerCtxTimeout(err) || errors.Is(err, rpctypes.ErrTimeout) { + if clientv3test.IsClientTimeout(err) || clientv3test.IsServerCtxTimeout(err) || err == rpctypes.ErrTimeout { return errExpected } return err @@ -124,7 +123,7 @@ func TestBalancerUnderBlackholeNoKeepAlivePut(t *testing.T) { func TestBalancerUnderBlackholeNoKeepAliveDelete(t *testing.T) { testBalancerUnderBlackholeNoKeepAlive(t, func(cli *clientv3.Client, ctx context.Context) error { _, err := cli.Delete(ctx, "foo") - if clientv3test.IsClientTimeout(err) || clientv3test.IsServerCtxTimeout(err) || errors.Is(err, rpctypes.ErrTimeout) { + if clientv3test.IsClientTimeout(err) || clientv3test.IsServerCtxTimeout(err) || err == rpctypes.ErrTimeout { return errExpected } return err @@ -137,7 +136,7 @@ func TestBalancerUnderBlackholeNoKeepAliveTxn(t *testing.T) { If(clientv3.Compare(clientv3.Version("foo"), "=", 0)). Then(clientv3.OpPut("foo", "bar")). Else(clientv3.OpPut("foo", "baz")).Commit() - if clientv3test.IsClientTimeout(err) || clientv3test.IsServerCtxTimeout(err) || errors.Is(err, rpctypes.ErrTimeout) { + if clientv3test.IsClientTimeout(err) || clientv3test.IsServerCtxTimeout(err) || err == rpctypes.ErrTimeout { return errExpected } return err @@ -147,7 +146,7 @@ func TestBalancerUnderBlackholeNoKeepAliveTxn(t *testing.T) { func TestBalancerUnderBlackholeNoKeepAliveLinearizableGet(t *testing.T) { testBalancerUnderBlackholeNoKeepAlive(t, func(cli *clientv3.Client, ctx context.Context) error { _, err := cli.Get(ctx, "a") - if clientv3test.IsClientTimeout(err) || clientv3test.IsServerCtxTimeout(err) || errors.Is(err, rpctypes.ErrTimeout) { + if clientv3test.IsClientTimeout(err) || clientv3test.IsServerCtxTimeout(err) || err == rpctypes.ErrTimeout { return errExpected } return err @@ -208,7 +207,7 @@ func testBalancerUnderBlackholeNoKeepAlive(t *testing.T, op func(*clientv3.Clien cancel() if err == nil { break - } else if errors.Is(err, errExpected) { + } else if err == errExpected { t.Logf("#%d: current error %v", i, err) } else { t.Errorf("#%d: failed with error %v", i, err) diff --git a/tests/integration/clientv3/connectivity/network_partition_test.go b/tests/integration/clientv3/connectivity/network_partition_test.go index 6c99c32d04c..b72b7aea288 100644 --- a/tests/integration/clientv3/connectivity/network_partition_test.go +++ b/tests/integration/clientv3/connectivity/network_partition_test.go @@ -35,7 +35,7 @@ var errExpected = errors.New("expected error") func isErrorExpected(err error) bool { return clientv3test.IsClientTimeout(err) || clientv3test.IsServerCtxTimeout(err) || - errors.Is(err, rpctypes.ErrTimeout) || errors.Is(err, rpctypes.ErrTimeoutDueToLeaderFail) + err == rpctypes.ErrTimeout || err == rpctypes.ErrTimeoutDueToLeaderFail } // TestBalancerUnderNetworkPartitionPut tests when one member becomes isolated, @@ -145,7 +145,7 @@ func testBalancerUnderNetworkPartition(t *testing.T, op func(*clientv3.Client, c if err == nil { break } - if !errors.Is(err, errExpected) { + if err != errExpected { t.Errorf("#%d: expected '%v', got '%v'", i, errExpected, err) } // give enough time for endpoint switch @@ -267,7 +267,7 @@ func testBalancerUnderNetworkPartitionWatch(t *testing.T, isolateLeader bool) { if len(ev.Events) != 0 { t.Fatal("expected no event") } - if err = ev.Err(); !errors.Is(err, rpctypes.ErrNoLeader) { + if err = ev.Err(); err != rpctypes.ErrNoLeader { t.Fatalf("expected %v, got %v", rpctypes.ErrNoLeader, err) } case <-time.After(integration2.RequestWaitTimeout): // enough time to detect leader lost @@ -313,7 +313,7 @@ func TestDropReadUnderNetworkPartition(t *testing.T) { ctx, cancel := context.WithTimeout(context.TODO(), 10*time.Second) _, err = kvc.Get(ctx, "a") cancel() - if !errors.Is(err, rpctypes.ErrLeaderChanged) { + if err != rpctypes.ErrLeaderChanged { t.Fatalf("expected %v, got %v", rpctypes.ErrLeaderChanged, err) } @@ -322,7 +322,7 @@ func TestDropReadUnderNetworkPartition(t *testing.T) { _, err = kvc.Get(ctx, "a") cancel() if err != nil { - if errors.Is(err, rpctypes.ErrTimeout) { + if err == rpctypes.ErrTimeout { <-time.After(time.Second) i++ continue diff --git a/tests/integration/clientv3/connectivity/server_shutdown_test.go b/tests/integration/clientv3/connectivity/server_shutdown_test.go index 3afc8eb4c01..a75efa0f8fe 100644 --- a/tests/integration/clientv3/connectivity/server_shutdown_test.go +++ b/tests/integration/clientv3/connectivity/server_shutdown_test.go @@ -17,7 +17,6 @@ package connectivity_test import ( "bytes" "context" - "errors" "fmt" "testing" "time" @@ -102,7 +101,7 @@ func TestBalancerUnderServerShutdownWatch(t *testing.T) { if err == nil { break } - if clientv3test.IsClientTimeout(err) || clientv3test.IsServerCtxTimeout(err) || errors.Is(err, rpctypes.ErrTimeout) || errors.Is(err, rpctypes.ErrTimeoutDueToLeaderFail) { + if clientv3test.IsClientTimeout(err) || clientv3test.IsServerCtxTimeout(err) || err == rpctypes.ErrTimeout || err == rpctypes.ErrTimeoutDueToLeaderFail { continue } t.Fatal(err) diff --git a/tests/integration/clientv3/experimental/recipes/v3_double_barrier_test.go b/tests/integration/clientv3/experimental/recipes/v3_double_barrier_test.go index f4fbfcb2457..120e4bed8af 100644 --- a/tests/integration/clientv3/experimental/recipes/v3_double_barrier_test.go +++ b/tests/integration/clientv3/experimental/recipes/v3_double_barrier_test.go @@ -16,7 +16,6 @@ package recipes_test import ( "context" - "errors" "sync" "testing" "time" @@ -150,7 +149,7 @@ func TestDoubleBarrierTooManyClients(t *testing.T) { // no any other client can enter the barrier. wgEntered.Wait() t.Log("Try to enter into double barrier") - if err = b.Enter(); !errors.Is(err, recipe.ErrTooManyClients) { + if err = b.Enter(); err != recipe.ErrTooManyClients { t.Errorf("Unexcepted error, expected: ErrTooManyClients, got: %v", err) } diff --git a/tests/integration/clientv3/experimental/recipes/v3_lock_test.go b/tests/integration/clientv3/experimental/recipes/v3_lock_test.go index 1fcbc46e144..79f61662032 100644 --- a/tests/integration/clientv3/experimental/recipes/v3_lock_test.go +++ b/tests/integration/clientv3/experimental/recipes/v3_lock_test.go @@ -16,7 +16,6 @@ package recipes_test import ( "context" - "errors" "fmt" "math/rand" "sync" @@ -140,7 +139,7 @@ func testMutexTryLock(t *testing.T, lockers int, chooseClient func() *clientv3.C case <-ctx.Done(): t.Errorf("Thread: %v, Context failed: %v", i, err) } - } else if errors.Is(err, concurrency.ErrLocked) { + } else if err == concurrency.ErrLocked { select { case notlockedC <- m: case <-ctx.Done(): diff --git a/tests/integration/clientv3/lease/leasing_test.go b/tests/integration/clientv3/lease/leasing_test.go index 40113d0aa13..2164e8f5b18 100644 --- a/tests/integration/clientv3/lease/leasing_test.go +++ b/tests/integration/clientv3/lease/leasing_test.go @@ -16,7 +16,6 @@ package lease_test import ( "context" - "errors" "fmt" "math/rand" "reflect" @@ -896,7 +895,7 @@ func TestLeasingTxnCancel(t *testing.T) { time.Sleep(100 * time.Millisecond) cancel() }() - if _, err := lkv2.Txn(ctx).Then(clientv3.OpPut("k", "v")).Commit(); !errors.Is(err, context.Canceled) { + if _, err := lkv2.Txn(ctx).Then(clientv3.OpPut("k", "v")).Commit(); err != context.Canceled { t.Fatalf("expected %v, got %v", context.Canceled, err) } } @@ -2018,7 +2017,7 @@ func TestLeasingSessionExpireCancel(t *testing.T) { select { case err := <-errc: - if !errors.Is(err, ctx.Err()) { + if err != ctx.Err() { t.Errorf("#%d: expected %v of server unavailable, got %v", i, ctx.Err(), err) } case <-time.After(5 * time.Second): @@ -2049,7 +2048,7 @@ func waitForExpireAck(t *testing.T, kv clientv3.KV) { ctx, cancel := context.WithTimeout(context.TODO(), time.Second) _, err := kv.Get(ctx, "abc") cancel() - if errors.Is(err, ctx.Err()) { + if err == ctx.Err() { return } else if err != nil { t.Logf("current error: %v", err) diff --git a/tests/integration/clientv3/maintenance_test.go b/tests/integration/clientv3/maintenance_test.go index 3de3d389cff..7dc912a3a2f 100644 --- a/tests/integration/clientv3/maintenance_test.go +++ b/tests/integration/clientv3/maintenance_test.go @@ -18,7 +18,6 @@ import ( "bytes" "context" "crypto/sha256" - "errors" "fmt" "io" "math" @@ -136,7 +135,7 @@ func TestMaintenanceMoveLeader(t *testing.T) { cli := clus.Client(targetIdx) _, err := cli.MoveLeader(context.Background(), target) - if !errors.Is(err, rpctypes.ErrNotLeader) { + if err != rpctypes.ErrNotLeader { t.Fatalf("error expected %v, got %v", rpctypes.ErrNotLeader, err) } @@ -187,7 +186,7 @@ func TestMaintenanceSnapshotCancel(t *testing.T) { cancel() _, err = io.Copy(io.Discard, rc1) - if !errors.Is(err, context.Canceled) { + if err != context.Canceled { t.Errorf("expected %v, got %v", context.Canceled, err) } } diff --git a/tests/integration/clientv3/ordering_kv_test.go b/tests/integration/clientv3/ordering_kv_test.go index 1d667b44dac..c539199ff6a 100644 --- a/tests/integration/clientv3/ordering_kv_test.go +++ b/tests/integration/clientv3/ordering_kv_test.go @@ -89,7 +89,7 @@ func TestDetectKvOrderViolation(t *testing.T) { t.Logf("Quering m2 after restart") v, err = orderingKv.Get(ctx, "foo", clientv3.WithSerializable()) t.Logf("Quering m2 returned: v:%v err:%v ", v, err) - if !errors.Is(err, errOrderViolation) { + if err != errOrderViolation { t.Fatalf("expected %v, got err:%v v:%v", errOrderViolation, err, v) } } @@ -155,7 +155,7 @@ func TestDetectTxnOrderViolation(t *testing.T) { cli.SetEndpoints(clus.Members[2].GRPCURL) time.Sleep(2 * time.Second) // FIXME: Figure out how pause SetEndpoints sufficiently that this is not needed _, err = orderingKv.Get(ctx, "foo", clientv3.WithSerializable()) - if !errors.Is(err, errOrderViolation) { + if err != errOrderViolation { t.Fatalf("expected %v, got %v", errOrderViolation, err) } orderingTxn = orderingKv.Txn(ctx) @@ -164,7 +164,7 @@ func TestDetectTxnOrderViolation(t *testing.T) { ).Then( clientv3.OpGet("foo", clientv3.WithSerializable()), ).Commit() - if !errors.Is(err, errOrderViolation) { + if err != errOrderViolation { t.Fatalf("expected %v, got %v", errOrderViolation, err) } } diff --git a/tests/integration/clientv3/ordering_util_test.go b/tests/integration/clientv3/ordering_util_test.go index 6313957bf3f..ebac39981a9 100644 --- a/tests/integration/clientv3/ordering_util_test.go +++ b/tests/integration/clientv3/ordering_util_test.go @@ -16,7 +16,6 @@ package clientv3test import ( "context" - "errors" "testing" "time" @@ -79,7 +78,7 @@ func TestEndpointSwitchResolvesViolation(t *testing.T) { cli.SetEndpoints(clus.Members[2].GRPCURL) time.Sleep(1 * time.Second) // give enough time for the operation _, err = orderingKv.Get(ctx, "foo", clientv3.WithSerializable()) - if !errors.Is(err, ordering.ErrNoGreaterRev) { + if err != ordering.ErrNoGreaterRev { t.Fatal("While speaking to partitioned leader, we should get ErrNoGreaterRev error") } @@ -157,7 +156,7 @@ func TestUnresolvableOrderViolation(t *testing.T) { time.Sleep(1 * time.Second) // give enough time for operation _, err = OrderingKv.Get(ctx, "foo", clientv3.WithSerializable()) - if !errors.Is(err, ordering.ErrNoGreaterRev) { + if err != ordering.ErrNoGreaterRev { t.Fatalf("expected %v, got %v", ordering.ErrNoGreaterRev, err) } } diff --git a/tests/integration/clientv3/txn_test.go b/tests/integration/clientv3/txn_test.go index 221247d2f7a..84a56146d99 100644 --- a/tests/integration/clientv3/txn_test.go +++ b/tests/integration/clientv3/txn_test.go @@ -16,7 +16,6 @@ package clientv3test import ( "context" - "errors" "fmt" "testing" "time" @@ -37,7 +36,7 @@ func TestTxnError(t *testing.T) { ctx := context.TODO() _, err := kv.Txn(ctx).Then(clientv3.OpPut("foo", "bar1"), clientv3.OpPut("foo", "bar2")).Commit() - if !errors.Is(err, rpctypes.ErrDuplicateKey) { + if err != rpctypes.ErrDuplicateKey { t.Fatalf("expected %v, got %v", rpctypes.ErrDuplicateKey, err) } @@ -46,7 +45,7 @@ func TestTxnError(t *testing.T) { ops[i] = clientv3.OpPut(fmt.Sprintf("foo%d", i), "") } _, err = kv.Txn(ctx).Then(ops...).Commit() - if !errors.Is(err, rpctypes.ErrTooManyOps) { + if err != rpctypes.ErrTooManyOps { t.Fatalf("expected %v, got %v", rpctypes.ErrTooManyOps, err) } } diff --git a/tests/integration/clientv3/user_test.go b/tests/integration/clientv3/user_test.go index 7ed13e7ed44..49b4c18ea45 100644 --- a/tests/integration/clientv3/user_test.go +++ b/tests/integration/clientv3/user_test.go @@ -16,7 +16,6 @@ package clientv3test import ( "context" - "errors" "testing" "time" @@ -42,17 +41,17 @@ func TestUserError(t *testing.T) { } _, err = authapi.UserAdd(context.TODO(), "foo", "bar") - if !errors.Is(err, rpctypes.ErrUserAlreadyExist) { + if err != rpctypes.ErrUserAlreadyExist { t.Fatalf("expected %v, got %v", rpctypes.ErrUserAlreadyExist, err) } _, err = authapi.UserDelete(context.TODO(), "not-exist-user") - if !errors.Is(err, rpctypes.ErrUserNotFound) { + if err != rpctypes.ErrUserNotFound { t.Fatalf("expected %v, got %v", rpctypes.ErrUserNotFound, err) } _, err = authapi.UserGrantRole(context.TODO(), "foo", "test-role-does-not-exist") - if !errors.Is(err, rpctypes.ErrRoleNotFound) { + if err != rpctypes.ErrRoleNotFound { t.Fatalf("expected %v, got %v", rpctypes.ErrRoleNotFound, err) } } @@ -117,7 +116,7 @@ func TestUserErrorAuth(t *testing.T) { authSetupRoot(t, authapi.Auth) // unauthenticated client - if _, err := authapi.UserAdd(context.TODO(), "foo", "bar"); !errors.Is(err, rpctypes.ErrUserEmpty) { + if _, err := authapi.UserAdd(context.TODO(), "foo", "bar"); err != rpctypes.ErrUserEmpty { t.Fatalf("expected %v, got %v", rpctypes.ErrUserEmpty, err) } @@ -128,11 +127,11 @@ func TestUserErrorAuth(t *testing.T) { DialOptions: []grpc.DialOption{grpc.WithBlock()}, } cfg.Username, cfg.Password = "wrong-id", "123" - if _, err := integration2.NewClient(t, cfg); !errors.Is(err, rpctypes.ErrAuthFailed) { + if _, err := integration2.NewClient(t, cfg); err != rpctypes.ErrAuthFailed { t.Fatalf("expected %v, got %v", rpctypes.ErrAuthFailed, err) } cfg.Username, cfg.Password = "root", "wrong-pass" - if _, err := integration2.NewClient(t, cfg); !errors.Is(err, rpctypes.ErrAuthFailed) { + if _, err := integration2.NewClient(t, cfg); err != rpctypes.ErrAuthFailed { t.Fatalf("expected %v, got %v", rpctypes.ErrAuthFailed, err) } diff --git a/tests/integration/v3_grpc_test.go b/tests/integration/v3_grpc_test.go index 8efeb5d522d..2cc4ab66032 100644 --- a/tests/integration/v3_grpc_test.go +++ b/tests/integration/v3_grpc_test.go @@ -17,7 +17,6 @@ package integration import ( "bytes" "context" - "errors" "fmt" "math/rand" "os" @@ -115,7 +114,7 @@ func TestV3PutRestart(t *testing.T) { defer cancel() reqput := &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")} _, err := kvc.Put(ctx, reqput) - if err != nil && errors.Is(err, ctx.Err()) { + if err != nil && err == ctx.Err() { t.Fatalf("expected grpc error, got local ctx error (%v)", err) } } @@ -1600,7 +1599,7 @@ func TestTLSGRPCRejectSecureClient(t *testing.T) { if client != nil || err == nil { client.Close() t.Fatalf("expected no client") - } else if !errors.Is(err, context.DeadlineExceeded) { + } else if err != context.DeadlineExceeded { t.Fatalf("unexpected error (%v)", err) } } @@ -1777,7 +1776,7 @@ func testTLSReload( // 5. expect dial time-out when loading expired certs select { case gerr := <-errc: - if !errors.Is(gerr, context.DeadlineExceeded) { + if gerr != context.DeadlineExceeded { t.Fatalf("expected %v, got %v", context.DeadlineExceeded, gerr) } case <-time.After(5 * time.Second): diff --git a/tests/integration/v3_tls_test.go b/tests/integration/v3_tls_test.go index fbdf2bb8b5e..a13ad5c0beb 100644 --- a/tests/integration/v3_tls_test.go +++ b/tests/integration/v3_tls_test.go @@ -17,7 +17,6 @@ package integration import ( "context" "crypto/tls" - "errors" "testing" "time" @@ -73,7 +72,7 @@ func testTLSCipherSuites(t *testing.T, valid bool) { if cli != nil { cli.Close() } - if !valid && !errors.Is(cerr, context.DeadlineExceeded) { + if !valid && cerr != context.DeadlineExceeded { t.Fatalf("expected %v with TLS handshake failure, got %v", context.DeadlineExceeded, cerr) } if valid && cerr != nil {