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 }