Skip to content

Commit 0ef84ba

Browse files
committed
test(UDPServer): add more unit tests
1 parent 3672694 commit 0ef84ba

File tree

2 files changed

+50
-14
lines changed

2 files changed

+50
-14
lines changed

Net/testsuite/src/UDPServerTest.cpp

Lines changed: 46 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -82,17 +82,17 @@ namespace
8282

8383
AtomicCounter TestUDPHandler::errors;
8484

85-
template<typename S>
86-
bool server(int handlerCount, int reps, int port = 0)
85+
template<typename SRVT, typename CLTT, typename HNDLRT>
86+
bool server(int handlerCount, int reps, int port)
8787
{
8888
Poco::Net::UDPHandler::List handlers;
8989
for (int i = 0; i < handlerCount; ++i)
90-
handlers.push_back(new TestUDPHandler());
90+
handlers.push_back(new HNDLRT());
9191

92-
S server(handlers, Poco::Net::SocketAddress("127.0.0.1", port));
92+
SRVT server(handlers, Poco::Net::SocketAddress("127.0.0.1", port));
9393
Poco::Thread::sleep(100);
9494

95-
Poco::Net::UDPClient client("127.0.0.1", server.port(), true);
95+
CLTT client("127.0.0.1", server.port(), true);
9696
Poco::Thread::sleep(10);
9797

9898
std::vector<std::string> data;
@@ -112,7 +112,7 @@ namespace
112112
<< ", sent: " << sent << std::endl;
113113
return false;
114114
}
115-
Poco::Thread::sleep(10);
115+
Poco::Thread::sleep(5);
116116
data.clear();
117117
}
118118
}
@@ -126,7 +126,7 @@ namespace
126126
Poco::Thread::sleep(10);
127127
for (const auto& h: handlers)
128128
{
129-
count += dynamic_cast<const TestUDPHandler &>(*h).counter.value();
129+
count += dynamic_cast<const HNDLRT &>(*h).counter.value();
130130
errCount += count / 10;
131131
}
132132
} while (count < i);
@@ -138,7 +138,7 @@ namespace
138138
}
139139
for (const auto& he: handlers)
140140
{
141-
const auto &h = dynamic_cast<const TestUDPHandler &>(*he);
141+
const auto &h = dynamic_cast<const HNDLRT &>(*he);
142142
count = h.counter.value();
143143
errCount = h.errCounter.value();
144144
if (errCount < count / 10)
@@ -170,11 +170,42 @@ UDPServerTest::~UDPServerTest()
170170
}
171171

172172

173-
void UDPServerTest::testServer()
173+
void UDPServerTest::testUDPSingleSocket()
174174
{
175+
TestUDPHandler::errors = 0;
175176
int msgs = 10000;
176-
assertTrue (server<Poco::Net::UDPServer>(1, msgs));
177-
assertTrue (server<Poco::Net::UDPMultiServer>(10, msgs, 22080));
177+
auto tf = server<Poco::Net::UDPServer, Poco::Net::UDPClient, TestUDPHandler>;
178+
assertTrue( tf(1, msgs, 0) );
179+
assertTrue (TestUDPHandler::errors == 0);
180+
}
181+
182+
183+
void UDPServerTest::testUDPMultiSocket()
184+
{
185+
TestUDPHandler::errors = 0;
186+
int msgs = 10000;
187+
auto tf = server<Poco::Net::UDPMultiServer, Poco::Net::UDPClient, TestUDPHandler>;
188+
assertTrue( tf(1, msgs, 22080) );
189+
assertTrue (TestUDPHandler::errors == 0);
190+
}
191+
192+
193+
void UDPServerTest::testUDPSingleSocketMultipleHandlers()
194+
{
195+
TestUDPHandler::errors = 0;
196+
int msgs = 10000;
197+
auto tf = server<Poco::Net::UDPServer, Poco::Net::UDPClient, TestUDPHandler>;
198+
assertTrue( tf(10, msgs, 0) );
199+
assertTrue (TestUDPHandler::errors == 0);
200+
}
201+
202+
203+
void UDPServerTest::testUDPMultiSocketMultipleHandlers()
204+
{
205+
TestUDPHandler::errors = 0;
206+
int msgs = 10000;
207+
auto tf = server<Poco::Net::UDPMultiServer, Poco::Net::UDPClient, TestUDPHandler>;
208+
assertTrue( tf(10, msgs, 22080) );
178209
assertTrue (TestUDPHandler::errors == 0);
179210
}
180211

@@ -193,7 +224,10 @@ CppUnit::Test* UDPServerTest::suite()
193224
{
194225
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("UDPServerTest");
195226

196-
CppUnit_addTest(pSuite, UDPServerTest, testServer);
227+
CppUnit_addTest(pSuite, UDPServerTest, testUDPSingleSocket);
228+
CppUnit_addTest(pSuite, UDPServerTest, testUDPMultiSocket);
229+
CppUnit_addTest(pSuite, UDPServerTest, testUDPSingleSocketMultipleHandlers);
230+
CppUnit_addTest(pSuite, UDPServerTest, testUDPMultiSocketMultipleHandlers);
197231

198232
return pSuite;
199233
}

Net/testsuite/src/UDPServerTest.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,17 @@
1616

1717
#include "Poco/Net/Net.h"
1818
#include "CppUnit/TestCase.h"
19-
#include "Poco/Thread.h"
2019

2120
class UDPServerTest: public CppUnit::TestCase
2221
{
2322
public:
2423
UDPServerTest(const std::string& name);
2524
~UDPServerTest();
2625

27-
void testServer();
26+
void testUDPSingleSocket();
27+
void testUDPMultiSocket();
28+
void testUDPSingleSocketMultipleHandlers();
29+
void testUDPMultiSocketMultipleHandlers();
2830

2931
void setUp();
3032
void tearDown();

0 commit comments

Comments
 (0)