aboutsummaryrefslogtreecommitdiffstats
path: root/util/network/socket_ut.cpp
diff options
context:
space:
mode:
authorsomov <somov@yandex-team.ru>2022-02-10 16:45:49 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:45:49 +0300
commit7489e4682331202b9c7d863c0898eb83d7b12c2b (patch)
tree9142afc54d335ea52910662635b898e79e192e49 /util/network/socket_ut.cpp
parenta5950576e397b1909261050b8c7da16db58f10b1 (diff)
downloadydb-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.cpp150
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
}