#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace ppi = senf::ppi;
namespace module = ppi::module;
namespace debug = module::debug;
return false;
return ConnectedDgramWriter::operator()( handle, packet);
}
+
+ TestingConnectedDgramWriter(){
+ throttled = false;
+ }
};
}
SENF_AUTO_UNIT_TEST(passiveQueueingSocketSink)
{
+ senf::ConnectedUDPv4ClientSocketHandle os (senf::noinit);
+
senf::ConnectedUDPv4ClientSocketHandle outputSocket (
senf::INet4SocketAddress( localhost4str(0)));
module::PassiveQueueingSocketSink<TestingConnectedDgramWriter> udpSink (
- outputSocket, ppi::FIFOQueueingAlgorithm::create());
+ os, ppi::FIFOQueueingAlgorithm::create());
+
+ // test re-assignment of socket
+ udpSink.handle( outputSocket);
+
udpSink.writer().throttled = false;
debug::ActiveSource source;
ppi::connect(source, udpSink);
source.submit(p);
BOOST_CHECK_EQUAL( udpSink.qAlgorithm().size(), 1);
+ for( int n = 0; n < 100; n++) {
+ source.submit(p);
+ }
+ // queue default size is 64
+ BOOST_CHECK_EQUAL( udpSink.qAlgorithm().size(), 64);
+
udpSink.writer().throttled = false;
- runPPI( senf::ClockService::milliseconds(200));
+ runPPI( senf::ClockService::milliseconds(250));
- input = inputSocket.read();
- BOOST_CHECK_EQUAL( data, input );
+ inputSocket.blocking(false);
+ while (true) {
+ input = inputSocket.read();
+ if (input.empty()) break;
+ BOOST_CHECK_EQUAL( data, input );
+ }
+
+ runPPI( senf::ClockService::milliseconds(250));
BOOST_CHECK_EQUAL( udpSink.qAlgorithm().size(), 0);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f