23#include <boost/test/unit_test.hpp>
24#include <boost/test/data/test_case.hpp>
33struct TestHandler :
RefCount<TestHandler, ThreadUnsafePolicy> {
53 {ReactorMode::Blocking},
54 {ReactorMode::Immediate}
57 static std::ostream&
operator<<(std::ostream& os, ReactorModeWrapper
mode) {
58 if (
mode.v == ReactorMode::Blocking) {
59 return os <<
"ReactorMode::Blocking";
61 return os <<
"ReactorMode::Immediate";
70 using namespace literals::chrono_literals;
78 const auto now = CyclTime::now();
82 socks.first.send(
"foo", 4, 0);
83 socks.first.send(
"foo", 4, 0);
92 socks.first.send(
"foo", 4, 0);
102 using namespace literals::chrono_literals;
124 r.poll(CyclTime::now(), 0
ms);
131 r.poll(CyclTime::now(), 0
ms);
140 sub1.set_io_priority(Priority::High);
141 sub2.set_io_priority(Priority::Low);
143 std::this_thread::sleep_for(100
ms);
145 r.poll(CyclTime::now(), 0
ms);
152 sub1.set_io_priority(Priority::Low);
153 sub2.set_io_priority(Priority::High);
155 std::this_thread::sleep_for(100
ms);
157 r.poll(CyclTime::now(), 0
ms);
166 using namespace literals::chrono_literals;
200 now = WallClock::now();
209 audit_trail.push_back({.what = Audit::Entry, .fd = fd});
214 audit_trail.push_back({.what = Audit::Exit, .fd = fd});
221 audit_trail.push_back({.what = Audit::Entry, .fd = fd});
236 audit_trail.push_back({.what = Audit::Exit, .fd = fd});
252 sub_h0.set_io_priority(Priority::High);
253 sub_h1.set_io_priority(Priority::High);
260 r.poll(CyclTime::now(), 0
ms);
377 using namespace literals::chrono_literals;
385 const auto now = CyclTime::now();
389 socks.first.send(
"foo", 4, 0);
390 socks.first.send(
"foo", 4, 0);
406 socks.first.send(
"foo", 4, 0);
439 auto now = CyclTime::now();
443 r.timer(now.mono_time(), Priority::Low,
bind<&counter::operator()>(&
lpc)),
444 r.timer(now.mono_time(), Priority::Low,
bind<&counter::operator()>(&
lpc)),
450 const auto end = now.mono_time() + 95
ms;
455 while (now.mono_time() < end) {
457 hpt =
r.timer(now.mono_time(), Priority::High,
bind<&counter::operator()>(&
hpc));
461 now = CyclTime::now();
468 std::this_thread::sleep_for(10
ms);
472 for (
int i = 0;
i < 2;
i++) {
473 hpt =
r.timer(now.mono_time(), Priority::High,
bind<&counter::operator()>(&
hpc));
475 now = CyclTime::now();
BOOST_CHECK_EQUAL(v.size(), 10U)
BOOST_DATA_TEST_CASE(ReactorLevelCase, param::reactor_modes, mode)