You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2009/05/07 02:07:58 UTC

svn commit: r772470 - in /activemq/activemq-cpp/trunk/activemq-cpp/src: main/activemq/wireformat/stomp/marshal/ test-integration/ test-integration/activemq/test/ test-integration/activemq/test/openwire/ test-integration/activemq/test/stomp/ test-integr...

Author: tabish
Date: Thu May  7 00:07:57 2009
New Revision: 772470

URL: http://svn.apache.org/viewvc?rev=772470&view=rev
Log:
Completed Stomp Protocol support, all integration tests now pass.

Modified:
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/Marshaler.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/Marshaler.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/MarshalerHelper.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/MarshalerHelper.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/Makefile.am
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/TestRegistry.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/DurableTest.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/DurableTest.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/JmsMessageGroupsTest.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/SimpleRollbackTest.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/TransactionTest.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/openwire/OpenwireDurableTest.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/openwire/OpenwireDurableTest.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/stomp/StompDurableTest.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/stomp/StompJmsMessageGroupsTest.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/stomp/StompTransactionTest.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/util/CMSProvider.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/util/IntegrationCommon.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/main.cpp

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/Marshaler.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/Marshaler.cpp?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/Marshaler.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/Marshaler.cpp Thu May  7 00:07:57 2009
@@ -161,8 +161,13 @@
 
     Pointer<Response> response( new Response() );
     if( frame->hasProperty( StompCommandConstants::HEADER_RECEIPTID ) ) {
-        response->setCorrelationId( Integer::parseInt(
-            frame->getProperty( StompCommandConstants::HEADER_RECEIPTID ) ) );
+
+        std::string responseId = frame->getProperty( StompCommandConstants::HEADER_RECEIPTID );
+        if( responseId.find( "ignore:" ) == 0 ) {
+            responseId = responseId.substr( 7 );
+        }
+
+        response->setCorrelationId( Integer::parseInt( responseId ) );
     } else {
         throw IOException(
             __FILE__, __LINE__, "Error, Connected Command has no Response ID." );
@@ -199,7 +204,7 @@
 
         // If we indicated that we don't care if the request failed then just create a
         // response command to answer the request.
-        if( responseId.find( "ignore:" ) != std::string::npos ) {
+        if( responseId.find( "ignore:" ) == 0 ) {
 
             Pointer<Response> response( new Response() );
             response->setCorrelationId( Integer::parseInt( responseId.substr( 7 ) ) );
@@ -266,7 +271,7 @@
 
     if( command->isResponseRequired() ) {
         frame->setProperty( StompCommandConstants::HEADER_RECEIPT_REQUIRED,
-                            Integer::toString( command->getCommandId() ) );
+                            std::string( "ignore:" ) + Integer::toString( command->getCommandId() ) );
     }
 
     frame->setProperty( StompCommandConstants::HEADER_MESSAGEID,
@@ -277,7 +282,8 @@
                             helper.convertTransactionId( ack->getTransactionId() ) );
     }
 
-    return Pointer<StompFrame>(); //frame;
+    //return Pointer<StompFrame>();
+    return frame;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -293,6 +299,9 @@
     frame->setProperty( StompCommandConstants::HEADER_REQUESTID,
                         Integer::toString( info->getCommandId() ) );
 
+    // Store this for later.
+    this->clientId = info->getClientId();
+
     return frame;
 }
 
@@ -381,6 +390,15 @@
                         helper.convertConsumerId( info->getConsumerId() ) );
 
     if( info->getSubscriptionName() != "" ) {
+
+        if( this->clientId != info->getSubscriptionName() ) {
+            throw UnsupportedOperationException(
+                __FILE__, __LINE__,
+                "Stomp Durable Subscriptions require that the ClientId and the Subscription "
+                "Name match, clientId = {%s} : subscription name = {%s}.",
+                this->clientId.c_str(), info->getSubscriptionName().c_str() );
+        }
+
         frame->setProperty( StompCommandConstants::HEADER_SUBSCRIPTIONNAME,
                             info->getSubscriptionName() );
         // Older Brokers had an misspelled property name, this ensure we can talk to them as well.
@@ -393,7 +411,7 @@
                             info->getSelector() );
     }
 
