From 1f13a65c99e396ba1e2a8e0e1f583622d9764e22 Mon Sep 17 00:00:00 2001 From: g0dil <g0dil@wiback.org> Date: Fri, 15 May 2009 18:47:20 +0000 Subject: [PATCH] Scheduler: Fix timer scheduling delay unit-test Scheduler: Fix EventHook API --- Scheduler/EventHook.cci | 4 ++-- Scheduler/EventHook.hh | 2 +- Scheduler/Scheduler.test.cc | 4 ++-- Scheduler/TimerEvent.test.cc | 20 +++++++++++++++----- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/Scheduler/EventHook.cci b/Scheduler/EventHook.cci index 89e1b1a10..8cbec8541 100644 --- a/Scheduler/EventHook.cci +++ b/Scheduler/EventHook.cci @@ -34,8 +34,8 @@ // senf::scheduler::EventHook prefix_ senf::scheduler::EventHook::EventHook(std::string const & name, Callback const & cb, - bool initiallyEnabled, - detail::FIFORunner::TaskInfo::Priority priority) + detail::FIFORunner::TaskInfo::Priority priority, + bool initiallyEnabled) : detail::FIFORunner::TaskInfo(name, priority), cb_ (cb) { if (initiallyEnabled) diff --git a/Scheduler/EventHook.hh b/Scheduler/EventHook.hh index 443778035..0ab24c963 100644 --- a/Scheduler/EventHook.hh +++ b/Scheduler/EventHook.hh @@ -82,7 +82,7 @@ namespace scheduler { ///@{ EventHook(std::string const & name, Callback const & cb, - bool initiallyEnabled = true, Priority priority = POST); + Priority priority, bool initiallyEnabled = true); ///< Register an event hook /**< Registers \a cb to be called whenever any other event is signaled by the scheduler. If \a initiallyEnabled is diff --git a/Scheduler/Scheduler.test.cc b/Scheduler/Scheduler.test.cc index 0a135182e..14e01bc05 100644 --- a/Scheduler/Scheduler.test.cc +++ b/Scheduler/Scheduler.test.cc @@ -242,8 +242,8 @@ void schedulerTest() /////////////////////////////////////////////////////////////////////////// - senf::scheduler::EventHook evev ("eventCounter", eventeventhandler, true, - senf::scheduler::EventHook::PRE); + senf::scheduler::EventHook evev ("eventCounter", eventeventhandler, + senf::scheduler::EventHook::PRE); { senf::scheduler::FdEvent fde1 ("testFdEvent", boost::bind(&callback, sock, _1), diff --git a/Scheduler/TimerEvent.test.cc b/Scheduler/TimerEvent.test.cc index ff410e90c..7801ad199 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"; -- GitLab