Reviewers: golang-dev_googlegroups.com,
Message:
Hello golang-dev@googlegroups.com (cc: golang-dev@googlegroups.com),
I'd like you to review this change to
https://code.google.com/p/go
Description:
net: make unix connection tests more robust
Avoids unlink the underlying file before the socket close.
Please review this at https://codereview.appspot.com/7004044/
Affected files:
M src/pkg/net/conn_test.go
M src/pkg/net/packetconn_test.go
Index: src/pkg/net/conn_test.go
===================================================================
--- a/src/pkg/net/conn_test.go
+++ b/src/pkg/net/conn_test.go
@@ -17,8 +17,8 @@
addr string
}{
{"tcp", "127.0.0.1:0"},
- {"unix", "/tmp/gotest.net"},
- {"unixpacket", "/tmp/gotest.net"},
+ {"unix", "/tmp/gotest.net1"},
+ {"unixpacket", "/tmp/gotest.net2"},
}
func TestConnAndListener(t *testing.T) {
@@ -41,7 +41,13 @@
return
}
ln.Addr()
- defer ln.Close()
+ defer func(ln net.Listener, net, addr string) {
+ ln.Close()
+ switch net {
+ case "unix", "unixpacket":
+ os.Remove(addr)
+ }
+ }(ln, tt.net, tt.addr)
done := make(chan int)
go transponder(t, ln, done)
@@ -68,10 +74,6 @@
}
<-done
- switch tt.net {
- case "unix", "unixpacket":
- os.Remove(tt.addr)
- }
}
}
Index: src/pkg/net/packetconn_test.go
===================================================================
--- a/src/pkg/net/packetconn_test.go
+++ b/src/pkg/net/packetconn_test.go
@@ -24,6 +24,15 @@
}
func TestPacketConn(t *testing.T) {
+ closer := func(c net.PacketConn, net, addr1, addr2 string) {
+ c.Close()
+ switch net {
+ case "unixgram":
+ os.Remove(addr1)
+ os.Remove(addr2)
+ }
+ }
+
for _, tt := range packetConnTests {
var wb []byte
netstr := strings.Split(tt.net, ":")
@@ -39,7 +48,7 @@
continue
}
id := os.Getpid() & 0xffff
- wb = newICMPEchoRequest(id, 1, 128, []byte("IP PACKETCONN TEST "))
+ wb = newICMPEchoRequest(id, 1, 128, []byte("IP PACKETCONN TEST"))
case "unixgram":
switch runtime.GOOS {
case "plan9", "windows":
@@ -54,43 +63,43 @@
c1, err := net.ListenPacket(tt.net, tt.addr1)
if err != nil {
- t.Fatalf("net.ListenPacket failed: %v", err)
+ t.Errorf("net.ListenPacket failed: %v", err)
+ return
}
c1.LocalAddr()
c1.SetDeadline(time.Now().Add(100 * time.Millisecond))
c1.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
c1.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
- defer c1.Close()
+ defer closer(c1, netstr[0], tt.addr1, tt.addr2)
c2, err := net.ListenPacket(tt.net, tt.addr2)
if err != nil {
- t.Fatalf("net.ListenPacket failed: %v", err)
+ t.Errorf("net.ListenPacket failed: %v", err)
+ return
}
c2.LocalAddr()
c2.SetDeadline(time.Now().Add(100 * time.Millisecond))
c2.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
c2.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
- defer c2.Close()
+ defer closer(c2, netstr[0], tt.addr1, tt.addr2)
if _, err := c1.WriteTo(wb, c2.LocalAddr()); err != nil {
- t.Fatalf("net.PacketConn.WriteTo failed: %v", err)
+ t.Errorf("net.PacketConn.WriteTo failed: %v", err)
+ return
}
rb2 := make([]byte, 128)
if _, _, err := c2.ReadFrom(rb2); err != nil {
- t.Fatalf("net.PacketConn.ReadFrom failed: %v", err)
+ t.Errorf("net.PacketConn.ReadFrom failed: %v", err)
+ return
}
if _, err := c2.WriteTo(wb, c1.LocalAddr()); err != nil {
- t.Fatalf("net.PacketConn.WriteTo failed: %v", err)
+ t.Errorf("net.PacketConn.WriteTo failed: %v", err)
+ return
}
rb1 := make([]byte, 128)
if _, _, err := c1.ReadFrom(rb1); err != nil {
- t.Fatalf("net.PacketConn.ReadFrom failed: %v", err)
- }
-
- switch netstr[0] {
- case "unixgram":
- os.Remove(tt.addr1)
- os.Remove(tt.addr2)
+ t.Errorf("net.PacketConn.ReadFrom failed: %v", err)
+ return
}
}
}
@@ -118,7 +127,8 @@
c1, err := net.ListenPacket(tt.net, tt.addr1)
if err != nil {
- t.Fatalf("net.ListenPacket failed: %v", err)
+ t.Errorf("net.ListenPacket failed: %v", err)
+ return
}
c1.LocalAddr()
c1.SetDeadline(time.Now().Add(100 * time.Millisecond))
@@ -128,7 +138,8 @@
c2, err := net.Dial(tt.net, c1.LocalAddr().String())
if err != nil {
- t.Fatalf("net.Dial failed: %v", err)
+ t.Errorf("net.Dial failed: %v", err)
+ return
}
c2.LocalAddr()
c2.RemoteAddr()
@@ -138,11 +149,13 @@
defer c2.Close()
if _, err := c2.Write(wb); err != nil {
- t.Fatalf("net.Conn.Write failed: %v", err)
+ t.Errorf("net.Conn.Write failed: %v", err)
+ return
}
rb1 := make([]byte, 128)
if _, _, err := c1.ReadFrom(rb1); err != nil {
- t.Fatalf("net.PacetConn.ReadFrom failed: %v", err)
+ t.Errorf("net.PacetConn.ReadFrom failed: %v", err)
+ return
}
var dst net.Addr
if netstr[0] == "ip" {
@@ -151,11 +164,13 @@
dst = c2.LocalAddr()
}
if _, err := c1.WriteTo(wb, dst); err != nil {
- t.Fatalf("net.PacketConn.WriteTo failed: %v", err)
+ t.Errorf("net.PacketConn.WriteTo failed: %v", err)
+ return
}
rb2 := make([]byte, 128)
if _, err := c2.Read(rb2); err != nil {
- t.Fatalf("net.Conn.Read failed: %v", err)
+ t.Errorf("net.Conn.Read failed: %v", err)
+ return
}
}
}