summaryrefslogtreecommitdiffhomepage
path: root/dev
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-08-21 08:32:35 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-08-21 08:32:35 +0200
commit2fca53d388f22585d2404f9ef15fbcb714a7a3dc (patch)
treef8fa4b59dee75b62b0114be167f332aaaab59ba2 /dev
parentf0b4a1cd84244f09c71496b6a08636fc81e5292f (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.hpp5
-rw-r--r--dev/lib/net/modem.hpp (renamed from dev/lib/net/network.hpp)40
-rw-r--r--dev/tests/fix_basic/CMakeLists.txt2
-rw-r--r--dev/tests/network_basic/CMakeLists.txt4
-rw-r--r--dev/tests/network_basic/net_test.cc18
-rw-r--r--dev/tests/tracked_ptr_basic/CMakeLists.txt2
-rw-r--r--dev/tests/tracked_ptr_leak/CMakeLists.txt2
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(