ipv6: deflake multicast listener tests
Fixes golang/go#20558.
Change-Id: I8813d1eadd40680bd8619bb9a6539a3c45dcd76e
Reviewed-on: https://go-review.googlesource.com/44770
Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/ipv6/multicastlistener_test.go b/ipv6/multicastlistener_test.go
index 044db15..b27713e 100644
--- a/ipv6/multicastlistener_test.go
+++ b/ipv6/multicastlistener_test.go
@@ -5,7 +5,6 @@
package ipv6_test
import (
- "fmt"
"net"
"runtime"
"testing"
@@ -70,13 +69,16 @@
}
for _, gaddr := range udpMultipleGroupListenerTests {
- c1, err := net.ListenPacket("udp6", "[ff02::]:1024") // wildcard address with reusable port
+ c1, err := net.ListenPacket("udp6", "[ff02::]:0") // wildcard address with reusable port
if err != nil {
t.Fatal(err)
}
defer c1.Close()
-
- c2, err := net.ListenPacket("udp6", "[ff02::]:1024") // wildcard address with reusable port
+ _, port, err := net.SplitHostPort(c1.LocalAddr().String())
+ if err != nil {
+ t.Fatal(err)
+ }
+ c2, err := net.ListenPacket("udp6", net.JoinHostPort("ff02::", port)) // wildcard address with reusable port
if err != nil {
t.Fatal(err)
}
@@ -132,16 +134,29 @@
if err != nil {
t.Fatal(err)
}
+ port := "0"
for i, ifi := range ift {
ip, ok := nettest.IsMulticastCapable("ip6", &ifi)
if !ok {
continue
}
- c, err := net.ListenPacket("udp6", fmt.Sprintf("[%s%%%s]:1024", ip.String(), ifi.Name)) // unicast address with non-reusable port
+ c, err := net.ListenPacket("udp6", net.JoinHostPort(ip.String()+"%"+ifi.Name, port)) // unicast address with non-reusable port
if err != nil {
- t.Fatal(err)
+ // The listen may fail when the serivce is
+ // already in use, but it's fine because the
+ // purpose of this is not to test the
+ // bookkeeping of IP control block inside the
+ // kernel.
+ t.Log(err)
+ continue
}
defer c.Close()
+ if port == "0" {
+ _, port, err = net.SplitHostPort(c.LocalAddr().String())
+ if err != nil {
+ t.Fatal(err)
+ }
+ }
p := ipv6.NewPacketConn(c)
if err := p.JoinGroup(&ifi, &gaddr); err != nil {
t.Fatal(err)
@@ -227,7 +242,7 @@
if !ok {
continue
}
- c, err := net.ListenPacket("ip6:ipv6-icmp", fmt.Sprintf("%s%%%s", ip.String(), ifi.Name)) // unicast address
+ c, err := net.ListenPacket("ip6:ipv6-icmp", ip.String()+"%"+ifi.Name) // unicast address
if err != nil {
t.Fatal(err)
}