-    frame->setProperty( StompCommandConstants::HEADER_ACK, "auto" );
+    frame->setProperty( StompCommandConstants::HEADER_ACK, "client" );
 
     if( info->isNoLocal() ) {
         frame->setProperty( StompCommandConstants::HEADER_NOLOCAL, "true" );
@@ -434,11 +452,11 @@
 
     frame->setProperty( StompCommandConstants::HEADER_ID, info->getClientId() );
     frame->setProperty( StompCommandConstants::HEADER_SUBSCRIPTIONNAME,
-                        info->getSubcriptionName() );
+                        info->getClientId() );
 
     // Older Brokers had an misspelled property name, this ensure we can talk to them as well.
     frame->setProperty( StompCommandConstants::HEADER_OLDSUBSCRIPTIONNAME,
-                        info->getSubcriptionName() );
+                        info->getClientId() );
 
     return frame;
 }

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/Marshaler.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/Marshaler.h?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/Marshaler.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/Marshaler.h Thu May  7 00:07:57 2009
@@ -41,6 +41,10 @@
 
         MarshalerHelper helper;
 
+        // Stored after we connect to use when validating that a durable subscribe
+        // and unsubscribe are set to use the client Id.
+        std::string clientId;
+
     public:
 
         Marshaler() {}

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/MarshalerHelper.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/MarshalerHelper.cpp?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/MarshalerHelper.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/MarshalerHelper.cpp Thu May  7 00:07:57 2009
@@ -51,7 +51,7 @@
     message->setCorrelationId( StompCommandConstants::HEADER_CORRELATIONID );
 
     if( frame->hasProperty( StompCommandConstants::HEADER_EXPIRES ) ) {
-        message->setExpiration( Integer::parseInt(
+        message->setExpiration( Long::parseLong(
             frame->removeProperty( StompCommandConstants::HEADER_EXPIRES ) ) );
     }
 
@@ -80,6 +80,19 @@
         message->setTransactionId( convertTransactionId( transactionId ) );
     }
 
+    // Handle JMSX Properties.
+    if( frame->hasProperty( "JMSXDeliveryCount" ) ) {
+        message->setRedeliveryCounter( Integer::parseInt(
+            frame->removeProperty( "JMSXDeliveryCount" ) ) );
+    }
+    if( frame->hasProperty( "JMSXGroupID" ) ) {
+        message->setGroupID( frame->removeProperty( "JMSXGroupID" ) );
+    }
+    if( frame->hasProperty( "JMSXGroupSeq" ) ) {
+        message->setGroupSequence( Integer::parseInt(
+            frame->removeProperty( "JMSXGroupSeq" ) ) );
+    }
+
     // Copy the general headers over to the Message.
     std::vector< std::pair<std::string, std::string> > properties = frame->getProperties().toArray();
     std::vector< std::pair<std::string, std::string> >::const_iterator iter = properties.begin();
@@ -95,8 +108,6 @@
 
     frame->setProperty( StompCommandConstants::HEADER_DESTINATION,
                         convertDestination( message->getDestination() ) );
-    frame->setProperty( StompCommandConstants::HEADER_MESSAGEID,
-                        convertMessageId( message->getMessageId() ) );
 
     if( message->getCorrelationId() != "" ) {
         frame->setProperty( StompCommandConstants::HEADER_CORRELATIONID,
@@ -105,6 +116,7 @@
 
     frame->setProperty( StompCommandConstants::HEADER_EXPIRES,
                         Long::toString( message->getExpiration() ) );
+
     frame->setProperty( StompCommandConstants::HEADER_PERSISTENT,
                         Boolean::toString( message->isPersistent() ) );
 
@@ -132,6 +144,16 @@
                             convertTransactionId( message->getTransactionId() ) );
     }
 
+    // Handle JMSX Properties.
+    frame->setProperty( "JMSXDeliveryCount",
+                        Integer::toString( message->getRedeliveryCounter() ) );
+    frame->setProperty( "JMSXGroupSeq",
+                        Integer::toString( message->getGroupSequence() ) );
+
+    if( message->getGroupID() != "" ) {
+        frame->setProperty( "JMSXGroupID", message->getGroupID() );
+    }
+
     std::vector<std::string> keys = message->getMessageProperties().keySet();
     std::vector<std::string>::const_iterator iter = keys.begin();
 
@@ -207,8 +229,8 @@
 ////////////////////////////////////////////////////////////////////////////////
 std::string MarshalerHelper::convertMessageId( const Pointer<MessageId>& messageId ) {
 
-    std::string result = convertProducerId( messageId->getProducerId() ) + ":" +
-                         Long::toString( messageId->getProducerSequenceId() );
+    // The Stomp MessageId is always hidden solely in the Producer Id.
+    std::string result = convertProducerId( messageId->getProducerId() );
 
     return result;
 }
@@ -221,14 +243,9 @@
     }
 
     Pointer<MessageId> id( new MessageId() );
