From: Dave Cheney Date: Thu, 13 Dec 2012 05:26:20 +0000 (+1100) Subject: log/syslog: fix flakey test on slow hosts X-Git-Tag: go1.1rc2~1643 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=ae12e963505f71bfd5ddb427ba0f0c546c422c30;p=gostls13.git log/syslog: fix flakey test on slow hosts Fixes #4467. The syslog tests can fail if the timeout fires before the data arrives at the mock server. Moving the timeout onto the goroutine that is calling ReadFrom() and always processing the data returned before handling the error should improve the reliability of the test. R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/6920047 --- diff --git a/src/pkg/log/syslog/syslog_test.go b/src/pkg/log/syslog/syslog_test.go index 4c0bf1f4e7..67d7103ee4 100644 --- a/src/pkg/log/syslog/syslog_test.go +++ b/src/pkg/log/syslog/syslog_test.go @@ -20,13 +20,14 @@ var serverAddr string func runSyslog(c net.PacketConn, done chan<- string) { var buf [4096]byte - var rcvd string = "" + var rcvd string for { - n, _, err := c.ReadFrom(buf[0:]) - if err != nil || n == 0 { + c.SetReadDeadline(time.Now().Add(100 * time.Millisecond)) + n, _, err := c.ReadFrom(buf[:]) + rcvd += string(buf[:n]) + if err != nil { break } - rcvd += string(buf[0:n]) } done <- rcvd } @@ -37,7 +38,6 @@ func startServer(done chan<- string) { log.Fatalf("net.ListenPacket failed udp :0 %v", e) } serverAddr = c.LocalAddr().String() - c.SetReadDeadline(time.Now().Add(100 * time.Millisecond)) go runSyslog(c, done) }