Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(396)

Delta Between Two Patch Sets: src/pkg/net/conn_test.go

Issue 7308058: code review 7308058: net: add unixgram dial test (Closed)
Left Patch Set: diff -r aba17f1b93db https://code.google.com/p/go Created 12 years, 1 month ago
Right Patch Set: diff -r bcf28085191a https://code.google.com/p/go Created 12 years ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « no previous file | src/pkg/net/packetconn_test.go » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 // Copyright 2012 The Go Authors. All rights reserved. 1 // Copyright 2012 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style 2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file. 3 // license that can be found in the LICENSE file.
4 4
5 package net_test 5 // This file implements API tests across platforms and will never have a build
6 // tag.
7
8 package net
6 9
7 import ( 10 import (
8 "io/ioutil"
9 "net"
10 "os" 11 "os"
11 "runtime" 12 "runtime"
12 "testing" 13 "testing"
13 "time" 14 "time"
14 ) 15 )
15
16 func testUnixAddr() string {
17 f, err := ioutil.TempFile("", "nettest")
18 if err != nil {
19 panic(err)
20 }
21 addr := f.Name()
22 f.Close()
23 os.Remove(addr)
24 return addr
25 }
26 16
27 var connTests = []struct { 17 var connTests = []struct {
28 net string 18 net string
29 addr string 19 addr string
30 }{ 20 }{
31 {"tcp", "127.0.0.1:0"}, 21 {"tcp", "127.0.0.1:0"},
32 {"unix", testUnixAddr()}, 22 {"unix", testUnixAddr()},
33 {"unixpacket", testUnixAddr()}, 23 {"unixpacket", testUnixAddr()},
34 } 24 }
35 25
36 func TestConnAndListener(t *testing.T) { 26 func TestConnAndListener(t *testing.T) {
37 for _, tt := range connTests { 27 for _, tt := range connTests {
38 switch tt.net { 28 switch tt.net {
39 case "unix", "unixpacket": 29 case "unix", "unixpacket":
40 switch runtime.GOOS { 30 switch runtime.GOOS {
41 case "plan9", "windows": 31 case "plan9", "windows":
42 continue 32 continue
43 } 33 }
44 if tt.net == "unixpacket" && runtime.GOOS != "linux" { 34 if tt.net == "unixpacket" && runtime.GOOS != "linux" {
45 continue 35 continue
46 } 36 }
47 } 37 }
48 38
49 » » ln, err := net.Listen(tt.net, tt.addr) 39 » » ln, err := Listen(tt.net, tt.addr)
50 if err != nil { 40 if err != nil {
51 » » » t.Fatalf("net.Listen failed: %v", err) 41 » » » t.Fatalf("Listen failed: %v", err)
52 } 42 }
53 » » ln.Addr() 43 » » defer func(ln Listener, net, addr string) {
54 » » defer func(ln net.Listener, net, addr string) {
55 ln.Close() 44 ln.Close()
56 switch net { 45 switch net {
57 case "unix", "unixpacket": 46 case "unix", "unixpacket":
58 os.Remove(addr) 47 os.Remove(addr)
59 } 48 }
60 }(ln, tt.net, tt.addr) 49 }(ln, tt.net, tt.addr)
50 ln.Addr()
61 51
62 done := make(chan int) 52 done := make(chan int)
63 go transponder(t, ln, done) 53 go transponder(t, ln, done)
64 54
65 » » c, err := net.Dial(tt.net, ln.Addr().String()) 55 » » c, err := Dial(tt.net, ln.Addr().String())
66 if err != nil { 56 if err != nil {
67 » » » t.Fatalf("net.Dial failed: %v", err) 57 » » » t.Fatalf("Dial failed: %v", err)
68 } 58 }
59 defer c.Close()
69 c.LocalAddr() 60 c.LocalAddr()
70 c.RemoteAddr() 61 c.RemoteAddr()
71 c.SetDeadline(time.Now().Add(100 * time.Millisecond)) 62 c.SetDeadline(time.Now().Add(100 * time.Millisecond))
72 c.SetReadDeadline(time.Now().Add(100 * time.Millisecond)) 63 c.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
73 c.SetWriteDeadline(time.Now().Add(100 * time.Millisecond)) 64 c.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
74 defer c.Close()
75 65
76 if _, err := c.Write([]byte("CONN TEST")); err != nil { 66 if _, err := c.Write([]byte("CONN TEST")); err != nil {
77 » » » t.Fatalf("net.Conn.Write failed: %v", err) 67 » » » t.Fatalf("Conn.Write failed: %v", err)
78 } 68 }
79 rb := make([]byte, 128) 69 rb := make([]byte, 128)
80 if _, err := c.Read(rb); err != nil { 70 if _, err := c.Read(rb); err != nil {
81 » » » t.Fatalf("net.Conn.Read failed: %v", err) 71 » » » t.Fatalf("Conn.Read failed: %v", err)
82 } 72 }
83 73
84 <-done 74 <-done
85 } 75 }
86 } 76 }
87 77
88 func transponder(t *testing.T, ln net.Listener, done chan<- int) { 78 func transponder(t *testing.T, ln Listener, done chan<- int) {
89 defer func() { done <- 1 }() 79 defer func() { done <- 1 }()
90 80
91 » switch ln.(type) { 81 » switch ln := ln.(type) {
92 » case *net.TCPListener: 82 » case *TCPListener:
93 » » ln.(*net.TCPListener).SetDeadline(time.Now().Add(100 * time.Mill isecond)) 83 » » ln.SetDeadline(time.Now().Add(100 * time.Millisecond))
94 » case *net.UnixListener: 84 » case *UnixListener:
95 » » ln.(*net.UnixListener).SetDeadline(time.Now().Add(100 * time.Mil lisecond)) 85 » » ln.SetDeadline(time.Now().Add(100 * time.Millisecond))
96 } 86 }
97 c, err := ln.Accept() 87 c, err := ln.Accept()
98 if err != nil { 88 if err != nil {
99 » » t.Fatalf("net.Listener.Accept failed: %v", err) 89 » » t.Errorf("Listener.Accept failed: %v", err)
90 » » return
100 } 91 }
92 defer c.Close()
101 c.LocalAddr() 93 c.LocalAddr()
102 c.RemoteAddr() 94 c.RemoteAddr()
103 c.SetDeadline(time.Now().Add(100 * time.Millisecond)) 95 c.SetDeadline(time.Now().Add(100 * time.Millisecond))
104 c.SetReadDeadline(time.Now().Add(100 * time.Millisecond)) 96 c.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
105 c.SetWriteDeadline(time.Now().Add(100 * time.Millisecond)) 97 c.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
106 defer c.Close()
107 98
108 b := make([]byte, 128) 99 b := make([]byte, 128)
109 n, err := c.Read(b) 100 n, err := c.Read(b)
110 if err != nil { 101 if err != nil {
111 » » t.Fatalf("net.Conn.Read failed: %v", err) 102 » » t.Errorf("Conn.Read failed: %v", err)
103 » » return
112 } 104 }
113 if _, err := c.Write(b[:n]); err != nil { 105 if _, err := c.Write(b[:n]); err != nil {
114 » » t.Fatalf("net.Conn.Write failed: %v", err) 106 » » t.Errorf("Conn.Write failed: %v", err)
107 » » return
115 } 108 }
116 } 109 }
LEFTRIGHT

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b