From 8cb5b48f588d366d7a781d4065f946cac9031b22 Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Fri, 31 Mar 2017 14:35:16 -0700 Subject: [PATCH] clientv3: test dial timeout is respected when using auth --- clientv3/client_test.go | 62 ++++++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 25 deletions(-) diff --git a/clientv3/client_test.go b/clientv3/client_test.go index 2b2b6d593..956e5b898 100644 --- a/clientv3/client_test.go +++ b/clientv3/client_test.go @@ -70,33 +70,45 @@ func TestDialCancel(t *testing.T) { func TestDialTimeout(t *testing.T) { defer testutil.AfterTest(t) - donec := make(chan error) - go func() { - // without timeout, grpc keeps redialing if connection refused - cfg := Config{ - Endpoints: []string{"localhost:12345"}, - DialTimeout: 2 * time.Second} - c, err := New(cfg) - if c != nil || err == nil { - t.Errorf("new client should fail") - } - donec <- err - }() - - time.Sleep(10 * time.Millisecond) - - select { - case err := <-donec: - t.Errorf("dial didn't wait (%v)", err) - default: + testCfgs := []Config{ + Config{ + Endpoints: []string{"http://254.0.0.1:12345"}, + DialTimeout: 2 * time.Second, + }, + Config{ + Endpoints: []string{"http://254.0.0.1:12345"}, + DialTimeout: time.Second, + Username: "abc", + Password: "def", + }, } - select { - case <-time.After(5 * time.Second): - t.Errorf("failed to timeout dial on time") - case err := <-donec: - if err != grpc.ErrClientConnTimeout { - t.Errorf("unexpected error %v, want %v", err, grpc.ErrClientConnTimeout) + for i, cfg := range testCfgs { + donec := make(chan error) + go func() { + // without timeout, dial continues forever on ipv4 blackhole + c, err := New(cfg) + if c != nil || err == nil { + t.Errorf("#%d: new client should fail", i) + } + donec <- err + }() + + time.Sleep(10 * time.Millisecond) + + select { + case err := <-donec: + t.Errorf("#%d: dial didn't wait (%v)", i, err) + default: + } + + select { + case <-time.After(5 * time.Second): + t.Errorf("#%d: failed to timeout dial on time", i) + case err := <-donec: + if err != grpc.ErrClientConnTimeout { + t.Errorf("#%d: unexpected error %v, want %v", i, err, grpc.ErrClientConnTimeout) + } } } }