Skip to content

Commit e1ae248

Browse files
committed
ipv4: simplify tests and benchmarks
Change-Id: I588bc65b0052efb12b3b7bc2267deedcdad029ce Reviewed-on: https://go-review.googlesource.com/47371 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matt Layher <mdlayher@gmail.com>
1 parent f5bfe5c commit e1ae248

File tree

2 files changed

+40
-77
lines changed

2 files changed

+40
-77
lines changed

ipv4/readwrite_test.go

Lines changed: 37 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -16,77 +16,47 @@ import (
1616
"golang.org/x/net/ipv4"
1717
)
1818

19-
func benchmarkUDPListener() (net.PacketConn, net.Addr, error) {
20-
c, err := net.ListenPacket("udp4", "127.0.0.1:0")
19+
func BenchmarkReadWriteUnicast(b *testing.B) {
20+
c, err := nettest.NewLocalPacketListener("udp4")
2121
if err != nil {
22-
return nil, nil, err
23-
}
24-
dst, err := net.ResolveUDPAddr("udp4", c.LocalAddr().String())
25-
if err != nil {
26-
c.Close()
27-
return nil, nil, err
28-
}
29-
return c, dst, nil
30-
}
31-
32-
func BenchmarkReadWriteNetUDP(b *testing.B) {
33-
c, dst, err := benchmarkUDPListener()
34-
if err != nil {
35-
b.Fatal(err)
22+
b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
3623
}
3724
defer c.Close()
3825

26+
dst := c.LocalAddr()
3927
wb, rb := []byte("HELLO-R-U-THERE"), make([]byte, 128)
40-
b.ResetTimer()
41-
for i := 0; i < b.N; i++ {
42-
benchmarkReadWriteNetUDP(b, c, wb, rb, dst)
43-
}
44-
}
45-
46-
func benchmarkReadWriteNetUDP(b *testing.B, c net.PacketConn, wb, rb []byte, dst net.Addr) {
47-
if _, err := c.WriteTo(wb, dst); err != nil {
48-
b.Fatal(err)
49-
}
50-
if _, _, err := c.ReadFrom(rb); err != nil {
51-
b.Fatal(err)
52-
}
53-
}
54-
55-
func BenchmarkReadWriteIPv4UDP(b *testing.B) {
56-
c, dst, err := benchmarkUDPListener()
57-
if err != nil {
58-
b.Fatal(err)
59-
}
60-
defer c.Close()
61-
62-
p := ipv4.NewPacketConn(c)
63-
defer p.Close()
64-
cf := ipv4.FlagTTL | ipv4.FlagInterface
65-
if err := p.SetControlMessage(cf, true); err != nil {
66-
b.Fatal(err)
67-
}
68-
ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback)
6928

70-
wb, rb := []byte("HELLO-R-U-THERE"), make([]byte, 128)
71-
b.ResetTimer()
72-
for i := 0; i < b.N; i++ {
73-
benchmarkReadWriteIPv4UDP(b, p, wb, rb, dst, ifi)
74-
}
75-
}
29+
b.Run("NetUDP", func(b *testing.B) {
30+
for i := 0; i < b.N; i++ {
31+
if _, err := c.WriteTo(wb, dst); err != nil {
32+
b.Fatal(err)
33+
}
34+
if _, _, err := c.ReadFrom(rb); err != nil {
35+
b.Fatal(err)
36+
}
37+
}
38+
})
39+
b.Run("IPv4UDP", func(b *testing.B) {
40+
p := ipv4.NewPacketConn(c)
41+
cf := ipv4.FlagTTL | ipv4.FlagInterface
42+
if err := p.SetControlMessage(cf, true); err != nil {
43+
b.Fatal(err)
44+
}
45+
cm := ipv4.ControlMessage{TTL: 1}
46+
ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback)
47+
if ifi != nil {
48+
cm.IfIndex = ifi.Index
49+
}
7650

77-
func benchmarkReadWriteIPv4UDP(b *testing.B, p *ipv4.PacketConn, wb, rb []byte, dst net.Addr, ifi *net.Interface) {
78-
cm := ipv4.ControlMessage{TTL: 1}
79-
if ifi != nil {
80-
cm.IfIndex = ifi.Index
81-
}
82-
if n, err := p.WriteTo(wb, &cm, dst); err != nil {
83-
b.Fatal(err)
84-
} else if n != len(wb) {
85-
b.Fatalf("got %v; want %v", n, len(wb))
86-
}
87-
if _, _, _, err := p.ReadFrom(rb); err != nil {
88-
b.Fatal(err)
89-
}
51+
for i := 0; i < b.N; i++ {
52+
if _, err := p.WriteTo(wb, &cm, dst); err != nil {
53+
b.Fatal(err)
54+
}
55+
if _, _, _, err := p.ReadFrom(rb); err != nil {
56+
b.Fatal(err)
57+
}
58+
}
59+
})
9060
}
9161

9262
func TestPacketConnConcurrentReadWriteUnicastUDP(t *testing.T) {
@@ -95,19 +65,15 @@ func TestPacketConnConcurrentReadWriteUnicastUDP(t *testing.T) {
9565
t.Skipf("not supported on %s", runtime.GOOS)
9666
}
9767

98-
c, err := net.ListenPacket("udp4", "127.0.0.1:0")
68+
c, err := nettest.NewLocalPacketListener("udp4")
9969
if err != nil {
10070
t.Fatal(err)
10171
}
10272
defer c.Close()
10373
p := ipv4.NewPacketConn(c)
10474
defer p.Close()
10575

106-
dst, err := net.ResolveUDPAddr("udp4", c.LocalAddr().String())
107-
if err != nil {
108-
t.Fatal(err)
109-
}
110-
76+
dst := c.LocalAddr()
11177
ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback)
11278
cf := ipv4.FlagTTL | ipv4.FlagSrc | ipv4.FlagDst | ipv4.FlagInterface
11379
wb := []byte("HELLO-R-U-THERE")
@@ -152,7 +118,7 @@ func TestPacketConnConcurrentReadWriteUnicastUDP(t *testing.T) {
152118
t.Error(err)
153119
return
154120
} else if n != len(wb) {
155-
t.Errorf("short write: %v", n)
121+
t.Errorf("got %d; want %d", n, len(wb))
156122
return
157123
}
158124
}

ipv4/unicast_test.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,15 @@ func TestPacketConnReadWriteUnicastUDP(t *testing.T) {
2828
t.Skipf("not available on %s", runtime.GOOS)
2929
}
3030

31-
c, err := net.ListenPacket("udp4", "127.0.0.1:0")
31+
c, err := nettest.NewLocalPacketListener("udp4")
3232
if err != nil {
3333
t.Fatal(err)
3434
}
3535
defer c.Close()
36-
37-
dst, err := net.ResolveUDPAddr("udp4", c.LocalAddr().String())
38-
if err != nil {
39-
t.Fatal(err)
40-
}
4136
p := ipv4.NewPacketConn(c)
4237
defer p.Close()
38+
39+
dst := c.LocalAddr()
4340
cf := ipv4.FlagTTL | ipv4.FlagDst | ipv4.FlagInterface
4441
wb := []byte("HELLO-R-U-THERE")
4542

0 commit comments

Comments
 (0)