aboutsummaryrefslogtreecommitdiff
path: root/plugin/forward/proxy_test.go
diff options
context:
space:
mode:
authorGravatar Ruslan Drozhdzh <30860269+rdrozhdzh@users.noreply.github.com> 2018-04-25 21:15:49 +0300
committerGravatar Miek Gieben <miek@miek.nl> 2018-04-25 19:15:49 +0100
commit9e8893a0b5325a76b2784958bbe743ff3e831401 (patch)
tree357e7b6de800099bf3c92e1ba836365a1af8711f /plugin/forward/proxy_test.go
parent5c3e436d71b0c917a3f2d53c49059bee45a37f3c (diff)
downloadcoredns-9e8893a0b5325a76b2784958bbe743ff3e831401.tar.gz
coredns-9e8893a0b5325a76b2784958bbe743ff3e831401.tar.zst
coredns-9e8893a0b5325a76b2784958bbe743ff3e831401.zip
rework TestProxyClose (#1735)
Diffstat (limited to 'plugin/forward/proxy_test.go')
-rw-r--r--plugin/forward/proxy_test.go30
1 files changed, 21 insertions, 9 deletions
diff --git a/plugin/forward/proxy_test.go b/plugin/forward/proxy_test.go
index a46b3f1ee..acd3d240c 100644
--- a/plugin/forward/proxy_test.go
+++ b/plugin/forward/proxy_test.go
@@ -2,8 +2,9 @@ package forward
import (
"context"
- "sync"
+ "runtime"
"testing"
+ "time"
"github.com/coredns/coredns/plugin/pkg/dnstest"
"github.com/coredns/coredns/plugin/test"
@@ -30,30 +31,41 @@ func TestProxyClose(t *testing.T) {
p := NewProxy(s.Addr, nil /* no TLS */)
p.start(hcDuration)
- var wg sync.WaitGroup
- wg.Add(5)
+ doneCnt := 0
+ doneCh := make(chan bool)
+ timeCh := time.After(10 * time.Second)
go func() {
p.connect(ctx, state, false, false)
- wg.Done()
+ doneCh <- true
}()
go func() {
p.connect(ctx, state, true, false)
- wg.Done()
+ doneCh <- true
}()
go func() {
p.close()
- wg.Done()
+ doneCh <- true
}()
go func() {
p.connect(ctx, state, false, false)
- wg.Done()
+ doneCh <- true
}()
go func() {
p.connect(ctx, state, true, false)
- wg.Done()
+ doneCh <- true
}()
- wg.Wait()
+ for doneCnt < 5 {
+ select {
+ case <-doneCh:
+ doneCnt++
+ case <-timeCh:
+ t.Error("TestProxyClose is running too long, dumping goroutines:")
+ buf := make([]byte, 100000)
+ stackSize := runtime.Stack(buf, true)
+ t.Fatal(string(buf[:stackSize]))
+ }
+ }
if p.inProgress != 0 {
t.Errorf("unexpected query in progress")
}