[asterisk-scf-commits] asterisk-scf/release/ice-util-cpp.git branch	"master" updated.
    Commits to the Asterisk SCF project code repositories 
    asterisk-scf-commits at lists.digium.com
       
    Wed Jul  6 16:11:14 CDT 2011
    
    
  
branch "master" has been updated
       via  81d6eb6688d12416f6761ac9eef9d488f5001622 (commit)
      from  0de3a6da08326394ca81228ee1c0ae770f78dbcb (commit)
Summary of changes:
 test/WorkQueue/TestWorkQueue.cpp |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)
- Log -----------------------------------------------------------------
commit 81d6eb6688d12416f6761ac9eef9d488f5001622
Author: Mark Michelson <mmichelson at digium.com>
Date:   Wed Jul 6 16:11:19 2011 -0500
    Fix race condition in work queue test.
diff --git a/test/WorkQueue/TestWorkQueue.cpp b/test/WorkQueue/TestWorkQueue.cpp
index 4bab4fa..099445f 100644
--- a/test/WorkQueue/TestWorkQueue.cpp
+++ b/test/WorkQueue/TestWorkQueue.cpp
@@ -82,15 +82,21 @@ public:
         : mStarted(false), mStopped(false) { }
     void start()
     {
+        boost::unique_lock<boost::mutex> lock(mLock);
         mStarted = true;
+        mCond.notify_one();
     }
     void stop()
     {
+        boost::unique_lock<boost::mutex> lock(mLock);
         mStopped = true;
+        mCond.notify_one();
     }
 
     bool mStarted;
     bool mStopped;
+    boost::mutex mLock;
+    boost::condition_variable mCond;
 };
 
 typedef IceUtil::Handle<ThreadHook> ThreadHookPtr;
@@ -447,6 +453,13 @@ BOOST_AUTO_TEST_CASE(defaultListener)
     NotifyTaskPtr work4(new NotifyTask);
     WorkSeq works;
 
+    {
+        boost::unique_lock<boost::mutex> lock(tHook->mLock);
+        while (!tHook->mStarted)
+        {
+            tHook->mCond.wait(lock);
+        }
+    }
     BOOST_CHECK(tHook->mStarted == true);
     BOOST_CHECK(tHook->mStopped == false);
 
@@ -478,6 +491,13 @@ BOOST_AUTO_TEST_CASE(defaultListener)
 
     queue->shutdown();
 
+    {
+        boost::unique_lock<boost::mutex> lock(tHook->mLock);
+        while (!tHook->mStopped)
+        {
+            tHook->mCond.wait(lock);
+        }
+    }
     BOOST_CHECK(tHook->mStopped == true);
 }
 
-----------------------------------------------------------------------
-- 
asterisk-scf/release/ice-util-cpp.git
    
    
More information about the asterisk-scf-commits
mailing list