#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace ppi = senf::ppi;
namespace module = ppi::module;
namespace debug = module::debug;
+namespace scheduler = senf::scheduler;
namespace {
- void timeout() {
- senf::scheduler::terminate();
+ void runPPI(senf::ClockService::clock_type t)
+ {
+ scheduler::TimerEvent timeout(
+ "socketSource test timer", &scheduler::terminate, scheduler::now() + t);
+ ppi::run();
+ }
+
+ int base_pid = 0;
+
+ unsigned port(unsigned i)
+ {
+ if (! base_pid)
+ base_pid = ::getpid();
+ return 23456u + (((base_pid^(base_pid>>8)^(base_pid>>16)^(base_pid>>24))&0xff)<<2) + i;
+ }
+
+ std::string localhost4str(unsigned i)
+ {
+ return (boost::format("localhost:%d") % port(i)).str();
+ }
+
+ std::string localhost6str(unsigned i)
+ {
+ return (boost::format("[::1]:%d") % port(i)).str();
}
}
-BOOST_AUTO_UNIT_TEST(socketSource)
+SENF_AUTO_UNIT_TEST(socketSource)
{
senf::UDPv4ClientSocketHandle inputSocket;
- inputSocket.bind(senf::INet4SocketAddress("localhost:44344"));
+ inputSocket.bind(senf::INet4SocketAddress(localhost4str(0)));
inputSocket.blocking(false);
module::ActiveSocketSource<> udpSource(inputSocket);
debug::PassiveSink sink;
std::string data ("TEST");
senf::UDPv4ClientSocketHandle outputSocket;
- outputSocket.writeto(senf::INet4SocketAddress("localhost:44344"),data);
- senf::scheduler::TimerEvent timer (
- "socketSource test timer", &timeout,
- senf::ClockService::now() + senf::ClockService::milliseconds(100));
- senf::ppi::run();
+ outputSocket.writeto(senf::INet4SocketAddress(localhost4str(0)),data);
+ runPPI( senf::ClockService::milliseconds(100));
BOOST_REQUIRE( ! sink.empty() );
BOOST_CHECK_EQUAL( sink.front().data().size(), data.size() );
- BOOST_CHECK( std::equal( sink.front().data().begin(), sink.front().data().end(),
+ BOOST_CHECK( std::equal( sink.front().data().begin(), sink.front().data().end(),
data.begin()) );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f