mirror of
https://github.com/golang/go.git
synced 2025-05-05 15:43:04 +00:00
internal/poll: remove outdated tests
TestFileFdsAreInitialised and TestSerialFdsAreInitialised were added to ensure handles passed to os.NewFile were not added to the runtime poller. This used to be problematic because the poller could crash if an external I/O event was received (see #21172). This is not an issue anymore since CL 482495 and #19098. Change-Id: I292ceae27724fefe6f438a398ebfe351dd5231d1 Reviewed-on: https://go-review.googlesource.com/c/go/+/665315 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Alex Brainman <alex.brainman@gmail.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Damien Neil <dneil@google.com>
This commit is contained in:
parent
05ed8a00e0
commit
b89988c5ca
@ -20,77 +20,6 @@ func init() {
|
|||||||
poll.InitWSA()
|
poll.InitWSA()
|
||||||
}
|
}
|
||||||
|
|
||||||
// checkFileIsNotPartOfNetpoll verifies that f is not managed by netpoll.
|
|
||||||
func checkFileIsNotPartOfNetpoll(t *testing.T, f *os.File) {
|
|
||||||
t.Helper()
|
|
||||||
sc, err := f.SyscallConn()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
if err := sc.Control(func(fd uintptr) {
|
|
||||||
// Only try to associate the file with an IOCP if the handle is opened for overlapped I/O,
|
|
||||||
// else the association will always fail.
|
|
||||||
overlapped, err := windows.IsNonblock(syscall.Handle(fd))
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v fd=%v: %v", f.Name(), fd, err)
|
|
||||||
}
|
|
||||||
if overlapped {
|
|
||||||
// If the file is part of netpoll, then associating it with another IOCP should fail.
|
|
||||||
if _, err := windows.CreateIoCompletionPort(syscall.Handle(fd), 0, 0, 1); err != nil {
|
|
||||||
t.Fatalf("%v fd=%v: is part of netpoll, but should not be: %v", f.Name(), fd, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}); err != nil {
|
|
||||||
t.Fatalf("%v fd=%v: is not initialized", f.Name(), f.Fd())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestFileFdsAreInitialised(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
exe, err := os.Executable()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
f, err := os.Open(exe)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
defer f.Close()
|
|
||||||
|
|
||||||
checkFileIsNotPartOfNetpoll(t, f)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSerialFdsAreInitialised(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
for _, name := range []string{"COM1", "COM2", "COM3", "COM4"} {
|
|
||||||
t.Run(name, func(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
h, err := syscall.CreateFile(syscall.StringToUTF16Ptr(name),
|
|
||||||
syscall.GENERIC_READ|syscall.GENERIC_WRITE,
|
|
||||||
0,
|
|
||||||
nil,
|
|
||||||
syscall.OPEN_EXISTING,
|
|
||||||
syscall.FILE_ATTRIBUTE_NORMAL|syscall.FILE_FLAG_OVERLAPPED,
|
|
||||||
0)
|
|
||||||
if err != nil {
|
|
||||||
if errno, ok := err.(syscall.Errno); ok {
|
|
||||||
switch errno {
|
|
||||||
case syscall.ERROR_FILE_NOT_FOUND,
|
|
||||||
syscall.ERROR_ACCESS_DENIED:
|
|
||||||
t.Log("Skipping: ", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
f := os.NewFile(uintptr(h), name)
|
|
||||||
defer f.Close()
|
|
||||||
|
|
||||||
checkFileIsNotPartOfNetpoll(t, f)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestWSASocketConflict(t *testing.T) {
|
func TestWSASocketConflict(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
s, err := windows.WSASocket(syscall.AF_INET, syscall.SOCK_STREAM, syscall.IPPROTO_TCP, nil, 0, windows.WSA_FLAG_OVERLAPPED)
|
s, err := windows.WSASocket(syscall.AF_INET, syscall.SOCK_STREAM, syscall.IPPROTO_TCP, nil, 0, windows.WSA_FLAG_OVERLAPPED)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user