LEFT | RIGHT |
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 package net_test |
6 | 6 |
7 import ( | 7 import ( |
8 "net" | 8 "net" |
9 "os" | 9 "os" |
10 "runtime" | 10 "runtime" |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 } | 56 } |
57 os.Remove(tt.addr1) | 57 os.Remove(tt.addr1) |
58 os.Remove(tt.addr2) | 58 os.Remove(tt.addr2) |
59 wb = []byte("UNIXGRAM PACKETCONN TEST") | 59 wb = []byte("UNIXGRAM PACKETCONN TEST") |
60 default: | 60 default: |
61 continue | 61 continue |
62 } | 62 } |
63 | 63 |
64 c1, err := net.ListenPacket(tt.net, tt.addr1) | 64 c1, err := net.ListenPacket(tt.net, tt.addr1) |
65 if err != nil { | 65 if err != nil { |
66 » » » t.Errorf("net.ListenPacket failed: %v", err) | 66 » » » t.Fatalf("net.ListenPacket failed: %v", err) |
67 » » » return | |
68 } | 67 } |
69 c1.LocalAddr() | 68 c1.LocalAddr() |
70 c1.SetDeadline(time.Now().Add(100 * time.Millisecond)) | 69 c1.SetDeadline(time.Now().Add(100 * time.Millisecond)) |
71 c1.SetReadDeadline(time.Now().Add(100 * time.Millisecond)) | 70 c1.SetReadDeadline(time.Now().Add(100 * time.Millisecond)) |
72 c1.SetWriteDeadline(time.Now().Add(100 * time.Millisecond)) | 71 c1.SetWriteDeadline(time.Now().Add(100 * time.Millisecond)) |
73 defer closer(c1, netstr[0], tt.addr1, tt.addr2) | 72 defer closer(c1, netstr[0], tt.addr1, tt.addr2) |
74 | 73 |
75 c2, err := net.ListenPacket(tt.net, tt.addr2) | 74 c2, err := net.ListenPacket(tt.net, tt.addr2) |
76 if err != nil { | 75 if err != nil { |
77 » » » t.Errorf("net.ListenPacket failed: %v", err) | 76 » » » t.Fatalf("net.ListenPacket failed: %v", err) |
78 » » » return | |
79 } | 77 } |
80 c2.LocalAddr() | 78 c2.LocalAddr() |
81 c2.SetDeadline(time.Now().Add(100 * time.Millisecond)) | 79 c2.SetDeadline(time.Now().Add(100 * time.Millisecond)) |
82 c2.SetReadDeadline(time.Now().Add(100 * time.Millisecond)) | 80 c2.SetReadDeadline(time.Now().Add(100 * time.Millisecond)) |
83 c2.SetWriteDeadline(time.Now().Add(100 * time.Millisecond)) | 81 c2.SetWriteDeadline(time.Now().Add(100 * time.Millisecond)) |
84 defer closer(c2, netstr[0], tt.addr1, tt.addr2) | 82 defer closer(c2, netstr[0], tt.addr1, tt.addr2) |
85 | 83 |
86 if _, err := c1.WriteTo(wb, c2.LocalAddr()); err != nil { | 84 if _, err := c1.WriteTo(wb, c2.LocalAddr()); err != nil { |
87 » » » t.Errorf("net.PacketConn.WriteTo failed: %v", err) | 85 » » » t.Fatalf("net.PacketConn.WriteTo failed: %v", err) |
88 » » » return | |
89 } | 86 } |
90 rb2 := make([]byte, 128) | 87 rb2 := make([]byte, 128) |
91 if _, _, err := c2.ReadFrom(rb2); err != nil { | 88 if _, _, err := c2.ReadFrom(rb2); err != nil { |
92 » » » t.Errorf("net.PacketConn.ReadFrom failed: %v", err) | 89 » » » t.Fatalf("net.PacketConn.ReadFrom failed: %v", err) |
93 » » » return | |
94 } | 90 } |
95 if _, err := c2.WriteTo(wb, c1.LocalAddr()); err != nil { | 91 if _, err := c2.WriteTo(wb, c1.LocalAddr()); err != nil { |
96 » » » t.Errorf("net.PacketConn.WriteTo failed: %v", err) | 92 » » » t.Fatalf("net.PacketConn.WriteTo failed: %v", err) |
97 » » » return | |
98 } | 93 } |
99 rb1 := make([]byte, 128) | 94 rb1 := make([]byte, 128) |
100 if _, _, err := c1.ReadFrom(rb1); err != nil { | 95 if _, _, err := c1.ReadFrom(rb1); err != nil { |
101 » » » t.Errorf("net.PacketConn.ReadFrom failed: %v", err) | 96 » » » t.Fatalf("net.PacketConn.ReadFrom failed: %v", err) |
102 » » » return | |
103 } | 97 } |
104 } | 98 } |
105 } | 99 } |
106 | 100 |
107 func TestConnAndPacketConn(t *testing.T) { | 101 func TestConnAndPacketConn(t *testing.T) { |
108 for _, tt := range packetConnTests { | 102 for _, tt := range packetConnTests { |
109 var wb []byte | 103 var wb []byte |
110 netstr := strings.Split(tt.net, ":") | 104 netstr := strings.Split(tt.net, ":") |
111 switch netstr[0] { | 105 switch netstr[0] { |
112 case "udp": | 106 case "udp": |
113 wb = []byte("UDP PACKETCONN TEST") | 107 wb = []byte("UDP PACKETCONN TEST") |
114 case "ip": | 108 case "ip": |
115 switch runtime.GOOS { | 109 switch runtime.GOOS { |
116 case "plan9": | 110 case "plan9": |
117 continue | 111 continue |
118 } | 112 } |
119 if os.Getuid() != 0 { | 113 if os.Getuid() != 0 { |
120 continue | 114 continue |
121 } | 115 } |
122 id := os.Getpid() & 0xffff | 116 id := os.Getpid() & 0xffff |
123 wb = newICMPEchoRequest(id, 1, 128, []byte("IP PACKETCON
N TEST")) | 117 wb = newICMPEchoRequest(id, 1, 128, []byte("IP PACKETCON
N TEST")) |
124 default: | 118 default: |
125 continue | 119 continue |
126 } | 120 } |
127 | 121 |
128 c1, err := net.ListenPacket(tt.net, tt.addr1) | 122 c1, err := net.ListenPacket(tt.net, tt.addr1) |
129 if err != nil { | 123 if err != nil { |
130 » » » t.Errorf("net.ListenPacket failed: %v", err) | 124 » » » t.Fatalf("net.ListenPacket failed: %v", err) |
131 » » » return | |
132 } | 125 } |
133 c1.LocalAddr() | 126 c1.LocalAddr() |
134 c1.SetDeadline(time.Now().Add(100 * time.Millisecond)) | 127 c1.SetDeadline(time.Now().Add(100 * time.Millisecond)) |
135 c1.SetReadDeadline(time.Now().Add(100 * time.Millisecond)) | 128 c1.SetReadDeadline(time.Now().Add(100 * time.Millisecond)) |
136 c1.SetWriteDeadline(time.Now().Add(100 * time.Millisecond)) | 129 c1.SetWriteDeadline(time.Now().Add(100 * time.Millisecond)) |
137 defer c1.Close() | 130 defer c1.Close() |
138 | 131 |
139 c2, err := net.Dial(tt.net, c1.LocalAddr().String()) | 132 c2, err := net.Dial(tt.net, c1.LocalAddr().String()) |
140 if err != nil { | 133 if err != nil { |
141 » » » t.Errorf("net.Dial failed: %v", err) | 134 » » » t.Fatalf("net.Dial failed: %v", err) |
142 » » » return | |
143 } | 135 } |
144 c2.LocalAddr() | 136 c2.LocalAddr() |
145 c2.RemoteAddr() | 137 c2.RemoteAddr() |
146 c2.SetDeadline(time.Now().Add(100 * time.Millisecond)) | 138 c2.SetDeadline(time.Now().Add(100 * time.Millisecond)) |
147 c2.SetReadDeadline(time.Now().Add(100 * time.Millisecond)) | 139 c2.SetReadDeadline(time.Now().Add(100 * time.Millisecond)) |
148 c2.SetWriteDeadline(time.Now().Add(100 * time.Millisecond)) | 140 c2.SetWriteDeadline(time.Now().Add(100 * time.Millisecond)) |
149 defer c2.Close() | 141 defer c2.Close() |
150 | 142 |
151 if _, err := c2.Write(wb); err != nil { | 143 if _, err := c2.Write(wb); err != nil { |
152 » » » t.Errorf("net.Conn.Write failed: %v", err) | 144 » » » t.Fatalf("net.Conn.Write failed: %v", err) |
153 » » » return | |
154 } | 145 } |
155 rb1 := make([]byte, 128) | 146 rb1 := make([]byte, 128) |
156 if _, _, err := c1.ReadFrom(rb1); err != nil { | 147 if _, _, err := c1.ReadFrom(rb1); err != nil { |
157 » » » t.Errorf("net.PacetConn.ReadFrom failed: %v", err) | 148 » » » t.Fatalf("net.PacetConn.ReadFrom failed: %v", err) |
158 » » » return | |
159 } | 149 } |
160 var dst net.Addr | 150 var dst net.Addr |
161 if netstr[0] == "ip" { | 151 if netstr[0] == "ip" { |
162 dst = &net.IPAddr{IP: net.IPv4(127, 0, 0, 1)} | 152 dst = &net.IPAddr{IP: net.IPv4(127, 0, 0, 1)} |
163 } else { | 153 } else { |
164 dst = c2.LocalAddr() | 154 dst = c2.LocalAddr() |
165 } | 155 } |
166 if _, err := c1.WriteTo(wb, dst); err != nil { | 156 if _, err := c1.WriteTo(wb, dst); err != nil { |
167 » » » t.Errorf("net.PacketConn.WriteTo failed: %v", err) | 157 » » » t.Fatalf("net.PacketConn.WriteTo failed: %v", err) |
168 » » » return | |
169 } | 158 } |
170 rb2 := make([]byte, 128) | 159 rb2 := make([]byte, 128) |
171 if _, err := c2.Read(rb2); err != nil { | 160 if _, err := c2.Read(rb2); err != nil { |
172 » » » t.Errorf("net.Conn.Read failed: %v", err) | 161 » » » t.Fatalf("net.Conn.Read failed: %v", err) |
173 » » » return | |
174 } | 162 } |
175 } | 163 } |
176 } | 164 } |
LEFT | RIGHT |