From bed0d04baec268b863232226022a9382f8f34977 Mon Sep 17 00:00:00 2001 From: utsavrohilla Date: Thu, 8 Jul 2021 16:46:35 +0530 Subject: [PATCH 1/2] Tests written --- asyncio/CMakeLists.txt | 1 + asyncio/test/testUdpFiber.cpp | 121 ++++++++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 asyncio/test/testUdpFiber.cpp diff --git a/asyncio/CMakeLists.txt b/asyncio/CMakeLists.txt index cb218b80..cbcc23f2 100644 --- a/asyncio/CMakeLists.txt +++ b/asyncio/CMakeLists.txt @@ -71,6 +71,7 @@ enable_testing() set(TEST_SOURCES test/testUdp.cpp + test/testUdpFiber.cpp ) add_custom_target(asyncio_tests) diff --git a/asyncio/test/testUdpFiber.cpp b/asyncio/test/testUdpFiber.cpp new file mode 100644 index 00000000..a8a71781 --- /dev/null +++ b/asyncio/test/testUdpFiber.cpp @@ -0,0 +1,121 @@ +#include "gtest/gtest.h" +#include "marlin/asyncio/udp/UdpFiber.hpp" +#include +#include + +#include + +using namespace marlin::core; +using namespace marlin::asyncio; + +struct Terminal { + static constexpr bool is_outer_open = false; + static constexpr bool is_inner_open = false; + + using InnerMessageType = Buffer; + using OuterMessageType = Buffer; + + bool *received; + uv_udp_t *loop; + + template + Terminal(Args&&...) {} + + Terminal(std::tuple &&init_tuple) : + received(std::get<0>(init_tuple)) {} + + Terminal(std::tuple > &&init_tuple) : + received(std::get<0>(std::get<0> (init_tuple))), + loop(*std::get<1>(std::get<0>(init_tuple))) {} + + + static void close_cb(uv_handle_t*) { + // delete handle; + } + + int did_recv(auto&&, Buffer&& buf, SocketAddress addr) { + SPDLOG_INFO("Terminal: Did recv: {} bytes from {}", buf.size(), addr.to_string()); + *received = true; + // uv_close((uv_handle_t*)loop, close_cb); + return 0; + } + + template + int did_dial(FiberType& fabric, SocketAddress addr) { + SPDLOG_INFO("Terminal: Did dial: {}", addr.to_string()); + fabric.o(*this).send(0, Buffer({0,0,0,0,0}, 5), addr); + return 0; + } + + template + int did_send(FiberType&, Buffer&& buf) { + SPDLOG_INFO("Terminal: Did send: {} bytes", buf.size()); + return 0; + } +}; + +TEST(UdpFiber, FiberProperty) { + bool *received = (bool*)malloc(sizeof *received); + *received = true; + + Fabric< + Terminal, + UdpFiber, + VersioningFiber + > f(std::make_tuple( + // terminal + std::make_tuple(received), + // udp fiber + std::make_tuple(), + std::make_tuple() + )); + + f.o(this).did_recv(0, Buffer(10), SocketAddress::from_string("0.0.0.0:8000")); + EXPECT_EQ(*received, true); +} + +void close_cb(uv_handle_t*) { + +} + +TEST(UdpFiber, CanDialListen) { + // std::vector *indices = new std::vector (); + + auto *loop = new uv_udp_t(); + uv_udp_init(uv_default_loop(), loop); + + bool *received = (bool*)malloc(sizeof *received); + *received = false; + + Fabric< + Terminal, + UdpFiber, + VersioningFiber + > server(std::make_tuple( + // terminal + std::make_tuple(std::make_tuple(received, &loop)), + // udp fiber + std::make_tuple(), + std::make_tuple() + )); + (void)server.i(server).bind(SocketAddress::from_string("127.0.0.1:8000")); + (void)server.i(server).listen(); + + Fabric< + Terminal, + UdpFiber, + VersioningFiber + > client(std::make_tuple( + // terminal + std::make_tuple(std::make_tuple(received, &loop)), + // udp fiber + std::make_tuple(), + std::make_tuple() + )); + (void)client.i(server).bind(SocketAddress::from_string("127.0.0.1:9000")); + (void)client.i(server).dial(SocketAddress::from_string("127.0.0.1:8000")); + uv_run(uv_default_loop(), UV_RUN_NOWAIT); + // uv_close((uv_handle_t*)uv_default_loop(), close_cb); + // free(loop); + EXPECT_TRUE(*received); +} \ No newline at end of file From 7064dbd5139b1f3e8b2a160b7dca787fb89ad82a Mon Sep 17 00:00:00 2001 From: utsavrohilla Date: Thu, 8 Jul 2021 16:49:20 +0530 Subject: [PATCH 2/2] Code refactored. --- asyncio/test/testUdpFiber.cpp | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/asyncio/test/testUdpFiber.cpp b/asyncio/test/testUdpFiber.cpp index a8a71781..05064f50 100644 --- a/asyncio/test/testUdpFiber.cpp +++ b/asyncio/test/testUdpFiber.cpp @@ -24,19 +24,9 @@ struct Terminal { Terminal(std::tuple &&init_tuple) : received(std::get<0>(init_tuple)) {} - Terminal(std::tuple > &&init_tuple) : - received(std::get<0>(std::get<0> (init_tuple))), - loop(*std::get<1>(std::get<0>(init_tuple))) {} - - - static void close_cb(uv_handle_t*) { - // delete handle; - } - int did_recv(auto&&, Buffer&& buf, SocketAddress addr) { SPDLOG_INFO("Terminal: Did recv: {} bytes from {}", buf.size(), addr.to_string()); *received = true; - // uv_close((uv_handle_t*)loop, close_cb); return 0; } @@ -74,16 +64,13 @@ TEST(UdpFiber, FiberProperty) { EXPECT_EQ(*received, true); } -void close_cb(uv_handle_t*) { - +void close_cb(uv_handle_t* handle) { + delete handle; } TEST(UdpFiber, CanDialListen) { // std::vector *indices = new std::vector (); - auto *loop = new uv_udp_t(); - uv_udp_init(uv_default_loop(), loop); - bool *received = (bool*)malloc(sizeof *received); *received = false; @@ -93,7 +80,7 @@ TEST(UdpFiber, CanDialListen) { VersioningFiber > server(std::make_tuple( // terminal - std::make_tuple(std::make_tuple(received, &loop)), + std::make_tuple(received), // udp fiber std::make_tuple(), std::make_tuple() @@ -107,7 +94,7 @@ TEST(UdpFiber, CanDialListen) { VersioningFiber > client(std::make_tuple( // terminal - std::make_tuple(std::make_tuple(received, &loop)), + std::make_tuple(received), // udp fiber std::make_tuple(), std::make_tuple() @@ -115,7 +102,6 @@ TEST(UdpFiber, CanDialListen) { (void)client.i(server).bind(SocketAddress::from_string("127.0.0.1:9000")); (void)client.i(server).dial(SocketAddress::from_string("127.0.0.1:8000")); uv_run(uv_default_loop(), UV_RUN_NOWAIT); - // uv_close((uv_handle_t*)uv_default_loop(), close_cb); - // free(loop); + EXPECT_TRUE(*received); } \ No newline at end of file