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/16 22:14:31 UTC
svn commit: r755006 - in /activemq/activemq-cpp/trunk/src:
main/activemq/state/ test/ test/activemq/state/
Author: tabish
Date: Mon Mar 16 21:14:30 2009
New Revision: 755006
URL: http://svn.apache.org/viewvc?rev=755006&view=rev
Log:
http://issues.apache.org/activemq/browse/AMQCPP-100
Adding in unit tests for the State Tracker to try and help find some bugs and make platform testing easier.
Added:
activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTest.cpp (with props)
activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTest.h (with props)
activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTrackerTest.cpp (with props)
activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTrackerTest.h (with props)
Modified:
activemq/activemq-cpp/trunk/src/main/activemq/state/ConnectionState.h
activemq/activemq-cpp/trunk/src/main/activemq/state/ConnectionStateTracker.h
activemq/activemq-cpp/trunk/src/test/Makefile.am
activemq/activemq-cpp/trunk/src/test/testRegistry.cpp
Modified: activemq/activemq-cpp/trunk/src/main/activemq/state/ConnectionState.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/state/ConnectionState.h?rev=755006&r1=755005&r2=755006&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/state/ConnectionState.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/state/ConnectionState.h Mon Mar 16 21:14:30 2009
@@ -125,10 +125,6 @@
return sessions.get( id );
}
-// Set<SessionId> getSessionIds() {
-// return sessions.keySet();
-// }
-
const StlList< Pointer<DestinationInfo> >& getTempDesinations() const {
return tempDestinations;
}
Modified: activemq/activemq-cpp/trunk/src/main/activemq/state/ConnectionStateTracker.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/state/ConnectionStateTracker.h?rev=755006&r1=755005&r2=755006&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/state/ConnectionStateTracker.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/state/ConnectionStateTracker.h Mon Mar 16 21:14:30 2009
@@ -30,7 +30,7 @@
#include <activemq/state/Tracked.h>
#include <activemq/transport/Transport.h>
-#include <decaf/util/StlMap.h>
+#include <decaf/util/concurrent/ConcurrentStlMap.h>
#include <decaf/lang/Pointer.h>
namespace activemq {
@@ -38,6 +38,7 @@
class RemoveTransactionAction;
using decaf::lang::Pointer;
+ using decaf::util::concurrent::ConcurrentStlMap;
class AMQCPP_API ConnectionStateTracker : public CommandVisitorAdapter {
private:
@@ -45,16 +46,16 @@
/** Creates a unique marker for this state tracker */
const Pointer<Tracked> TRACKED_RESPONSE_MARKER;
- // TODO - Create a Thread Safe impl of Map.
- decaf::util::StlMap< Pointer<ConnectionId>, Pointer<ConnectionState>,
- ConnectionId::COMPARATOR > connectionStates;
+ /** Map holding the ConnectionStates, indexed by the ConnectionId */
+ ConcurrentStlMap< Pointer<ConnectionId>, Pointer<ConnectionState>,
+ ConnectionId::COMPARATOR > connectionStates;
// TODO - The Map doesn't have a way to automatically remove the eldest Entry
// Either we need to implement something similar to LinkedHashMap or find
// some other way of tracking the eldest entry into the map and removing it
// if the cache size is exceeded.
- decaf::util::StlMap< Pointer<MessageId>, Pointer<Message>,
- MessageId::COMPARATOR > messageCache;
+ ConcurrentStlMap< Pointer<MessageId>, Pointer<Message>,
+ MessageId::COMPARATOR > messageCache;
bool trackTransactions;
bool restoreSessions;
Modified: activemq/activemq-cpp/trunk/src/test/Makefile.am
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/test/Makefile.am?rev=755006&r1=755005&r2=755006&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/test/Makefile.am (original)
+++ activemq/activemq-cpp/trunk/src/test/Makefile.am Mon Mar 16 21:14:30 2009
@@ -36,6 +36,8 @@
activemq/cmsutil/SessionPoolTest.cpp \
activemq/cmsutil/CmsTemplateTest.cpp \
activemq/exceptions/ActiveMQExceptionTest.cpp \
+ activemq/state/ConnectionStateTest.cpp \
+ activemq/state/ConnectionStateTrackerTest.cpp \
activemq/state/ConsumerStateTest.cpp \
activemq/state/ProducerStateTest.cpp \
activemq/state/SessionStateTest.cpp \
@@ -141,6 +143,8 @@
activemq/cmsutil/SessionPoolTest.h \
activemq/cmsutil/CmsTemplateTest.h \
activemq/exceptions/ActiveMQExceptionTest.h \
+ activemq/state/ConnectionStateTest.h \
+ activemq/state/ConnectionStateTrackerTest.h \
activemq/state/ConsumerStateTest.h \
activemq/state/ProducerStateTest.h \
activemq/state/SessionStateTest.h \
Added: activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTest.cpp?rev=755006&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTest.cpp (added)
+++ activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTest.cpp Mon Mar 16 21:14:30 2009
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "ConnectionStateTest.h"
+
+#include <activemq/state/ConnectionState.h>
+#include <activemq/state/SessionState.h>
+#include <activemq/commands/SessionInfo.h>
+#include <decaf/lang/Pointer.h>
+
+using namespace std;
+using namespace activemq;
+using namespace activemq::state;
+using namespace activemq::commands;
+using namespace decaf::lang;
+
+////////////////////////////////////////////////////////////////////////////////
+void ConnectionStateTest::test() {
+
+ // Create a Session
+ Pointer<SessionId> sid( new SessionId );
+ sid->setConnectionId( "CONNECTION" );
+ sid->setValue( 42 );
+ Pointer<SessionInfo> sinfo( new SessionInfo );
+ sinfo->setSessionId( sid );
+
+ Pointer<ConnectionInfo> info( new ConnectionInfo );
+ ConnectionState state( info );
+
+ state.addSession( sinfo );
+ CPPUNIT_ASSERT( state.getSessionStates().size() == 1 );
+ state.removeSession( sinfo->getSessionId() );
+ CPPUNIT_ASSERT( state.getSessionStates().size() == 0 );
+
+ state.addSession( sinfo );
+ state.addSession( sinfo );
+ CPPUNIT_ASSERT( state.getSessionStates().size() == 1 );
+
+}
Propchange: activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTest.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Added: activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTest.h?rev=755006&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTest.h (added)
+++ activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTest.h Mon Mar 16 21:14:30 2009
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _ACTIVEMQ_STATE_CONNECTIONSTATETEST_H_
+#define _ACTIVEMQ_STATE_CONNECTIONSTATETEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+namespace activemq {
+namespace state {
+
+ class ConnectionStateTest : public CppUnit::TestFixture {
+
+ CPPUNIT_TEST_SUITE( ConnectionStateTest );
+ CPPUNIT_TEST( test );
+ CPPUNIT_TEST_SUITE_END();
+
+ public:
+
+ ConnectionStateTest() {}
+ virtual ~ConnectionStateTest() {}
+
+ void test();
+
+ };
+
+}}
+
+#endif /* _ACTIVEMQ_STATE_CONNECTIONSTATETEST_H_ */
Propchange: activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTest.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTrackerTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTrackerTest.cpp?rev=755006&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTrackerTest.cpp (added)
+++ activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTrackerTest.cpp Mon Mar 16 21:14:30 2009
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "ConnectionStateTrackerTest.h"
+
+#include <activemq/state/ConnectionStateTracker.h>
+#include <activemq/state/ConsumerState.h>
+#include <activemq/state/SessionState.h>
+#include <activemq/commands/ConnectionInfo.h>
+#include <activemq/commands/SessionInfo.h>
+#include <decaf/lang/Pointer.h>
+
+using namespace std;
+using namespace activemq;
+using namespace activemq::state;
+using namespace activemq::commands;
+using namespace decaf::lang;
+
+////////////////////////////////////////////////////////////////////////////////
+void ConnectionStateTrackerTest::test() {
+
+ ConnectionStateTracker tracker;
+
+}
Propchange: activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTrackerTest.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Added: activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTrackerTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTrackerTest.h?rev=755006&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTrackerTest.h (added)
+++ activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTrackerTest.h Mon Mar 16 21:14:30 2009
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _ACTIVEMQ_STATE_CONNECTIONSTATETRACKERTEST_H_
+#define _ACTIVEMQ_STATE_CONNECTIONSTATETRACKERTEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+namespace activemq {
+namespace state {
+
+ class ConnectionStateTrackerTest : public CppUnit::TestFixture {
+
+ CPPUNIT_TEST_SUITE( ConnectionStateTrackerTest );
+ CPPUNIT_TEST( test );
+ CPPUNIT_TEST_SUITE_END();
+
+ public:
+
+ ConnectionStateTrackerTest() {}
+ virtual ~ConnectionStateTrackerTest() {}
+
+ void test();
+ };
+
+}}
+
+#endif /* _ACTIVEMQ_STATE_CONNECTIONSTATETRACKERTEST_H_ */
Propchange: activemq/activemq-cpp/trunk/src/test/activemq/state/ConnectionStateTrackerTest.h
------------------------------------------------------------------------------
svn:eol-style = native
Modified: activemq/activemq-cpp/trunk/src/test/testRegistry.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/test/testRegistry.cpp?rev=755006&r1=755005&r2=755006&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/test/testRegistry.cpp (original)
+++ activemq/activemq-cpp/trunk/src/test/testRegistry.cpp Mon Mar 16 21:14:30 2009
@@ -75,7 +75,11 @@
//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::core::ActiveMQConnectionTest );
//#include <activemq/core/ActiveMQSessionTest.h>
//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::core::ActiveMQSessionTest );
-//
+
+#include <activemq/state/ConnectionStateTrackerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::state::ConnectionStateTrackerTest );
+#include <activemq/state/ConnectionStateTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::state::ConnectionStateTest );
#include <activemq/state/ConsumerStateTest.h>
CPPUNIT_TEST_SUITE_REGISTRATION( activemq::state::ConsumerStateTest );
#include <activemq/state/ProducerStateTest.h>
@@ -85,8 +89,8 @@
#include <activemq/state/TransactionStateTest.h>
CPPUNIT_TEST_SUITE_REGISTRATION( activemq::state::TransactionStateTest );
-#include <activemq/transport/failover/FailoverTransportTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::transport::failover::FailoverTransportTest );
+//#include <activemq/transport/failover/FailoverTransportTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::transport::failover::FailoverTransportTest );
//
//#include <activemq/transport/correlator/ResponseCorrelatorTest.h>
//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::transport::correlator::ResponseCorrelatorTest );