10 #define BOOST_TEST_MODULE thread_supervisor
11 #define BOOST_TEST_DYN_LINK
12 #include <boost/test/unit_test.hpp>
13 #include <boost/test/results_reporter.hpp>
14 #include <boost/timer/timer.hpp>
21 boost::unit_test::results_reporter::set_level(boost::unit_test::DETAILED_REPORT);
27 #pragma GCC diagnostic push
28 #pragma GCC diagnostic ignored "-Wpedantic"
32 #pragma GCC diagnostic pop
49 getThreadSupervisor().stop();
56 if (isThreadSupervisorInterrupted())
61 std::this_thread::sleep_for(std::chrono::seconds(1));
77 stopSupervisedThreads();
86 TestThreadSupervisor pool;
95 TestThreadSupervisor pool;
96 BOOST_CHECK_EQUAL(pool.counter_,
static_cast<std::size_t
>(0));
98 pool.addSupervisedThread(
102 &TestThreadSupervisor::threadCounter,
105 std::this_thread::sleep_for(std::chrono::seconds(1));
107 BOOST_CHECK_EQUAL(pool.counter_,
static_cast<std::size_t
>(10));
108 BOOST_CHECK(not pool.isThreadSupervisorInterrupted());
std::atomic< std::size_t > counter_
void stopSupervisedThreads() override
virtual ~TestThreadSupervisor()
Inheritable supervisor simplifies starting class methods in separate threads.
~GlobalFixtureConfig()=default
BOOST_AUTO_TEST_CASE(ThreadSupervisorStop)
BOOST_GLOBAL_FIXTURE(GlobalFixtureConfig)