Add test for two parallel queries

This commit is contained in:
Bryan Boreham committed 2014-10-09 14:15:02 +01:00
1 parent 5b32fa58e6
commit 17d192caee
1 file changed
+41
+41
View File
@@ -5,6 +5,7 @@ import (
"log"
"net"
"testing"
"time"
)
var (
@@ -127,3 +128,43 @@ func TestSimpleQuery(t *testing.T) {
t.Fail()
}
}
func TestParallelQuery(t *testing.T) {
log.Println("TestParallelQuery starting")
mdnsClient, server, _ := setup(t)
defer mdnsClient.Shutdown()
defer server.Shutdown()
var context1 testContext
var context2 testContext
channel1 := make(chan *ResponseA, 4)
channel2 := make(chan *ResponseA, 4)
go mdnsClient.SendQuery(success_test_name, dns.TypeA, channel1)
go mdnsClient.SendQuery(success_test_name, dns.TypeA, channel2)
timeout := time.After(2 * time.Second)
outerloop:
for channel1 != nil || channel2 != nil {
select {
case resp, ok := <-channel1:
if !ok {
channel1 = nil
continue
}
context1.checkResponse(t, resp)
case resp, ok := <-channel2:
if !ok {
channel2 = nil
continue
}
context2.checkResponse(t, resp)
case <-timeout:
break outerloop
}
}
if !context1.received_addr.Equal(test_addr) || !context2.received_addr.Equal(test_addr) || context1.received_count != 1 || context2.received_count != 1 {
t.Log("Unexpected result for", success_test_name, context1.received_addr, context2.received_addr, context1.received_count, context2.received_count)
t.Fail()
}
}