1 // Copyright 2011 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.
15 // The full stack test cases for IPConn have been moved to the
17 // golang.org/x/net/ipv4
18 // golang.org/x/net/ipv6
19 // golang.org/x/net/icmp
21 var fileConnTests
= []struct {
30 func TestFileConn(t
*testing
.T
) {
32 case "nacl", "plan9", "windows":
33 t
.Skipf("not supported on %s", runtime
.GOOS
)
36 for _
, tt
:= range fileConnTests
{
37 if !testableNetwork(tt
.network
) {
38 t
.Logf("skipping %s test", tt
.network
)
42 var network
, address
string
45 c
, err
:= newLocalPacketListener(tt
.network
)
50 network
= c
.LocalAddr().Network()
51 address
= c
.LocalAddr().String()
53 handler
:= func(ls
*localServer
, ln Listener
) {
62 ls
, err
:= newLocalServer(tt
.network
)
67 if err
:= ls
.buildup(handler
); err
!= nil {
70 network
= ls
.Listener
.Addr().Network()
71 address
= ls
.Listener
.Addr().String()
74 c1
, err
:= Dial(network
, address
)
76 if perr
:= parseDialError(err
); perr
!= nil {
81 addr
:= c1
.LocalAddr()
84 switch c1
:= c1
.(type) {
92 if err
:= c1
.Close(); err
!= nil {
93 if perr
:= parseCloseError(err
, false); perr
!= nil {
99 if perr
:= parseCommonError(err
); perr
!= nil {
105 c2
, err
:= FileConn(f
)
106 if err
:= f
.Close(); err
!= nil {
110 if perr
:= parseCommonError(err
); perr
!= nil {
117 if _
, err
:= c2
.Write([]byte("FILECONN TEST")); err
!= nil {
118 if perr
:= parseWriteError(err
); perr
!= nil {
123 if !reflect
.DeepEqual(c2
.LocalAddr(), addr
) {
124 t
.Fatalf("got %#v; want %#v", c2
.LocalAddr(), addr
)
129 var fileListenerTests
= []struct {
137 func TestFileListener(t
*testing
.T
) {
138 switch runtime
.GOOS
{
139 case "nacl", "plan9", "windows":
140 t
.Skipf("not supported on %s", runtime
.GOOS
)
143 for _
, tt
:= range fileListenerTests
{
144 if !testableNetwork(tt
.network
) {
145 t
.Logf("skipping %s test", tt
.network
)
149 ln1
, err
:= newLocalListener(tt
.network
)
154 case "unix", "unixpacket":
155 defer os
.Remove(ln1
.Addr().String())
160 switch ln1
:= ln1
.(type) {
167 case "unix", "unixpacket":
168 defer ln1
.Close() // UnixListener.Close calls syscall.Unlink internally
170 if err
:= ln1
.Close(); err
!= nil {
175 if perr
:= parseCommonError(err
); perr
!= nil {
181 ln2
, err
:= FileListener(f
)
182 if err
:= f
.Close(); err
!= nil {
186 if perr
:= parseCommonError(err
); perr
!= nil {
193 var wg sync
.WaitGroup
197 c
, err
:= Dial(ln2
.Addr().Network(), ln2
.Addr().String())
199 if perr
:= parseDialError(err
); perr
!= nil {
207 c
, err
:= ln2
.Accept()
209 if perr
:= parseAcceptError(err
); perr
!= nil {
216 if !reflect
.DeepEqual(ln2
.Addr(), addr
) {
217 t
.Fatalf("got %#v; want %#v", ln2
.Addr(), addr
)
222 var filePacketConnTests
= []struct {
229 func TestFilePacketConn(t
*testing
.T
) {
230 switch runtime
.GOOS
{
231 case "nacl", "plan9", "windows":
232 t
.Skipf("not supported on %s", runtime
.GOOS
)
235 for _
, tt
:= range filePacketConnTests
{
236 if !testableNetwork(tt
.network
) {
237 t
.Logf("skipping %s test", tt
.network
)
241 c1
, err
:= newLocalPacketListener(tt
.network
)
247 defer os
.Remove(c1
.LocalAddr().String())
249 addr
:= c1
.LocalAddr()
252 switch c1
:= c1
.(type) {
258 if err
:= c1
.Close(); err
!= nil {
259 if perr
:= parseCloseError(err
, false); perr
!= nil {
265 if perr
:= parseCommonError(err
); perr
!= nil {
271 c2
, err
:= FilePacketConn(f
)
272 if err
:= f
.Close(); err
!= nil {
276 if perr
:= parseCommonError(err
); perr
!= nil {
283 if _
, err
:= c2
.WriteTo([]byte("FILEPACKETCONN TEST"), addr
); err
!= nil {
284 if perr
:= parseWriteError(err
); perr
!= nil {
289 if !reflect
.DeepEqual(c2
.LocalAddr(), addr
) {
290 t
.Fatalf("got %#v; want %#v", c2
.LocalAddr(), addr
)