diff options
author | somov <somov@yandex-team.ru> | 2022-02-10 16:45:49 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:49 +0300 |
commit | 7489e4682331202b9c7d863c0898eb83d7b12c2b (patch) | |
tree | 9142afc54d335ea52910662635b898e79e192e49 /util/network/socket_ut.cpp | |
parent | a5950576e397b1909261050b8c7da16db58f10b1 (diff) | |
download | ydb-7489e4682331202b9c7d863c0898eb83d7b12c2b.tar.gz |
Restoring authorship annotation for <somov@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'util/network/socket_ut.cpp')
-rw-r--r-- | util/network/socket_ut.cpp | 150 |
1 files changed, 75 insertions, 75 deletions
diff --git a/util/network/socket_ut.cpp b/util/network/socket_ut.cpp index f27a7a32dd..6b20e11f70 100644 --- a/util/network/socket_ut.cpp +++ b/util/network/socket_ut.cpp @@ -52,7 +52,7 @@ void TSockTest::TestSock() { UNIT_ASSERT(!si.ReadLine().empty()); } - + void TSockTest::TestTimeout() { static const int timeout = 1000; i64 startTime = millisec(); @@ -230,112 +230,112 @@ private: SOCKET StartServerSocket(ui16 port, int backlog); SOCKET StartClientSocket(ui32 ip, ui16 port); SOCKET AcceptConnection(SOCKET serverSocket); -}; - +}; + UNIT_TEST_SUITE_REGISTRATION(TPollTest); - -sockaddr_in TPollTest::GetAddress(ui32 ip, ui16 port) { - struct sockaddr_in addr; - memset(&addr, 0, sizeof(addr)); - addr.sin_family = AF_INET; - addr.sin_port = htons(port); - addr.sin_addr.s_addr = htonl(ip); - return addr; -} - -SOCKET TPollTest::CreateSocket() { - SOCKET s = socket(AF_INET, SOCK_STREAM, 0); + +sockaddr_in TPollTest::GetAddress(ui32 ip, ui16 port) { + struct sockaddr_in addr; + memset(&addr, 0, sizeof(addr)); + addr.sin_family = AF_INET; + addr.sin_port = htons(port); + addr.sin_addr.s_addr = htonl(ip); + return addr; +} + +SOCKET TPollTest::CreateSocket() { + SOCKET s = socket(AF_INET, SOCK_STREAM, 0); if (s == INVALID_SOCKET) { ythrow yexception() << "Can not create socket (" << LastSystemErrorText() << ")"; } - return s; -} - -SOCKET TPollTest::StartServerSocket(ui16 port, int backlog) { - TSocketHolder s(CreateSocket()); - sockaddr_in addr = GetAddress(ntohl(INADDR_ANY), port); + return s; +} + +SOCKET TPollTest::StartServerSocket(ui16 port, int backlog) { + TSocketHolder s(CreateSocket()); + sockaddr_in addr = GetAddress(ntohl(INADDR_ANY), port); if (bind(s, (sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR) { ythrow yexception() << "Can not bind server socket (" << LastSystemErrorText() << ")"; } if (listen(s, backlog) == SOCKET_ERROR) { ythrow yexception() << "Can not listen on server socket (" << LastSystemErrorText() << ")"; } - return s.Release(); -} - -SOCKET TPollTest::StartClientSocket(ui32 ip, ui16 port) { - TSocketHolder s(CreateSocket()); - sockaddr_in addr = GetAddress(ip, port); + return s.Release(); +} + +SOCKET TPollTest::StartClientSocket(ui32 ip, ui16 port) { + TSocketHolder s(CreateSocket()); + sockaddr_in addr = GetAddress(ip, port); if (connect(s, (sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR) { ythrow yexception() << "Can not connect client socket (" << LastSystemErrorText() << ")"; } - return s.Release(); -} - -SOCKET TPollTest::AcceptConnection(SOCKET serverSocket) { + return s.Release(); +} + +SOCKET TPollTest::AcceptConnection(SOCKET serverSocket) { SOCKET connectedSocket = accept(serverSocket, nullptr, nullptr); if (connectedSocket == INVALID_SOCKET) { ythrow yexception() << "Can not accept connection on server socket (" << LastSystemErrorText() << ")"; } - return connectedSocket; -} - -void TPollTest::TestPollInOut() { -#ifdef _win_ - const size_t socketCount = 1000; - - ui16 port = static_cast<ui16>(1300 + rand() % 97); - TSocketHolder serverSocket = StartServerSocket(port, socketCount); - - ui32 localIp = ntohl(inet_addr("127.0.0.1")); - + return connectedSocket; +} + +void TPollTest::TestPollInOut() { +#ifdef _win_ + const size_t socketCount = 1000; + + ui16 port = static_cast<ui16>(1300 + rand() % 97); + TSocketHolder serverSocket = StartServerSocket(port, socketCount); + + ui32 localIp = ntohl(inet_addr("127.0.0.1")); + TVector<TSimpleSharedPtr<TSocketHolder>> clientSockets; TVector<TSimpleSharedPtr<TSocketHolder>> connectedSockets; TVector<pollfd> fds; - - for (size_t i = 0; i < socketCount; ++i) { + + for (size_t i = 0; i < socketCount; ++i) { TSimpleSharedPtr<TSocketHolder> clientSocket(new TSocketHolder(StartClientSocket(localIp, port))); - clientSockets.push_back(clientSocket); - - if (i % 5 == 0 || i % 5 == 2) { - char buffer = 'c'; - if (send(*clientSocket, &buffer, 1, 0) == -1) + clientSockets.push_back(clientSocket); + + if (i % 5 == 0 || i % 5 == 2) { + char buffer = 'c'; + if (send(*clientSocket, &buffer, 1, 0) == -1) ythrow yexception() << "Can not send (" << LastSystemErrorText() << ")"; - } - + } + TSimpleSharedPtr<TSocketHolder> connectedSocket(new TSocketHolder(AcceptConnection(serverSocket))); - connectedSockets.push_back(connectedSocket); - - if (i % 5 == 2 || i % 5 == 3) { - closesocket(*clientSocket); - shutdown(*clientSocket, SD_BOTH); - } - } - + connectedSockets.push_back(connectedSocket); + + if (i % 5 == 2 || i % 5 == 3) { + closesocket(*clientSocket); + shutdown(*clientSocket, SD_BOTH); + } + } + int expectedCount = 0; for (size_t i = 0; i < connectedSockets.size(); ++i) { - pollfd fd = {(i % 5 == 4) ? INVALID_SOCKET : static_cast<SOCKET>(*connectedSockets[i]), POLLIN | POLLOUT, 0}; - fds.push_back(fd); + pollfd fd = {(i % 5 == 4) ? INVALID_SOCKET : static_cast<SOCKET>(*connectedSockets[i]), POLLIN | POLLOUT, 0}; + fds.push_back(fd); if (i % 5 != 4) ++expectedCount; - } - - int polledCount = poll(&fds[0], fds.size(), INFTIM); + } + + int polledCount = poll(&fds[0], fds.size(), INFTIM); UNIT_ASSERT_EQUAL(expectedCount, polledCount); - - for (size_t i = 0; i < connectedSockets.size(); ++i) { + + for (size_t i = 0; i < connectedSockets.size(); ++i) { short revents = fds[i].revents; - if (i % 5 == 0) { + if (i % 5 == 0) { UNIT_ASSERT_EQUAL(static_cast<short>(POLLRDNORM | POLLWRNORM), revents); - } else if (i % 5 == 1) { + } else if (i % 5 == 1) { UNIT_ASSERT_EQUAL(static_cast<short>(POLLOUT | POLLWRNORM), revents); - } else if (i % 5 == 2) { + } else if (i % 5 == 2) { UNIT_ASSERT_EQUAL(static_cast<short>(POLLHUP | POLLRDNORM | POLLWRNORM), revents); - } else if (i % 5 == 3) { + } else if (i % 5 == 3) { UNIT_ASSERT_EQUAL(static_cast<short>(POLLHUP | POLLWRNORM), revents); - } else if (i % 5 == 4) { + } else if (i % 5 == 4) { UNIT_ASSERT_EQUAL(static_cast<short>(POLLNVAL), revents); - } - } -#endif + } + } +#endif } |