Modified: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompSessionManagerTest.h URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompSessionManagerTest.h?rev=424272&r1=424271&r2=424272&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompSessionManagerTest.h (original) +++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompSessionManagerTest.h Fri Jul 21 04:36:09 2006 @@ -10,6 +10,7 @@ #include <activemq/connector/stomp/StompQueue.h> #include <activemq/transport/DummyTransport.h> #include <activemq/connector/stomp/commands/TextMessageCommand.h> +#include <activemq/connector/stomp/commands/SubscribeCommand.h> #include <activemq/transport/CommandListener.h> #include <cms/Session.h> #include <vector> @@ -26,24 +27,47 @@ CPPUNIT_TEST( testConsumers ); CPPUNIT_TEST( testCommand ); CPPUNIT_TEST( testSendingCommands ); + CPPUNIT_TEST( testSubscribeOptions ); CPPUNIT_TEST_SUITE_END(); public: + typedef std::pair< std::string, std::string > MyProperty; + class MyCommandListener : public transport::CommandListener{ public: transport::Command* cmd; + commands::SubscribeCommand* subscribe; + + // Properties that should be in an command + std::vector< MyProperty > expected; public: MyCommandListener(){ cmd = NULL; + subscribe = NULL; } virtual ~MyCommandListener(){} virtual void onCommand( transport::Command* command ){ cmd = command; + + subscribe = dynamic_cast< commands::SubscribeCommand* >( command ); + if( subscribe ) + { + const util::Properties& properties = + subscribe->getProperties(); + + for( size_t ix = 0; ix < expected.size(); ++ix ) + { + std::string value = + properties.getProperty( expected[ix].first, "" ); + + CPPUNIT_ASSERT( value == expected[ix].second ); + } + } } }; @@ -59,6 +83,8 @@ core::ActiveMQMessage* msg ) { consumers.push_back( consumer ); + + delete msg; } }; @@ -71,20 +97,20 @@ transport::DummyTransport transport( &responseBuilder ); StompSessionManager manager( connectionId, &transport ); - SessionInfo* info1 = manager.createSession( cms::Session::AutoAcknowledge ); - CPPUNIT_ASSERT( info1->getAckMode() == cms::Session::AutoAcknowledge ); + SessionInfo* info1 = manager.createSession( cms::Session::AUTO_ACKNOWLEDGE ); + CPPUNIT_ASSERT( info1->getAckMode() == cms::Session::AUTO_ACKNOWLEDGE ); CPPUNIT_ASSERT( info1->getConnectionId() == connectionId ); - SessionInfo* info2 = manager.createSession( cms::Session::DupsOkAcknowledge ); - CPPUNIT_ASSERT( info2->getAckMode() == cms::Session::DupsOkAcknowledge ); + SessionInfo* info2 = manager.createSession( cms::Session::DUPS_OK_ACKNOWLEDGE ); + CPPUNIT_ASSERT( info2->getAckMode() == cms::Session::DUPS_OK_ACKNOWLEDGE ); CPPUNIT_ASSERT( info2->getConnectionId() == connectionId ); - SessionInfo* info3 = manager.createSession( cms::Session::ClientAcknowledge ); - CPPUNIT_ASSERT( info3->getAckMode() == cms::Session::ClientAcknowledge ); + SessionInfo* info3 = manager.createSession( cms::Session::CLIENT_ACKNOWLEDGE ); + CPPUNIT_ASSERT( info3->getAckMode() == cms::Session::CLIENT_ACKNOWLEDGE ); CPPUNIT_ASSERT( info3->getConnectionId() == connectionId ); - SessionInfo* info4 = manager.createSession( cms::Session::Transactional ); - CPPUNIT_ASSERT( info4->getAckMode() == cms::Session::Transactional ); + SessionInfo* info4 = manager.createSession( cms::Session::SESSION_TRANSACTED ); + CPPUNIT_ASSERT( info4->getAckMode() == cms::Session::SESSION_TRANSACTED ); CPPUNIT_ASSERT( info4->getConnectionId() == connectionId ); delete info1; @@ -100,7 +126,7 @@ transport::DummyTransport transport( &responseBuilder ); StompSessionManager manager( connectionId, &transport ); - SessionInfo* info1 = manager.createSession( cms::Session::AutoAcknowledge ); + SessionInfo* info1 = manager.createSession( cms::Session::AUTO_ACKNOWLEDGE ); std::string sel1 = ""; StompTopic dest1( "dummy.topic.1" ); ConsumerInfo* cinfo1 = manager.createConsumer( &dest1, info1, sel1 ); @@ -108,7 +134,7 @@ CPPUNIT_ASSERT( cinfo1->getDestination().toString() == dest1.toString() ); CPPUNIT_ASSERT( cinfo1->getMessageSelector() == sel1 ); - SessionInfo* info2 = manager.createSession( cms::Session::DupsOkAcknowledge ); + SessionInfo* info2 = manager.createSession( cms::Session::DUPS_OK_ACKNOWLEDGE ); std::string sel2 = "mysel2"; StompTopic dest2( "dummy.topic.2" ); ConsumerInfo* cinfo2 = manager.createConsumer( &dest2, info2, sel2 ); @@ -116,7 +142,7 @@ CPPUNIT_ASSERT( cinfo2->getDestination().toString() == dest2.toString() ); CPPUNIT_ASSERT( cinfo2->getMessageSelector() == sel2 ); - SessionInfo* info3 = manager.createSession( cms::Session::ClientAcknowledge ); + SessionInfo* info3 = manager.createSession( cms::Session::CLIENT_ACKNOWLEDGE ); std::string sel3 = "mysel3"; StompQueue dest3( "dummy.queue.1" ); ConsumerInfo* cinfo3 = manager.createConsumer( &dest3, info3, sel3 ); @@ -124,7 +150,7 @@ CPPUNIT_ASSERT( cinfo3->getDestination().toString() == dest3.toString() ); CPPUNIT_ASSERT( cinfo3->getMessageSelector() == sel3 ); - SessionInfo* info4 = manager.createSession( cms::Session::Transactional ); + SessionInfo* info4 = manager.createSession( cms::Session::SESSION_TRANSACTED ); std::string sel4 = ""; StompTopic dest4( "dummy.queue.2" ); ConsumerInfo* cinfo4 = manager.createConsumer( &dest4, info4, sel4 ); @@ -153,23 +179,23 @@ StompTopic dest1( "dummy.topic" ); StompTopic dest2( "dummy.topic2" ); - SessionInfo* info1 = manager.createSession( cms::Session::AutoAcknowledge ); + SessionInfo* info1 = manager.createSession( cms::Session::AUTO_ACKNOWLEDGE ); ConsumerInfo* cinfo1 = manager.createConsumer( &dest1, info1, "" ); - SessionInfo* info2 = manager.createSession( cms::Session::DupsOkAcknowledge ); + SessionInfo* info2 = manager.createSession( cms::Session::DUPS_OK_ACKNOWLEDGE ); ConsumerInfo* cinfo2 = manager.createConsumer( &dest1, info2, "" ); - SessionInfo* info3 = manager.createSession( cms::Session::ClientAcknowledge ); + SessionInfo* info3 = manager.createSession( cms::Session::CLIENT_ACKNOWLEDGE ); ConsumerInfo* cinfo3 = manager.createConsumer( &dest2, info3, "" ); - SessionInfo* info4 = manager.createSession( cms::Session::Transactional ); + SessionInfo* info4 = manager.createSession( cms::Session::SESSION_TRANSACTED ); ConsumerInfo* cinfo4 = manager.createConsumer( &dest2, info4, "" ); MyMessageListener listener; manager.setConsumerMessageListener( &listener ); commands::TextMessageCommand* msg = new commands::TextMessageCommand(); - msg->setCMSDestination( dest1 ); + msg->setCMSDestination( &dest1 ); msg->setText( "hello world" ); manager.onStompCommand( msg ); @@ -183,7 +209,7 @@ listener.consumers.clear(); msg = new commands::TextMessageCommand(); - msg->setCMSDestination( dest2 ); + msg->setCMSDestination( &dest2 ); msg->setText( "hello world" ); manager.onStompCommand( msg ); @@ -192,7 +218,7 @@ CPPUNIT_ASSERT( listener.consumers[ix] == cinfo3 || listener.consumers[ix] == cinfo4 ); } - + delete info1; delete info2; delete info3; @@ -218,13 +244,13 @@ MyCommandListener cmdListener; transport.setOutgoingCommandListener( &cmdListener ); - SessionInfo* info1 = manager.createSession( cms::Session::AutoAcknowledge ); + SessionInfo* info1 = manager.createSession( cms::Session::AUTO_ACKNOWLEDGE ); ConsumerInfo* cinfo1 = manager.createConsumer( &dest1, info1, "" ); CPPUNIT_ASSERT( cmdListener.cmd != NULL ); cmdListener.cmd = NULL; - SessionInfo* info2 = manager.createSession( cms::Session::DupsOkAcknowledge ); + SessionInfo* info2 = manager.createSession( cms::Session::DUPS_OK_ACKNOWLEDGE ); ConsumerInfo* cinfo2 = manager.createConsumer( &dest1, info2, "" ); CPPUNIT_ASSERT( cmdListener.cmd == NULL ); @@ -245,6 +271,97 @@ delete cinfo2; } + void testSubscribeOptions(){ + + std::string connectionId = "testConnectionId"; + StompResponseBuilder responseBuilder("testSessionId"); + transport::DummyTransport transport( &responseBuilder ); + StompSessionManager manager( connectionId, &transport ); + + MyProperty retroactive = + std::make_pair( "activemq.retroactive", "true" ); + MyProperty prefetchSize = + std::make_pair( "activemq.prefetchSize", "1000" ); + MyProperty maxPendingMsgLimit = + std::make_pair( "activemq.maximumPendingMessageLimit", "0" ); + MyProperty noLocal = + std::make_pair( "activemq.noLocal", "true" ); + MyProperty dispatchAsync = + std::make_pair( "activemq.dispatchAsync", "true" ); + MyProperty selector = + std::make_pair( "selector", "test" ); + MyProperty exclusive = + std::make_pair( "activemq.exclusive", "true" ); + MyProperty priority = + std::make_pair( "activemq.priority", "1" ); + + SessionInfo* session = NULL; + ConsumerInfo* consumer = NULL; + + MyCommandListener cmdListener; + transport.setOutgoingCommandListener( &cmdListener ); + + session = manager.createSession( cms::Session::AUTO_ACKNOWLEDGE ); + + cmdListener.expected.clear(); + StompTopic dest1( "dummy.topic.1" ); + consumer = manager.createConsumer( &dest1, session, "" ); + CPPUNIT_ASSERT( consumer != NULL ); + CPPUNIT_ASSERT( cmdListener.subscribe != NULL ); + + manager.removeConsumer( consumer ); + CPPUNIT_ASSERT( cmdListener.cmd != NULL ); + delete consumer; + cmdListener.cmd = NULL; + cmdListener.subscribe = NULL; + + cmdListener.expected.clear(); + cmdListener.expected.push_back( retroactive ); + StompTopic dest2( "dummy.topic.1?consumer.retroactive=true" ); + consumer = manager.createConsumer( &dest2, session, "" ); + CPPUNIT_ASSERT( consumer != NULL ); + CPPUNIT_ASSERT( cmdListener.subscribe != NULL ); + + manager.removeConsumer( consumer ); + CPPUNIT_ASSERT( cmdListener.cmd != NULL ); + delete consumer; + cmdListener.cmd = NULL; + cmdListener.subscribe = NULL; + + cmdListener.expected.clear(); + cmdListener.expected.push_back( retroactive ); + cmdListener.expected.push_back( prefetchSize ); + cmdListener.expected.push_back( maxPendingMsgLimit ); + cmdListener.expected.push_back( noLocal ); + cmdListener.expected.push_back( dispatchAsync ); + cmdListener.expected.push_back( selector ); + cmdListener.expected.push_back( exclusive ); + cmdListener.expected.push_back( priority ); + StompTopic dest3( + std::string( "dummy.topic.1?" ) + + "consumer.retroactive=" + retroactive.second + "&" + + "consumer.prefetchSize=" + prefetchSize.second + "&" + + "consumer.maximumPendingMessageLimit=" + maxPendingMsgLimit.second + "&" + + "consumer.noLocal=" + noLocal.second + "&" + + "consumer.dispatchAsync=" + dispatchAsync.second + "&" + + "consumer.selector=" + selector.second + "&" + + "consumer.exclusive=" + exclusive.second + "&" + + "consumer.priority=" + priority.second ); + consumer = manager.createConsumer( &dest3, session, "" ); + CPPUNIT_ASSERT( consumer != NULL ); + CPPUNIT_ASSERT( cmdListener.subscribe != NULL ); + + manager.removeConsumer( consumer ); + CPPUNIT_ASSERT( cmdListener.cmd != NULL ); + delete consumer; + cmdListener.cmd = NULL; + cmdListener.subscribe = NULL; + + // Done + delete session; + + } + }; }}}
Modified: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BytesMessageCommandTest.h URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BytesMessageCommandTest.h?rev=424272&r1=424271&r2=424272&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BytesMessageCommandTest.h (original) +++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BytesMessageCommandTest.h Fri Jul 21 04:36:09 2006 @@ -65,8 +65,8 @@ CPPUNIT_ASSERT( std::string( cmd.getTransactionId() ) == "ID:123456" ); StompTopic topic("testTopic"); - cmd.setCMSDestination( topic ); - CPPUNIT_ASSERT( cmd.getCMSDestination().toString() == + cmd.setCMSDestination( &topic ); + CPPUNIT_ASSERT( cmd.getCMSDestination()->toString() == "testTopic" ); StompFrame* frame = cmd.marshal().clone(); @@ -98,12 +98,12 @@ CPPUNIT_ASSERT( std::string( cmd.getCMSCorrelationId() ) == "ID:1234567" ); CPPUNIT_ASSERT( cmd.getCMSDeliveryMode() == - cms::Message::PERSISTANT ); - cmd.setCMSDeliveryMode( cms::Message::NONPERSISTANT ); + cms::DeliveryMode::PERSISTANT ); + cmd.setCMSDeliveryMode( cms::DeliveryMode::NON_PERSISTANT ); CPPUNIT_ASSERT( cmd.getCMSDeliveryMode() == - cms::Message::NONPERSISTANT ); - cmd.setCMSDestination( topic ); - CPPUNIT_ASSERT( cmd.getCMSDestination().toString() == + cms::DeliveryMode::NON_PERSISTANT ); + cmd.setCMSDestination( &topic ); + CPPUNIT_ASSERT( cmd.getCMSDestination()->toString() == "testTopic" ); CPPUNIT_ASSERT( cmd.getCMSExpiration() == 0 ); cmd.setCMSExpiration( 123 ); Modified: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/MessageCommandTest.h URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/MessageCommandTest.h?rev=424272&r1=424271&r2=424272&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/MessageCommandTest.h (original) +++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/MessageCommandTest.h Fri Jul 21 04:36:09 2006 @@ -66,7 +66,7 @@ CPPUNIT_ASSERT( std::string( cmd.getTransactionId() ) == "ID:123456" ); StompTopic topic("testTopic"); - cmd.setCMSDestination( topic ); + cmd.setCMSDestination( &topic ); StompFrame* frame = cmd.marshal().clone(); @@ -98,11 +98,11 @@ CPPUNIT_ASSERT( std::string( cmd.getCMSCorrelationId() ) == "ID:1234567" ); CPPUNIT_ASSERT( cmd.getCMSDeliveryMode() == - cms::Message::PERSISTANT ); - cmd.setCMSDeliveryMode( cms::Message::NONPERSISTANT ); + cms::DeliveryMode::PERSISTANT ); + cmd.setCMSDeliveryMode( cms::DeliveryMode::NON_PERSISTANT ); CPPUNIT_ASSERT( cmd.getCMSDeliveryMode() == - cms::Message::NONPERSISTANT ); - CPPUNIT_ASSERT( cmd.getCMSDestination().toString() == + cms::DeliveryMode::NON_PERSISTANT ); + CPPUNIT_ASSERT( cmd.getCMSDestination()->toString() == "testTopic" ); CPPUNIT_ASSERT( cmd.getCMSExpiration() == 0 ); cmd.setCMSExpiration( 123 ); Modified: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/TextMessageCommandTest.h URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/TextMessageCommandTest.h?rev=424272&r1=424271&r2=424272&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/TextMessageCommandTest.h (original) +++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/TextMessageCommandTest.h Fri Jul 21 04:36:09 2006 @@ -65,7 +65,7 @@ CPPUNIT_ASSERT( std::string( cmd.getTransactionId() ) == "ID:123456" ); StompTopic topic("testTopic"); - cmd.setCMSDestination( topic ); + cmd.setCMSDestination( &topic ); StompFrame* frame = cmd.marshal().clone(); @@ -97,11 +97,11 @@ CPPUNIT_ASSERT( std::string( cmd.getCMSCorrelationId() ) == "ID:1234567" ); CPPUNIT_ASSERT( cmd.getCMSDeliveryMode() == - cms::Message::PERSISTANT ); - cmd.setCMSDeliveryMode( cms::Message::NONPERSISTANT ); + cms::DeliveryMode::PERSISTANT ); + cmd.setCMSDeliveryMode( cms::DeliveryMode::NON_PERSISTANT ); CPPUNIT_ASSERT( cmd.getCMSDeliveryMode() == - cms::Message::NONPERSISTANT ); - CPPUNIT_ASSERT( cmd.getCMSDestination().toString() == + cms::DeliveryMode::NON_PERSISTANT ); + CPPUNIT_ASSERT( cmd.getCMSDestination()->toString() == "testTopic" ); CPPUNIT_ASSERT( cmd.getCMSExpiration() == 0 ); cmd.setCMSExpiration( 123 ); Modified: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/marshal/MarshalerTest.h URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/marshal/MarshalerTest.h?rev=424272&r1=424271&r2=424272&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/marshal/MarshalerTest.h (original) +++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/marshal/MarshalerTest.h Fri Jul 21 04:36:09 2006 @@ -38,15 +38,17 @@ // Sync to expected output connectedCommand.setSessionId( "test" ); + StompTopic myTopic( "a" ); + // Sync to expected output - textCommand.setCMSDestination( StompTopic("a") ); + textCommand.setCMSDestination( &myTopic ); textCommand.setCMSMessageId( "123" ); textCommand.getProperties().setProperty( "sampleProperty", "testvalue" ); textCommand.setText( "testMessage" ); // Sync to expected output - bytesCommand.setCMSDestination( StompTopic("a") ); + bytesCommand.setCMSDestination( &myTopic ); bytesCommand.setCMSMessageId( "123" ); bytesCommand.getProperties().setProperty( "sampleProperty", "testvalue" ); Modified: incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQConnectionFactoryTest.h URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQConnectionFactoryTest.h?rev=424272&r1=424271&r2=424272&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQConnectionFactoryTest.h (original) +++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQConnectionFactoryTest.h Fri Jul 21 04:36:09 2006 @@ -10,9 +10,11 @@ #include <activemq/concurrent/Mutex.h> #include <activemq/concurrent/Thread.h> #include <activemq/core/ActiveMQConnectionFactory.h> +#include <activemq/core/ActiveMQConnection.h> #include <cms/Connection.h> #include <activemq/transport/TransportFactoryMapRegistrar.h> #include <activemq/transport/DummyTransportFactory.h> +#include <activemq/connector/Connector.h> namespace activemq{ namespace core{ @@ -21,11 +23,20 @@ { CPPUNIT_TEST_SUITE( ActiveMQConnectionFactoryTest ); CPPUNIT_TEST( test ); + CPPUNIT_TEST( test2 ); CPPUNIT_TEST_SUITE_END(); public: - - ActiveMQConnectionFactoryTest() {} + + std::string username; + std::string password; + std::string clientId; + + ActiveMQConnectionFactoryTest(){ + username = "timmy"; + password = "auth"; + clientId = "12345"; + } virtual ~ActiveMQConnectionFactoryTest() {} void test() @@ -38,11 +49,10 @@ std::string URI = "dummy://127.0.0.1:23232&wireFormat=stomp"; - ActiveMQConnectionFactory connectionFactory(URI); + ActiveMQConnectionFactory connectionFactory( URI ); cms::Connection* connection = - - connectionFactory.createConnection(); + connectionFactory.createConnection(); CPPUNIT_ASSERT( connection != NULL ); @@ -56,6 +66,45 @@ CPPUNIT_ASSERT( false ); } + void test2() + { + try + { + transport::TransportFactoryMapRegistrar registrar( + "dummy", new transport::DummyTransportFactory() ); + + std::string URI = std::string() + + "dummy://127.0.0.1:23232&wireFormat=stomp?" + "username=" + username + "?password=" + password + + "?client-id=" + clientId; + + ActiveMQConnectionFactory connectionFactory( URI ); + + cms::Connection* connection = + connectionFactory.createConnection(); + CPPUNIT_ASSERT( connection != NULL ); + + ActiveMQConnection* amqConnection = + dynamic_cast< ActiveMQConnection* >( connection ); + CPPUNIT_ASSERT( amqConnection != NULL ); + + connector::Connector* connector = + dynamic_cast< connector::Connector* >( + amqConnection->getConnectionData()->getConnector() ); + CPPUNIT_ASSERT( connector != NULL ); + + CPPUNIT_ASSERT( username == connector->getUsername() ); + CPPUNIT_ASSERT( password == connector->getPassword() ); + CPPUNIT_ASSERT( clientId == connector->getClientId() ); + + return; + } + AMQ_CATCH_NOTHROW( exceptions::ActiveMQException ) + AMQ_CATCHALL_NOTHROW( ) + + CPPUNIT_ASSERT( false ); + } + }; }} Modified: incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQConnectionTest.h URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQConnectionTest.h?rev=424272&r1=424271&r2=424272&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQConnectionTest.h (original) +++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQConnectionTest.h Fri Jul 21 04:36:09 2006 @@ -169,7 +169,7 @@ session.setSessionId( 1 ); session.setConnectionId( "TEST:123" ); - session.setAckMode( cms::Session::AutoAcknowledge ); + session.setAckMode( cms::Session::AUTO_ACKNOWLEDGE ); consumer.setConsumerId( 1 ); consumer.setSessionInfo( &session ); @@ -180,9 +180,8 @@ connector::stomp::commands::TextMessageCommand* cmd = new connector::stomp::commands::TextMessageCommand; - - cmd->setCMSDestination( - connector::stomp::StompTopic( "test" ) ); + connector::stomp::StompTopic topic1( "test" ); + cmd->setCMSDestination( &topic1 ); connector::ConsumerMessageListener* consumerListener = dynamic_cast< connector::ConsumerMessageListener* >( @@ -212,8 +211,8 @@ cmd = new connector::stomp::commands::TextMessageCommand; - cmd->setCMSDestination( - connector::stomp::StompTopic( "test" ) ); + connector::stomp::StompTopic topic2( "test" ); + cmd->setCMSDestination( &topic2 ); consumerListener->onConsumerMessage( &consumer, cmd ); CPPUNIT_ASSERT( msgListener.messages.size() == 1 ); @@ -221,12 +220,20 @@ connection.removeMessageListener( 1 ); msgListener.messages.clear(); + session1->close(); + session2->close(); + session3->close(); connection.close(); consumerListener->onConsumerMessage( &consumer, cmd ); CPPUNIT_ASSERT( exListener.caughtOne == true ); delete cmd; + + delete session1; + delete session2; + delete session3; + } catch(...) { Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQDestinationTest.cpp URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQDestinationTest.cpp?rev=424272&view=auto ============================================================================== --- incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQDestinationTest.cpp (added) +++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQDestinationTest.cpp Fri Jul 21 04:36:09 2006 @@ -0,0 +1,3 @@ +#include "ActiveMQDestinationTest.h" + +CPPUNIT_TEST_SUITE_REGISTRATION( activemq::core::ActiveMQDestinationTest ); Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQDestinationTest.h URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQDestinationTest.h?rev=424272&view=auto ============================================================================== --- incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQDestinationTest.h (added) +++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQDestinationTest.h Fri Jul 21 04:36:09 2006 @@ -0,0 +1,130 @@ +#ifndef ACTIVEMQDESTINATIONTEST_H_ +#define ACTIVEMQDESTINATIONTEST_H_ + +#include <cppunit/TestFixture.h> +#include <cppunit/extensions/HelperMacros.h> + +#include <activemq/core/ActiveMQDestination.h> +#include <cms/Topic.h> + +namespace activemq{ +namespace core{ + + class ActiveMQDestinationTest : public CppUnit::TestFixture + { + CPPUNIT_TEST_SUITE( ActiveMQDestinationTest ); + CPPUNIT_TEST( test ); + CPPUNIT_TEST_SUITE_END(); + + public: + + class MyDestination : public ActiveMQDestination< cms::Topic > + { + public: + + MyDestination( const cms::Destination* dest ) : + ActiveMQDestination< cms::Topic >( dest ) {} + + MyDestination( const std::string& name ) + : ActiveMQDestination< cms::Topic >( name, cms::Destination::TOPIC ) + {} + + virtual ~MyDestination() {} + + /** + * Converts the Destination Name into a String + * @return string name + */ + virtual std::string toString(void) const { + return getName(); + } + + /** + * Converts the Destination to a String value representing the + * Provider specific name fot this destination, which is not + * necessarily equal to the User Supplied name of the Destination + * @return Provider specific Name + */ + virtual std::string toProviderString(void) const { + return getName(); + } + + /** + * Creates a new instance of this destination type that is a + * copy of this one, and returns it. + * @returns cloned copy of this object + */ + virtual cms::Destination* clone(void) const { + return new MyDestination( this ); + } + + /** + * Gets the name of this topic. + * @return The topic name. + */ + virtual std::string getTopicName(void) + const throw( cms::CMSException ) { return getName(); } + + }; + + ActiveMQDestinationTest() {} + virtual ~ActiveMQDestinationTest() {} + + virtual void test() + { + MyDestination dest( "test" ); + + CPPUNIT_ASSERT( dest.getTopicName() == "test" ); + + MyDestination dest1( "test1?value1=1&value2=2" ); + + CPPUNIT_ASSERT( dest1.getTopicName() == "test1" ); + CPPUNIT_ASSERT( dest1.getProperties().hasProperty( "value1" ) == true ); + CPPUNIT_ASSERT( dest1.getProperties().hasProperty( "value2" ) == true ); + CPPUNIT_ASSERT( dest1.getProperties().hasProperty( "value3" ) != true ); + + std::string value1 = dest1.getProperties().getProperty( "value1" ); + std::string value2 = dest1.getProperties().getProperty( "value2" ); + + CPPUNIT_ASSERT( value1 == "1" ); + CPPUNIT_ASSERT( value2 == "2" ); + + MyDestination* dest2 = + dynamic_cast< MyDestination* >( dest1.clone() ); + + CPPUNIT_ASSERT( dest2 != NULL ); + + CPPUNIT_ASSERT( dest2->getTopicName() == "test1" ); + CPPUNIT_ASSERT( dest2->getProperties().hasProperty( "value1" ) == true ); + CPPUNIT_ASSERT( dest2->getProperties().hasProperty( "value2" ) == true ); + CPPUNIT_ASSERT( dest2->getProperties().hasProperty( "value3" ) != true ); + + value1 = dest2->getProperties().getProperty( "value1" ); + value2 = dest2->getProperties().getProperty( "value2" ); + + CPPUNIT_ASSERT( value1 == "1" ); + CPPUNIT_ASSERT( value2 == "2" ); + + delete dest2; + + MyDestination dest3("dummy"); + dest3.copy( dest1 ); + + CPPUNIT_ASSERT( dest3.getTopicName() == "test1" ); + CPPUNIT_ASSERT( dest3.getProperties().hasProperty( "value1" ) == true ); + CPPUNIT_ASSERT( dest3.getProperties().hasProperty( "value2" ) == true ); + CPPUNIT_ASSERT( dest3.getProperties().hasProperty( "value3" ) != true ); + + value1 = dest3.getProperties().getProperty( "value1" ); + value2 = dest3.getProperties().getProperty( "value2" ); + + CPPUNIT_ASSERT( value1 == "1" ); + CPPUNIT_ASSERT( value2 == "2" ); + + } + + }; + +}} + +#endif /*ACTIVEMQDESTINATIONTEST_H_*/ Modified: incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQSessionTest.h URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQSessionTest.h?rev=424272&r1=424271&r2=424272&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQSessionTest.h (original) +++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQSessionTest.h Fri Jul 21 04:36:09 2006 @@ -112,15 +112,15 @@ messages.clear(); } - virtual void onMessage( const cms::Message& message ) + virtual void onMessage( const cms::Message* message ) { synchronized( &mutex ) { if( ack ){ - message.acknowledge(); + message->acknowledge(); } - messages.push_back( message.clone() ); + messages.push_back( message->clone() ); mutex.notifyAll(); } @@ -186,7 +186,7 @@ // Init Message msg->setText( message.c_str() ); - msg->setCMSDestination( destination ); + msg->setCMSDestination( &destination ); msg->setCMSMessageId( "Id: 123456" ); // Send the Message @@ -219,9 +219,9 @@ // Create a consumer cms::MessageConsumer* consumer1 = - session->createConsumer( *topic1 ); + session->createConsumer( topic1 ); cms::MessageConsumer* consumer2 = - session->createConsumer( *topic2 ); + session->createConsumer( topic2 ); CPPUNIT_ASSERT( consumer1 != NULL ); CPPUNIT_ASSERT( consumer2 != NULL ); @@ -277,6 +277,9 @@ CPPUNIT_ASSERT( text1 == "This is a Test 1" ); CPPUNIT_ASSERT( text2 == "This is a Test 2" ); + delete topic1; + delete topic2; + delete consumer1; delete consumer2; @@ -292,7 +295,7 @@ // Create an Auto Ack Session cms::Session* session = connection->createSession( - cms::Session::ClientAcknowledge ); + cms::Session::CLIENT_ACKNOWLEDGE ); // Create a Topic cms::Topic* topic1 = session->createTopic( "TestTopic1"); @@ -303,9 +306,9 @@ // Create a consumer cms::MessageConsumer* consumer1 = - session->createConsumer( *topic1 ); + session->createConsumer( topic1 ); cms::MessageConsumer* consumer2 = - session->createConsumer( *topic2 ); + session->createConsumer( topic2 ); CPPUNIT_ASSERT( consumer1 != NULL ); CPPUNIT_ASSERT( consumer2 != NULL ); @@ -365,6 +368,9 @@ CPPUNIT_ASSERT( text1 == "This is a Test 1" ); CPPUNIT_ASSERT( text2 == "This is a Test 2" ); + delete topic1; + delete topic2; + delete consumer1; delete consumer2; @@ -380,7 +386,7 @@ // Create an Auto Ack Session cms::Session* session = connection->createSession( - cms::Session::Transactional ); + cms::Session::SESSION_TRANSACTED ); // Create a Topic cms::Topic* topic1 = session->createTopic( "TestTopic1"); @@ -391,9 +397,9 @@ // Create a consumer cms::MessageConsumer* consumer1 = - session->createConsumer( *topic1 ); + session->createConsumer( topic1 ); cms::MessageConsumer* consumer2 = - session->createConsumer( *topic2 ); + session->createConsumer( topic2 ); CPPUNIT_ASSERT( consumer1 != NULL ); CPPUNIT_ASSERT( consumer2 != NULL ); @@ -544,6 +550,9 @@ } CPPUNIT_ASSERT( msgListener2.messages.size() == msgCount ); + + delete topic1; + delete topic2; delete consumer1; delete consumer2; Modified: incubator/activemq/trunk/activemq-cpp/src/test/activemq/transport/IOTransportTest.h URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/transport/IOTransportTest.h?rev=424272&r1=424271&r2=424272&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-cpp/src/test/activemq/transport/IOTransportTest.h (original) +++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/transport/IOTransportTest.h Fri Jul 21 04:36:09 2006 @@ -53,6 +53,7 @@ virtual void onCommand( Command* command ){ const MyCommand* cmd = dynamic_cast<const MyCommand*>(command); str += cmd->c; + delete command; } }; Modified: incubator/activemq/trunk/activemq-cpp/todo.txt URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/todo.txt?rev=424272&r1=424271&r2=424272&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-cpp/todo.txt (original) +++ incubator/activemq/trunk/activemq-cpp/todo.txt Fri Jul 21 04:36:09 2006 @@ -1,36 +1,39 @@ -Client Side: - -* Work out platform independent build system -* Complete Logging API -* Add Destination URL like parameter processing -* investigate the 999 (1000) messages bug in the broker - - -* integration test against real AMQ broker (DONE) -* finish unit testing of core api (DONE) -* refactoring of core API (DONE) -* Resolve static initialization when used as a library. (DONE) -* Add Message Cloning to the Commands tests. (DONE) -* enforce connected state in stomp connector (DONE) -* Add setting username & password to connect command (DONE) -* Dummy Transport that acts like a broker (DONE) -* Update Session Manager to use Transport not Connector (DONE) -* Add Transport Factory Lookup Method (DONE) -* Connector Interfaces Cleanup (DONE) - -Server Side: - -* Implement Connected as a response (DONE) -* Implement use of JMSType in all messages (DONE) -* Add Content Length to all outgoing messages (DONE) - -Nice to Haves: - -* Add Connection Id support to Stomp Transport on Broker -* Add Consumer Id support to Stomp Transport on Broker -* implement selector algorithm - always pass null selector to broker, - current implementation is limited to using the selector on the - first consumer that is subscribed to a Topic. -* Add Durable Subscriptions to Stomp Connector. (DONE) - - +Client Side: + +* Work out platform independent build system +* Complete Logging API +* Add Destination URL like parameter processing +* investigate the 999 (1000) messages bug in the broker + + +* Make the enumerations have consistant case (DONE) +* Create a DeliveryMode class with enum values (DONE) +* rename Session::Transactional to SESSION_TRANSACTED (DONE) +* integration test against real AMQ broker (DONE) +* finish unit testing of core api (DONE) +* refactoring of core API (DONE) +* Resolve static initialization when used as a library. (DONE) +* Add Message Cloning to the Commands tests. (DONE) +* enforce connected state in stomp connector (DONE) +* Add setting username & password to connect command (DONE) +* Dummy Transport that acts like a broker (DONE) +* Update Session Manager to use Transport not Connector (DONE) +* Add Transport Factory Lookup Method (DONE) +* Connector Interfaces Cleanup (DONE) + +Server Side: + +* Implement Connected as a response (DONE) +* Implement use of JMSType in all messages (DONE) +* Add Content Length to all outgoing messages (DONE) + +Nice to Haves: + +* Add Connection Id support to Stomp Transport on Broker +* Add Consumer Id support to Stomp Transport on Broker +* implement selector algorithm - always pass null selector to broker, + current implementation is limited to using the selector on the + first consumer that is subscribed to a Topic. +* Add Durable Subscriptions to Stomp Connector. (DONE) + + Modified: incubator/activemq/trunk/activemq-cpp/unix/pom.xml URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/unix/pom.xml?rev=424272&r1=424271&r2=424272&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-cpp/unix/pom.xml (original) +++ incubator/activemq/trunk/activemq-cpp/unix/pom.xml Fri Jul 21 04:36:09 2006 @@ -53,7 +53,7 @@ </activation> <properties> - <compiler.options>-frtti -pthread -O3 -DNDEBUG -D_REENTRANT</compiler.options> + <compiler.options>-frtti -O3 -DNDEBUG -D_REENTRANT</compiler.options> </properties> </profile> @@ -68,7 +68,7 @@ </activation> <properties> - <compiler.options>-frtti -g -pthread -DDEBUG -D_DEBUG -D_REENTRANT</compiler.options> + <compiler.options>-frtti -g -DDEBUG -D_DEBUG -D_REENTRANT</compiler.options> </properties> </profile> Modified: incubator/activemq/trunk/activemq-cpp/win32-gcc/pom.xml URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/win32-gcc/pom.xml?rev=424272&r1=424271&r2=424272&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-cpp/win32-gcc/pom.xml (original) +++ incubator/activemq/trunk/activemq-cpp/win32-gcc/pom.xml Fri Jul 21 04:36:09 2006 @@ -53,7 +53,7 @@ </activation> <properties> - <compiler.options>-frtti -pthread -O3 -DNDEBUG -D_REENTRANT -D_WIN32 -DWINVER=0x0502 -DWIN32_LEAN_AND_MEAN</compiler.options> + <compiler.options>-frtti -O3 -DNDEBUG -D_REENTRANT -D_WIN32 -DWINVER=0x0502 -DWIN32_LEAN_AND_MEAN</compiler.options> </properties> </profile> @@ -68,7 +68,7 @@ </activation> <properties> - <compiler.options>-frtti -g -pthread -DDEBUG -D_DEBUG -D_REENTRANT -D_WIN32 -DWINVER=0x0502 -DWIN32_LEAN_AND_MEAN</compiler.options> + <compiler.options>-frtti -g -DDEBUG -D_DEBUG -D_REENTRANT -D_WIN32 -DWINVER=0x0502 -DWIN32_LEAN_AND_MEAN</compiler.options> </properties> </profile>