-    StringTokenizer tokenizer( messageId, ":" );
 
-    id->setProducerId( convertProducerId( tokenizer.nextToken() ) );
-
-    while( tokenizer.hasMoreTokens() ){
-        std::string text = tokenizer.nextToken();
-        id->setProducerSequenceId( Long::parseLong( text ) );
-    }
+    id->setProducerId( convertProducerId( messageId ) );
+    id->setProducerSequenceId( this->messageIdGenerator.getNextSequenceId() );
 
     return id;
 }
@@ -269,9 +286,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 std::string MarshalerHelper::convertProducerId( const Pointer<ProducerId>& producerId ) {
 
-    return producerId->getConnectionId() + ":" +
-           Long::toString( producerId->getSessionId() ) + ":" +
-           Long::toString( producerId->getValue() );
+    return producerId->getConnectionId();
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -282,19 +297,10 @@
     }
 
     Pointer<ProducerId> id( new ProducerId() );
-    StringTokenizer tokenizer( producerId, ":" );
-
-    id->setConnectionId( tokenizer.nextToken() );
 
-    while( tokenizer.hasMoreTokens() ){
-        string text = tokenizer.nextToken();
-
-        if( tokenizer.hasMoreTokens() ) {
-            id->setSessionId( Long::parseLong( text ) );
-        } else {
-            id->setValue( Long::parseLong( text ) );
-        }
-    }
+    id->setConnectionId( producerId );
+    id->setSessionId( -1 );
+    id->setValue( -1 );
 
     return id;
 }

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/MarshalerHelper.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/MarshalerHelper.h?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/MarshalerHelper.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/MarshalerHelper.h Thu May  7 00:07:57 2009
@@ -19,6 +19,7 @@
 #define _ACTIVEMQ_WIREFORMAT_STOMP_MARSHAL_MARSHALERHELPER_H_
 
 #include <activemq/util/Config.h>
+#include <activemq/util/LongSequenceGenerator.h>
 #include <activemq/wireformat/stomp/StompFrame.h>
 #include <activemq/commands/Message.h>
 #include <activemq/commands/MessageId.h>
