Skip to content

Commit 6be78b6

Browse files
committed
Split tests: network vs non-network
1 parent c7f495a commit 6be78b6

3 files changed

Lines changed: 46 additions & 54 deletions

File tree

test/CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
find_package(PkgConfig REQUIRED)
22
pkg_check_modules(CMOCKA REQUIRED cmocka)
33

4-
macro(ut name source)
4+
macro(ut name source lib)
55
add_executable(${name} ${source})
66
target_include_directories(${name} PRIVATE ${CMOCKA_INCLUDE_DIRS})
77
target_link_directories(${name} PRIVATE ${CMOCKA_LIBRARY_DIRS})
8-
target_link_libraries(${name} PRIVATE miniraft.net ${CMOCKA_LIBRARIES})
8+
target_link_libraries(${name} PRIVATE ${lib} ${CMOCKA_LIBRARIES})
99

1010
add_test(NAME ${name} COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${name})
1111
set_tests_properties(${name} PROPERTIES ENVIRONMENT "CMOCKA_MESSAGE_OUTPUT=xml;CMOCKA_XML_FILE=${name}.xml")
1212
endmacro()
1313

1414
if (CMOCKA_FOUND)
15-
ut(test_raft test_raft.cpp)
16-
ut(test_read_write test_read_write.cpp)
15+
ut(test_raft test_raft.cpp miniraft)
16+
ut(test_read_write test_read_write.cpp miniraft.net)
1717
endif ()

test/test_raft.cpp

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
#include <miniraft/raft.h>
1010
#include <miniraft/timesource.h>
1111
#include <miniraft/persist.h>
12-
#include <coroio/all.hpp>
1312

1413
#include <stdarg.h>
1514
#include <stddef.h>
@@ -18,8 +17,6 @@ extern "C" {
1817
#include <cmocka.h>
1918
}
2019

21-
using namespace NNet;
22-
2320
namespace {
2421

2522
using OnSendFunc = const std::function<void(TMessageHolder<TMessage>)>;
@@ -141,52 +138,6 @@ void test_message_cast(void** state) {
141138
assert_true(mes->Len == casted3->Len);
142139
}
143140

144-
void test_message_send_recv(void** state) {
145-
const char* text = "MESSAGE";
146-
auto mes = NewHoldedMessage<TLogEntry>(
147-
static_cast<uint32_t>(TLogEntry::MessageType),
148-
sizeof(TLogEntry) + strlen(text) + 1
149-
);
150-
strcpy(mes.Mes->Data, text);
151-
152-
TLoop<TPoll> loop;
153-
TSocket socket(TAddress{"127.0.0.1", 8888}, loop.Poller());
154-
socket.Bind();
155-
socket.Listen();
156-
157-
TSocket client(TAddress{"127.0.0.1", 8888}, loop.Poller());
158-
159-
TVoidSuspendedTask h1 = [](TSocket& client, TMessageHolder<TLogEntry> mes) -> TVoidSuspendedTask
160-
{
161-
co_await client.Connect();
162-
auto r = co_await client.WriteSome(mes.RawData.get(), mes->Len);
163-
co_return;
164-
}(client, mes);
165-
166-
TMessageHolder<TMessage> received;
167-
TVoidSuspendedTask h2 = [](TSocket& server, TMessageHolder<TMessage>& received) -> TVoidSuspendedTask
168-
{
169-
auto client = std::move(co_await server.Accept());
170-
uint32_t type, len;
171-
auto r = co_await client.ReadSome(&type, sizeof(type));
172-
r = co_await client.ReadSome(&len, sizeof(len));
173-
received = NewHoldedMessage<TMessage>(type, len);
174-
r = co_await client.ReadSome(received->Value, len - sizeof(TMessage));
175-
co_return;
176-
}(socket, received);
177-
178-
while (!(h1.done() && h2.done())) {
179-
loop.Step();
180-
}
181-
182-
auto maybeCasted = received.Maybe<TLogEntry>();
183-
assert_true(maybeCasted);
184-
auto casted = maybeCasted.Cast();
185-
assert_string_equal(mes->Data, casted->Data);
186-
187-
h1.destroy(); h2.destroy();
188-
};
189-
190141
void test_initial(void**) {
191142
auto raft = MakeRaft();
192143
assert_true(raft->CurrentStateName() == EState::FOLLOWER);
@@ -808,7 +759,6 @@ int main() {
808759
cmocka_unit_test(test_empty),
809760
cmocka_unit_test(test_message_create),
810761
cmocka_unit_test(test_message_cast),
811-
cmocka_unit_test(test_message_send_recv),
812762
cmocka_unit_test(test_initial),
813763
cmocka_unit_test(test_numbers),
814764
cmocka_unit_test(test_become),

test/test_read_write.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,47 @@ TMessageHolder<TLogEntry> MakeEntry(const char* text) {
3131

3232
} // namespace
3333

34+
void test_message_send_recv(void**) {
35+
auto mes = MakeEntry("MESSAGE");
36+
37+
NNet::TLoop<NNet::TPoll> loop;
38+
NNet::TSocket socket(NNet::TAddress{"127.0.0.1", 8890}, loop.Poller());
39+
socket.Bind();
40+
socket.Listen();
41+
42+
NNet::TSocket client(NNet::TAddress{"127.0.0.1", 8890}, loop.Poller());
43+
44+
NNet::TVoidSuspendedTask h1 = [](NNet::TSocket& client, TMessageHolder<TLogEntry> mes) -> NNet::TVoidSuspendedTask
45+
{
46+
co_await client.Connect();
47+
co_await client.WriteSome(mes.RawData.get(), mes->Len);
48+
co_return;
49+
}(client, mes);
50+
51+
TMessageHolder<TMessage> received;
52+
NNet::TVoidSuspendedTask h2 = [](NNet::TSocket& server, TMessageHolder<TMessage>& received) -> NNet::TVoidSuspendedTask
53+
{
54+
auto client = std::move(co_await server.Accept());
55+
uint32_t type, len;
56+
co_await client.ReadSome(&type, sizeof(type));
57+
co_await client.ReadSome(&len, sizeof(len));
58+
received = NewHoldedMessage<TMessage>(type, len);
59+
co_await client.ReadSome(received->Value, len - sizeof(TMessage));
60+
co_return;
61+
}(socket, received);
62+
63+
while (!(h1.done() && h2.done())) {
64+
loop.Step();
65+
}
66+
67+
auto maybeCasted = received.Maybe<TLogEntry>();
68+
assert_true(maybeCasted);
69+
auto casted = maybeCasted.Cast();
70+
assert_string_equal(mes->Data, casted->Data);
71+
72+
h1.destroy(); h2.destroy();
73+
}
74+
3475
void test_read_write(void**) {
3576
auto mes = MakeEntry("MESSAGE");
3677

@@ -114,6 +155,7 @@ void test_read_write_payload(void**) {
114155

115156
int main() {
116157
const struct CMUnitTest tests[] = {
158+
cmocka_unit_test(test_message_send_recv),
117159
cmocka_unit_test(test_read_write),
118160
cmocka_unit_test(test_read_write_payload),
119161
};

0 commit comments

Comments
 (0)