Skip to content

Commit 1591dad

Browse files
net: move some Linux-specific tests to unixsock_linux_test.go file
Also changed name from TestUnix... to TestUnixgram.... Updates #21965 Change-Id: I2833110b77e9fe1b28d4a15feb3d70453ab98d3b Reviewed-on: https://go-review.googlesource.com/66333 Run-TryBot: Ian Lance Taylor <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-by: Mikio Hara <[email protected]> Reviewed-by: Rob Pike <[email protected]>
1 parent 39e5237 commit 1591dad

File tree

2 files changed

+104
-99
lines changed

2 files changed

+104
-99
lines changed

src/net/unixsock_linux_test.go

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
// Copyright 2017 The Go Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style
3+
// license that can be found in the LICENSE file.
4+
5+
package net
6+
7+
import (
8+
"bytes"
9+
"reflect"
10+
"syscall"
11+
"testing"
12+
"time"
13+
)
14+
15+
func TestUnixgramAutobind(t *testing.T) {
16+
laddr := &UnixAddr{Name: "", Net: "unixgram"}
17+
c1, err := ListenUnixgram("unixgram", laddr)
18+
if err != nil {
19+
t.Fatal(err)
20+
}
21+
defer c1.Close()
22+
23+
// retrieve the autobind address
24+
autoAddr := c1.LocalAddr().(*UnixAddr)
25+
if len(autoAddr.Name) <= 1 {
26+
t.Fatalf("invalid autobind address: %v", autoAddr)
27+
}
28+
if autoAddr.Name[0] != '@' {
29+
t.Fatalf("invalid autobind address: %v", autoAddr)
30+
}
31+
32+
c2, err := DialUnix("unixgram", nil, autoAddr)
33+
if err != nil {
34+
t.Fatal(err)
35+
}
36+
defer c2.Close()
37+
38+
if !reflect.DeepEqual(c1.LocalAddr(), c2.RemoteAddr()) {
39+
t.Fatalf("expected autobind address %v, got %v", c1.LocalAddr(), c2.RemoteAddr())
40+
}
41+
}
42+
43+
func TestUnixAutobindClose(t *testing.T) {
44+
laddr := &UnixAddr{Name: "", Net: "unix"}
45+
ln, err := ListenUnix("unix", laddr)
46+
if err != nil {
47+
t.Fatal(err)
48+
}
49+
ln.Close()
50+
}
51+
52+
func TestUnixgramLinuxAbstractLongName(t *testing.T) {
53+
if !testableNetwork("unixgram") {
54+
t.Skip("abstract unix socket long name test")
55+
}
56+
57+
// Create an abstract socket name whose length is exactly
58+
// the maximum RawSockkaddrUnix Path len
59+
rsu := syscall.RawSockaddrUnix{}
60+
addrBytes := make([]byte, len(rsu.Path))
61+
copy(addrBytes, "@abstract_test")
62+
addr := string(addrBytes)
63+
64+
la, err := ResolveUnixAddr("unixgram", addr)
65+
if err != nil {
66+
t.Fatal(err)
67+
}
68+
c, err := ListenUnixgram("unixgram", la)
69+
if err != nil {
70+
t.Fatal(err)
71+
}
72+
defer c.Close()
73+
74+
off := make(chan bool)
75+
data := [5]byte{1, 2, 3, 4, 5}
76+
go func() {
77+
defer func() { off <- true }()
78+
s, err := syscall.Socket(syscall.AF_UNIX, syscall.SOCK_DGRAM, 0)
79+
if err != nil {
80+
t.Error(err)
81+
return
82+
}
83+
defer syscall.Close(s)
84+
rsa := &syscall.SockaddrUnix{Name: addr}
85+
if err := syscall.Sendto(s, data[:], 0, rsa); err != nil {
86+
t.Error(err)
87+
return
88+
}
89+
}()
90+
91+
<-off
92+
b := make([]byte, 64)
93+
c.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
94+
n, from, err := c.ReadFrom(b)
95+
if err != nil {
96+
t.Fatal(err)
97+
}
98+
if from != nil {
99+
t.Fatalf("unexpected peer address: %v", from)
100+
}
101+
if !bytes.Equal(b[:n], data[:]) {
102+
t.Fatalf("got %v; want %v", b[:n], data[:])
103+
}
104+
}

