diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 5a6378c..b681e0c 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,17 +1,17 @@ find_package(PkgConfig REQUIRED) pkg_check_modules(CMOCKA REQUIRED cmocka) -macro(ut name source) +macro(ut name source lib) add_executable(${name} ${source}) target_include_directories(${name} PRIVATE ${CMOCKA_INCLUDE_DIRS}) target_link_directories(${name} PRIVATE ${CMOCKA_LIBRARY_DIRS}) - target_link_libraries(${name} PRIVATE miniraft.net ${CMOCKA_LIBRARIES}) + target_link_libraries(${name} PRIVATE ${lib} ${CMOCKA_LIBRARIES}) add_test(NAME ${name} COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${name}) set_tests_properties(${name} PROPERTIES ENVIRONMENT "CMOCKA_MESSAGE_OUTPUT=xml;CMOCKA_XML_FILE=${name}.xml") endmacro() if (CMOCKA_FOUND) -ut(test_raft test_raft.cpp) -ut(test_read_write test_read_write.cpp) +ut(test_raft test_raft.cpp miniraft) +ut(test_read_write test_read_write.cpp miniraft.net) endif () diff --git a/test/test_raft.cpp b/test/test_raft.cpp index 5c74f79..7dcbe1f 100644 --- a/test/test_raft.cpp +++ b/test/test_raft.cpp @@ -9,7 +9,6 @@ #include #include #include -#include #include #include @@ -18,8 +17,6 @@ extern "C" { #include } -using namespace NNet; - namespace { using OnSendFunc = const std::function)>; @@ -141,52 +138,6 @@ void test_message_cast(void** state) { assert_true(mes->Len == casted3->Len); } -void test_message_send_recv(void** state) { - const char* text = "MESSAGE"; - auto mes = NewHoldedMessage( - static_cast(TLogEntry::MessageType), - sizeof(TLogEntry) + strlen(text) + 1 - ); - strcpy(mes.Mes->Data, text); - - TLoop loop; - TSocket socket(TAddress{"127.0.0.1", 8888}, loop.Poller()); - socket.Bind(); - socket.Listen(); - - TSocket client(TAddress{"127.0.0.1", 8888}, loop.Poller()); - - TVoidSuspendedTask h1 = [](TSocket& client, TMessageHolder mes) -> TVoidSuspendedTask - { - co_await client.Connect(); - auto r = co_await client.WriteSome(mes.RawData.get(), mes->Len); - co_return; - }(client, mes); - - TMessageHolder received; - TVoidSuspendedTask h2 = [](TSocket& server, TMessageHolder& received) -> TVoidSuspendedTask - { - auto client = std::move(co_await server.Accept()); - uint32_t type, len; - auto r = co_await client.ReadSome(&type, sizeof(type)); - r = co_await client.ReadSome(&len, sizeof(len)); - received = NewHoldedMessage(type, len); - r = co_await client.ReadSome(received->Value, len - sizeof(TMessage)); - co_return; - }(socket, received); - - while (!(h1.done() && h2.done())) { - loop.Step(); - } - - auto maybeCasted = received.Maybe(); - assert_true(maybeCasted); - auto casted = maybeCasted.Cast(); - assert_string_equal(mes->Data, casted->Data); - - h1.destroy(); h2.destroy(); -}; - void test_initial(void**) { auto raft = MakeRaft(); assert_true(raft->CurrentStateName() == EState::FOLLOWER); @@ -808,7 +759,6 @@ int main() { cmocka_unit_test(test_empty), cmocka_unit_test(test_message_create), cmocka_unit_test(test_message_cast), - cmocka_unit_test(test_message_send_recv), cmocka_unit_test(test_initial), cmocka_unit_test(test_numbers), cmocka_unit_test(test_become), diff --git a/test/test_read_write.cpp b/test/test_read_write.cpp index 5f4ab86..b600ed6 100644 --- a/test/test_read_write.cpp +++ b/test/test_read_write.cpp @@ -31,6 +31,47 @@ TMessageHolder MakeEntry(const char* text) { } // namespace +void test_message_send_recv(void**) { + auto mes = MakeEntry("MESSAGE"); + + NNet::TLoop loop; + NNet::TSocket socket(NNet::TAddress{"127.0.0.1", 8890}, loop.Poller()); + socket.Bind(); + socket.Listen(); + + NNet::TSocket client(NNet::TAddress{"127.0.0.1", 8890}, loop.Poller()); + + NNet::TVoidSuspendedTask h1 = [](NNet::TSocket& client, TMessageHolder mes) -> NNet::TVoidSuspendedTask + { + co_await client.Connect(); + co_await client.WriteSome(mes.RawData.get(), mes->Len); + co_return; + }(client, mes); + + TMessageHolder received; + NNet::TVoidSuspendedTask h2 = [](NNet::TSocket& server, TMessageHolder& received) -> NNet::TVoidSuspendedTask + { + auto client = std::move(co_await server.Accept()); + uint32_t type, len; + co_await client.ReadSome(&type, sizeof(type)); + co_await client.ReadSome(&len, sizeof(len)); + received = NewHoldedMessage(type, len); + co_await client.ReadSome(received->Value, len - sizeof(TMessage)); + co_return; + }(socket, received); + + while (!(h1.done() && h2.done())) { + loop.Step(); + } + + auto maybeCasted = received.Maybe(); + assert_true(maybeCasted); + auto casted = maybeCasted.Cast(); + assert_string_equal(mes->Data, casted->Data); + + h1.destroy(); h2.destroy(); +} + void test_read_write(void**) { auto mes = MakeEntry("MESSAGE"); @@ -114,6 +155,7 @@ void test_read_write_payload(void**) { int main() { const struct CMUnitTest tests[] = { + cmocka_unit_test(test_message_send_recv), cmocka_unit_test(test_read_write), cmocka_unit_test(test_read_write_payload), };