clientv3/integration: fix a todo in testNetworkPartitionBalancer

This commit is contained in:
Xiang
2017-10-25 22:51:58 -07:00
parent 20f2914e13
commit 7d7e9b6e43

View File

@ -18,6 +18,7 @@ package integration
import ( import (
"context" "context"
"errors"
"testing" "testing"
"time" "time"
@ -27,12 +28,19 @@ import (
"github.com/coreos/etcd/pkg/testutil" "github.com/coreos/etcd/pkg/testutil"
) )
var (
errExpected = errors.New("expected error")
)
// TestBalancerUnderNetworkPartitionPut tests when one member becomes isolated, // TestBalancerUnderNetworkPartitionPut tests when one member becomes isolated,
// first Put request fails, and following retry succeeds with client balancer // first Put request fails, and following retry succeeds with client balancer
// switching to others. // switching to others.
func TestBalancerUnderNetworkPartitionPut(t *testing.T) { func TestBalancerUnderNetworkPartitionPut(t *testing.T) {
testBalancerUnderNetworkPartition(t, func(cli *clientv3.Client, ctx context.Context) error { testBalancerUnderNetworkPartition(t, func(cli *clientv3.Client, ctx context.Context) error {
_, err := cli.Put(ctx, "a", "b") _, err := cli.Put(ctx, "a", "b")
if err == context.DeadlineExceeded || err == rpctypes.ErrTimeout {
return errExpected
}
return err return err
}) })
} }
@ -43,6 +51,9 @@ func TestBalancerUnderNetworkPartitionPut(t *testing.T) {
func TestBalancerUnderNetworkPartitionGet(t *testing.T) { func TestBalancerUnderNetworkPartitionGet(t *testing.T) {
testBalancerUnderNetworkPartition(t, func(cli *clientv3.Client, ctx context.Context) error { testBalancerUnderNetworkPartition(t, func(cli *clientv3.Client, ctx context.Context) error {
_, err := cli.Get(ctx, "a") _, err := cli.Get(ctx, "a")
if err == context.DeadlineExceeded {
return errExpected
}
return err return err
}) })
} }
@ -81,10 +92,9 @@ func testBalancerUnderNetworkPartition(t *testing.T, op func(*clientv3.Client, c
if err == nil { if err == nil {
break break
} }
// TODO: separate put and get test for error checking.
// we do not really expect ErrTimeout on get. if err != errExpected {
if err != context.DeadlineExceeded && err != rpctypes.ErrTimeout { t.Errorf("#%d: expected %v, got %v", i, errExpected, err)
t.Errorf("#%d: expected %v or %v, got %v", i, context.DeadlineExceeded, rpctypes.ErrTimeout, err)
} }
// give enough time for endpoint switch // give enough time for endpoint switch
// TODO: remove random sleep by syncing directly with balancer // TODO: remove random sleep by syncing directly with balancer