X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FTimerEvent.test.cc;h=ae91a5635045f67c9bca4ddbbfb369ab6dbe6c3f;hb=d498c7507e2eaa191e859ae525df97dc257e0d7a;hp=ff410e90cdfcbeadc5fa8b85530f85f36cc29367;hpb=34068bcb37387d22d2df03cad4504dced2fa684f;p=senf.git diff --git a/Scheduler/TimerEvent.test.cc b/Scheduler/TimerEvent.test.cc index ff410e9..ae91a56 100644 --- a/Scheduler/TimerEvent.test.cc +++ b/Scheduler/TimerEvent.test.cc @@ -96,24 +96,37 @@ namespace { unsigned count (0); senf::ClockService::clock_type delay (0); + bool haveCb (false); void jitterCb(senf::scheduler::TimerEvent & tm) { std::cerr << senf::scheduler::now() << ' ' << tm.timeout() << '\n'; count ++; delay += senf::scheduler::now() - tm.timeout(); + haveCb = true; tm.timeout(randomDelay()); } - void logSchedulerTime() + void preCb() { - std::cerr << senf::scheduler::now() << '\n'; + haveCb = false; + } + + void postCb() + { + if (! haveCb) + std::cerr << senf::scheduler::now() << '\n'; } void jitterTest() { count = 0; delay = 0; + senf::scheduler::EventHook pre ("jitterTest::preCb", &preCb, + senf::scheduler::EventHook::PRE); + senf::scheduler::EventHook post ("jitterTest::postCb", &postCb, + senf::scheduler::EventHook::POST); + senf::scheduler::TimerEvent tm1 ("jitterTest::tm1", boost::bind(&jitterCb, boost::ref(tm1)), randomDelay()); senf::scheduler::TimerEvent tm2 ("jitterTest::tm2", boost::bind(&jitterCb, boost::ref(tm2)), @@ -124,9 +137,6 @@ namespace { senf::scheduler::TimerEvent timeout("jitterTest::timeout", &senf::scheduler::terminate, senf::scheduler::now() + senf::ClockService::seconds(5)); - senf::scheduler::EventHook timerCalled ("jitterTest::logSchedulerTime", &logSchedulerTime, - senf::scheduler::EventHook::PRE); - senf::scheduler::process(); std::cerr << "Average scheduling delay: " << delay/count << "\n"; @@ -143,6 +153,7 @@ BOOST_AUTO_UNIT_TEST(timerJitter) std::cerr << "Hires timers\n"; senf::scheduler::hiresTimers(); jitterTest(); + senf::scheduler::loresTimers(); senf::scheduler::watchdogTimeout(1000); }