unix: use same TestSelect on all Unices
Also change t.Error messages to use "got foo, expected bar" notation.
Change-Id: Ia0b452f96b08cbb69a0b64cc2a467b5cf94e72da
Reviewed-on: https://go-review.googlesource.com/c/sys/+/207858
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/unix/syscall_aix_test.go b/unix/syscall_aix_test.go
index 7563dc2..789f394 100644
--- a/unix/syscall_aix_test.go
+++ b/unix/syscall_aix_test.go
@@ -123,26 +123,6 @@
}
}
-func TestSelect(t *testing.T) {
- _, err := unix.Select(0, nil, nil, nil, &unix.Timeval{Sec: 0, Usec: 0})
- if err != nil {
- t.Fatalf("Select: %v", err)
- }
-
- dur := 150 * time.Millisecond
- tv := unix.NsecToTimeval(int64(dur))
- start := time.Now()
- _, err = unix.Select(0, nil, nil, nil, &tv)
- took := time.Since(start)
- if err != nil {
- t.Fatalf("Select: %v", err)
- }
-
- if took < dur {
- t.Errorf("Select: timeout should have been at least %v, got %v", dur, took)
- }
-}
-
func TestPselect(t *testing.T) {
if runtime.GOARCH == "ppc64" {
t.Skip("pselect issue with structure timespec on AIX 7.2 tl0, skipping test")
diff --git a/unix/syscall_bsd_test.go b/unix/syscall_bsd_test.go
index bee9295..b552324 100644
--- a/unix/syscall_bsd_test.go
+++ b/unix/syscall_bsd_test.go
@@ -7,11 +7,9 @@
package unix_test
import (
- "os"
"os/exec"
"runtime"
"testing"
- "time"
"golang.org/x/sys/unix"
)
@@ -48,57 +46,6 @@
}
}
-func TestSelect(t *testing.T) {
- n, err := unix.Select(0, nil, nil, nil, &unix.Timeval{Sec: 0, Usec: 0})
- if err != nil {
- t.Fatalf("Select: %v", err)
- }
- if n != 0 {
- t.Fatalf("Select: expected 0 ready file descriptors, got %v", n)
- }
-
- dur := 250 * time.Millisecond
- tv := unix.NsecToTimeval(int64(dur))
- start := time.Now()
- n, err = unix.Select(0, nil, nil, nil, &tv)
- took := time.Since(start)
- if err != nil {
- t.Fatalf("Select: %v", err)
- }
- if n != 0 {
- t.Fatalf("Select: expected 0 ready file descriptors, got %v", n)
- }
-
- // On some BSDs the actual timeout might also be slightly less than the requested.
- // Add an acceptable margin to avoid flaky tests.
- if took < dur*2/3 {
- t.Errorf("Select: timeout should have been at least %v, got %v", dur, took)
- }
-
- rr, ww, err := os.Pipe()
- if err != nil {
- t.Fatal(err)
- }
- defer rr.Close()
- defer ww.Close()
-
- if _, err := ww.Write([]byte("HELLO GOPHER")); err != nil {
- t.Fatal(err)
- }
-
- rFdSet := &unix.FdSet{}
- fd := int(rr.Fd())
- rFdSet.Set(fd)
-
- n, err = unix.Select(fd+1, rFdSet, nil, nil, nil)
- if err != nil {
- t.Fatalf("Select: %v", err)
- }
- if n != 1 {
- t.Fatalf("Select: expected 1 ready file descriptors, got %v", n)
- }
-}
-
func TestSysctlRaw(t *testing.T) {
if runtime.GOOS == "openbsd" {
t.Skip("kern.proc.pid does not exist on OpenBSD")
diff --git a/unix/syscall_linux_test.go b/unix/syscall_linux_test.go
index 01a1028..cc3af9f 100644
--- a/unix/syscall_linux_test.go
+++ b/unix/syscall_linux_test.go
@@ -237,55 +237,6 @@
}
}
-func TestSelect(t *testing.T) {
- n, err := unix.Select(0, nil, nil, nil, &unix.Timeval{Sec: 0, Usec: 0})
- if err != nil {
- t.Fatalf("Select: %v", err)
- }
- if n != 0 {
- t.Fatalf("Select: expected 0 ready file descriptors, got %v", n)
- }
-
- dur := 150 * time.Millisecond
- tv := unix.NsecToTimeval(int64(dur))
- start := time.Now()
- n, err = unix.Select(0, nil, nil, nil, &tv)
- took := time.Since(start)
- if err != nil {
- t.Fatalf("Select: %v", err)
- }
- if n != 0 {
- t.Fatalf("Select: expected 0 ready file descriptors, got %v", n)
- }
-
- if took < dur {
- t.Errorf("Select: timeout should have been at least %v, got %v", dur, took)
- }
-
- rr, ww, err := os.Pipe()
- if err != nil {
- t.Fatal(err)
- }
- defer rr.Close()
- defer ww.Close()
-
- if _, err := ww.Write([]byte("HELLO GOPHER")); err != nil {
- t.Fatal(err)
- }
-
- rFdSet := &unix.FdSet{}
- fd := int(rr.Fd())
- rFdSet.Set(fd)
-
- n, err = unix.Select(fd+1, rFdSet, nil, nil, nil)
- if err != nil {
- t.Fatalf("Select: %v", err)
- }
- if n != 1 {
- t.Fatalf("Select: expected 1 ready file descriptors, got %v", n)
- }
-}
-
func TestPselect(t *testing.T) {
for {
_, err := unix.Pselect(0, nil, nil, nil, &unix.Timespec{Sec: 0, Nsec: 0}, nil)
diff --git a/unix/syscall_solaris_test.go b/unix/syscall_solaris_test.go
index 9598c22..d3e7d2b 100644
--- a/unix/syscall_solaris_test.go
+++ b/unix/syscall_solaris_test.go
@@ -7,63 +7,12 @@
package unix_test
import (
- "os"
"os/exec"
"testing"
- "time"
"golang.org/x/sys/unix"
)
-func TestSelect(t *testing.T) {
- n, err := unix.Select(0, nil, nil, nil, &unix.Timeval{Sec: 0, Usec: 0})
- if err != nil {
- t.Fatalf("Select: %v", err)
- }
- if n != 0 {
- t.Fatalf("Select: expected 0 ready file descriptors, got %v", n)
- }
-
- dur := 150 * time.Millisecond
- tv := unix.NsecToTimeval(int64(dur))
- start := time.Now()
- n, err = unix.Select(0, nil, nil, nil, &tv)
- took := time.Since(start)
- if err != nil {
- t.Fatalf("Select: %v", err)
- }
- if n != 0 {
- t.Fatalf("Select: expected 0 ready file descriptors, got %v", n)
- }
-
- if took < dur {
- t.Errorf("Select: timeout should have been at least %v, got %v", dur, took)
- }
-
- rr, ww, err := os.Pipe()
- if err != nil {
- t.Fatal(err)
- }
- defer rr.Close()
- defer ww.Close()
-
- if _, err := ww.Write([]byte("HELLO GOPHER")); err != nil {
- t.Fatal(err)
- }
-
- rFdSet := &unix.FdSet{}
- fd := int(rr.Fd())
- rFdSet.Set(fd)
-
- n, err = unix.Select(fd+1, rFdSet, nil, nil, nil)
- if err != nil {
- t.Fatalf("Select: %v", err)
- }
- if n != 1 {
- t.Fatalf("Select: expected 1 ready file descriptors, got %v", n)
- }
-}
-
func TestStatvfs(t *testing.T) {
if err := unix.Statvfs("", nil); err == nil {
t.Fatal(`Statvfs("") expected failure`)
diff --git a/unix/syscall_unix_test.go b/unix/syscall_unix_test.go
index d01964b..bc76875 100644
--- a/unix/syscall_unix_test.go
+++ b/unix/syscall_unix_test.go
@@ -512,6 +512,57 @@
}
}
+func TestSelect(t *testing.T) {
+ n, err := unix.Select(0, nil, nil, nil, &unix.Timeval{Sec: 0, Usec: 0})
+ if err != nil {
+ t.Fatalf("Select: %v", err)
+ }
+ if n != 0 {
+ t.Fatalf("Select: got %v ready file descriptors, expected 0", n)
+ }
+
+ dur := 250 * time.Millisecond
+ tv := unix.NsecToTimeval(int64(dur))
+ start := time.Now()
+ n, err = unix.Select(0, nil, nil, nil, &tv)
+ took := time.Since(start)
+ if err != nil {
+ t.Fatalf("Select: %v", err)
+ }
+ if n != 0 {
+ t.Fatalf("Select: got %v ready file descriptors, expected 0", n)
+ }
+
+ // On some BSDs the actual timeout might also be slightly less than the requested.
+ // Add an acceptable margin to avoid flaky tests.
+ if took < dur*2/3 {
+ t.Errorf("Select: got %v timeout, expected at least %v", took, dur)
+ }
+
+ rr, ww, err := os.Pipe()
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer rr.Close()
+ defer ww.Close()
+
+ if _, err := ww.Write([]byte("HELLO GOPHER")); err != nil {
+ t.Fatal(err)
+ }
+
+ rFdSet := &unix.FdSet{}
+ fd := int(rr.Fd())
+ rFdSet.Set(fd)
+
+ n, err = unix.Select(fd+1, rFdSet, nil, nil, nil)
+ if err != nil {
+ t.Fatalf("Select: %v", err)
+ }
+ if n != 1 {
+ t.Fatalf("Select: got %v ready file descriptors, expected 1", n)
+ }
+}
+
func TestGetwd(t *testing.T) {
fd, err := os.Open(".")
if err != nil {