You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by nm...@apache.org on 2007/03/11 13:08:52 UTC
svn commit: r516895 - in /activemq/activemq-cpp/trunk/activemq-cpp/src:
main/cms/ test-integration/integration/
test-integration/integration/connector/stomp/
Author: nmittler
Date: Sun Mar 11 05:08:51 2007
New Revision: 516895
URL: http://svn.apache.org/viewvc?view=rev&rev=516895
Log:
adding integration test for client acknowledge
Modified:
activemq/activemq-cpp/trunk/activemq-cpp/src/main/cms/CMSException.h
activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/integration/TestSupport.cpp
activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/integration/connector/stomp/SimpleTest.cpp
activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/integration/connector/stomp/SimpleTest.h
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/cms/CMSException.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/cms/CMSException.h?view=diff&rev=516895&r1=516894&r2=516895
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/cms/CMSException.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/cms/CMSException.h Sun Mar 11 05:08:51 2007
@@ -45,6 +45,21 @@
virtual std::string getMessage() const = 0;
/**
+ * Adds a file/line number to the stack trace.
+ * @param file The name of the file calling this method (use __FILE__).
+ * @param lineNumber The line number in the calling file (use __LINE__).
+ */
+ virtual void setMark( const char* file, const int lineNumber ) = 0;
+
+ /**
+ * Clones this exception. This is useful for cases where you need
+ * to preserve the type of the original exception as well as the message.
+ * All subclasses should override.
+ * @return Copy of this Exception object
+ */
+ virtual CMSException* clone() const = 0;
+
+ /**
* Provides the stack trace for every point where
* this exception was caught, marked, and rethrown.
* @return vector containing stack trace strings
@@ -61,6 +76,12 @@
* @param stream the target output stream.
*/
virtual void printStackTrace( std::ostream& stream ) const = 0;
+
+ /**
+ * Gets the stack trace as one contiguous string.
+ * @return string with formatted stack trace data
+ */
+ virtual std::string getStackTraceString() const = 0;
};
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/integration/TestSupport.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/integration/TestSupport.cpp?view=diff&rev=516895&r1=516894&r2=516895
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/integration/TestSupport.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/integration/TestSupport.cpp Sun Mar 11 05:08:51 2007
@@ -222,12 +222,19 @@
void TestSupport::onException( const cms::CMSException& error )
{
- bool AbstractTester = false;
- CPPUNIT_ASSERT( AbstractTester );
+ CPPUNIT_ASSERT_MESSAGE( error.getStackTraceString(), false );
}
void TestSupport::onMessage( const cms::Message* message )
{
+ if( session->getAcknowledgeMode() == cms::Session::CLIENT_ACKNOWLEDGE ) {
+ try {
+ message->acknowledge();
+ } catch( CMSException& ex ) {
+ CPPUNIT_ASSERT_MESSAGE(ex.getStackTraceString(), false );
+ }
+ }
+
// Got a text message.
const cms::TextMessage* txtMsg =
dynamic_cast<const cms::TextMessage*>(message);
@@ -247,7 +254,7 @@
{
mutex.notifyAll();
}
-
+
return;
}
@@ -272,7 +279,8 @@
{
mutex.notifyAll();
}
-
+
return;
}
+
}
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/integration/connector/stomp/SimpleTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/integration/connector/stomp/SimpleTest.cpp?view=diff&rev=516895&r1=516894&r2=516895
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/integration/connector/stomp/SimpleTest.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/integration/connector/stomp/SimpleTest.cpp Sun Mar 11 05:08:51 2007
@@ -73,20 +73,74 @@
using namespace integration::connector::stomp;
SimpleTest::SimpleTest()
-:
- testSupport( "tcp://localhost:61613?wireFormat=stomp" )
{
- testSupport.initialize();
}
SimpleTest::~SimpleTest()
{
}
-void SimpleTest::test()
+void SimpleTest::testAutoAck()
{
try
{
+ TestSupport testSupport("tcp://localhost:61613?wireFormat=stomp");
+ testSupport.initialize();
+
+ if( IntegrationCommon::debug ) {
+ cout << "Starting activemqcms test (sending "
+ << IntegrationCommon::defaultMsgCount
+ << " messages per type and sleeping "
+ << IntegrationCommon::defaultDelay
+ << " milli-seconds) ...\n"
+ << endl;
+ }
+
+ // Create CMS Object for Comms
+ cms::Session* session = testSupport.getSession();
+ cms::Topic* topic = session->createTopic("mytopic");
+ cms::MessageConsumer* consumer =
+ session->createConsumer( topic );
+ consumer->setMessageListener( &testSupport );
+ cms::MessageProducer* producer =
+ session->createProducer( topic );
+
+ // Send some text messages
+ testSupport.produceTextMessages(
+ *producer, IntegrationCommon::defaultMsgCount );
+
+ // Send some bytes messages.
+ testSupport.produceTextMessages(
+ *producer, IntegrationCommon::defaultMsgCount );
+
+ // Wait for the messages to get here
+ testSupport.waitForMessages( IntegrationCommon::defaultMsgCount * 2 );
+
+ unsigned int numReceived = testSupport.getNumReceived();
+ if( IntegrationCommon::debug ) {
+ printf("received: %d\n", numReceived );
+ }
+ CPPUNIT_ASSERT(
+ numReceived == IntegrationCommon::defaultMsgCount * 2 );
+
+ if( IntegrationCommon::debug ) {
+ printf("Shutting Down\n" );
+ }
+ delete producer;
+ delete consumer;
+ delete topic;
+ }
+ AMQ_CATCH_RETHROW( ActiveMQException )
+ AMQ_CATCHALL_THROW( ActiveMQException )
+}
+
+void SimpleTest::testClientAck()
+{
+ try
+ {
+ TestSupport testSupport("tcp://localhost:61613?wireFormat=stomp", cms::Session::CLIENT_ACKNOWLEDGE );
+ testSupport.initialize();
+
if( IntegrationCommon::debug ) {
cout << "Starting activemqcms test (sending "
<< IntegrationCommon::defaultMsgCount
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/integration/connector/stomp/SimpleTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/integration/connector/stomp/SimpleTest.h?view=diff&rev=516895&r1=516894&r2=516895
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/integration/connector/stomp/SimpleTest.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/integration/connector/stomp/SimpleTest.h Sun Mar 11 05:08:51 2007
@@ -30,19 +30,17 @@
class SimpleTest : public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE( SimpleTest );
- CPPUNIT_TEST( test );
+ CPPUNIT_TEST( testAutoAck );
+ CPPUNIT_TEST( testClientAck );
CPPUNIT_TEST_SUITE_END();
-
- private:
-
- TestSupport testSupport;
public:
SimpleTest();
virtual ~SimpleTest();
- virtual void test(void);
+ virtual void testAutoAck();
+ virtual void testClientAck();
};