From 657133db50f2ba049a765fb240ae9df84062f123 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Tue, 16 Jun 2015 16:25:12 +0100 Subject: [PATCH] Move the counting of results from DNS goroutine to test goroutine to avoid race-condition --- nameserver/mdns_server_test.go | 36 +++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/nameserver/mdns_server_test.go b/nameserver/mdns_server_test.go index 2cd18e15..29b72cef 100644 --- a/nameserver/mdns_server_test.go +++ b/nameserver/mdns_server_test.go @@ -41,16 +41,7 @@ func TestServerSimpleQuery(t *testing.T) { if len(r.Answer) > 0 { t.Logf("Received %d answer(s)", len(r.Answer)) for _, answer := range r.Answer { - switch rr := answer.(type) { - case *dns.A: - t.Logf("... A:\n%+v", rr) - receivedAddrs = append(receivedAddrs, rr.A) - receivedCount++ - case *dns.PTR: - t.Logf("... PTR:\n%+v", rr) - receivedName = rr.Ptr - receivedCount++ - } + recvChan <- answer } recvChan <- "ok" } @@ -73,12 +64,25 @@ func TestServerSimpleQuery(t *testing.T) { wt.AssertNoErr(t, err) Debug.Printf("Waiting for response") - select { - case <-recvChan: - return - case <-time.After(100 * time.Millisecond): - Debug.Printf("Timeout while waiting for response") - return + for { + select { + case x := <-recvChan: + switch rr := x.(type) { + case *dns.A: + t.Logf("... A:\n%+v", rr) + receivedAddrs = append(receivedAddrs, rr.A) + receivedCount++ + case *dns.PTR: + t.Logf("... PTR:\n%+v", rr) + receivedName = rr.Ptr + receivedCount++ + case string: + return + } + case <-time.After(100 * time.Millisecond): + Debug.Printf("Timeout while waiting for response") + return + } } }