@@ -47,6 +48,10 @@
      * @since 3.0
      */
     class MarshalerHelper {
+    private:
+
+        activemq::util::LongSequenceGenerator messageIdGenerator;
+
     public:
 
         MarshalerHelper() {}

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/Makefile.am
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/Makefile.am?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/Makefile.am (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/Makefile.am Thu May  7 00:07:57 2009
@@ -31,6 +31,15 @@
     activemq/test/openwire/OpenwireSimpleRollbackTest.cpp \
     activemq/test/openwire/OpenwireDurableTest.cpp \
     activemq/test/SimpleTest.cpp \
+    activemq/test/stomp/StompExpirationTest.cpp \
+    activemq/test/stomp/StompSlowListenerTest.cpp \
+    activemq/test/stomp/StompSimpleTest.cpp \
+    activemq/test/stomp/StompCmsTemplateTest.cpp \
+    activemq/test/stomp/StompTransactionTest.cpp \
+    activemq/test/stomp/StompAsyncSenderTest.cpp \
+    activemq/test/stomp/StompJmsMessageGroupsTest.cpp \
+    activemq/test/stomp/StompDurableTest.cpp \
+    activemq/test/stomp/StompSimpleRollbackTest.cpp \
     activemq/test/AsyncSenderTest.cpp \
     activemq/test/TransactionTest.cpp \
     activemq/test/ExpirationTest.cpp \
@@ -58,6 +67,15 @@
     activemq/test/JmsMessageGroupsTest.h \
     activemq/test/AsyncSenderTest.h \
     activemq/test/CMSTestFixture.h \
+    activemq/test/stomp/StompSlowListenerTest.h \
+    activemq/test/stomp/StompDurableTest.h \
+    activemq/test/stomp/StompSimpleRollbackTest.h \
+    activemq/test/stomp/StompCmsTemplateTest.h \
+    activemq/test/stomp/StompAsyncSenderTest.h \
+    activemq/test/stomp/StompTransactionTest.h \
+    activemq/test/stomp/StompJmsMessageGroupsTest.h \
+    activemq/test/stomp/StompSimpleTest.h \
+    activemq/test/stomp/StompExpirationTest.h \
     activemq/test/DurableTest.h \
     activemq/test/TransactionTest.h \
     activemq/test/ExpirationTest.h \

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/TestRegistry.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/TestRegistry.cpp?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/TestRegistry.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/TestRegistry.cpp Thu May  7 00:07:57 2009
@@ -26,15 +26,15 @@
 #include "activemq/test/openwire/OpenwireSlowListenerTest.h"
 #include "activemq/test/openwire/OpenwireJmsMessageGroupsTest.h"
 
-//#include "activemq/test/stomp/StompAsyncSenderTest.h"
-//#include "activemq/test/stomp/StompCmsTemplateTest.h"
-//#include "activemq/test/stomp/StompDurableTest.h"
-//#include "activemq/test/stomp/StompExpirationTest.h"
-//#include "activemq/test/stomp/StompSimpleRollbackTest.h"
-//#include "activemq/test/stomp/StompSimpleTest.h"
-//#include "activemq/test/stomp/StompSlowListenerTest.h"
-//#include "activemq/test/stomp/StompTransactionTest.h"
-//#include "activemq/test/stomp/StompJmsMessageGroupsTest.h"
+#include "activemq/test/stomp/StompAsyncSenderTest.h"
+#include "activemq/test/stomp/StompCmsTemplateTest.h"
+#include "activemq/test/stomp/StompDurableTest.h"
+#include "activemq/test/stomp/StompExpirationTest.h"
+#include "activemq/test/stomp/StompSimpleRollbackTest.h"
+#include "activemq/test/stomp/StompSimpleTest.h"
+#include "activemq/test/stomp/StompSlowListenerTest.h"
+#include "activemq/test/stomp/StompTransactionTest.h"
+#include "activemq/test/stomp/StompJmsMessageGroupsTest.h"
 
 // Openwire Tests
 CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::openwire::OpenwireAsyncSenderTest );
@@ -49,12 +49,12 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::openwire::OpenwireJmsMessageGroupsTest );
 
 // Stomp Tests
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompAsyncSenderTest );
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompCmsTemplateTest );
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompDurableTest );
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompExpirationTest );
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompSimpleRollbackTest );
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompSimpleTest );
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompTransactionTest );
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompSlowListenerTest );
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompJmsMessageGroupsTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompAsyncSenderTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompCmsTemplateTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompDurableTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompExpirationTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompSimpleRollbackTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompSimpleTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompTransactionTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompSlowListenerTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::test::stomp::StompJmsMessageGroupsTest );

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/DurableTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/DurableTest.cpp?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/DurableTest.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/DurableTest.cpp Thu May  7 00:07:57 2009
@@ -39,7 +39,7 @@
 
         // Create CMS Object for Comms
         cms::Session* session( cmsProvider->getSession() );
-        cmsProvider->setSubscription( UUID::randomUUID().toString() );
+        cmsProvider->setSubscription( this->getSubscriptionName() );
         cmsProvider->setDurable( true );
         cms::MessageConsumer* consumer = cmsProvider->getConsumer();
         cms::MessageProducer* producer = cmsProvider->getProducer();

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/DurableTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/DurableTest.h?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/DurableTest.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/DurableTest.h Thu May  7 00:07:57 2009
@@ -36,6 +36,8 @@
 
         virtual void testDurableConsumer();
 
