From 66e65cd6608b028b240f0d8c3eaf69fd9bf95df7 Mon Sep 17 00:00:00 2001 From: Joe Betz Date: Mon, 16 Apr 2018 15:28:00 -0700 Subject: [PATCH] clientv3: Avoid timeouts in ordering test --- clientv3/balancer/balancer_test.go | 21 ++++++++++++--------- clientv3/ordering/util.go | 2 ++ clientv3/ordering/util_test.go | 3 ++- integration/cluster.go | 11 ++++++++--- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/clientv3/balancer/balancer_test.go b/clientv3/balancer/balancer_test.go index 5de5b5930..ac0ff303f 100644 --- a/clientv3/balancer/balancer_test.go +++ b/clientv3/balancer/balancer_test.go @@ -67,13 +67,14 @@ func TestRoundRobinBalancedResolvableNoFailover(t *testing.T) { defer rsv.Close() rsv.InitialAddrs(resolvedAddrs) + name := genName() cfg := Config{ Policy: picker.RoundrobinBalanced, - Name: genName(), + Name: name, Logger: zap.NewExample(), } - rrb := New(cfg) - conn, err := grpc.Dial(fmt.Sprintf("endpoint://nofailover/*"), grpc.WithInsecure(), grpc.WithBalancerName(rrb.Name())) + RegisterBuilder(cfg) + conn, err := grpc.Dial(fmt.Sprintf("endpoint://nofailover/*"), grpc.WithInsecure(), grpc.WithBalancerName(name)) if err != nil { t.Fatalf("failed to dial mock server: %v", err) } @@ -129,13 +130,14 @@ func TestRoundRobinBalancedResolvableFailoverFromServerFail(t *testing.T) { defer rsv.Close() rsv.InitialAddrs(resolvedAddrs) + name := genName() cfg := Config{ Policy: picker.RoundrobinBalanced, - Name: genName(), + Name: name, Logger: zap.NewExample(), } - rrb := New(cfg) - conn, err := grpc.Dial(fmt.Sprintf("endpoint://serverfail/mock.server"), grpc.WithInsecure(), grpc.WithBalancerName(rrb.Name())) + RegisterBuilder(cfg) + conn, err := grpc.Dial(fmt.Sprintf("endpoint://serverfail/mock.server"), grpc.WithInsecure(), grpc.WithBalancerName(name)) if err != nil { t.Fatalf("failed to dial mock server: %s", err) } @@ -242,13 +244,14 @@ func TestRoundRobinBalancedResolvableFailoverFromRequestFail(t *testing.T) { defer rsv.Close() rsv.InitialAddrs(resolvedAddrs) + name := genName() cfg := Config{ Policy: picker.RoundrobinBalanced, - Name: genName(), + Name: name, Logger: zap.NewExample(), } - rrb := New(cfg) - conn, err := grpc.Dial(fmt.Sprintf("endpoint://requestfail/mock.server"), grpc.WithInsecure(), grpc.WithBalancerName(rrb.Name())) + RegisterBuilder(cfg) + conn, err := grpc.Dial(fmt.Sprintf("endpoint://requestfail/mock.server"), grpc.WithInsecure(), grpc.WithBalancerName(name)) if err != nil { t.Fatalf("failed to dial mock server: %s", err) } diff --git a/clientv3/ordering/util.go b/clientv3/ordering/util.go index 190a5919a..124aebf41 100644 --- a/clientv3/ordering/util.go +++ b/clientv3/ordering/util.go @@ -43,6 +43,8 @@ func NewOrderViolationSwitchEndpointClosure(c clientv3.Client) OrderViolationFun // set available endpoints back to all endpoints in to ensure // the client has access to all the endpoints. c.SetEndpoints(eps...) + // give enough time for operation + time.Sleep(1 * time.Second) violationCount++ return nil } diff --git a/clientv3/ordering/util_test.go b/clientv3/ordering/util_test.go index 9282f985f..a370e0d07 100644 --- a/clientv3/ordering/util_test.go +++ b/clientv3/ordering/util_test.go @@ -142,8 +142,9 @@ func TestUnresolvableOrderViolation(t *testing.T) { if err != nil { t.Fatal(err) } + clus.Members[3].WaitStarted(t) cli.SetEndpoints(clus.Members[3].GRPCAddr()) - time.Sleep(1 * time.Second) // give enough time for operation + time.Sleep(5 * time.Second) // give enough time for operation _, err = OrderingKv.Get(ctx, "foo", clientv3.WithSerializable()) if err != ErrNoGreaterRev { diff --git a/integration/cluster.go b/integration/cluster.go index a1840f734..e92aa95e5 100644 --- a/integration/cluster.go +++ b/integration/cluster.go @@ -950,6 +950,13 @@ func (m *member) Launch() error { } func (m *member) WaitOK(t *testing.T) { + m.WaitStarted(t) + for m.s.Leader() == 0 { + time.Sleep(tickDuration) + } +} + +func (m *member) WaitStarted(t *testing.T) { cc := MustNewHTTPClient(t, []string{m.URL()}, m.ClientTLSInfo) kapi := client.NewKeysAPI(cc) for { @@ -962,9 +969,7 @@ func (m *member) WaitOK(t *testing.T) { cancel() break } - for m.s.Leader() == 0 { - time.Sleep(tickDuration) - } + } func (m *member) URL() string { return m.ClientURLs[0].String() }