#define BOOST_TEST_MODULE thread_supervisor
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>
#include <boost/test/results_reporter.hpp>
#include <boost/timer/timer.hpp>
{
{
boost::unit_test::results_reporter::set_level(boost::unit_test::DETAILED_REPORT);
}
};
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
#pragma GCC diagnostic pop
namespace
{
{
public:
std::atomic<std::size_t> counter_;
public:
{
}
void threadFunction()
{
for (;;)
{
{
break;
}
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}
void threadCounter()
{
++counter_;
}
TestThreadSupervisor()
{
counter_ = 0;
}
~TestThreadSupervisor()
{
}
};
}
{
TestThreadSupervisor pool;
}
{
TestThreadSupervisor pool;
BOOST_CHECK_EQUAL(pool.counter_, static_cast<std::size_t>(0));
pool.addSupervisedThread(
&TestThreadSupervisor::threadCounter,
&pool);
std::this_thread::sleep_for(std::chrono::seconds(1));
BOOST_CHECK_EQUAL(pool.counter_, static_cast<std::size_t>(10));
BOOST_CHECK(not pool.isThreadSupervisorInterrupted());
}