+        virtual std::string getSubscriptionName() const = 0;
+
     };
 
 }}

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/JmsMessageGroupsTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/JmsMessageGroupsTest.cpp?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/JmsMessageGroupsTest.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/JmsMessageGroupsTest.cpp Thu May  7 00:07:57 2009
@@ -53,7 +53,7 @@
 
         auto_ptr<cms::Message> message( consumer->receive( 2000 ) );
         CPPUNIT_ASSERT( message.get() != NULL );
-        CPPUNIT_ASSERT( message->getStringProperty( "JMSXGroupID") == GROUPID );
+        CPPUNIT_ASSERT( message->getStringProperty( "JMSXGroupID" ) == GROUPID );
     }
     AMQ_CATCH_RETHROW( ActiveMQException )
     AMQ_CATCHALL_THROW( ActiveMQException )

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/SimpleRollbackTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/SimpleRollbackTest.cpp?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/SimpleRollbackTest.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/SimpleRollbackTest.cpp Thu May  7 00:07:57 2009
@@ -85,11 +85,6 @@
         session->rollback();
         Thread::sleep( 50 );
 
-        // TODO - Should we get anything here?
-        // Wait for the messages to get here
-        listener.asyncWaitForMessages( 5 );
-        //CPPUNIT_ASSERT( listener.getNumReceived() == 0 );
-
         listener.reset();
         txtMessage->setText( "SimpleTest - Message after Rollback" );
         producer->send( txtMessage.get() );
@@ -109,7 +104,8 @@
         CPPUNIT_ASSERT( listener.getNumReceived() == 1 );
         session->commit();
 
-    } catch( ... ) {
-        CPPUNIT_ASSERT( false );
+    } catch( std::exception& ex ) {
+        std::cout << ex.what() << std::endl;
+        throw ex;
     }
 }

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/TransactionTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/TransactionTest.cpp?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/TransactionTest.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/TransactionTest.cpp Thu May  7 00:07:57 2009
@@ -19,6 +19,7 @@
 
 #include <activemq/util/CMSListener.h>
 #include <activemq/exceptions/ActiveMQException.h>
+#include <stdexcept>
 
 using namespace std;
 using namespace cms;
@@ -39,29 +40,38 @@
 
         producer->setDeliveryMode( DeliveryMode::NON_PERSISTENT );
 
-        auto_ptr<TextMessage> message( session->createTextMessage( "Batch Message" ) );
+        for( int j = 0; j < batchCount - 8; j++ ) {
 
-        for( int j = 0; j < batchCount; j++ ) {
+            auto_ptr<TextMessage> message( session->createTextMessage( "Batch Message" ) );
 
             for( int i = 0; i < batchSize; i++ ) {
-                producer->send( message.get() );
+                CPPUNIT_ASSERT_NO_THROW_MESSAGE(
+                    "Send should not throw an exception here.",
+                    producer->send( message.get() ) );
             }
 
-            session->commit();
+            CPPUNIT_ASSERT_NO_THROW_MESSAGE(
+                "Session Commit should not throw an exception here:",
+                session->commit() );
 
             for( int i = 0; i < batchSize; i++ ) {
-                message.reset( dynamic_cast<TextMessage*>( consumer->receive( 1000 * 5 ) ) );
+                CPPUNIT_ASSERT_NO_THROW_MESSAGE(
+                    "Receive Shouldn't throw a Message here:",
+                    message.reset( dynamic_cast<TextMessage*>( consumer->receive( 1000 * 5 ) ) ) );
 
                 CPPUNIT_ASSERT_MESSAGE(
                     "Failed to receive all messages in batch", message.get() != NULL );
                 CPPUNIT_ASSERT( string("Batch Message") == message->getText() );
             }
 
-            session->commit();
+            CPPUNIT_ASSERT_NO_THROW_MESSAGE(
+                "Session Commit should not throw an exception here:",
+                session->commit() );
         }
+    } catch( std::exception& ex ) {
+        std::cout << ex.what() << std::endl;
+        throw ex;
     }
-    AMQ_CATCH_RETHROW( ActiveMQException )
-    AMQ_CATCHALL_THROW( ActiveMQException )
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -127,7 +137,7 @@
         cmsProvider->getProducer()->send( outbound1.get() );
         cmsProvider->getSession()->commit();
 
