Skip to content

Commit

Permalink
fix: epoll tests
Browse files Browse the repository at this point in the history
  • Loading branch information
joway committed Aug 2, 2023
1 parent bd58bbd commit 5e42df9
Showing 1 changed file with 24 additions and 15 deletions.
39 changes: 24 additions & 15 deletions poll_default_linux_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func TestEpollEvent(t *testing.T) {
MustNil(t, err)
_, err = syscall.Write(wfd, send)
MustNil(t, err)
n, err := EpollWait(epollfd, events, -1)
n, err := epollWaitUntil(epollfd, events, -1)
MustNil(t, err)
Equal(t, n, 1)
Equal(t, events[0].data, eventdata2)
Expand All @@ -80,7 +80,7 @@ func TestEpollEvent(t *testing.T) {
MustNil(t, err)
_, err = syscall.Write(wfd, send)
MustNil(t, err)
n, err = EpollWait(epollfd, events, -1)
n, err = epollWaitUntil(epollfd, events, -1)
MustNil(t, err)
Equal(t, events[0].data, eventdata3)
_, err = syscall.Read(rfd, recv)
Expand Down Expand Up @@ -112,31 +112,31 @@ func TestEpollWait(t *testing.T) {
}
err = EpollCtl(epollfd, unix.EPOLL_CTL_ADD, rfd, event)
MustNil(t, err)
_, err = EpollWait(epollfd, events, -1)
_, err = epollWaitUntil(epollfd, events, -1)
MustNil(t, err)
Assert(t, events[0].events&syscall.EPOLLIN == 0)
Assert(t, events[0].events&syscall.EPOLLOUT != 0)

// EPOLL: readable
_, err = syscall.Write(wfd, send)
MustNil(t, err)
_, err = EpollWait(epollfd, events, -1)
_, err = epollWaitUntil(epollfd, events, -1)
MustNil(t, err)
Assert(t, events[0].events&syscall.EPOLLIN != 0)
Assert(t, events[0].events&syscall.EPOLLOUT != 0)
_, err = syscall.Read(rfd, recv)
MustTrue(t, err == nil && string(recv) == string(send))

// EPOLL: read finished
_, err = EpollWait(epollfd, events, -1)
_, err = epollWaitUntil(epollfd, events, -1)
MustNil(t, err)
Assert(t, events[0].events&syscall.EPOLLIN == 0)
Assert(t, events[0].events&syscall.EPOLLOUT != 0)

// EPOLL: close peer fd
err = syscall.Close(wfd)
MustNil(t, err)
_, err = EpollWait(epollfd, events, -1)
_, err = epollWaitUntil(epollfd, events, -1)
MustNil(t, err)
Assert(t, events[0].events&syscall.EPOLLIN != 0)
Assert(t, events[0].events&syscall.EPOLLOUT != 0)
Expand All @@ -149,7 +149,7 @@ func TestEpollWait(t *testing.T) {
err = EpollCtl(epollfd, unix.EPOLL_CTL_ADD, rfd2, event)
err = syscall.Close(rfd2)
MustNil(t, err)
_, err = EpollWait(epollfd, events, -1)
_, err = epollWaitUntil(epollfd, events, -1)
MustNil(t, err)
Assert(t, events[0].events&syscall.EPOLLIN != 0)
Assert(t, events[0].events&syscall.EPOLLOUT != 0)
Expand All @@ -174,7 +174,7 @@ func TestEpollETClose(t *testing.T) {

// EPOLL: init state
err = EpollCtl(epollfd, unix.EPOLL_CTL_ADD, rfd, event)
_, err = EpollWait(epollfd, events, -1)
_, err = epollWaitUntil(epollfd, events, -1)
MustNil(t, err)
Assert(t, events[0].events&syscall.EPOLLIN == 0)
Assert(t, events[0].events&syscall.EPOLLOUT != 0)
Expand All @@ -185,7 +185,7 @@ func TestEpollETClose(t *testing.T) {
// nothing will happen
err = syscall.Close(rfd)
MustNil(t, err)
n, err := EpollWait(epollfd, events, 100)
n, err := epollWaitUntil(epollfd, events, 100)
MustNil(t, err)
Assert(t, n == 0, n)
err = syscall.Close(wfd)
Expand All @@ -197,7 +197,7 @@ func TestEpollETClose(t *testing.T) {
err = EpollCtl(epollfd, unix.EPOLL_CTL_ADD, rfd, event)
err = syscall.Close(wfd)
MustNil(t, err)
n, err = EpollWait(epollfd, events, 100)
n, err = epollWaitUntil(epollfd, events, 100)
MustNil(t, err)
Assert(t, n == 1, n)
Assert(t, events[0].events&syscall.EPOLLIN != 0)
Expand Down Expand Up @@ -231,7 +231,7 @@ func TestEpollETDel(t *testing.T) {
MustNil(t, err)
_, err = syscall.Write(wfd, send)
MustNil(t, err)
_, err = EpollWait(epollfd, events, 100)
_, err = epollWaitUntil(epollfd, events, 100)
MustNil(t, err)
Assert(t, events[0].events&syscall.EPOLLIN == 0)
Assert(t, events[0].events&syscall.EPOLLRDHUP == 0)
Expand Down Expand Up @@ -272,7 +272,7 @@ func TestEpollConnectSameFD(t *testing.T) {
MustNil(t, err)
err = syscall.Connect(fd1, &addr)
t.Log(err)
_, err = EpollWait(epollfd, events, -1)
_, err = epollWaitUntil(epollfd, events, -1)
MustNil(t, err)
Assert(t, events[0].events&syscall.EPOLLOUT != 0)
Assert(t, events[0].events&syscall.EPOLLRDHUP == 0)
Expand All @@ -293,7 +293,7 @@ func TestEpollConnectSameFD(t *testing.T) {
MustNil(t, err)
err = syscall.Connect(fd2, &addr)
t.Log(err)
_, err = EpollWait(epollfd, events, -1)
_, err = epollWaitUntil(epollfd, events, -1)
MustNil(t, err)
Assert(t, events[0].events&syscall.EPOLLOUT != 0)
Assert(t, events[0].events&syscall.EPOLLRDHUP == 0)
Expand All @@ -314,7 +314,7 @@ func TestEpollConnectSameFD(t *testing.T) {
MustNil(t, err)
err = syscall.Connect(fd3, &addr)
t.Log(err)
_, err = EpollWait(epollfd, events, -1)
_, err = epollWaitUntil(epollfd, events, -1)
MustNil(t, err)
Assert(t, events[0].events&syscall.EPOLLOUT != 0)
Assert(t, events[0].events&syscall.EPOLLRDHUP == 0)
Expand All @@ -324,7 +324,16 @@ func TestEpollConnectSameFD(t *testing.T) {
MustNil(t, err)
err = syscall.Close(fd3) // close fd3
MustNil(t, err)
n, err := EpollWait(epollfd, events, 100)
n, err := epollWaitUntil(epollfd, events, 100)
MustNil(t, err)
Assert(t, n == 0)
}

func epollWaitUntil(epfd int, events []epollevent, msec int) (n int, err error) {
WAIT:
n, err = EpollWait(epfd, events, msec)
if err == syscall.EINTR {
goto WAIT
}
return n, err
}

0 comments on commit 5e42df9

Please sign in to comment.