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/03/13 16:13:18 UTC

svn commit: r753295 - in /activemq/activemq-cpp/trunk/src: main/activemq/transport/mock/MockTransportFactory.cpp test/activemq/transport/failover/FailoverTransportTest.cpp test/activemq/transport/failover/FailoverTransportTest.h

Author: tabish
Date: Fri Mar 13 15:13:18 2009
New Revision: 753295

URL: http://svn.apache.org/viewvc?rev=753295&view=rev
Log:
http://issues.apache.org/activemq/browse/AMQCPP-100

Add new test to validate that the maxReconnectionAttempts parameter works and an exception if forwarded when the max attempts value is reached.

Modified:
    activemq/activemq-cpp/trunk/src/main/activemq/transport/mock/MockTransportFactory.cpp
    activemq/activemq-cpp/trunk/src/test/activemq/transport/failover/FailoverTransportTest.cpp
    activemq/activemq-cpp/trunk/src/test/activemq/transport/failover/FailoverTransportTest.h

Modified: activemq/activemq-cpp/trunk/src/main/activemq/transport/mock/MockTransportFactory.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/transport/mock/MockTransportFactory.cpp?rev=753295&r1=753294&r2=753295&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/transport/mock/MockTransportFactory.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/transport/mock/MockTransportFactory.cpp Fri Mar 13 15:13:18 2009
@@ -26,6 +26,7 @@
 #include <activemq/util/URISupport.h>
 
 #include <decaf/lang/Boolean.h>
+#include <decaf/lang/Integer.h>
 #include <decaf/io/IOException.h>
 
 using namespace activemq;
@@ -115,9 +116,16 @@
             builder.reset( new wireformat::openwire::OpenWireResponseBuilder() );
         }
 
-        Pointer<Transport> transport( new MockTransport( wireFormat, builder ) );
-
+        Pointer<MockTransport> transport( new MockTransport( wireFormat, builder ) );
 
+        transport->setFailOnSendMessage(
+            Boolean::parseBoolean( properties.getProperty( "failOnSendMessage", "false" ) ) );
+        transport->setNumSentMessageBeforeFail(
+            Integer::parseInt( properties.getProperty( "numSentMessageBeforeFail", "0" ) ) );
+        transport->setFailOnReceiveMessage(
+            Boolean::parseBoolean( properties.getProperty( "failOnReceiveMessage", "false" ) ) );
+        transport->setNumReceivedMessageBeforeFail(
+            Integer::parseInt( properties.getProperty( "numReceivedMessageBeforeFail", "0" ) ) );
 
         return transport;
     }

Modified: activemq/activemq-cpp/trunk/src/test/activemq/transport/failover/FailoverTransportTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/test/activemq/transport/failover/FailoverTransportTest.cpp?rev=753295&r1=753294&r2=753295&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/test/activemq/transport/failover/FailoverTransportTest.cpp (original)
+++ activemq/activemq-cpp/trunk/src/test/activemq/transport/failover/FailoverTransportTest.cpp Fri Mar 13 15:13:18 2009
@@ -84,3 +84,44 @@
     transport->start();
     transport->close();
 }
+
+////////////////////////////////////////////////////////////////////////////////
+class FailToConnectListener : public DefaultTransportListener {
+public:
+
+    bool caughtException;
+
+    FailToConnectListener() : caughtException( false ) {}
+
+    virtual void onException( const decaf::lang::Exception& ex AMQCPP_UNUSED ) {
+        caughtException = true;
+    }
+};
+
+////////////////////////////////////////////////////////////////////////////////
+void FailoverTransportTest::testTransportCreateFailOnCreate() {
+
+    std::string uri =
+        "failover://(mock://localhost:61616?failOnCreate=true)?maxReconnectAttempts=2";
+
+    FailToConnectListener listener;
+    FailoverTransportFactory factory;
+
+    Pointer<Transport> transport( factory.create( uri ) );
+    CPPUNIT_ASSERT( transport != NULL );
+    transport->setTransportListener( &listener );
+
+    FailoverTransport* failover = dynamic_cast<FailoverTransport*>(
+        transport->narrow( typeid( FailoverTransport ) ) );
+
+    CPPUNIT_ASSERT( failover != NULL );
+    CPPUNIT_ASSERT( failover->getMaxReconnectAttempts() == 2 );
+
+    transport->start();
+
+    Thread::sleep( 2000 );
+
+    CPPUNIT_ASSERT( listener.caughtException == true );
+
+    transport->close();
+}

Modified: activemq/activemq-cpp/trunk/src/test/activemq/transport/failover/FailoverTransportTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/test/activemq/transport/failover/FailoverTransportTest.h?rev=753295&r1=753294&r2=753295&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/test/activemq/transport/failover/FailoverTransportTest.h (original)
+++ activemq/activemq-cpp/trunk/src/test/activemq/transport/failover/FailoverTransportTest.h Fri Mar 13 15:13:18 2009
@@ -31,6 +31,7 @@
         CPPUNIT_TEST_SUITE( FailoverTransportTest );
         CPPUNIT_TEST( testTransportCreate );
         CPPUNIT_TEST( testTransportCreateWithBackups );
+        CPPUNIT_TEST( testTransportCreateFailOnCreate );
         CPPUNIT_TEST_SUITE_END();
 
     public:
@@ -40,6 +41,7 @@
 
         void testTransportCreate();
         void testTransportCreateWithBackups();
+        void testTransportCreateFailOnCreate();
 
     };