go.net/ipv6: add missing API tests
Now the package has a code coverage of 74.5% of statements.
R=golang-dev, dave
CC=golang-dev
https://golang.org/cl/21080043
diff --git a/ipv6/multicast_test.go b/ipv6/multicast_test.go
index a6fd76f..79568f4 100644
--- a/ipv6/multicast_test.go
+++ b/ipv6/multicast_test.go
@@ -10,6 +10,7 @@
"os"
"runtime"
"testing"
+ "time"
)
func TestPacketConnReadWriteMulticastUDP(t *testing.T) {
@@ -44,15 +45,22 @@
}
p := ipv6.NewPacketConn(c)
+ defer p.Close()
if err := p.JoinGroup(ifi, dst); err != nil {
t.Fatalf("ipv6.PacketConn.JoinGroup on %v failed: %v", ifi, err)
}
if err := p.SetMulticastInterface(ifi); err != nil {
t.Fatalf("ipv6.PacketConn.SetMulticastInterface failed: %v", err)
}
+ if _, err := p.MulticastInterface(); err != nil {
+ t.Fatalf("ipv6.PacketConn.MulticastInterface failed: %v", err)
+ }
if err := p.SetMulticastLoopback(true); err != nil {
t.Fatalf("ipv6.PacketConn.SetMulticastLoopback failed: %v", err)
}
+ if _, err := p.MulticastLoopback(); err != nil {
+ t.Fatalf("ipv6.PacketConn.MulticastLoopback failed: %v", err)
+ }
cm := ipv6.ControlMessage{
TrafficClass: DiffServAF11 | CongestionExperienced,
@@ -64,6 +72,9 @@
if err := p.SetControlMessage(cf, toggle); err != nil {
t.Fatalf("ipv6.PacketConn.SetControlMessage failed: %v", err)
}
+ if err := p.SetDeadline(time.Now().Add(time.Millisecond * 200)); err != nil {
+ t.Fatalf("ipv6.PacketConn.SetDeadline failed: %v", err)
+ }
cm.HopLimit = i + 1
if _, err := p.WriteTo([]byte("HELLO-R-U-THERE"), &cm, dst); err != nil {
t.Fatalf("ipv6.PacketConn.WriteTo failed: %v", err)
@@ -106,15 +117,22 @@
pshicmp := ipv6PseudoHeader(c.LocalAddr().(*net.IPAddr).IP, dst.IP, ianaProtocolIPv6ICMP)
p := ipv6.NewPacketConn(c)
+ defer p.Close()
if err := p.JoinGroup(ifi, dst); err != nil {
t.Fatalf("ipv6.PacketConn.JoinGroup on %v failed: %v", ifi, err)
}
if err := p.SetMulticastInterface(ifi); err != nil {
t.Fatalf("ipv6.PacketConn.SetMulticastInterface failed: %v", err)
}
+ if _, err := p.MulticastInterface(); err != nil {
+ t.Fatalf("ipv6.PacketConn.MulticastInterface failed: %v", err)
+ }
if err := p.SetMulticastLoopback(true); err != nil {
t.Fatalf("ipv6.PacketConn.SetMulticastLoopback failed: %v", err)
}
+ if _, err := p.MulticastLoopback(); err != nil {
+ t.Fatalf("ipv6.PacketConn.MulticastLoopback failed: %v", err)
+ }
cm := ipv6.ControlMessage{
TrafficClass: DiffServAF11 | CongestionExperienced,
@@ -155,6 +173,9 @@
if err := p.SetControlMessage(cf, toggle); err != nil {
t.Fatalf("ipv6.PacketConn.SetControlMessage failed: %v", err)
}
+ if err := p.SetDeadline(time.Now().Add(time.Millisecond * 200)); err != nil {
+ t.Fatalf("ipv6.PacketConn.SetDeadline failed: %v", err)
+ }
cm.HopLimit = i + 1
if _, err := p.WriteTo(wb, &cm, dst); err != nil {
t.Fatalf("ipv6.PacketConn.WriteTo failed: %v", err)
diff --git a/ipv6/unicast_test.go b/ipv6/unicast_test.go
index 90beb4c..fed8a69 100644
--- a/ipv6/unicast_test.go
+++ b/ipv6/unicast_test.go
@@ -10,6 +10,7 @@
"os"
"runtime"
"testing"
+ "time"
)
func benchmarkUDPListener() (net.PacketConn, net.Addr, error) {
@@ -106,6 +107,7 @@
}
p := ipv6.NewPacketConn(c)
+ defer p.Close()
cm := ipv6.ControlMessage{
TrafficClass: DiffServAF11 | CongestionExperienced,
}
@@ -120,10 +122,16 @@
t.Fatalf("ipv6.PacketConn.SetControlMessage failed: %v", err)
}
cm.HopLimit = i + 1
+ if err := p.SetWriteDeadline(time.Now().Add(time.Millisecond * 100)); err != nil {
+ t.Fatalf("ipv6.PacketConn.SetWriteDeadline failed: %v", err)
+ }
if _, err := p.WriteTo([]byte("HELLO-R-U-THERE"), &cm, dst); err != nil {
t.Fatalf("ipv6.PacketConn.WriteTo failed: %v", err)
}
b := make([]byte, 128)
+ if err := p.SetReadDeadline(time.Now().Add(time.Millisecond * 100)); err != nil {
+ t.Fatalf("ipv6.PacketConn.SetReadDeadline failed: %v", err)
+ }
if _, cm, _, err := p.ReadFrom(b); err != nil {
t.Fatalf("ipv6.PacketConn.ReadFrom failed: %v", err)
} else {
@@ -157,6 +165,7 @@
pshicmp := ipv6PseudoHeader(c.LocalAddr().(*net.IPAddr).IP, dst.IP, ianaProtocolIPv6ICMP)
p := ipv6.NewPacketConn(c)
+ defer p.Close()
cm := ipv6.ControlMessage{TrafficClass: DiffServAF11 | CongestionExperienced}
cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagInterface | ipv6.FlagPathMTU
ifi := loopbackInterface()
@@ -198,10 +207,16 @@
t.Fatalf("ipv6.PacketConn.SetControlMessage failed: %v", err)
}
cm.HopLimit = i + 1
+ if err := p.SetWriteDeadline(time.Now().Add(time.Millisecond * 100)); err != nil {
+ t.Fatalf("ipv6.PacketConn.SetWriteDeadline failed: %v", err)
+ }
if _, err := p.WriteTo(wb, &cm, dst); err != nil {
t.Fatalf("ipv6.PacketConn.WriteTo failed: %v", err)
}
b := make([]byte, 128)
+ if err := p.SetReadDeadline(time.Now().Add(time.Millisecond * 100)); err != nil {
+ t.Fatalf("ipv6.PacketConn.SetReadDeadline failed: %v", err)
+ }
if n, cm, _, err := p.ReadFrom(b); err != nil {
t.Fatalf("ipv6.PacketConn.ReadFrom failed: %v", err)
} else {