aboutsummaryrefslogtreecommitdiff
path: root/src/pkg
diff options
context:
space:
mode:
authorDave Cheney <dave@cheney.net>2012-12-13 16:26:20 +1100
committerDave Cheney <dave@cheney.net>2012-12-13 16:26:20 +1100
commitae12e963505f71bfd5ddb427ba0f0c546c422c30 (patch)
treed82b0fb8894a8d06b27935cb5ec23d00f527c697 /src/pkg
parent641d152935233c4d25f84a11c02f5b8fedf91210 (diff)
downloadgo-ae12e963505f71bfd5ddb427ba0f0c546c422c30.tar.xz
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
Diffstat (limited to 'src/pkg')
-rw-r--r--src/pkg/log/syslog/syslog_test.go10
1 files changed, 5 insertions, 5 deletions
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)
}