From 32bc70ba0c7b8a22ab6a64efeba10af4e98f77db Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Thu, 6 Jul 2017 11:14:00 +0200 Subject: [PATCH] fix flaky proxy test --- integrationtests/proxy/proxy_test.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/integrationtests/proxy/proxy_test.go b/integrationtests/proxy/proxy_test.go index 0bdb43778..a4c1f53de 100644 --- a/integrationtests/proxy/proxy_test.go +++ b/integrationtests/proxy/proxy_test.go @@ -7,6 +7,8 @@ import ( "sync/atomic" "time" + "fmt" + "github.com/lucas-clemente/quic-go" "github.com/lucas-clemente/quic-go/protocol" . "github.com/onsi/ginkgo" @@ -46,8 +48,7 @@ var _ = Describe("QUIC Proxy", func() { addr, err := net.ResolveUDPAddr("udp", "localhost:"+strconv.Itoa(proxy.LocalPort())) Expect(err).ToNot(HaveOccurred()) _, err = net.ListenUDP("udp", addr) - Expect(err).To(MatchError("listen udp 127.0.0.1:" + strconv.Itoa(proxy.LocalPort()) + ": bind: address already in use")) - + Expect(err).To(MatchError(fmt.Sprintf("listen udp 127.0.0.1:%d: bind: address already in use", proxy.LocalPort()))) Expect(proxy.Close()).To(Succeed()) // stopping is tested in the next test }) @@ -61,9 +62,12 @@ var _ = Describe("QUIC Proxy", func() { // check that the proxy port is not in use anymore addr, err := net.ResolveUDPAddr("udp", "localhost:"+strconv.Itoa(port)) Expect(err).ToNot(HaveOccurred()) - ln, err := net.ListenUDP("udp", addr) - Expect(err).ToNot(HaveOccurred()) - Expect(ln.Close()).To(Succeed()) + // sometimes it takes a while for the OS to free the port + Eventually(func() error { + ln, err := net.ListenUDP("udp", addr) + defer ln.Close() + return err + }).ShouldNot(HaveOccurred()) }) It("has the correct LocalAddr and LocalPort", func() {