src/net/unixsock_test.go

Lines changed: 0 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -170,51 +170,6 @@ func TestUnixgramZeroByteBuffer(t *testing.T) {
170170
}
171171
}
172172

173-
func TestUnixgramAutobind(t *testing.T) {
174-
if runtime.GOOS != "linux" {
175-
t.Skip("autobind is linux only")
176-
}
177-
178-
laddr := &UnixAddr{Name: "", Net: "unixgram"}
179-
c1, err := ListenUnixgram("unixgram", laddr)
180-
if err != nil {
181-
t.Fatal(err)
182-
}
183-
defer c1.Close()
184-
185-
// retrieve the autobind address
186-
autoAddr := c1.LocalAddr().(*UnixAddr)
187-
if len(autoAddr.Name) <= 1 {
188-
t.Fatalf("invalid autobind address: %v", autoAddr)
189-
}
190-
if autoAddr.Name[0] != '@' {
191-
t.Fatalf("invalid autobind address: %v", autoAddr)
192-
}
193-
194-
c2, err := DialUnix("unixgram", nil, autoAddr)
195-
if err != nil {
196-
t.Fatal(err)
197-
}
198-
defer c2.Close()
199-
200-
if !reflect.DeepEqual(c1.LocalAddr(), c2.RemoteAddr()) {
201-
t.Fatalf("expected autobind address %v, got %v", c1.LocalAddr(), c2.RemoteAddr())
202-
}
203-
}
204-
205-
func TestUnixAutobindClose(t *testing.T) {
206-
if runtime.GOOS != "linux" {
207-
t.Skip("autobind is linux only")
208-
}
209-
210-
laddr := &UnixAddr{Name: "", Net: "unix"}
211-
ln, err := ListenUnix("unix", laddr)
212-
if err != nil {
213-
t.Fatal(err)
214-
}
215-
ln.Close()
216-
}
217-
218173
func TestUnixgramWrite(t *testing.T) {
219174
if !testableNetwork("unixgram") {
220175
t.Skip("unixgram test")
@@ -516,57 +471,3 @@ func TestUnixUnlink(t *testing.T) {
516471
l.Close()
517472
})
518473
}
519-
520-
func TestUnixLinuxAbstractLongName(t *testing.T) {
521-
if runtime.GOOS != "linux" || !testableNetwork("unixgram") {
522-
t.Skip("abstract unix socket long name test")
523-
}
524-
525-
// Create an abstract socket name whose length is exactly
526-
// the maximum RawSockkaddrUnix Path len
527-
rsu := syscall.RawSockaddrUnix{}
528-
addrBytes := make([]byte, len(rsu.Path))
529-
copy(addrBytes, "@abstract_test")
530-
addr := string(addrBytes)
531-
532-
la, err := ResolveUnixAddr("unixgram", addr)
533-
if err != nil {
534-
t.Fatal(err)
535-
}
536-
c, err := ListenUnixgram("unixgram", la)
537-
if err != nil {
538-
t.Fatal(err)
539-
}
540-
defer c.Close()
541-
542-
off := make(chan bool)
543-
data := [5]byte{1, 2, 3, 4, 5}
544-
go func() {
545-
defer func() { off <- true }()
546-
s, err := syscall.Socket(syscall.AF_UNIX, syscall.SOCK_DGRAM, 0)
547-
if err != nil {
548-
t.Error(err)
549-
return
550-
}
551-
defer syscall.Close(s)
552-
rsa := &syscall.SockaddrUnix{Name: addr}
553-
if err := syscall.Sendto(s, data[:], 0, rsa); err != nil {
554-
t.Error(err)
555-
return
556-
}
557-
}()
558-
559-
<-off
560-
b := make([]byte, 64)
561-
c.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
562-
n, from, err := c.ReadFrom(b)
563-
if err != nil {
564-
t.Fatal(err)
565-
}
566-
if from != nil {
567-
t.Fatalf("unexpected peer address: %v", from)
568-
}
569-
if !bytes.Equal(b[:n], data[:]) {
570-
t.Fatalf("got %v; want %v", b[:n], data[:])
571-
}
572-
}

0 commit comments

Comments
 (0)