activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tab...@apache.org
Subject svn commit: r526175 - in /activemq/activemq-cpp/tags/activemq-cpp-2.0/src: main/activemq/concurrent/ main/activemq/connector/stomp/commands/ main/activemq/core/ test/activemq/concurrent/ test/activemq/connector/openwire/commands/ test/activemq/connecto...
Date Fri, 06 Apr 2007 14:12:29 GMT
Author: tabish
Date: Fri Apr  6 07:12:28 2007
New Revision: 526175

URL: http://svn.apache.org/viewvc?view=rev&rev=526175
Log:
Updating the 2.0 release candidate code

Modified:
    activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/concurrent/CountDownLatch.h
    activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/connector/stomp/commands/CommandConstants.cpp
    activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/connector/stomp/commands/CommandConstants.h
    activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/core/ActiveMQConsumer.cpp
    activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/concurrent/ThreadPoolTest.cpp
    activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/concurrent/ThreadPoolTest.h
    activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/connector/openwire/commands/ActiveMQMessageTest.cpp
    activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/connector/stomp/commands/MessageCommandTest.h

Modified: activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/concurrent/CountDownLatch.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/concurrent/CountDownLatch.h?view=diff&rev=526175&r1=526174&r2=526175
==============================================================================
--- activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/concurrent/CountDownLatch.h
(original)
+++ activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/concurrent/CountDownLatch.h
Fri Apr  6 07:12:28 2007
@@ -49,7 +49,8 @@
         virtual ~CountDownLatch();
 
         /**
-         * Waits for the Count to be zero, and then
+         * Waits for the Count to be zero, and then returns
+         * @throws CMSException
          */
         virtual void await() throw ( cms::CMSException );
 

Modified: activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/connector/stomp/commands/CommandConstants.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/connector/stomp/commands/CommandConstants.cpp?view=diff&rev=526175&r1=526174&r2=526175
==============================================================================
--- activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/connector/stomp/commands/CommandConstants.cpp
(original)
+++ activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/connector/stomp/commands/CommandConstants.cpp
Fri Apr  6 07:12:28 2007
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
- 
+
 #include "CommandConstants.h"
 #include <stdio.h>
 
@@ -44,7 +44,7 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 CommandConstants::StaticInitializer::StaticInitializer(){
-    
+
     stompHeaders[HEADER_DESTINATION] = "destination";
     stompHeaders[HEADER_TRANSACTIONID] = "transaction";
     stompHeaders[HEADER_CONTENTLENGTH] = "content-length";
@@ -67,8 +67,6 @@
     stompHeaders[HEADER_REPLYTO] = "reply-to";
     stompHeaders[HEADER_TYPE] = "type";
     stompHeaders[HEADER_AMQMSGTYPE] = "amq-msg-type";
-    stompHeaders[HEADER_JMSXGROUPID] = "JMSXGroupID";
-    stompHeaders[HEADER_JMSXGROUPSEQNO] = "JMSXGroupSeq";
     stompHeaders[HEADER_SELECTOR] = "selector";
     stompHeaders[HEADER_DISPATCH_ASYNC] = "activemq.dispatchAsync";
     stompHeaders[HEADER_EXCLUSIVE] = "activemq.exclusive";
@@ -105,11 +103,11 @@
     for( int ix=0; ix<NUM_STOMP_HEADERS; ++ix ){
         stompHeaderMap[stompHeaders[ix]] = (StompHeader)ix;
     }
-    
+
     for( int ix=0; ix<NUM_COMMANDS; ++ix ){
         commandMap[commands[ix]] = (CommandId)ix;
     }
-    
+
     for( int ix=0; ix<NUM_ACK_MODES; ++ix ){
         ackModeMap[ackModes[ix]] = (AckMode)ix;
     }
@@ -125,7 +123,7 @@
 {
     std::size_t qpos = dest.find(queuePrefix);
     std::size_t tpos = dest.find(topicPrefix);
-    
+
     if(tpos == 0)
     {
         return new StompTopic(dest.substr(strlen(topicPrefix)));
@@ -140,6 +138,6 @@
             __FILE__, __LINE__,
             "CommandConstants::toDestination - Not a valid Stomp Dest [%s]", dest.c_str());
     }
-}  
+}
 
 

