- 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:
Alex Fabijanic
2014-04-25 23:22:54 -05:00
parent 89fc463186
commit 46b5785d98
9 changed files with 122 additions and 10 deletions

View File

@@ -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);