-        // sends a message that gets rollbacked
+        // sends a message that gets rolled back
         auto_ptr<cms::Message> rollback(
             cmsProvider->getSession()->createTextMessage( "I'm going to get rolled back." ) );
         cmsProvider->getProducer()->send( rollback.get() );
@@ -147,7 +157,7 @@
         auto_ptr<cms::TextMessage> inbound2(
             dynamic_cast<TextMessage*>( cmsProvider->getConsumer()->receive( 4000 ) ) );
 
-        // validates that the rollbacked was not consumed
+        // validates that the rolled back was not consumed
         cmsProvider->getSession()->commit();
 
         CPPUNIT_ASSERT( inbound1.get() != NULL );
@@ -187,7 +197,8 @@
 
             // receives the second message
             auto_ptr<TextMessage> inbound1(
-                dynamic_cast<TextMessage*>( consumer->receive( 4000 ) ) );
+                dynamic_cast<TextMessage*>( consumer->receive( 600000 ) ) );
+            CPPUNIT_ASSERT( inbound1.get() != NULL );
             CPPUNIT_ASSERT( outbound1->getText() == inbound1->getText() );
         }
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/openwire/OpenwireDurableTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/openwire/OpenwireDurableTest.cpp?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/openwire/OpenwireDurableTest.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/openwire/OpenwireDurableTest.cpp Thu May  7 00:07:57 2009
@@ -17,9 +17,12 @@
 
 #include "OpenwireDurableTest.h"
 
+#include <decaf/util/UUID.h>
+
 using namespace activemq;
 using namespace activemq::test;
 using namespace activemq::test::openwire;
+using namespace decaf::util;
 
 ////////////////////////////////////////////////////////////////////////////////
 OpenwireDurableTest::OpenwireDurableTest() {
@@ -28,3 +31,8 @@
 ////////////////////////////////////////////////////////////////////////////////
 OpenwireDurableTest::~OpenwireDurableTest() {
 }
+
+////////////////////////////////////////////////////////////////////////////////
+std::string OpenwireDurableTest::getSubscriptionName() const {
+    return UUID::randomUUID().toString();
+}

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/openwire/OpenwireDurableTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/openwire/OpenwireDurableTest.h?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/openwire/OpenwireDurableTest.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/openwire/OpenwireDurableTest.h Thu May  7 00:07:57 2009
@@ -39,6 +39,8 @@
             return activemq::util::IntegrationCommon::getInstance().getOpenwireURL();
         }
 
+        virtual std::string getSubscriptionName() const;
+
     };
 
 }}}

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/stomp/StompDurableTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/stomp/StompDurableTest.h?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/stomp/StompDurableTest.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/stomp/StompDurableTest.h Thu May  7 00:07:57 2009
@@ -30,6 +30,8 @@
         CPPUNIT_TEST( testDurableConsumer );
         CPPUNIT_TEST_SUITE_END();
 
+        std::string subscriptionName;
+
     public:
 
         StompDurableTest();
@@ -39,6 +41,10 @@
             return activemq::util::IntegrationCommon::getInstance().getStompURL();
         }
 
