diff --git a/common/cpp/src/system_io/system_io_linux.cpp b/common/cpp/src/system_io/system_io_linux.cpp index 2d36ce58a179e3ef11df62c2387c1eb29b658a8a..be6393f3f1a7e5d0c6af9dfc6d3ff283833965b5 100644 --- a/common/cpp/src/system_io/system_io_linux.cpp +++ b/common/cpp/src/system_io/system_io_linux.cpp @@ -210,7 +210,8 @@ void SystemIO::ApplyNetworkOptions(SocketDescriptor socket_fd, Error* err) const ||*/ setsockopt(socket_fd, SOL_SOCKET, SO_SNDBUF, (char*)&kNetBufferSize, sizeof(kNetBufferSize)) != 0 || - setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(int)) != 0 + setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(int)) != 0 || + setsockopt(socket_fd, SOL_SOCKET, SO_REUSEPORT, &flag, sizeof(int)) != 0 ) { *err = GetLastError(); } diff --git a/receiver/src/main.cpp b/receiver/src/main.cpp index 6c80cec86293f06f900d22aa778f771ce6abf555..c709542ed8f47bfb3a95c774d2dfd1a6eccec557 100644 --- a/receiver/src/main.cpp +++ b/receiver/src/main.cpp @@ -33,7 +33,7 @@ int main (int argc, char* argv[]) { logger->SetLogLevel(config->log_level); static const std::string dataserver_address = "0.0.0.0:" + std::to_string(config->dataserver_listen_port); - asapo::ReceiverDataServer data_server{dataserver_address}; + asapo::ReceiverDataServer data_server{dataserver_address, config->log_level}; std::thread server_thread (&asapo::ReceiverDataServer::Run, &data_server); static const std::string address = "0.0.0.0:" + std::to_string(config->listen_port); diff --git a/receiver/src/receiver_data_server/receiver_data_server.cpp b/receiver/src/receiver_data_server/receiver_data_server.cpp index 65a6b0ee8d796512790fa124401607d3a84680d8..cbc55c3fb2cc3507b59ecc73094ba34983256111 100644 --- a/receiver/src/receiver_data_server/receiver_data_server.cpp +++ b/receiver/src/receiver_data_server/receiver_data_server.cpp @@ -4,8 +4,9 @@ namespace asapo { -ReceiverDataServer::ReceiverDataServer(std::string address) : request_pool__{new RequestPool}, net__{new TcpServer(address)}, +ReceiverDataServer::ReceiverDataServer(std::string address, LogLevel log_level) : request_pool__{new RequestPool}, net__{new TcpServer(address)}, log__{GetDefaultReceiverDataServerLogger()} { + GetDefaultReceiverDataServerLogger()->SetLogLevel(log_level); } void ReceiverDataServer::Run() { diff --git a/receiver/src/receiver_data_server/receiver_data_server.h b/receiver/src/receiver_data_server/receiver_data_server.h index 74a3ce97b8d217ae925fc972fd18deef80d658b4..8366bb048f1c65dc88c35613f5154d1f5505f46a 100644 --- a/receiver/src/receiver_data_server/receiver_data_server.h +++ b/receiver/src/receiver_data_server/receiver_data_server.h @@ -11,7 +11,7 @@ namespace asapo { class ReceiverDataServer { public: - explicit ReceiverDataServer(std::string address); + explicit ReceiverDataServer(std::string address, LogLevel log_level); std::unique_ptr<RequestPool> request_pool__; std::unique_ptr<NetServer> net__; const AbstractLogger* log__; diff --git a/receiver/src/receiver_data_server/tcp_server.cpp b/receiver/src/receiver_data_server/tcp_server.cpp index 61923e006f35e4d2f7327ed8b101b6f6b1c5004c..3dcaf0bb7d625d88565f5d32fd0a3f0a56ff0a8c 100644 --- a/receiver/src/receiver_data_server/tcp_server.cpp +++ b/receiver/src/receiver_data_server/tcp_server.cpp @@ -10,8 +10,7 @@ TcpServer::TcpServer(std::string address) : io__{GenerateDefaultIO()}, log__{Get address_{std::move(address)} {} Error TcpServer::InitializeMasterSocketIfNeeded() const noexcept { - Error - err; + Error err; if (master_socket_ == kDisconnectedSocketDescriptor) { master_socket_ = io__->CreateAndBindIPTCPSocketListener(address_, kMaxPendingConnections, &err); if (!err) { @@ -26,10 +25,6 @@ Error TcpServer::InitializeMasterSocketIfNeeded() const noexcept { ListSocketDescriptors TcpServer::GetActiveSockets(Error* err) const noexcept { std::vector<std::string> new_connections; auto sockets = io__->WaitSocketsActivity(master_socket_, &sockets_to_listen_, &new_connections, err); - if (*err) { - return {}; - } - for (auto& connection : new_connections) { log__->Debug("new connection from " + connection); } @@ -39,8 +34,8 @@ ListSocketDescriptors TcpServer::GetActiveSockets(Error* err) const noexcept { void TcpServer::CloseSocket(SocketDescriptor socket) const noexcept { sockets_to_listen_.erase(std::remove(sockets_to_listen_.begin(), sockets_to_listen_.end(), socket), sockets_to_listen_.end()); - io__->CloseSocket(socket, nullptr); log__->Debug("connection " + io__->AddressFromSocket(socket) + " closed"); + io__->CloseSocket(socket, nullptr); } Request TcpServer::ReadRequest(SocketDescriptor socket, Error* err) const noexcept { @@ -66,6 +61,7 @@ Requests TcpServer::ReadRequests(const ListSocketDescriptors& sockets) const noe if (err) { continue; } + log__->Debug("received request opcode: " + std::to_string(request.header.op_code)+" id: "+std::to_string(request.header.data_id)); requests.emplace_back(std::move(request)); } return requests; diff --git a/receiver/unittests/receiver_data_server/test_receiver_data_server.cpp b/receiver/unittests/receiver_data_server/test_receiver_data_server.cpp index 5cb9bf6812f89b0877d8ebfa488c78718818799a..c3875026eb9ee33d4674566c72a3069ca52173bf 100644 --- a/receiver/unittests/receiver_data_server/test_receiver_data_server.cpp +++ b/receiver/unittests/receiver_data_server/test_receiver_data_server.cpp @@ -35,7 +35,7 @@ using asapo::Error; namespace { TEST(ReceiverDataServer, Constructor) { - ReceiverDataServer data_server{""}; + ReceiverDataServer data_server{"", asapo::LogLevel::Debug}; ASSERT_THAT(dynamic_cast<const asapo::TcpServer*>(data_server.net__.get()), Ne(nullptr)); ASSERT_THAT(dynamic_cast<asapo::RequestPool*>(data_server.request_pool__.get()), Ne(nullptr)); ASSERT_THAT(dynamic_cast<const asapo::AbstractLogger*>(data_server.log__), Ne(nullptr)); @@ -45,7 +45,7 @@ TEST(ReceiverDataServer, Constructor) { class ReceiverDataServerTests : public Test { public: std::string expected_address = "somehost:123"; - ReceiverDataServer data_server{expected_address}; + ReceiverDataServer data_server{expected_address, asapo::LogLevel::Debug}; asapo::MockNetServer mock_net; asapo::MockPool mock_pool; NiceMock<asapo::MockLogger> mock_logger; diff --git a/receiver/unittests/receiver_data_server/test_tcp_server.cpp b/receiver/unittests/receiver_data_server/test_tcp_server.cpp index 9dca74ee995d7dc61ef65543711ace97a5aaaa3d..4ba807b49802ebb924fe4cdcd89ac821235efe59 100644 --- a/receiver/unittests/receiver_data_server/test_tcp_server.cpp +++ b/receiver/unittests/receiver_data_server/test_tcp_server.cpp @@ -77,7 +77,7 @@ void TCPServerTests::ExpectListenMaster(bool ok) { void TCPServerTests::WaitSockets(bool ok, ListSocketDescriptors clients) { EXPECT_CALL(mock_io, WaitSocketsActivity_t(expected_master_socket, testing::Pointee(clients), _, _)).WillOnce(DoAll( - SetArgPointee<2>(expected_new_connections), + SetArgPointee<2>(ok ? expected_new_connections:std::vector<std::string>{}), SetArgPointee<1>(expected_client_sockets), SetArgPointee<3>(ok ? nullptr : asapo::IOErrorTemplates::kUnknownIOError.Generate().release()), Return(ok ? expected_client_sockets : asapo::ListSocketDescriptors{}) @@ -158,6 +158,8 @@ void TCPServerTests::ExpectReceiveOk() { A_ReceiveData(asapo::kOpcodeGetBufferData, conn), testing::ReturnArg<2>() )); + EXPECT_CALL(mock_logger, Debug(AllOf(HasSubstr("request"), HasSubstr("id: "+std::to_string(conn)), + HasSubstr("opcode: "+std::to_string(asapo::kOpcodeGetBufferData))))); } }