OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / golang.org / x / net / internal / socket / socket_test.go
diff --git a/vendor/golang.org/x/net/internal/socket/socket_test.go b/vendor/golang.org/x/net/internal/socket/socket_test.go
new file mode 100644 (file)
index 0000000..bf3751b
--- /dev/null
@@ -0,0 +1,46 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows
+
+package socket_test
+
+import (
+       "net"
+       "runtime"
+       "syscall"
+       "testing"
+
+       "golang.org/x/net/internal/nettest"
+       "golang.org/x/net/internal/socket"
+)
+
+func TestSocket(t *testing.T) {
+       t.Run("Option", func(t *testing.T) {
+               testSocketOption(t, &socket.Option{Level: syscall.SOL_SOCKET, Name: syscall.SO_RCVBUF, Len: 4})
+       })
+}
+
+func testSocketOption(t *testing.T, so *socket.Option) {
+       c, err := nettest.NewLocalPacketListener("udp")
+       if err != nil {
+               t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+       }
+       defer c.Close()
+       cc, err := socket.NewConn(c.(net.Conn))
+       if err != nil {
+               t.Fatal(err)
+       }
+       const N = 2048
+       if err := so.SetInt(cc, N); err != nil {
+               t.Fatal(err)
+       }
+       n, err := so.GetInt(cc)
+       if err != nil {
+               t.Fatal(err)
+       }
+       if n < N {
+               t.Fatalf("got %d; want greater than or equal to %d", n, N)
+       }
+}