diff options
| author | Gavin Andresen <[email protected]> | 2013-04-03 18:25:00 -0700 |
|---|---|---|
| committer | Gavin Andresen <[email protected]> | 2013-04-03 18:25:00 -0700 |
| commit | a0a437c86ae404152de883ac6a1463e6641eda1c (patch) | |
| tree | e99240bd446613584b20c7b9762af5711bf3f7ff /src/test/util_tests.cpp | |
| parent | Merge pull request #2453 from sipa/txstats (diff) | |
| parent | Have Qt poll for shutdown requested, the QT way. (diff) | |
| download | discoin-a0a437c86ae404152de883ac6a1463e6641eda1c.tar.xz discoin-a0a437c86ae404152de883ac6a1463e6641eda1c.zip | |
Merge pull request #2357 from gavinandresen/shutdowncleanup
Thread / shutdown cleanup
Diffstat (limited to 'src/test/util_tests.cpp')
| -rw-r--r-- | src/test/util_tests.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/test/util_tests.cpp b/src/test/util_tests.cpp index 1b0ccad51..2d05794cc 100644 --- a/src/test/util_tests.cpp +++ b/src/test/util_tests.cpp @@ -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() |