summaryrefslogtreecommitdiff
path: root/libgo/go/net/server_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/net/server_test.go')
-rw-r--r--libgo/go/net/server_test.go69
1 files changed, 31 insertions, 38 deletions
diff --git a/libgo/go/net/server_test.go b/libgo/go/net/server_test.go
index eba1e7d9691..9194a8ec24d 100644
--- a/libgo/go/net/server_test.go
+++ b/libgo/go/net/server_test.go
@@ -9,6 +9,7 @@ import (
"io"
"os"
"runtime"
+ "strconv"
"testing"
"time"
)
@@ -41,6 +42,12 @@ func skipServerTest(net, unixsotype, addr string, ipv6, ipv4map, linuxonly bool)
return false
}
+func tempfile(filename string) string {
+ // use /tmp in case it is prohibited to create
+ // UNIX sockets in TMPDIR
+ return "/tmp/" + filename + "." + strconv.Itoa(os.Getpid())
+}
+
var streamConnServerTests = []struct {
snet string // server side
saddr string
@@ -86,7 +93,7 @@ var streamConnServerTests = []struct {
{snet: "tcp6", saddr: "[::1]", cnet: "tcp6", caddr: "[::1]", ipv6: true},
- {snet: "unix", saddr: "/tmp/gotest1.net", cnet: "unix", caddr: "/tmp/gotest1.net.local"},
+ {snet: "unix", saddr: tempfile("gotest1.net"), cnet: "unix", caddr: tempfile("gotest1.net.local")},
{snet: "unix", saddr: "@gotest2/net", cnet: "unix", caddr: "@gotest2/net.local", linux: true},
}
@@ -113,8 +120,7 @@ func TestStreamConnServer(t *testing.T) {
case "tcp", "tcp4", "tcp6":
_, port, err := SplitHostPort(taddr)
if err != nil {
- t.Errorf("SplitHostPort(%q) failed: %v", taddr, err)
- return
+ t.Fatalf("SplitHostPort(%q) failed: %v", taddr, err)
}
taddr = tt.caddr + ":" + port
}
@@ -136,7 +142,7 @@ var seqpacketConnServerTests = []struct {
caddr string // client address
empty bool // test with empty data
}{
- {net: "unixpacket", saddr: "/tmp/gotest3.net", caddr: "/tmp/gotest3.net.local"},
+ {net: "unixpacket", saddr: tempfile("/gotest3.net"), caddr: tempfile("gotest3.net.local")},
{net: "unixpacket", saddr: "@gotest4/net", caddr: "@gotest4/net.local"},
}
@@ -169,11 +175,11 @@ func TestSeqpacketConnServer(t *testing.T) {
}
func runStreamConnServer(t *testing.T, net, laddr string, listening chan<- string, done chan<- int) {
+ defer close(done)
l, err := Listen(net, laddr)
if err != nil {
t.Errorf("Listen(%q, %q) failed: %v", net, laddr, err)
listening <- "<nil>"
- done <- 1
return
}
defer l.Close()
@@ -188,13 +194,14 @@ func runStreamConnServer(t *testing.T, net, laddr string, listening chan<- strin
}
rw.Write(buf[0:n])
}
- done <- 1
+ close(done)
}
run:
for {
c, err := l.Accept()
if err != nil {
+ t.Logf("Accept failed: %v", err)
continue run
}
echodone := make(chan int)
@@ -203,14 +210,12 @@ run:
c.Close()
break run
}
- done <- 1
}
func runStreamConnClient(t *testing.T, net, taddr string, isEmpty bool) {
c, err := Dial(net, taddr)
if err != nil {
- t.Errorf("Dial(%q, %q) failed: %v", net, taddr, err)
- return
+ t.Fatalf("Dial(%q, %q) failed: %v", net, taddr, err)
}
defer c.Close()
c.SetReadDeadline(time.Now().Add(1 * time.Second))
@@ -220,14 +225,12 @@ func runStreamConnClient(t *testing.T, net, taddr string, isEmpty bool) {
wb = []byte("StreamConnClient by Dial\n")
}
if n, err := c.Write(wb); err != nil || n != len(wb) {
- t.Errorf("Write failed: %v, %v; want %v, <nil>", n, err, len(wb))
- return
+ t.Fatalf("Write failed: %v, %v; want %v, <nil>", n, err, len(wb))
}
rb := make([]byte, 1024)
if n, err := c.Read(rb[0:]); err != nil || n != len(wb) {
- t.Errorf("Read failed: %v, %v; want %v, <nil>", n, err, len(wb))
- return
+ t.Fatalf("Read failed: %v, %v; want %v, <nil>", n, err, len(wb))
}
// Send explicit ending for unixpacket.
@@ -298,10 +301,10 @@ var datagramPacketConnServerTests = []struct {
{snet: "udp", saddr: "[::1]", cnet: "udp", caddr: "[::1]", ipv6: true, empty: true},
{snet: "udp", saddr: "[::1]", cnet: "udp", caddr: "[::1]", ipv6: true, dial: true, empty: true},
- {snet: "unixgram", saddr: "/tmp/gotest5.net", cnet: "unixgram", caddr: "/tmp/gotest5.net.local"},
- {snet: "unixgram", saddr: "/tmp/gotest5.net", cnet: "unixgram", caddr: "/tmp/gotest5.net.local", dial: true},
- {snet: "unixgram", saddr: "/tmp/gotest5.net", cnet: "unixgram", caddr: "/tmp/gotest5.net.local", empty: true},
- {snet: "unixgram", saddr: "/tmp/gotest5.net", cnet: "unixgram", caddr: "/tmp/gotest5.net.local", dial: true, empty: true},
+ {snet: "unixgram", saddr: tempfile("gotest5.net"), cnet: "unixgram", caddr: tempfile("gotest5.net.local")},
+ {snet: "unixgram", saddr: tempfile("gotest5.net"), cnet: "unixgram", caddr: tempfile("gotest5.net.local"), dial: true},
+ {snet: "unixgram", saddr: tempfile("gotest5.net"), cnet: "unixgram", caddr: tempfile("gotest5.net.local"), empty: true},
+ {snet: "unixgram", saddr: tempfile("gotest5.net"), cnet: "unixgram", caddr: tempfile("gotest5.net.local"), dial: true, empty: true},
{snet: "unixgram", saddr: "@gotest6/net", cnet: "unixgram", caddr: "@gotest6/net.local", linux: true},
}
@@ -333,8 +336,7 @@ func TestDatagramPacketConnServer(t *testing.T) {
case "udp", "udp4", "udp6":
_, port, err := SplitHostPort(taddr)
if err != nil {
- t.Errorf("SplitHostPort(%q) failed: %v", taddr, err)
- return
+ t.Fatalf("SplitHostPort(%q) failed: %v", taddr, err)
}
taddr = tt.caddr + ":" + port
tt.caddr += ":0"
@@ -397,14 +399,12 @@ func runDatagramConnClient(t *testing.T, net, laddr, taddr string, isEmpty bool)
case "udp", "udp4", "udp6":
c, err = Dial(net, taddr)
if err != nil {
- t.Errorf("Dial(%q, %q) failed: %v", net, taddr, err)
- return
+ t.Fatalf("Dial(%q, %q) failed: %v", net, taddr, err)
}
case "unixgram":
- c, err = DialUnix(net, &UnixAddr{laddr, net}, &UnixAddr{taddr, net})
+ c, err = DialUnix(net, &UnixAddr{Name: laddr, Net: net}, &UnixAddr{Name: taddr, Net: net})
if err != nil {
- t.Errorf("DialUnix(%q, {%q, %q}) failed: %v", net, laddr, taddr, err)
- return
+ t.Fatalf("DialUnix(%q, {%q, %q}) failed: %v", net, laddr, taddr, err)
}
}
defer c.Close()
@@ -415,14 +415,12 @@ func runDatagramConnClient(t *testing.T, net, laddr, taddr string, isEmpty bool)
wb = []byte("DatagramConnClient by Dial\n")
}
if n, err := c.Write(wb[0:]); err != nil || n != len(wb) {
- t.Errorf("Write failed: %v, %v; want %v, <nil>", n, err, len(wb))
- return
+ t.Fatalf("Write failed: %v, %v; want %v, <nil>", n, err, len(wb))
}
rb := make([]byte, 1024)
if n, err := c.Read(rb[0:]); err != nil || n != len(wb) {
- t.Errorf("Read failed: %v, %v; want %v, <nil>", n, err, len(wb))
- return
+ t.Fatalf("Read failed: %v, %v; want %v, <nil>", n, err, len(wb))
}
}
@@ -433,20 +431,17 @@ func runDatagramPacketConnClient(t *testing.T, net, laddr, taddr string, isEmpty
case "udp", "udp4", "udp6":
ra, err = ResolveUDPAddr(net, taddr)
if err != nil {
- t.Errorf("ResolveUDPAddr(%q, %q) failed: %v", net, taddr, err)
- return
+ t.Fatalf("ResolveUDPAddr(%q, %q) failed: %v", net, taddr, err)
}
case "unixgram":
ra, err = ResolveUnixAddr(net, taddr)
if err != nil {
- t.Errorf("ResolveUxixAddr(%q, %q) failed: %v", net, taddr, err)
- return
+ t.Fatalf("ResolveUxixAddr(%q, %q) failed: %v", net, taddr, err)
}
}
c, err := ListenPacket(net, laddr)
if err != nil {
- t.Errorf("ListenPacket(%q, %q) faild: %v", net, laddr, err)
- return
+ t.Fatalf("ListenPacket(%q, %q) faild: %v", net, laddr, err)
}
defer c.Close()
c.SetReadDeadline(time.Now().Add(1 * time.Second))
@@ -456,13 +451,11 @@ func runDatagramPacketConnClient(t *testing.T, net, laddr, taddr string, isEmpty
wb = []byte("DatagramPacketConnClient by ListenPacket\n")
}
if n, err := c.WriteTo(wb[0:], ra); err != nil || n != len(wb) {
- t.Errorf("WriteTo(%v) failed: %v, %v; want %v, <nil>", ra, n, err, len(wb))
- return
+ t.Fatalf("WriteTo(%v) failed: %v, %v; want %v, <nil>", ra, n, err, len(wb))
}
rb := make([]byte, 1024)
if n, _, err := c.ReadFrom(rb[0:]); err != nil || n != len(wb) {
- t.Errorf("ReadFrom failed: %v, %v; want %v, <nil>", n, err, len(wb))
- return
+ t.Fatalf("ReadFrom failed: %v, %v; want %v, <nil>", n, err, len(wb))
}
}