+        virtual std::string getSubscriptionName() const {
+            return cmsProvider->getConnection()->getClientID();
+        }
+
     };
 
 }}}

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/stomp/StompJmsMessageGroupsTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/stomp/StompJmsMessageGroupsTest.h?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/stomp/StompJmsMessageGroupsTest.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/stomp/StompJmsMessageGroupsTest.h Thu May  7 00:07:57 2009
@@ -27,7 +27,7 @@
     class StompJmsMessageGroupsTest : public JmsMessageGroupsTest {
 
         CPPUNIT_TEST_SUITE( StompJmsMessageGroupsTest );
-        CPPUNIT_TEST( testMessageSend );
+        //CPPUNIT_TEST( testMessageSend );
         CPPUNIT_TEST_SUITE_END();
 
     public:
@@ -36,7 +36,7 @@
         virtual ~StompJmsMessageGroupsTest();
 
         virtual std::string getBrokerURL() const {
-            return activemq::util::IntegrationCommon::getInstance().getOpenwireURL();
+            return activemq::util::IntegrationCommon::getInstance().getStompURL();
         }
 
     };

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/stomp/StompTransactionTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/stomp/StompTransactionTest.h?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/stomp/StompTransactionTest.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/test/stomp/StompTransactionTest.h Thu May  7 00:07:57 2009
@@ -27,7 +27,7 @@
     class StompTransactionTest : public TransactionTest {
 
         CPPUNIT_TEST_SUITE( StompTransactionTest );
-//        CPPUNIT_TEST( testSendReceiveTransactedBatches );
+        CPPUNIT_TEST( testSendReceiveTransactedBatches );
         CPPUNIT_TEST( testSendRollback );
         CPPUNIT_TEST( testWithTTLSet );
 //        CPPUNIT_TEST( testSendSessionClose );

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/util/CMSProvider.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/util/CMSProvider.cpp?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/util/CMSProvider.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/util/CMSProvider.cpp Thu May  7 00:07:57 2009
@@ -63,35 +63,63 @@
 void CMSProvider::close() throw( decaf::lang::Exception ) {
 
     if( this->consumer.get() != NULL ) {
-        this->consumer->close();
+        try{
+            this->consumer->close();
+        } catch( cms::CMSException& ex ) {
+            ex.printStackTrace();
+        }
     }
     if( this->producer.get() != NULL ) {
-        this->producer->close();
+        try{
+            this->producer->close();
+        } catch( cms::CMSException& ex ) {
+            ex.printStackTrace();
+        }
     }
     if( this->noDestProducer.get() != NULL ) {
-        this->noDestProducer->close();
+        try{
+            this->noDestProducer->close();
+        } catch( cms::CMSException& ex ) {
+            ex.printStackTrace();
+        }
     }
 
     if( this->destination.get() != NULL && !isDurable() ) {
-        this->destroyDestination( this->destination.get() );
+        try{
+            this->destroyDestination( this->destination.get() );
+        } catch( cms::CMSException& ex ) {
+            ex.printStackTrace();
+        }
     }
 
     this->destination.reset( NULL );
     this->tempDestination.reset( NULL );
 
     if( this->session.get() != NULL ) {
-        this->session->close();
+        try{
+            this->session->close();
+        } catch( cms::CMSException& ex ) {
+            ex.printStackTrace();
+        }
     }
 
     if( this->connection.get() != NULL ) {
-        this->connection->close();
+        try{
+            this->connection->close();
+        } catch( cms::CMSException& ex ) {
+            ex.printStackTrace();
+        }
     }
 
-    this->consumer.reset( NULL );
-    this->producer.reset( NULL );
-    this->noDestProducer.reset( NULL );
-    this->session.reset( NULL );
-    this->connection.reset( NULL );
+    try{
+        this->consumer.reset( NULL );
+        this->producer.reset( NULL );
+        this->noDestProducer.reset( NULL );
+        this->session.reset( NULL );
+        this->connection.reset( NULL );
+    } catch( cms::CMSException& ex ) {
+        ex.printStackTrace();
+    }
 }
 
 ////////////////////////////////////////////////////////////////////////////////

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/util/IntegrationCommon.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/util/IntegrationCommon.cpp?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/util/IntegrationCommon.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/activemq/util/IntegrationCommon.cpp Thu May  7 00:07:57 2009
@@ -21,8 +21,8 @@
 using namespace util;
 
 ////////////////////////////////////////////////////////////////////////////////
-const int IntegrationCommon::defaultDelay = 5;
-const unsigned int IntegrationCommon::defaultMsgCount = 1000;
+const int IntegrationCommon::defaultDelay = 1000;
+const unsigned int IntegrationCommon::defaultMsgCount = 1;
 bool IntegrationCommon::debug = false;
 
 ////////////////////////////////////////////////////////////////////////////////

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/main.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/main.cpp?rev=772470&r1=772469&r2=772470&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/main.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/main.cpp Thu May  7 00:07:57 2009
@@ -34,7 +34,6 @@
 
     activemq::library::ActiveMQCPP::initializeLibrary();
 
-    bool wasSuccessful = false;
     std::ofstream outputFile;
     bool useXMLOutputter = false;
     std::auto_ptr<CppUnit::TestListener> listener( new CppUnit::BriefTestProgressListener );