From e1e92e9c0de0c7519d8d7b8854eec20340818748 Mon Sep 17 00:00:00 2001 From: Thomas Jungblut Date: Wed, 24 Aug 2022 13:56:45 +0200 Subject: [PATCH] Add ErrTimeoutDueToLeaderFail as expected error This fixes ci flakes where timeouts are expected to happen in network partitions. issue: #14333 Signed-off-by: Thomas Jungblut --- .../clientv3/connectivity/network_partition_test.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tests/integration/clientv3/connectivity/network_partition_test.go b/tests/integration/clientv3/connectivity/network_partition_test.go index 7e01773e0..cf4de8c0f 100644 --- a/tests/integration/clientv3/connectivity/network_partition_test.go +++ b/tests/integration/clientv3/connectivity/network_partition_test.go @@ -33,13 +33,18 @@ import ( var errExpected = errors.New("expected error") +func isErrorExpected(err error) bool { + return clientv3test.IsClientTimeout(err) || clientv3test.IsServerCtxTimeout(err) || + err == rpctypes.ErrTimeout || err == rpctypes.ErrTimeoutDueToLeaderFail +} + // TestBalancerUnderNetworkPartitionPut tests when one member becomes isolated, // first Put request fails, and following retry succeeds with client balancer // switching to others. func TestBalancerUnderNetworkPartitionPut(t *testing.T) { testBalancerUnderNetworkPartition(t, func(cli *clientv3.Client, ctx context.Context) error { _, err := cli.Put(ctx, "a", "b") - if clientv3test.IsClientTimeout(err) || clientv3test.IsServerCtxTimeout(err) || err == rpctypes.ErrTimeout { + if isErrorExpected(err) { return errExpected } return err @@ -49,7 +54,7 @@ func TestBalancerUnderNetworkPartitionPut(t *testing.T) { func TestBalancerUnderNetworkPartitionDelete(t *testing.T) { testBalancerUnderNetworkPartition(t, func(cli *clientv3.Client, ctx context.Context) error { _, err := cli.Delete(ctx, "a") - if clientv3test.IsClientTimeout(err) || clientv3test.IsServerCtxTimeout(err) || err == rpctypes.ErrTimeout { + if isErrorExpected(err) { return errExpected } return err @@ -62,7 +67,7 @@ func TestBalancerUnderNetworkPartitionTxn(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) || err == rpctypes.ErrTimeout { + if isErrorExpected(err) { return errExpected } return err @@ -75,7 +80,7 @@ func TestBalancerUnderNetworkPartitionTxn(t *testing.T) { func TestBalancerUnderNetworkPartitionLinearizableGetWithLongTimeout(t *testing.T) { testBalancerUnderNetworkPartition(t, func(cli *clientv3.Client, ctx context.Context) error { _, err := cli.Get(ctx, "a") - if clientv3test.IsClientTimeout(err) || clientv3test.IsServerCtxTimeout(err) || err == rpctypes.ErrTimeout { + if isErrorExpected(err) { return errExpected } return err