Move the counting of results from DNS goroutine to test goroutine to avoid race-condition

This commit is contained in:
Bryan Boreham committed 2015-06-17 11:35:01 +01:00
1 parent e68364cb3b
commit 657133db50
1 file changed
+20 -16
+20 -16
View File
@@ -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
}
}
}