mirror of
https://github.com/pocoproject/poco.git
synced 2025-10-28 19:51:58 +01:00
- fixed PS build script environment vars generation
- fixed MongoDB 64-bit std::size_t warnings - added Thread::trySleep()/wakeUp() and tests
This commit is contained in:
@@ -134,6 +134,33 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class TrySleepRunnable : public Runnable
|
||||
{
|
||||
public:
|
||||
TrySleepRunnable() : _counter(0)
|
||||
{
|
||||
}
|
||||
|
||||
void run()
|
||||
{
|
||||
trySleep(300000);
|
||||
++_counter;
|
||||
trySleep(300000);
|
||||
++_counter;
|
||||
trySleep(10);
|
||||
++_counter;
|
||||
}
|
||||
|
||||
int counter() const
|
||||
{
|
||||
return _counter;
|
||||
}
|
||||
|
||||
private:
|
||||
int _counter;
|
||||
};
|
||||
|
||||
|
||||
ThreadTest::ThreadTest(const std::string& name): CppUnit::TestCase(name)
|
||||
{
|
||||
}
|
||||
@@ -264,6 +291,33 @@ void ThreadTest::testNotJoin()
|
||||
}
|
||||
|
||||
|
||||
void ThreadTest::testTrySleep()
|
||||
{
|
||||
Thread thread;
|
||||
TrySleepRunnable r;
|
||||
assert(!thread.isRunning());
|
||||
assert(r.counter() == 0);
|
||||
thread.start(r);
|
||||
assert(thread.isRunning());
|
||||
assert(r.counter() == 0);
|
||||
Thread::sleep(100);
|
||||
assert(r.counter() == 0);
|
||||
thread.wakeUp();
|
||||
Thread::sleep(10);
|
||||
assert(r.counter() == 1);
|
||||
Thread::sleep(100);
|
||||
assert(r.counter() == 1);
|
||||
thread.wakeUp();
|
||||
Thread::sleep(10);
|
||||
assert(r.counter() == 2);
|
||||
Thread::sleep(100);
|
||||
assert(r.counter() == 3);
|
||||
assert(!thread.isRunning());
|
||||
thread.wakeUp();
|
||||
assert(!thread.isRunning());
|
||||
}
|
||||
|
||||
|
||||
void ThreadTest::testNotRun()
|
||||
{
|
||||
Thread thread;
|
||||
@@ -389,6 +443,7 @@ CppUnit::Test* ThreadTest::suite()
|
||||
CppUnit_addTest(pSuite, ThreadTest, testNotJoin);
|
||||
CppUnit_addTest(pSuite, ThreadTest, testNotRun);
|
||||
CppUnit_addTest(pSuite, ThreadTest, testNotRunJoin);
|
||||
CppUnit_addTest(pSuite, ThreadTest, testTrySleep);
|
||||
CppUnit_addTest(pSuite, ThreadTest, testThreadTarget);
|
||||
CppUnit_addTest(pSuite, ThreadTest, testThreadFunction);
|
||||
CppUnit_addTest(pSuite, ThreadTest, testThreadStackSize);
|
||||
|
||||
Reference in New Issue
Block a user