• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <errno.h>
2 #include <gtest/gtest.h>
3 #include <signal.h>
4 #include <sys/epoll.h>
5 #include <thread>
6 
7 using namespace testing::ext;
8 
9 class LinuxEpollwaitTest : public testing::Test {
SetUp()10     void SetUp() override {}
TearDown()11     void TearDown() override {}
12 };
13 
14 constexpr int WRITE_SIZE = 5;
15 constexpr int MAX_EVENTS = 10;
16 
17 /**
18  * @tc.name: epoll_wait_001
19  * @tc.desc: This test verifies epoll can the wait function correctly wait for events in the epoll instance and return
20  *           the correct results? if the test passes, it indicates that epoll the wait function is functioning properly.
21  * @tc.type: FUNC
22  */
23 HWTEST_F(LinuxEpollwaitTest, epoll_wait_001, TestSize.Level1)
24 {
25     int epollFd = epoll_create(1);
26     ASSERT_NE(epollFd, -1);
27     int fds[2];
28     pipe(fds);
29     epoll_event ev;
30     ev.events = EPOLLIN;
31     ev.data.fd = fds[0];
32     ASSERT_EQ(epoll_ctl(epollFd, EPOLL_CTL_ADD, fds[0], &ev), 0);
__anonfb6d74630102() 33     std::thread writerThread([&]() { write(fds[1], "Hello", WRITE_SIZE); });
34     epoll_event events[MAX_EVENTS];
35     int numEvents = epoll_wait(epollFd, events, MAX_EVENTS, -1);
36     EXPECT_GT(numEvents, 0);
37     writerThread.join();
38     close(epollFd);
39 }