Modified: activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/connector/stomp/commands/CommandConstants.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/connector/stomp/commands/CommandConstants.h?view=diff&rev=526175&r1=526174&r2=526175
==============================================================================
--- activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/connector/stomp/commands/CommandConstants.h
(original)
+++ activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/connector/stomp/commands/CommandConstants.h
Fri Apr  6 07:12:28 2007
@@ -27,10 +27,10 @@
 namespace connector{
 namespace stomp{
 namespace commands{
-    
-    class CommandConstants{    
+
+    class CommandConstants{
     public:
-    
+
         enum CommandId{
             CONNECT,
             CONNECTED,
@@ -47,7 +47,7 @@
             RECEIPT,
             NUM_COMMANDS
         };
-        
+
         enum StompHeader{
             HEADER_DESTINATION,
             HEADER_TRANSACTIONID,
@@ -69,8 +69,6 @@
             HEADER_REPLYTO,
             HEADER_TYPE,
             HEADER_AMQMSGTYPE,
-            HEADER_JMSXGROUPID,
-            HEADER_JMSXGROUPSEQNO,
             HEADER_DISPATCH_ASYNC,
             HEADER_EXCLUSIVE,
             HEADER_MAXPENDINGMSGLIMIT,
@@ -87,98 +85,98 @@
             HEADER_ID,
             HEADER_SUBSCRIPTION,
             NUM_STOMP_HEADERS
-        }; 
-        
+        };
+
         enum AckMode{
             ACK_CLIENT,
             ACK_AUTO,
             NUM_ACK_MODES
         };
-        
+
         enum MessageType
         {
             TEXT,
             BYTES,
             NUM_MSG_TYPES
         };
-        
+
         static const char* queuePrefix;
         static const char* topicPrefix;
-        
+
         static const std::string& toString( const CommandId cmd ){
             return StaticInitializer::commands[cmd];
         }
-        
-        static CommandId toCommandId( const std::string& cmd ){     
-            std::map<std::string, CommandId>::iterator iter = 
+
+        static CommandId toCommandId( const std::string& cmd ){
+            std::map<std::string, CommandId>::iterator iter =
                 StaticInitializer::commandMap.find(cmd);
 
             if( iter == StaticInitializer::commandMap.end() ){
                 return NUM_COMMANDS;
             }
-                    
+
             return iter->second;
         }
-        
+
         static bool isCommandId( const std::string& str ){
-            std::map<std::string, CommandId>::iterator iter = 
+            std::map<std::string, CommandId>::iterator iter =
                 StaticInitializer::commandMap.find(str);
 
             return iter != StaticInitializer::commandMap.end();
-        }         
-        
+        }
+
         static std::string toString( const StompHeader header ){
             return StaticInitializer::stompHeaders[header];
         }
-        
-        static StompHeader toStompHeader( const std::string& header ){  
-            
-            std::map<std::string, StompHeader>::iterator iter = 
+
+        static StompHeader toStompHeader( const std::string& header ){
+
+            std::map<std::string, StompHeader>::iterator iter =
                 StaticInitializer::stompHeaderMap.find(header);
 
             if( iter == StaticInitializer::stompHeaderMap.end() ){
                 return NUM_STOMP_HEADERS;
             }
-                    
-            return iter->second;            
+
+            return iter->second;
         }
-        
+
         static bool isStompHeader( const std::string& str ){
-            std::map<std::string, StompHeader>::iterator iter = 
+            std::map<std::string, StompHeader>::iterator iter =
                 StaticInitializer::stompHeaderMap.find(str);
 
             return iter != StaticInitializer::stompHeaderMap.end();
-        }     
-        
+        }
+
         static std::string toString( const AckMode mode ){
             return StaticInitializer::ackModes[mode];
         }
-        
+
         static AckMode toAckMode( const std::string& mode ){
-            std::map<std::string, AckMode>::iterator iter = 
+            std::map<std::string, AckMode>::iterator iter =
                 StaticInitializer::ackModeMap.find(mode);
 
             if( iter == StaticInitializer::ackModeMap.end() ){
                 return NUM_ACK_MODES;
             }
-                    
+
             return iter->second;
-        }  
-         
+        }
+
         static std::string toString( const MessageType type ){
             return StaticInitializer::msgTypes[type];
         }
-        
+
         static MessageType toMessageType( const std::string& type ){
-            std::map<std::string, MessageType>::iterator iter = 
+            std::map<std::string, MessageType>::iterator iter =
                 StaticInitializer::msgTypeMap.find(type);
 
             if( iter == StaticInitializer::msgTypeMap.end() ){
                 return NUM_MSG_TYPES;
             }
-                    
+
             return iter->second;
-        }  
+        }
 
         static cms::Destination* toDestination( const std::string& dest )
             throw ( exceptions::IllegalArgumentException );
@@ -187,7 +185,7 @@
         public:
             StaticInitializer();
             virtual ~StaticInitializer(){}
-            
+
             static std::string stompHeaders[NUM_STOMP_HEADERS];
             static std::string commands[NUM_COMMANDS];
             static std::string ackModes[NUM_ACK_MODES];
@@ -197,12 +195,12 @@
             static std::map<std::string, AckMode> ackModeMap;
             static std::map<std::string, MessageType> msgTypeMap;
         };
-        
+
     private:
-    
-        static StaticInitializer staticInits;        
+
+        static StaticInitializer staticInits;
     };
-    
+
 }}}}
 
 #endif /*ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_COMMANDCONSTANTS_H_*/

