From: Mikio Hara Date: Wed, 24 Feb 2016 02:59:49 +0000 (+0900) Subject: net: make TestGoLookupIPWithResolverConfig robust X-Git-Tag: go1.7beta1~1727 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=b48120ca3a5e8767ef1dea46c6231538f374a640;p=gostls13.git net: make TestGoLookupIPWithResolverConfig robust It crashes when the node under the test is shaken up. -- FAIL: TestGoLookupIPWithResolverConfig (11.73s) panic: interface conversion: error is nil, not *net.DNSError [recovered] panic: interface conversion: error is nil, not *net.DNSError goroutine 23 [running]: panic(0x2e2620, 0xc820181440) /go/src/runtime/panic.go:483 +0x3f3 testing.tRunner.func1(0xc820136d80) /go/src/testing/testing.go:467 +0x192 panic(0x2e2620, 0xc820181440) /go/src/runtime/panic.go:441 +0x4f6 net.TestGoLookupIPWithResolverConfig(0xc820136d80) /go/src/net/dnsclient_unix_test.go:358 +0x7ca testing.tRunner(0xc820136d80, 0x49ddc0) /go/src/testing/testing.go:473 +0x98 created by testing.RunTests /go/src/testing/testing.go:582 +0x892 exit status 2 Change-Id: I9631f41a3c73f3269c7e30d679c025ae64d71a98 Reviewed-on: https://go-review.googlesource.com/19870 Reviewed-by: Ian Lance Taylor --- diff --git a/src/net/dnsclient_unix_test.go b/src/net/dnsclient_unix_test.go index 5623039b7b..4a5c438e46 100644 --- a/src/net/dnsclient_unix_test.go +++ b/src/net/dnsclient_unix_test.go @@ -355,7 +355,13 @@ func TestGoLookupIPWithResolverConfig(t *testing.T) { } addrs, err := goLookupIP(tt.name) if err != nil { - if err, ok := err.(*DNSError); !ok || (err.Name != tt.error.(*DNSError).Name || err.Server != tt.error.(*DNSError).Server || err.IsTimeout != tt.error.(*DNSError).IsTimeout) { + // This test uses external network connectivity. + // We need to take care with errors on both + // DNS message exchange layer and DNS + // transport layer because goLookupIP may fail + // when the IP connectivty on node under test + // gets lost during its run. + if err, ok := err.(*DNSError); !ok || tt.error != nil && (err.Name != tt.error.(*DNSError).Name || err.Server != tt.error.(*DNSError).Server || err.IsTimeout != tt.error.(*DNSError).IsTimeout) { t.Errorf("got %v; want %v", err, tt.error) } continue