LoopForever and ThreadTrace helpers

This commit is contained in:
Gavin Andresen
2013-03-08 20:19:17 -05:00
parent 1b43bf0d3a
commit 72f14d26ec
2 changed files with 114 additions and 0 deletions

View File

@@ -323,4 +323,62 @@ BOOST_AUTO_TEST_CASE(util_seed_insecure_rand)
}
}
static int nCounter = 0;
static void Count()
{
++nCounter;
MilliSleep(10);
}
static void CountWithArg(int arg)
{
nCounter += arg;
MilliSleep(10);
}
BOOST_AUTO_TEST_CASE(util_loop_forever1)
{
boost::thread_group threadGroup;
threadGroup.create_thread(boost::bind(&LoopForever<void (*)()>, "count", &Count, 1));
MilliSleep(1);
threadGroup.interrupt_all();
BOOST_CHECK_EQUAL(nCounter, 1);
nCounter = 0;
}
BOOST_AUTO_TEST_CASE(util_loop_forever2)
{
boost::thread_group threadGroup;
boost::function<void()> f = boost::bind(&CountWithArg, 11);
threadGroup.create_thread(boost::bind(&LoopForever<boost::function<void()> >, "count11", f, 11));
MilliSleep(1);
threadGroup.interrupt_all();
BOOST_CHECK_EQUAL(nCounter, 11);
nCounter = 0;
}
BOOST_AUTO_TEST_CASE(util_threadtrace1)
{
boost::thread_group threadGroup;
threadGroup.create_thread(boost::bind(&TraceThread<void (*)()>, "count11", &Count));
threadGroup.join_all();
BOOST_CHECK_EQUAL(nCounter, 1);
nCounter = 0;
}
BOOST_AUTO_TEST_CASE(util_threadtrace2)
{
boost::thread_group threadGroup;
boost::function<void()> f = boost::bind(&CountWithArg, 11);
threadGroup.create_thread(boost::bind(&TraceThread<boost::function<void()> >, "count11", f));
threadGroup.join_all();
BOOST_CHECK_EQUAL(nCounter, 11);
nCounter = 0;
}
BOOST_AUTO_TEST_SUITE_END()