X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FQueueingSocketSink.test.cc;h=cdf60b001c52f7b6d47197e9ed7799603639110f;hb=93d9568d448749dc187e7622b733a4a3caa319df;hp=180af5b4c58b9c5f6856c7f9c70d2890c12ac836;hpb=ed55b722ff15975fb0b090a1b132c9b830829124;p=senf.git diff --git a/senf/PPI/QueueingSocketSink.test.cc b/senf/PPI/QueueingSocketSink.test.cc index 180af5b..cdf60b0 100644 --- a/senf/PPI/QueueingSocketSink.test.cc +++ b/senf/PPI/QueueingSocketSink.test.cc @@ -36,7 +36,7 @@ #include #define prefix_ -///////////////////////////////cc.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// namespace ppi = senf::ppi; namespace module = ppi::module; namespace debug = module::debug; @@ -75,16 +75,25 @@ namespace { 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))); - ppi::FIFOQueueingAlgorithm queueingAlgorithm ( 100); module::PassiveQueueingSocketSink udpSink ( - outputSocket, queueingAlgorithm); + os, ppi::FIFOQueueingAlgorithm::create()); + + // test re-assignment of socket + udpSink.handle( outputSocket); + udpSink.writer().throttled = false; debug::ActiveSource source; ppi::connect(source, udpSink); @@ -107,17 +116,29 @@ SENF_AUTO_UNIT_TEST(passiveQueueingSocketSink) 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_