diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-08-21 08:32:35 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-08-21 08:32:35 +0200 |
| commit | 2fca53d388f22585d2404f9ef15fbcb714a7a3dc (patch) | |
| tree | f8fa4b59dee75b62b0114be167f332aaaab59ba2 /dev | |
| parent | f0b4a1cd84244f09c71496b6a08636fc81e5292f (diff) | |
feat: simplify the unit test for the `modem` class
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev')
| -rw-r--r-- | dev/lib/core/includes.hpp | 5 | ||||
| -rw-r--r-- | dev/lib/net/modem.hpp (renamed from dev/lib/net/network.hpp) | 40 | ||||
| -rw-r--r-- | dev/tests/fix_basic/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | dev/tests/network_basic/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | dev/tests/network_basic/net_test.cc | 18 | ||||
| -rw-r--r-- | dev/tests/tracked_ptr_basic/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | dev/tests/tracked_ptr_leak/CMakeLists.txt | 2 |
7 files changed, 34 insertions, 39 deletions
diff --git a/dev/lib/core/includes.hpp b/dev/lib/core/includes.hpp index e482a7c..6bddba9 100644 --- a/dev/lib/core/includes.hpp +++ b/dev/lib/core/includes.hpp @@ -11,6 +11,7 @@ #include <boost/core/nvp.hpp> #include <boost/core/demangle.hpp> #include <boost/core/null_deleter.hpp> -#include <memory> -#include <utility> + #include <filesystem> +#include <utility> +#include <memory> diff --git a/dev/lib/net/network.hpp b/dev/lib/net/modem.hpp index e078c93..ba3be0c 100644 --- a/dev/lib/net/network.hpp +++ b/dev/lib/net/modem.hpp @@ -1,5 +1,5 @@ /* - * File: net/network.hpp + * File: net/modem.hpp * Purpose: Modem concept in modern C++ * Author: Amlal El Mahrouss (founder@snu.systems) * Copyright 2025, Amlal El Mahrouss and SNU Systems Corp. @@ -24,10 +24,13 @@ namespace snu::net typedef int64_t socket_type; - /// @brief Delivery modem concept, a container to read and write on a network stream. + /// @brief Modem container concept, a container to read and write on a network stream. template <typename char_type> class basic_modem { + socket_type fd_{}; + bool server_fd_{}; + public: explicit basic_modem() = default; virtual ~basic_modem() = default; @@ -35,11 +38,9 @@ namespace snu::net basic_modem& operator=(const basic_modem&) = default; basic_modem(const basic_modem&) = default; - static constexpr auto local_address_ip6 = "127.0.0.1"; - static constexpr auto local_address_ip4 = "::1"; - static constexpr const auto backlog_count = 18U; - - socket_type fd_{}; + static constexpr auto local_address_ip4 = "127.0.0.1"; + static constexpr auto local_address_ip6 = "::1"; + static constexpr const auto backlog_count = 5U; bool is_valid() const noexcept { @@ -57,7 +58,12 @@ namespace snu::net if (!len) return false; - auto ret = ::recv(fd_, out, len, 0); + socket_type cl_{fd_}; + + if (this->server_fd_) + cl_ = ::accept(fd_, nullptr, nullptr); + + auto ret = ::recv(cl_, out, len, 0); return ret > 0L; } @@ -89,30 +95,32 @@ namespace snu::net return ret > 0L; } - template <int32_t af, int32_t kind, int32_t ip_proto, int32_t port> + template <int32_t af, int32_t kind, int32_t port> bool construct(const char* addr = basic_modem::local_address_ip4, const bool& is_server = false) noexcept { static_assert(af != 0, "Address family is zero"); - static_assert(kind != 0, "Type is zero"); + static_assert(kind != 0, "Kind is zero"); - fd_ = ::socket(af, kind, ip_proto); + fd_ = ::socket(af, kind, 0); + server_fd_ = is_server; if (fd_ == -1) return false; - struct sockaddr_in addr_ - { - }; + struct sockaddr_in addr_; + std::memset(&addr_, 0, sizeof(struct sockaddr_in)); addr_.sin_addr.s_addr = ::inet_addr(addr); - addr_.sin_port = port; + addr_.sin_port = htons(port); + addr_.sin_family = af; if (!is_server) { - const auto ret = ::connect(fd_, reinterpret_cast<struct sockaddr*>(&addr_), sizeof(decltype(addr_))); + const auto ret = ::connect(fd_, reinterpret_cast<struct sockaddr*>(&addr_), sizeof(addr_)); return ret == 0L; } + ::bind(fd_, (struct sockaddr*)&addr_, sizeof(addr_)); ::listen(fd_, basic_modem::backlog_count); return true; diff --git a/dev/tests/fix_basic/CMakeLists.txt b/dev/tests/fix_basic/CMakeLists.txt index f792277..7b06112 100644 --- a/dev/tests/fix_basic/CMakeLists.txt +++ b/dev/tests/fix_basic/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.10) -project(SOCLTests) +project(FIXTestBasic) include(FetchContent) FetchContent_Declare( diff --git a/dev/tests/network_basic/CMakeLists.txt b/dev/tests/network_basic/CMakeLists.txt index a5704fc..4cfe0d1 100644 --- a/dev/tests/network_basic/CMakeLists.txt +++ b/dev/tests/network_basic/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.28) -project(SOCLTests LANGUAGES CXX) +cmake_minimum_required(VERSION 3.27) +project(NetworkTestBasic LANGUAGES CXX) include(FetchContent) FetchContent_Declare( diff --git a/dev/tests/network_basic/net_test.cc b/dev/tests/network_basic/net_test.cc index 634048e..34f6ebe 100644 --- a/dev/tests/network_basic/net_test.cc +++ b/dev/tests/network_basic/net_test.cc @@ -13,24 +13,10 @@ TEST(NetworkTest, BasicNetworkUsage) { snu::net::basic_modem<char> modem; - modem.construct<AF_INET, SOCK_STREAM, IPPROTO_IP, 80>(snu::net::basic_modem<char>::local_address_ip4, true); + modem.construct<AF_INET, SOCK_STREAM, 8000>(snu::net::basic_modem<char>::local_address_ip4, true); - snu::net::basic_modem<char> modem_cl; - modem_cl.construct<AF_INET, SOCK_STREAM, IPPROTO_IP, 80>(snu::net::basic_modem<char>::local_address_ip4, false); - - EXPECT_TRUE(modem_cl.is_valid()); EXPECT_TRUE(modem.is_valid()); std::basic_string<char> buf_dst = "HELLO, NET!"; - char* buf = new char[buf_dst.size()]; - - modem_cl.transmit(buf_dst); - modem.receive<char*>(buf, buf_dst.size()); - - snu::io::print(buf_dst); - snu::io::print(buf); - snu::io::print(); - - delete[] buf; - buf = nullptr; + modem.transmit(buf_dst); } diff --git a/dev/tests/tracked_ptr_basic/CMakeLists.txt b/dev/tests/tracked_ptr_basic/CMakeLists.txt index 9100e9a..1dd5095 100644 --- a/dev/tests/tracked_ptr_basic/CMakeLists.txt +++ b/dev/tests/tracked_ptr_basic/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.10) -project(SOCLTests) +project(TrackedPtrTestBasic) include(FetchContent) FetchContent_Declare( diff --git a/dev/tests/tracked_ptr_leak/CMakeLists.txt b/dev/tests/tracked_ptr_leak/CMakeLists.txt index 625a1dc..30c91a1 100644 --- a/dev/tests/tracked_ptr_leak/CMakeLists.txt +++ b/dev/tests/tracked_ptr_leak/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.10) -project(SOCLTests) +project(TrackedPtrTestLeak) include(FetchContent) FetchContent_Declare( |