Modified: activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/core/ActiveMQConsumer.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/core/ActiveMQConsumer.cpp?view=diff&rev=526175&r1=526174&r2=526175
==============================================================================
--- activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/core/ActiveMQConsumer.cpp
(original)
+++ activemq/activemq-cpp/tags/activemq-cpp-2.0/src/main/activemq/core/ActiveMQConsumer.cpp
Fri Apr  6 07:12:28 2007
@@ -362,7 +362,7 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 void ActiveMQConsumer::afterMessageIsConsumed( ActiveMQMessage* message, 
-    bool messageExpired )
+    bool messageExpired AMQCPP_UNUSED )
 {
     try
     {

Modified: activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/concurrent/ThreadPoolTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/concurrent/ThreadPoolTest.cpp?view=diff&rev=526175&r1=526174&r2=526175
==============================================================================
--- activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/concurrent/ThreadPoolTest.cpp
(original)
+++ activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/concurrent/ThreadPoolTest.cpp
Fri Apr  6 07:12:28 2007
@@ -18,3 +18,132 @@
 #include "ThreadPoolTest.h"
 
 CPPUNIT_TEST_SUITE_REGISTRATION( activemq::concurrent::ThreadPoolTest );
+
+using namespace std;
+using namespace activemq;
+using namespace activemq::concurrent;
+
+///////////////////////////////////////////////////////////////////////////////
+void ThreadPoolTest::test1()
+{
+    CountDownLatch myLatch( 3 );
+    this->latch = &myLatch;
+
+    MyTask task1( 1 );
+    MyTask task2( 2 );
+    MyTask task3( 3 );
+
+    this->complete = 0;
+    this->tasksToComplete = 3;
+
+    ThreadPool* pool = ThreadPool::getInstance();
+
+    pool->queueTask( ThreadPool::Task( &task1, this ) );
+    pool->queueTask( ThreadPool::Task( &task2, this ) );
+    pool->queueTask( ThreadPool::Task( &task3, this ) );
+
+    // Wait for them to finish, if we can't do this in 30 seconds then
+    // there's probably something really wrong.
+    myLatch.await( 30000 );
+
+    CPPUNIT_ASSERT( this->complete == this->tasksToComplete );
+
+    CPPUNIT_ASSERT( task1.value == 101 );
+    CPPUNIT_ASSERT( task2.value == 102 );
+    CPPUNIT_ASSERT( task3.value == 103 );
+
+    CPPUNIT_ASSERT( pool->getPoolSize() > 0 );
+    CPPUNIT_ASSERT( pool->getBacklog() == 0 );
+
+    CPPUNIT_ASSERT( pool->getMaxThreads() == ThreadPool::DEFAULT_MAX_POOL_SIZE );
+    CPPUNIT_ASSERT( pool->getBlockSize() == ThreadPool::DEFAULT_MAX_BLOCK_SIZE );
+
+    pool->setMaxThreads(50);
+    pool->setBlockSize(50);
+
+    CPPUNIT_ASSERT( pool->getMaxThreads() == 50 );
+    CPPUNIT_ASSERT( pool->getBlockSize() == 50 );
+
+    // Give it a little time to create all those threads.
+    for( int i = 0; i < 1000; ++i ) {
+        if( pool->getFreeThreadCount() == pool->getPoolSize() ) {
+            break;
+        }
+
+        Thread::sleep( 100 );
+    }
+
+    CPPUNIT_ASSERT( pool->getFreeThreadCount() == pool->getPoolSize() );
+    CPPUNIT_ASSERT( this->caughtEx == false );
+}
+
+///////////////////////////////////////////////////////////////////////////////
+void ThreadPoolTest::test2() {
+
+    try
+    {
+        ThreadPool pool;
+        Mutex myMutex;
+
+        CPPUNIT_ASSERT( pool.getMaxThreads() == ThreadPool::DEFAULT_MAX_POOL_SIZE );
+        CPPUNIT_ASSERT( pool.getBlockSize() == ThreadPool::DEFAULT_MAX_BLOCK_SIZE );
+        pool.setMaxThreads(3);
+        pool.setBlockSize(1);
+        CPPUNIT_ASSERT( pool.getMaxThreads() == 3 );
+        CPPUNIT_ASSERT( pool.getBlockSize() == 1 );
+        CPPUNIT_ASSERT( pool.getPoolSize() == 0 );
+        pool.reserve( 4 );
+        CPPUNIT_ASSERT( pool.getPoolSize() == 3 );
+        CPPUNIT_ASSERT( pool.getFreeThreadCount() == 3 );
+
+        CountDownLatch startedLatch1(3);  // First three should go right away
+        CountDownLatch startedLatch2(1);  // The fourth one goes after others finish
+        CountDownLatch doneLatch(4);      // All should be done when we are at the end.
+
+        this->latch = &doneLatch;
+
+        MyWaitingTask task1( &myMutex, &startedLatch1 );
+        MyWaitingTask task2( &myMutex, &startedLatch1 );
+        MyWaitingTask task3( &myMutex, &startedLatch1 );
+        MyWaitingTask task4( &myMutex, &startedLatch2 );
+
+        this->complete = 0;
+        this->tasksToComplete = 4;
+
+        pool.queueTask( ThreadPool::Task( &task1, this ) );
+        pool.queueTask( ThreadPool::Task( &task2, this ) );
+        pool.queueTask( ThreadPool::Task( &task3, this ) );
+        pool.queueTask( ThreadPool::Task( &task4, this ) );
+
+        // Wait 30 seconds, then we let it fail because something is
+        // probably very wrong.
+        startedLatch1.await( 30000 );
+
+        CPPUNIT_ASSERT( pool.getFreeThreadCount() == 0 );
+        CPPUNIT_ASSERT( pool.getBacklog() == 1 );
+
+        // Wake up the tasks.
+        synchronized(&myMutex) {
+            myMutex.notifyAll();
+        }
+
+        // Wait 30 seconds, then we let it fail because something is
+        // probably very wrong.
+        startedLatch2.await( 30000 );
+
+        // Wake up the last task.
+        synchronized(&myMutex) {
+            myMutex.notifyAll();
+        }
+
+        // Wait for them to finish, if it takes longer than 30 seconds
+        // something is not right.
+        doneLatch.await( 30000 );
+
+        CPPUNIT_ASSERT( this->complete == this->tasksToComplete );
+        CPPUNIT_ASSERT( this->caughtEx == false );
+    }
+    catch( exceptions::ActiveMQException& ex ) {
+        ex.setMark( __FILE__, __LINE__ );
+    }
+}

Modified: activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/concurrent/ThreadPoolTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/concurrent/ThreadPoolTest.h?view=diff&rev=526175&r1=526174&r2=526175
==============================================================================
--- activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/concurrent/ThreadPoolTest.h
(original)
+++ activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/concurrent/ThreadPoolTest.h
Fri Apr  6 07:12:28 2007
@@ -21,6 +21,7 @@
 #include <cppunit/TestFixture.h>
 #include <cppunit/extensions/HelperMacros.h>
 
+#include <activemq/concurrent/CountDownLatch.h>
 #include <activemq/concurrent/Concurrent.h>
 #include <activemq/concurrent/Thread.h>
 #include <activemq/concurrent/ThreadPool.h>
@@ -31,221 +32,104 @@
 namespace activemq{
 namespace concurrent{
 
-   class ThreadPoolTest : 
-      public CppUnit::TestFixture,
-      public TaskListener
-   {
-      CPPUNIT_TEST_SUITE( ThreadPoolTest );
-      CPPUNIT_TEST( test1 );
-      CPPUNIT_TEST( test2 );
-      CPPUNIT_TEST_SUITE_END();
-
-      int tasksToComplete;
-      int complete;
-      Mutex mutex;
-      Mutex completeMutex;
-      bool caughtEx;
-      
-   public:
- 
-   	ThreadPoolTest() 
-      { 
-         complete = 0;
-         tasksToComplete = 0;
-         caughtEx = false;
-      }
-      
-   	virtual ~ThreadPoolTest() {};
-      
-      virtual void onTaskComplete(Runnable* task AMQCPP_UNUSED)
-      {
-        try{
-             synchronized(&mutex)
-             {
+    class ThreadPoolTest :
+        public CppUnit::TestFixture,
+        public TaskListener
+    {
+        CPPUNIT_TEST_SUITE( ThreadPoolTest );
+        CPPUNIT_TEST( test1 );
+        CPPUNIT_TEST( test2 );
+        CPPUNIT_TEST_SUITE_END();
+
+        int tasksToComplete;
+        int complete;
+        Mutex mutex;
+        bool caughtEx;
+        CountDownLatch* latch;
+
+    public:
+
+        ThreadPoolTest() {
+            complete = 0;
+            tasksToComplete = 0;
+            caughtEx = false;
+            latch = NULL;
+        }
+
+        virtual ~ThreadPoolTest() {}
+
+        virtual void onTaskComplete(Runnable* task AMQCPP_UNUSED)
+        {
+            try{
+
                 complete++;
-                
-                if(tasksToComplete == complete)
-                {
-                   mutex.notifyAll();
+
+                if( latch != NULL ) {
+                    latch->countDown();
                 }
-             }
-        }catch( exceptions::ActiveMQException& ex ){
-            ex.setMark( __FILE__, __LINE__ );
+            }catch( exceptions::ActiveMQException& ex ){
+                ex.setMark( __FILE__, __LINE__ );
+            }
         }
-      }
 
-      virtual void onTaskException(Runnable* task AMQCPP_UNUSED, 
-        exceptions::ActiveMQException& ex AMQCPP_UNUSED)
-      {
-         caughtEx = true;
-      }
-      
-   public:
-   
-      class MyTask : public Runnable
-      {
-      public:
-      
-         int value;
-         
-         MyTask(int x)
-         {
-            value = x;
-         }
-         
-         virtual ~MyTask() {};
-         
-         virtual void run(void)
-         {
-            value += 100;
-         }
-      };
-
-      class MyWaitingTask : public Runnable
-      {
-      public:
-      
-         Mutex* mutex;
-         Mutex* complete;
-         
-         MyWaitingTask(Mutex* mutex, Mutex* complete)
-         {
-            this->mutex = mutex;
-            this->complete = complete;
-         }
-         
-         virtual ~MyWaitingTask() {};
-         
-         virtual void run(void)
-         {
-            try
-            {
-               synchronized(mutex)
-               {
-                  mutex->wait();
-               }
-
-               synchronized(complete)
-               {
-                   complete->notify();
-               }
+        virtual void onTaskException(Runnable* task AMQCPP_UNUSED,
+            exceptions::ActiveMQException& ex AMQCPP_UNUSED) {
+            caughtEx = true;
+        }
+
+    public:
+
+        class MyTask : public Runnable
+        {
+        public:
+
+            int value;
+
+            MyTask( int x ) {
+                value = x;
             }
-            catch( exceptions::ActiveMQException& ex )
-            {
-                ex.setMark( __FILE__, __LINE__ );
+
+            virtual ~MyTask() {};
+
+            virtual void run(void) {
+                value += 100;
             }
-         }
-      };
+        };
 
-   public:
-        
-      void test2()
-      {
-         try
-         {
-            ThreadPool pool;
-            Mutex myMutex;
-    
-            CPPUNIT_ASSERT( pool.getMaxThreads() == ThreadPool::DEFAULT_MAX_POOL_SIZE );
-            CPPUNIT_ASSERT( pool.getBlockSize() == ThreadPool::DEFAULT_MAX_BLOCK_SIZE );
-            pool.setMaxThreads(3);
-            pool.setBlockSize(1);
-            CPPUNIT_ASSERT( pool.getMaxThreads() == 3 );
-            CPPUNIT_ASSERT( pool.getBlockSize() == 1 );
-            CPPUNIT_ASSERT( pool.getPoolSize() == 0 );
-            pool.reserve( 4 );
-            CPPUNIT_ASSERT( pool.getPoolSize() == 3 );
-            CPPUNIT_ASSERT( pool.getFreeThreadCount() == 3 );
-    
-            MyWaitingTask task1(&myMutex, &completeMutex);
-            MyWaitingTask task2(&myMutex, &completeMutex);
-            MyWaitingTask task3(&myMutex, &completeMutex);
-            MyWaitingTask task4(&myMutex, &completeMutex);
-    
-            complete = 0;
-            tasksToComplete = 4;
-    
-            pool.queueTask(ThreadPool::Task(&task1, this));
-            pool.queueTask(ThreadPool::Task(&task2, this));
-            pool.queueTask(ThreadPool::Task(&task3, this));
-            pool.queueTask(ThreadPool::Task(&task4, this));
-             
-            Thread::sleep( 1000 );
-             
-            CPPUNIT_ASSERT( pool.getFreeThreadCount() == 0 );
-            CPPUNIT_ASSERT( pool.getBacklog() == 1 );
-    
-            int count = 0;
-            while(complete != tasksToComplete && count < 100)
-            {
-               synchronized(&myMutex)
-               {
-                  myMutex.notifyAll();
-               }
-
-               synchronized(&completeMutex)
-               {
-                  completeMutex.wait(1000);
-               }
+        class MyWaitingTask : public Runnable
+        {
+        public:
+
+            Mutex* mutex;
+            CountDownLatch* startedLatch;
+
+            MyWaitingTask( Mutex* mutex, CountDownLatch* startedLatch ) {
+                this->mutex = mutex;
+                this->startedLatch = startedLatch;
+            }
 
-               count++;
+            virtual ~MyWaitingTask() {};
+
+            virtual void run(void) {
+                try
+                {
+                    synchronized(mutex) {
+                        startedLatch->countDown();
+                        mutex->wait();
+                    }
+                }
+                catch( exceptions::ActiveMQException& ex ) {
+                    ex.setMark( __FILE__, __LINE__ );
+                }
             }
-    
-            CPPUNIT_ASSERT( complete == tasksToComplete );
-            CPPUNIT_ASSERT( caughtEx == false );
-         }
-         catch( exceptions::ActiveMQException& ex )
-         {
-            ex.setMark( __FILE__, __LINE__ );
-         }
-      }
-   
-      void test1()
-      {
-         MyTask task1(1);
-         MyTask task2(2);
-         MyTask task3(3);
-         
-         complete = 0;
-         tasksToComplete = 3;
-         
-         ThreadPool* pool = ThreadPool::getInstance();
-         
-         // Can't check this here since one of the other tests might
-         // have used the global thread pool.
-         // CPPUNIT_ASSERT( pool->getPoolSize() == 0 );
-
-         pool->queueTask(ThreadPool::Task(&task1, this));
-         pool->queueTask(ThreadPool::Task(&task2, this));
-         pool->queueTask(ThreadPool::Task(&task3, this));
-         
-         Thread::sleep(500);
-         
-         CPPUNIT_ASSERT( complete == tasksToComplete );
-
-         CPPUNIT_ASSERT( task1.value == 101 );
-         CPPUNIT_ASSERT( task2.value == 102 );
-         CPPUNIT_ASSERT( task3.value == 103 );
-         
-         CPPUNIT_ASSERT( pool->getPoolSize() > 0 );
-         CPPUNIT_ASSERT( pool->getBacklog() == 0 );
-
-         CPPUNIT_ASSERT( pool->getMaxThreads() == ThreadPool::DEFAULT_MAX_POOL_SIZE );
-         CPPUNIT_ASSERT( pool->getBlockSize() == ThreadPool::DEFAULT_MAX_BLOCK_SIZE );
-
-         pool->setMaxThreads(50);
-         pool->setBlockSize(50);
-
-         CPPUNIT_ASSERT( pool->getMaxThreads() == 50 );
-         CPPUNIT_ASSERT( pool->getBlockSize() == 50 );
-
-         Thread::sleep(500);
-
-         CPPUNIT_ASSERT( pool->getFreeThreadCount() == pool->getPoolSize() );
-         CPPUNIT_ASSERT( caughtEx == false );
-         
-      }
-   };
+        };
+
+    public:
+
+        virtual void test1();
+        virtual void test2();
+
+    };
 
 }}
 

Modified: activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/connector/openwire/commands/ActiveMQMessageTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/connector/openwire/commands/ActiveMQMessageTest.cpp?view=diff&rev=526175&r1=526174&r2=526175
==============================================================================
--- activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/connector/openwire/commands/ActiveMQMessageTest.cpp
(original)
+++ activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/connector/openwire/commands/ActiveMQMessageTest.cpp
Fri Apr  6 07:12:28 2007
@@ -36,20 +36,20 @@
     MyAckHandler ackHandler;
 
     CPPUNIT_ASSERT( myMessage.getDataStructureType() == ActiveMQMessage::ID_ACTIVEMQMESSAGE
);
-    
+
     myMessage.setAckHandler( &ackHandler );
     myMessage.acknowledge();
-    
+
     CPPUNIT_ASSERT( ackHandler.wasAcked == true );
-    
+
     CPPUNIT_ASSERT( myMessage.getPropertyNames().size() == 0 );
     CPPUNIT_ASSERT( myMessage.propertyExists( "something" ) == false );
-    
+
     try {
         myMessage.getBooleanProperty( "somethingElse" );
         CPPUNIT_ASSERT( false );
     } catch(...) {}
-    
+
     myMessage.setBooleanProperty( "boolean", false );
     myMessage.setByteProperty( "byte", 60 );
     myMessage.setDoubleProperty( "double", 642.5643 );
@@ -58,7 +58,7 @@
     myMessage.setLongProperty( "long", 0xFFFFFFFF0000000LL );
     myMessage.setShortProperty( "short", 512 );
     myMessage.setStringProperty( "string", "This is a test String" );
-    
+
     CPPUNIT_ASSERT( myMessage.getBooleanProperty( "boolean" ) == false );
     CPPUNIT_ASSERT( myMessage.getByteProperty( "byte" ) == 60 );
     CPPUNIT_ASSERT( myMessage.getDoubleProperty( "double" ) == 642.5643 );
@@ -67,4 +67,7 @@
     CPPUNIT_ASSERT( myMessage.getLongProperty( "long" ) == 0xFFFFFFFF0000000LL );
     CPPUNIT_ASSERT( myMessage.getShortProperty( "short" ) == 512 );
     CPPUNIT_ASSERT( myMessage.getStringProperty( "string" ) == "This is a test String" );
+
+    myMessage.setStringProperty( "JMSXGroupID", "hello" );
+    CPPUNIT_ASSERT( myMessage.getStringProperty( "JMSXGroupID" ) == "hello" );
 }

Modified: activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/connector/stomp/commands/MessageCommandTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/connector/stomp/commands/MessageCommandTest.h?view=diff&rev=526175&r1=526174&r2=526175
==============================================================================
--- activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/connector/stomp/commands/MessageCommandTest.h
(original)
+++ activemq/activemq-cpp/tags/activemq-cpp-2.0/src/test/activemq/connector/stomp/commands/MessageCommandTest.h
Fri Apr  6 07:12:28 2007
@@ -43,39 +43,39 @@
         CPPUNIT_TEST_SUITE_END();
 
     protected:
-    
+
         class TestAckHandler : public core::ActiveMQAckHandler
         {
         public:
-        
+
             TestAckHandler(void) { wasAcked = false; }
             virtual ~TestAckHandler(void) {}
-            
+
             virtual void acknowledgeMessage( const core::ActiveMQMessage* message AMQCPP_UNUSED)
-                throw ( cms::CMSException ) 
+                throw ( cms::CMSException )
             {
                 wasAcked = true;
             }
-            
+
         public:
-        
+
             bool wasAcked;
 
         };
-    
+
     public:
 
-    	MessageCommandTest() {}
-    	virtual ~MessageCommandTest() {}
+        MessageCommandTest() {}
+        virtual ~MessageCommandTest() {}
 
         void test(void)
         {
             TestAckHandler ackHandler;
             MessageCommand cmd;
 
-            CPPUNIT_ASSERT( cmd.getStompCommandId() == 
+            CPPUNIT_ASSERT( cmd.getStompCommandId() ==
                             CommandConstants::SEND );
-            
+
             CPPUNIT_ASSERT( cmd.isResponseRequired() == false );
             cmd.setResponseRequired( true );
             cmd.setCommandId( 123 );
@@ -85,53 +85,53 @@
             CPPUNIT_ASSERT( cmd.getCorrelationId() == 0 );
             CPPUNIT_ASSERT( cmd.getTransactionId() == "" );
             cmd.setTransactionId( "ID:123456" );
-            CPPUNIT_ASSERT( std::string( cmd.getTransactionId() ) == 
+            CPPUNIT_ASSERT( std::string( cmd.getTransactionId() ) ==
                             "ID:123456" );
             StompTopic topic("testTopic");
             cmd.setCMSDestination( &topic );
-            
+
             StompFrame* frame = cmd.marshal().clone();
-            
+
             CPPUNIT_ASSERT( frame != NULL );
-            
+
             MessageCommand cmd1( frame );
-            
+
             CPPUNIT_ASSERT( cmd.getCommandId() == cmd1.getCommandId() );
             CPPUNIT_ASSERT( cmd.getStompCommandId() == CommandConstants::SEND );
             CPPUNIT_ASSERT( cmd.isResponseRequired() == cmd1.isResponseRequired() );
             CPPUNIT_ASSERT( cmd.getCorrelationId() == cmd1.getCorrelationId() );
             CPPUNIT_ASSERT( std::string(cmd.getTransactionId()) == cmd1.getTransactionId()
);
-            
+
             cmd.setAckHandler( &ackHandler );
             cmd.acknowledge();
             CPPUNIT_ASSERT( ackHandler.wasAcked == true );
-            
-            CPPUNIT_ASSERT( 
+
+            CPPUNIT_ASSERT(
                 cmd.getProperties().hasProperty( "test" ) == false );
             cmd.getProperties().setProperty( "test", "value" );
-            CPPUNIT_ASSERT( 
+            CPPUNIT_ASSERT(
                 cmd.getProperties().hasProperty( "test" ) == true );
-            CPPUNIT_ASSERT( 
-                std::string( cmd.getProperties().getProperty( "test" ) ) == 
+            CPPUNIT_ASSERT(
+                std::string( cmd.getProperties().getProperty( "test" ) ) ==
                 "value" );
-                
+
             CPPUNIT_ASSERT( cmd.getCMSCorrelationID() == "" );
             cmd.setCMSCorrelationID( "ID:1234567" );
-            CPPUNIT_ASSERT( std::string( cmd.getCMSCorrelationID() ) == 
+            CPPUNIT_ASSERT( std::string( cmd.getCMSCorrelationID() ) ==
                             "ID:1234567" );
-            CPPUNIT_ASSERT( cmd.getCMSDeliveryMode() == 
+            CPPUNIT_ASSERT( cmd.getCMSDeliveryMode() ==
                             cms::DeliveryMode::PERSISTENT );
             cmd.setCMSDeliveryMode( cms::DeliveryMode::NON_PERSISTENT );
-            CPPUNIT_ASSERT( cmd.getCMSDeliveryMode() == 
+            CPPUNIT_ASSERT( cmd.getCMSDeliveryMode() ==
                             cms::DeliveryMode::NON_PERSISTENT );
-            CPPUNIT_ASSERT( cmd.getCMSDestination()->toProviderString() == 
+            CPPUNIT_ASSERT( cmd.getCMSDestination()->toProviderString() ==
                             "/topic/testTopic" );
             CPPUNIT_ASSERT( cmd.getCMSExpiration() == 0 );
             cmd.setCMSExpiration( 123 );
             CPPUNIT_ASSERT( cmd.getCMSExpiration() == 123 );
             CPPUNIT_ASSERT( cmd.getCMSMessageID() == "" );
             cmd.setCMSMessageID( "ID:1234567" );
-            CPPUNIT_ASSERT( std::string( cmd.getCMSMessageID() ) == 
+            CPPUNIT_ASSERT( std::string( cmd.getCMSMessageID() ) ==
                             "ID:1234567" );
             CPPUNIT_ASSERT( cmd.getCMSPriority() == 0 );
             cmd.setCMSPriority( 5 );
@@ -141,21 +141,21 @@
             CPPUNIT_ASSERT( cmd.getCMSRedelivered() == true );
             CPPUNIT_ASSERT( cmd.getCMSReplyTo() == NULL );
             cmd.setCMSReplyTo( &topic );
-            CPPUNIT_ASSERT( cmd.getCMSReplyTo()->toProviderString() == 
+            CPPUNIT_ASSERT( cmd.getCMSReplyTo()->toProviderString() ==
                             "/topic/testTopic" );
             CPPUNIT_ASSERT( cmd.getCMSTimestamp() == 0 );
             cmd.setCMSTimestamp( 123 );
             CPPUNIT_ASSERT( cmd.getCMSTimestamp() == 123 );
             CPPUNIT_ASSERT( cmd.getCMSType() == "" );
             cmd.setCMSType( "test" );
-            CPPUNIT_ASSERT( std::string( cmd.getCMSType() ) == 
+            CPPUNIT_ASSERT( std::string( cmd.getCMSType() ) ==
                             "test" );
             CPPUNIT_ASSERT( cmd.getRedeliveryCount() == 0 );
             cmd.setRedeliveryCount( 123 );
             CPPUNIT_ASSERT( cmd.getRedeliveryCount() == 123 );
 
             cms::Message* cmd2 = cmd.clone();
-            
+
             CPPUNIT_ASSERT( cmd.getCMSPriority() == cmd2->getCMSPriority() );
             CPPUNIT_ASSERT( cmd.getCMSTimestamp() == cmd2->getCMSTimestamp() );
             CPPUNIT_ASSERT( cmd.getCMSExpiration() == cmd2->getCMSExpiration() );
@@ -165,14 +165,14 @@
             CPPUNIT_ASSERT( std::string(cmd.getCMSType()) == cmd2->getCMSType() );
             CPPUNIT_ASSERT( std::string(cmd.getCMSMessageID()) == cmd2->getCMSMessageID()
);
 
-            core::ActiveMQMessage* message = 
+            core::ActiveMQMessage* message =
                 dynamic_cast< core::ActiveMQMessage* >( cmd2 );
-                
+
             CPPUNIT_ASSERT( message != NULL );
-            CPPUNIT_ASSERT( cmd.getRedeliveryCount() == 
+            CPPUNIT_ASSERT( cmd.getRedeliveryCount() ==
                             message->getRedeliveryCount() );
-            
-            StompCommand* cmd4 = 
+
+            StompCommand* cmd4 =
                 dynamic_cast< StompCommand* >( cmd2 );
 
             CPPUNIT_ASSERT( cmd4 != NULL );
@@ -180,7 +180,7 @@
             CPPUNIT_ASSERT( cmd.getStompCommandId() == cmd4->getStompCommandId() );
             CPPUNIT_ASSERT( cmd.isResponseRequired() == cmd4->isResponseRequired() );
             CPPUNIT_ASSERT( cmd.getCorrelationId() == cmd4->getCorrelationId() );
-            CPPUNIT_ASSERT( std::string(cmd.getTransactionId()) == 
+            CPPUNIT_ASSERT( std::string(cmd.getTransactionId()) ==
                             cmd4->getTransactionId() );
 
             delete cmd2;
@@ -188,43 +188,46 @@
 
         void testSetProperties(){
             MessageCommand cmd;
-            
+
             cmd.setBooleanProperty( "bool", true );
             CPPUNIT_ASSERT( cmd.getBooleanProperty( "bool" ) == true );
-            
+
             cmd.setByteProperty( "byte", 1 );
             CPPUNIT_ASSERT( cmd.getByteProperty( "byte" ) == 1 );
-            
+
             cmd.setDoubleProperty( "double", 2.2 );
             CPPUNIT_ASSERT( cmd.getDoubleProperty( "double" ) == 2.2 );
-            
+
             cmd.setFloatProperty( "float", 3.3f );
             CPPUNIT_ASSERT( cmd.getFloatProperty( "float" ) == 3.3f );
-            
+
             cmd.setIntProperty( "int", 4 );
             CPPUNIT_ASSERT( cmd.getIntProperty( "int" ) == 4 );
-            
+
             cmd.setLongProperty( "long", 5LL );
             CPPUNIT_ASSERT( cmd.getLongProperty( "long" ) == 5LL );
-            
+
             cmd.setShortProperty( "short", 6 );
             CPPUNIT_ASSERT( cmd.getShortProperty( "short" ) == 6 );
-            
+
             cmd.setStringProperty( "string", "hello" );
-            CPPUNIT_ASSERT( cmd.getStringProperty( "string" ) == "hello" );             
          
+            CPPUNIT_ASSERT( cmd.getStringProperty( "string" ) == "hello" );
+
+            cmd.setStringProperty( "JMSXGroupID", "hello" );
+            CPPUNIT_ASSERT( cmd.getStringProperty( "JMSXGroupID" ) == "hello" );
         }
 
         void testFailedGetProperties(){
             MessageCommand cmd;
-            
-            // Test getting a string property that doesn't exist. 
+
+            // Test getting a string property that doesn't exist.
             try {
                 std::string str = cmd.getStringProperty( "text" );
                 CPPUNIT_ASSERT(false);
             } catch( cms::CMSException& e){
             }
-            
-            // Test getting a bool property that doesn't exist. 
+
+            // Test getting a bool property that doesn't exist.
             try {
                 cmd.getBooleanProperty( "text" );
                 CPPUNIT_ASSERT(false);
@@ -235,57 +238,57 @@
             try{
                 cmd.getIntProperty("string");
                 CPPUNIT_ASSERT(false);
-            } catch( cms::CMSException& e ){                
+            } catch( cms::CMSException& e ){
             }
-            
+
             // Test failed extraction
             try{
                 cmd.setStringProperty("string", "hello");
                 cmd.getIntProperty("string");
                 CPPUNIT_ASSERT(false);
-            } catch( cms::CMSException& e ){                
+            } catch( cms::CMSException& e ){
             }
-        }      
-        
+        }
+
         void testGetPropertyNames(){
-            
+
             MessageCommand cmd;
-            
+
             std::vector<std::string> names = cmd.getPropertyNames();
             CPPUNIT_ASSERT( names.size() == 0 );
-            
+
             cmd.setIntProperty( "int1", 1 );
             names = cmd.getPropertyNames();
             CPPUNIT_ASSERT( names.size() == 1 );
             CPPUNIT_ASSERT( names[0] == "int1" );
-            
+
             cmd.setIntProperty( "int2", 2 );
             names = cmd.getPropertyNames();
             CPPUNIT_ASSERT( names.size() == 2 );
             CPPUNIT_ASSERT( names[0] == "int1" || names[1] == "int1" );
             CPPUNIT_ASSERT( names[0] == "int2" || names[1] == "int2" );
-            
+
             // Make sure headers aren't included in the property names.
             cmd.setCMSExpiration( 10000 );
             names = cmd.getPropertyNames();
             CPPUNIT_ASSERT( names.size() == 2 );
         }
-        
+
         void testClearProperties(){
             MessageCommand cmd;
-            
+
             cmd.setIntProperty( "int1", 1 );
             cmd.setIntProperty( "int2", 2 );
-            
+
             CPPUNIT_ASSERT( cmd.propertyExists( "int1" ) == true );
             CPPUNIT_ASSERT( cmd.propertyExists( "int2" ) == true );
-            
+
             cmd.clearProperties();
-            
+
             CPPUNIT_ASSERT( cmd.propertyExists( "int1" ) == false );
-            CPPUNIT_ASSERT( cmd.propertyExists( "int2" ) == false );                    
   
+            CPPUNIT_ASSERT( cmd.propertyExists( "int2" ) == false );
         }
-          
+
     };
 
 }}}}



Mime
View raw message