You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2010/02/27 01:38:16 UTC

svn commit: r916887 [1/4] - in /qpid/branches/qmf-devel0.7: ./ qpid/cpp/include/qmf/engine/ qpid/cpp/include/qpid/ qpid/cpp/include/qpid/sys/posix/ qpid/cpp/include/qpid/sys/windows/ qpid/cpp/rubygen/framing.0-10/ qpid/cpp/src/ qpid/cpp/src/qmf/engine/...

Author: tross
Date: Sat Feb 27 00:38:13 2010
New Revision: 916887

URL: http://svn.apache.org/viewvc?rev=916887&view=rev
Log:
Rebased the wmf branch to the trunk.

Added:
    qpid/branches/qmf-devel0.7/qpid/extras/qmf/src/py/qmf2/tests/subscriptions.py
      - copied unchanged from r916854, qpid/trunk/qpid/extras/qmf/src/py/qmf2/tests/subscriptions.py
    qpid/branches/qmf-devel0.7/qpid/java/perftests/etc/scripts/drainBroker.sh
      - copied unchanged from r916854, qpid/trunk/qpid/java/perftests/etc/scripts/drainBroker.sh
    qpid/branches/qmf-devel0.7/qpid/java/perftests/etc/scripts/fillBroker.sh
      - copied unchanged from r916854, qpid/trunk/qpid/java/perftests/etc/scripts/fillBroker.sh
    qpid/branches/qmf-devel0.7/qpid/java/perftests/etc/scripts/testWithPreFill.sh
      - copied unchanged from r916854, qpid/trunk/qpid/java/perftests/etc/scripts/testWithPreFill.sh
Modified:
    qpid/branches/qmf-devel0.7/   (props changed)
    qpid/branches/qmf-devel0.7/qpid/cpp/include/qmf/engine/Agent.h   (props changed)
    qpid/branches/qmf-devel0.7/qpid/cpp/include/qmf/engine/Console.h   (props changed)
    qpid/branches/qmf-devel0.7/qpid/cpp/include/qpid/Exception.h
    qpid/branches/qmf-devel0.7/qpid/cpp/include/qpid/sys/posix/check.h
    qpid/branches/qmf-devel0.7/qpid/cpp/include/qpid/sys/windows/check.h
    qpid/branches/qmf-devel0.7/qpid/cpp/rubygen/framing.0-10/MethodBodyFactory.rb
    qpid/branches/qmf-devel0.7/qpid/cpp/rubygen/framing.0-10/constants.rb
    qpid/branches/qmf-devel0.7/qpid/cpp/src/CMakeLists.txt
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/Agent.cpp   (props changed)
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/EventImpl.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/ObjectIdImpl.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/SchemaImpl.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/SchemaImpl.h
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/Cluster.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/ClusterTimer.h
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/Cpg.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/StoreStatus.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/StoreStatus.h
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/UpdateClient.cpp   (props changed)
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/UpdateClient.h   (props changed)
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/console/Value.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/AMQFrame.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/Array.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/BodyHandler.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/FieldTable.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/FieldValue.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/List.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/SequenceSet.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/Uuid.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/management/ManagementAgent.cpp   (props changed)
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/management/ManagementAgent.h   (props changed)
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/messaging/Variant.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/sys/AggregateOutput.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/sys/posix/Shlib.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/sys/ssl/check.h
    qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/Makefile.am
    qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/TxMocks.h
    qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/cluster_tests.py   (contents, props changed)
    qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/failover_soak.cpp
    qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/run_failover_soak
    qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/test_env.sh.in
    qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/verify_cluster_objects   (contents, props changed)
    qpid/branches/qmf-devel0.7/qpid/dotnet/build-msbuild.bat   (props changed)
    qpid/branches/qmf-devel0.7/qpid/dotnet/build-nant-release   (props changed)
    qpid/branches/qmf-devel0.7/qpid/dotnet/build-nant.bat   (props changed)
    qpid/branches/qmf-devel0.7/qpid/extras/qmf/src/py/qmf2/agent.py
    qpid/branches/qmf-devel0.7/qpid/extras/qmf/src/py/qmf2/common.py
    qpid/branches/qmf-devel0.7/qpid/extras/qmf/src/py/qmf2/console.py
    qpid/branches/qmf-devel0.7/qpid/extras/qmf/src/py/qmf2/tests/__init__.py
    qpid/branches/qmf-devel0.7/qpid/extras/qmf/src/py/qmf2/tests/agent_discovery.py
    qpid/branches/qmf-devel0.7/qpid/extras/qmf/src/py/qmf2/tests/async_method.py
    qpid/branches/qmf-devel0.7/qpid/extras/qmf/src/py/qmf2/tests/async_query.py
    qpid/branches/qmf-devel0.7/qpid/extras/qmf/src/py/qmf2/tests/basic_method.py
    qpid/branches/qmf-devel0.7/qpid/extras/qmf/src/py/qmf2/tests/basic_query.py
    qpid/branches/qmf-devel0.7/qpid/extras/qmf/src/py/qmf2/tests/events.py
    qpid/branches/qmf-devel0.7/qpid/extras/qmf/src/py/qmf2/tests/multi_response.py
    qpid/branches/qmf-devel0.7/qpid/extras/qmf/src/py/qmf2/tests/obj_gets.py
    qpid/branches/qmf-devel0.7/qpid/java/   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/broker/   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/broker/bin/   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/broker/src/main/java/org/apache/qpid/server/management/   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/client/example/src/main/java/org/apache/qpid/example/shared/example.properties
    qpid/branches/qmf-devel0.7/qpid/java/lib/org.osgi.core_1.0.0.jar   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/client/src/main/java/org/apache/qpid/management/   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/client/src/test/java/org/apache/qpid/management/   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedConnection.java   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedExchange.java   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanAttribute.java   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanConstructor.java   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanDescription.java   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanOperation.java   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanOperationParameter.java   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/eclipse-plugin/src/   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/ConnectionTypeTabControl.java   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/ExchangeTypeTabControl.java   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/MBeanTypeTabControl.java   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/QueueTypeTabControl.java   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/management/eclipse-plugin/src/main/resources/macosx/Contents/MacOS/qpidmc   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/module.xml
    qpid/branches/qmf-devel0.7/qpid/java/perftests/src/main/java/org/apache/qpid/ping/PingAsyncTestPerf.java
    qpid/branches/qmf-devel0.7/qpid/java/perftests/src/main/java/org/apache/qpid/ping/PingClient.java
    qpid/branches/qmf-devel0.7/qpid/java/perftests/src/main/java/org/apache/qpid/ping/PingTestPerf.java
    qpid/branches/qmf-devel0.7/qpid/java/perftests/src/main/java/org/apache/qpid/requestreply/PingPongProducer.java
    qpid/branches/qmf-devel0.7/qpid/java/systests/src/main/java/org/apache/qpid/client/MultipleJCAProviderRegistrationTest.java   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/systests/src/main/java/org/apache/qpid/server/queue/TimeToLiveTest.java
    qpid/branches/qmf-devel0.7/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ct/DurableSubscriberTest.java
    qpid/branches/qmf-devel0.7/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/DurableSubscriptionTest.java
    qpid/branches/qmf-devel0.7/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java
    qpid/branches/qmf-devel0.7/qpid/java/test-profiles/08StandaloneExcludes   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/test-profiles/CPPExcludes   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/test-profiles/Excludes   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/test-profiles/JavaExcludes   (contents, props changed)
    qpid/branches/qmf-devel0.7/qpid/java/test-profiles/JavaStandaloneExcludes   (contents, props changed)
    qpid/branches/qmf-devel0.7/qpid/java/test-profiles/JavaTransientExcludes
    qpid/branches/qmf-devel0.7/qpid/java/test-profiles/clean-dir   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/test-profiles/cpp.async.testprofile   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/test-profiles/cpp.noprefetch.testprofile   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/test-profiles/cpp.testprofile   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/test-profiles/default.testprofile   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/test-profiles/java-derby.testprofile   (contents, props changed)
    qpid/branches/qmf-devel0.7/qpid/java/test-profiles/java.testprofile   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/test-profiles/log4j-test.xml   (props changed)
    qpid/branches/qmf-devel0.7/qpid/java/test-profiles/test-provider.properties   (props changed)
    qpid/branches/qmf-devel0.7/qpid/python/   (props changed)
    qpid/branches/qmf-devel0.7/qpid/python/qpid-python-test
    qpid/branches/qmf-devel0.7/qpid/python/qpid/messaging/driver.py
    qpid/branches/qmf-devel0.7/qpid/python/qpid/messaging/endpoints.py
    qpid/branches/qmf-devel0.7/qpid/ruby/ext/sasl/extconf.rb   (props changed)

Propchange: qpid/branches/qmf-devel0.7/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb 27 00:38:13 2010
@@ -1,3 +1,3 @@
 /qpid/branches/0.5.x-dev:892761,894875
 /qpid/branches/java-network-refactor:805429-825319
-/qpid/trunk:911618-912022
+/qpid/trunk:911618-916854

Propchange: qpid/branches/qmf-devel0.7/qpid/cpp/include/qmf/engine/Agent.h
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb 27 00:38:13 2010
@@ -1 +1 @@
-/qpid/trunk/qpid/cpp/include/qmf/engine/Agent.h:911618-912022
+/qpid/trunk/qpid/cpp/include/qmf/engine/Agent.h:911618-916854

Propchange: qpid/branches/qmf-devel0.7/qpid/cpp/include/qmf/engine/Console.h
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb 27 00:38:13 2010
@@ -1 +1 @@
-/qpid/trunk/qpid/cpp/include/qmf/engine/Console.h:911618-912022
+/qpid/trunk/qpid/cpp/include/qmf/engine/Console.h:911618-916854

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/include/qpid/Exception.h
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/include/qpid/Exception.h?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/include/qpid/Exception.h (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/include/qpid/Exception.h Sat Feb 27 00:38:13 2010
@@ -26,9 +26,7 @@
 #include "qpid/framing/constants.h"
 #include "qpid/framing/enum.h"
 #include "qpid/sys/StrError.h"
-#include "qpid/Msg.h"
 #include "qpid/CommonImportExport.h"
-#include <memory>
 #include <string>
 #include <errno.h>
 

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/include/qpid/sys/posix/check.h
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/include/qpid/sys/posix/check.h?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/include/qpid/sys/posix/check.h (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/include/qpid/sys/posix/check.h Sat Feb 27 00:38:13 2010
@@ -23,6 +23,7 @@
  */
 
 #include "qpid/Exception.h"
+#include "qpid/Msg.h"
 
 #include <cerrno>
 #include <assert.h>

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/include/qpid/sys/windows/check.h
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/include/qpid/sys/windows/check.h?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/include/qpid/sys/windows/check.h (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/include/qpid/sys/windows/check.h Sat Feb 27 00:38:13 2010
@@ -23,6 +23,7 @@
  */
 
 #include "qpid/Exception.h"
+#include "qpid/Msg.h"
 #include "qpid/sys/StrError.h"
 
 #define QPID_WINDOWS_ERROR(ERRVAL) qpid::Exception(QPID_MSG(qpid::sys::strError(ERRVAL)))

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/rubygen/framing.0-10/MethodBodyFactory.rb
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/rubygen/framing.0-10/MethodBodyFactory.rb?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/rubygen/framing.0-10/MethodBodyFactory.rb (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/rubygen/framing.0-10/MethodBodyFactory.rb Sat Feb 27 00:38:13 2010
@@ -35,6 +35,7 @@
       include "qpid/framing/BodyFactory"
       @amqp.methods_.each { |m| include "qpid/framing/#{m.body_name}" }
       include "qpid/Exception.h"
+      include "qpid/Msg.h"
       genl
       namespace(@namespace) {
         scope("boost::intrusive_ptr<AMQMethodBody> #{@classname}::create(ClassId c, MethodId m) {") {

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/rubygen/framing.0-10/constants.rb
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/rubygen/framing.0-10/constants.rb?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/rubygen/framing.0-10/constants.rb (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/rubygen/framing.0-10/constants.rb Sat Feb 27 00:38:13 2010
@@ -78,6 +78,7 @@
     cpp_file(path) {
       include(path);
       include("qpid/Exception.h")
+      include("qpid/Msg.h")
       include("<ostream>")
       namespace(@namespace) { 
         scope("const char* typeName(TypeCode t) {") {
@@ -181,6 +182,7 @@
   def reply_exceptions_cpp()
     cpp_file("#{@dir}/reply_exceptions") {
       include "#{@dir}/reply_exceptions"
+      include "qpid/Msg.h"
       include "<sstream>"
       include "<assert.h>"
       namespace("qpid::framing") {

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/CMakeLists.txt
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/CMakeLists.txt?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/CMakeLists.txt (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/CMakeLists.txt Sat Feb 27 00:38:13 2010
@@ -855,7 +855,6 @@
      qmf/engine/Protocol.h
      qmf/engine/QueryImpl.cpp
      qmf/engine/QueryImpl.h
-     qmf/engine/ResilientConnection.cpp
      qmf/engine/SequenceManager.cpp
      qmf/engine/SequenceManager.h
      qmf/engine/SchemaImpl.cpp
@@ -863,6 +862,10 @@
      qmf/engine/ValueImpl.cpp
      qmf/engine/ValueImpl.h
     )
+if (NOT WIN32)
+	list(APPEND qmfengine_SOURCES qmf/engine/ResilientConnection.cpp)
+endif (NOT WIN32)
+
 add_library (qmfengine SHARED ${qmfengine_SOURCES})
 target_link_libraries (qmfengine qpidclient)
 set_target_properties (qmfengine PROPERTIES

Propchange: qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/Agent.cpp
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb 27 00:38:13 2010
@@ -1 +1 @@
-/qpid/trunk/qpid/cpp/src/qmf/engine/Agent.cpp:911618-912022
+/qpid/trunk/qpid/cpp/src/qmf/engine/Agent.cpp:911618-916854

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/EventImpl.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/EventImpl.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/EventImpl.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/EventImpl.cpp Sat Feb 27 00:38:13 2010
@@ -20,6 +20,8 @@
 #include <qmf/engine/EventImpl.h>
 #include <qmf/engine/ValueImpl.h>
 
+#include <sstream>
+
 using namespace std;
 using namespace qmf::engine;
 using qpid::framing::Buffer;

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/ObjectIdImpl.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/ObjectIdImpl.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/ObjectIdImpl.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/ObjectIdImpl.cpp Sat Feb 27 00:38:13 2010
@@ -19,6 +19,7 @@
 
 #include "qmf/engine/ObjectIdImpl.h"
 #include <stdlib.h>
+#include <sstream>
 
 using namespace std;
 using namespace qmf::engine;

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/SchemaImpl.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/SchemaImpl.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/SchemaImpl.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/SchemaImpl.cpp Sat Feb 27 00:38:13 2010
@@ -23,6 +23,7 @@
 #include <string>
 #include <vector>
 #include <assert.h>
+#include <sstream>
 
 using namespace std;
 using namespace qmf::engine;

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/SchemaImpl.h
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/SchemaImpl.h?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/SchemaImpl.h (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qmf/engine/SchemaImpl.h Sat Feb 27 00:38:13 2010
@@ -25,6 +25,7 @@
 #include <string>
 #include <vector>
 #include <exception>
+#include <memory>
 
 namespace qmf {
 namespace engine {

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/Cluster.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/Cluster.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/Cluster.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/Cluster.cpp Sat Feb 27 00:38:13 2010
@@ -285,6 +285,7 @@
 }
 
 Cluster::~Cluster() {
+    broker.setClusterTimer(std::auto_ptr<sys::Timer>(0)); // Delete cluster timer
     if (updateThread.id()) updateThread.join(); // Join the previous updatethread.
 }
 
@@ -914,6 +915,12 @@
     size_t size = urls.size();
     failoverExchange->updateUrls(urls);
 
+    if (store.hasStore()) {
+        // Mark store clean if I am the only broker, dirty otherwise.
+        if (size == 1) store.clean(Uuid(true));
+        else store.dirty(clusterId);
+    }
+
     if (size == 1 && lastSize > 1 && state >= CATCHUP) {
         QPID_LOG(notice, *this << " last broker standing, update queue policies");
         lastBroker = true;
@@ -996,7 +1003,6 @@
 }
 
 void Cluster::timerWakeup(const MemberId& , const std::string& name, Lock&) {
-    QPID_LOG(debug, "Cluster timer wakeup " << map.getFrameSeq() << ": " << name)
     timer->deliverWakeup(name);
 }
 

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/ClusterTimer.h
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/ClusterTimer.h?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/ClusterTimer.h (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/ClusterTimer.h Sat Feb 27 00:38:13 2010
@@ -30,6 +30,12 @@
 
 class Cluster;
 
+/**
+ * Timer implementation that executes tasks consistently in the
+ * deliver thread across a cluster. Task is not executed when timer
+ * fires, instead the elder multicasts a wakeup. The task is executed
+ * when the wakeup is delivered.
+ */
 class ClusterTimer : public sys::Timer {
   public:
     ClusterTimer(Cluster&);

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/Cpg.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/Cpg.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/Cpg.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/Cpg.cpp Sat Feb 27 00:38:13 2010
@@ -54,7 +54,6 @@
     unsigned int snooze = 10;
     for ( unsigned int nth_try = 0; nth_try < cpgRetries; ++ nth_try ) {
         if ( CPG_OK == (result = c.op(handle, & group))) {
-            QPID_LOG(info, c.opName << " successful.");
             break;
         }
         else if ( result == CPG_ERR_TRY_AGAIN ) {

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/StoreStatus.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/StoreStatus.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/StoreStatus.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/StoreStatus.cpp Sat Feb 27 00:38:13 2010
@@ -20,6 +20,7 @@
  */
 #include "StoreStatus.h"
 #include "qpid/Exception.h"
+#include "qpid/Msg.h"
 #include <boost/filesystem/path.hpp>
 #include <boost/filesystem/fstream.hpp>
 #include <boost/filesystem/operations.hpp>
@@ -113,7 +114,12 @@
     }
 }
 
+bool StoreStatus::hasStore() const {
+    return state != framing::cluster::STORE_STATE_NO_STORE;
+}
+
 void StoreStatus::dirty(const Uuid& clusterId_) {
+    if (!hasStore()) return;
     assert(clusterId_);
     clusterId = clusterId_;
     shutdownId = Uuid();
@@ -122,6 +128,7 @@
 }
 
 void StoreStatus::clean(const Uuid& shutdownId_) {
+    if (!hasStore()) return;
     assert(shutdownId_);
     state = STORE_STATE_CLEAN_STORE;
     shutdownId = shutdownId_;

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/StoreStatus.h
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/StoreStatus.h?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/StoreStatus.h (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/StoreStatus.h Sat Feb 27 00:38:13 2010
@@ -46,14 +46,14 @@
     const Uuid& getShutdownId() const { return shutdownId; }
     framing::SequenceNumber getConfigSeq() const { return configSeq; }
 
-    void dirty(const Uuid& start); // Start using the store.
-    void clean(const Uuid& stop); // Stop using the store.
+    void dirty(const Uuid& clusterId);  // Mark the store in use by clusterId.
+    void clean(const Uuid& shutdownId); // Mark the store clean at shutdownId
     void setConfigSeq(framing::SequenceNumber seq); // Update the config seq number.
 
     void load();
     void save();
 
-    bool hasStore() { return state != framing::cluster::STORE_STATE_NO_STORE; }
+    bool hasStore() const;
 
   private:
     framing::cluster::StoreState state;

Propchange: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/UpdateClient.cpp
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb 27 00:38:13 2010
@@ -1 +1 @@
-/qpid/trunk/qpid/cpp/src/qpid/cluster/UpdateClient.cpp:911618-912022
+/qpid/trunk/qpid/cpp/src/qpid/cluster/UpdateClient.cpp:911618-916854

Propchange: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/cluster/UpdateClient.h
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb 27 00:38:13 2010
@@ -1 +1 @@
-/qpid/trunk/qpid/cpp/src/qpid/cluster/UpdateClient.h:911618-912022
+/qpid/trunk/qpid/cpp/src/qpid/cluster/UpdateClient.h:911618-916854

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/console/Value.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/console/Value.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/console/Value.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/console/Value.cpp Sat Feb 27 00:38:13 2010
@@ -22,6 +22,8 @@
 #include "qpid/console/Value.h"
 #include "qpid/framing/Buffer.h"
 
+#include <sstream>
+
 using namespace qpid;
 using namespace qpid::console;
 using namespace std;

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/AMQFrame.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/AMQFrame.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/AMQFrame.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/AMQFrame.cpp Sat Feb 27 00:38:13 2010
@@ -24,6 +24,8 @@
 #include "qpid/framing/reply_exceptions.h"
 #include "qpid/framing/BodyFactory.h"
 #include "qpid/framing/MethodBodyFactory.h"
+#include "qpid/Msg.h"
+
 #include <boost/format.hpp>
 #include <iostream>
 

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/Array.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/Array.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/Array.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/Array.cpp Sat Feb 27 00:38:13 2010
@@ -23,6 +23,7 @@
 #include "qpid/framing/FieldValue.h"
 #include "qpid/Exception.h"
 #include "qpid/framing/reply_exceptions.h"
+#include "qpid/Msg.h"
 #include <assert.h>
 
 namespace qpid {

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/BodyHandler.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/BodyHandler.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/BodyHandler.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/BodyHandler.cpp Sat Feb 27 00:38:13 2010
@@ -25,6 +25,7 @@
 #include "qpid/framing/AMQHeartbeatBody.h"
 #include <boost/cast.hpp>
 #include "qpid/framing/reply_exceptions.h"
+#include "qpid/Msg.h"
 
 using namespace qpid::framing;
 using namespace boost;

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/FieldTable.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/FieldTable.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/FieldTable.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/FieldTable.cpp Sat Feb 27 00:38:13 2010
@@ -25,6 +25,7 @@
 #include "qpid/framing/FieldValue.h"
 #include "qpid/Exception.h"
 #include "qpid/framing/reply_exceptions.h"
+#include "qpid/Msg.h"
 #include <assert.h>
 
 namespace qpid {

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/FieldValue.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/FieldValue.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/FieldValue.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/FieldValue.cpp Sat Feb 27 00:38:13 2010
@@ -24,6 +24,7 @@
 #include "qpid/framing/Endian.h"
 #include "qpid/framing/List.h"
 #include "qpid/framing/reply_exceptions.h"
+#include "qpid/Msg.h"
 
 namespace qpid {
 namespace framing {

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/List.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/List.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/List.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/List.cpp Sat Feb 27 00:38:13 2010
@@ -23,6 +23,7 @@
 #include "qpid/framing/FieldValue.h"
 #include "qpid/Exception.h"
 #include "qpid/framing/reply_exceptions.h"
+#include "qpid/Msg.h"
 
 namespace qpid {
 namespace framing {

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/SequenceSet.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/SequenceSet.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/SequenceSet.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/SequenceSet.cpp Sat Feb 27 00:38:13 2010
@@ -22,6 +22,7 @@
 #include "qpid/framing/SequenceSet.h"
 #include "qpid/framing/Buffer.h"
 #include "qpid/framing/reply_exceptions.h"
+#include "qpid/Msg.h"
 
 using namespace qpid::framing;
 using std::max;

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/Uuid.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/Uuid.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/Uuid.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/framing/Uuid.cpp Sat Feb 27 00:38:13 2010
@@ -22,6 +22,7 @@
 #include "qpid/Exception.h"
 #include "qpid/framing/Buffer.h"
 #include "qpid/framing/reply_exceptions.h"
+#include "qpid/Msg.h"
 
 namespace qpid {
 namespace framing {

Propchange: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/management/ManagementAgent.cpp
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb 27 00:38:13 2010
@@ -1 +1 @@
-/qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp:911618-912022
+/qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp:911618-916854

Propchange: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/management/ManagementAgent.h
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb 27 00:38:13 2010
@@ -1 +1 @@
-/qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.h:911618-912022
+/qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.h:911618-916854

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/messaging/Variant.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/messaging/Variant.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/messaging/Variant.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/messaging/Variant.cpp Sat Feb 27 00:38:13 2010
@@ -19,6 +19,7 @@
  *
  */
 #include "qpid/messaging/Variant.h"
+#include "qpid/Msg.h"
 #include <boost/format.hpp>
 #include <boost/lexical_cast.hpp>
 #include <algorithm>

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/sys/AggregateOutput.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/sys/AggregateOutput.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/sys/AggregateOutput.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/sys/AggregateOutput.cpp Sat Feb 27 00:38:13 2010
@@ -34,6 +34,7 @@
 
 void AggregateOutput::giveReadCredit(int32_t credit) { control.giveReadCredit(credit); }
 
+namespace {
 // Clear the busy flag and notify waiting threads in destructor.
 struct ScopedBusy {
     bool& flag;
@@ -41,7 +42,8 @@
     ScopedBusy(bool& f, Monitor& m) : flag(f), monitor(m) { f = true; }
     ~ScopedBusy() { flag = false; monitor.notifyAll(); }
 };
-  
+}
+
 bool AggregateOutput::doOutput() {
     Mutex::ScopedLock l(lock);
     ScopedBusy sb(busy, lock);

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/sys/posix/Shlib.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/sys/posix/Shlib.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/sys/posix/Shlib.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/sys/posix/Shlib.cpp Sat Feb 27 00:38:13 2010
@@ -20,6 +20,7 @@
 
 #include "qpid/sys/Shlib.h"
 #include "qpid/Exception.h"
+#include "qpid/Msg.h"
 #include <dlfcn.h>
 
 

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/sys/ssl/check.h
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/sys/ssl/check.h?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/sys/ssl/check.h (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/qpid/sys/ssl/check.h Sat Feb 27 00:38:13 2010
@@ -21,6 +21,8 @@
  * under the License.
  *
  */
+#include "qpid/Msg.h"
+
 #include <iostream>
 #include <string>
 #include <nspr.h>

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/Makefile.am
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/Makefile.am?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/Makefile.am (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/Makefile.am Sat Feb 27 00:38:13 2010
@@ -298,7 +298,6 @@
     VALGRIND=$(VALGRIND) \
     LIBTOOL="$(LIBTOOL)" \
     QPID_DATA_DIR= \
-    BOOST_TEST_SHOW_PROGRESS=yes \
     $(srcdir)/run_test 
 
 system_tests = client_test quick_perftest quick_topictest run_header_test quick_txtest

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/TxMocks.h
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/TxMocks.h?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/TxMocks.h (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/TxMocks.h Sat Feb 27 00:38:13 2010
@@ -23,6 +23,7 @@
 
 
 #include "qpid/Exception.h"
+#include "qpid/Msg.h"
 #include "qpid/broker/TransactionalStore.h"
 #include "qpid/broker/TxOp.h"
 #include <iostream>

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/cluster_tests.py
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/cluster_tests.py?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/cluster_tests.py (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/cluster_tests.py Sat Feb 27 00:38:13 2010
@@ -305,21 +305,47 @@
         self.assertRaises(Exception, lambda: a.ready())
         self.assertRaises(Exception, lambda: b.ready())
 
-    def test_total_failure(self):
-        # Verify we abort with sutiable error message if no clean stores.
-        cluster = self.cluster(0, args=self.args()+["--cluster-size=2"])
-        a = cluster.start("a", expect=EXPECT_EXIT_FAIL, wait=False)
-        b = cluster.start("b", expect=EXPECT_EXIT_FAIL, wait=True)
-        a.kill()
-        b.kill()
-        a = cluster.start("a", expect=EXPECT_EXIT_OK, wait=False)
-        b = cluster.start("b", expect=EXPECT_EXIT_OK, wait=False)
-        self.assertRaises(Exception, lambda: a.ready())
-        self.assertRaises(Exception, lambda: b.ready())
+    def assert_dirty_store(self, broker):
+        self.assertRaises(Exception, lambda: broker.ready())
         msg = re.compile("critical.*no clean store")
-        assert msg.search(readfile(a.log))
-        assert msg.search(readfile(b.log))
+        assert msg.search(readfile(broker.log))
+
+    def test_solo_store_clean(self):
+        # A single node cluster should always leave a clean store.
+        cluster = self.cluster(0, self.args())
+        a = cluster.start("a", expect=EXPECT_EXIT_FAIL)
+        a.send_message("q", Message("x", durable=True))
+        a.kill()
+        a = cluster.start("a")
+        self.assertEqual(a.get_message("q").content, "x")
+
+    def test_last_store_clean(self):
+
+        # Verify that only the last node in a cluster to shut down has
+        # a clean store. Start with cluster of 3, reduce to 1 then
+        # increase again to ensure that a node that was once alone but
+        # finally did not finish as the last node does not get a clean
+        # store.
+        cluster = self.cluster(0, self.args())
+        a = cluster.start("a", expect=EXPECT_EXIT_FAIL)
+        b = cluster.start("b", expect=EXPECT_EXIT_FAIL)
+        c = cluster.start("c", expect=EXPECT_EXIT_FAIL)
+        a.send_message("q", Message("x", durable=True))
+        a.kill()
+        b.kill()          # c is last man
+        time.sleep(0.1)   # pause for c to find out hes last.
+        a = cluster.start("a", expect=EXPECT_EXIT_FAIL) # c no longer last man
+        c.kill()          # a is now last man
+        time.sleep(0.1)   # pause for a to find out hes last.
+        a.kill()          # really last
+        # b & c should be dirty
+        b = cluster.start("b", wait=False, expect=EXPECT_EXIT_OK)
+        self.assert_dirty_store(b)
+        c = cluster.start("c", wait=False, expect=EXPECT_EXIT_OK)
+        self.assert_dirty_store(c)
+        # a should be clean
+        a = cluster.start("a")
+        self.assertEqual(a.get_message("q").content, "x")
 
-        # FIXME aconway 2009-12-03: verify manual restore procedure
 
 

Propchange: qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/cluster_tests.py
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb 27 00:38:13 2010
@@ -1 +1 @@
-/qpid/trunk/qpid/cpp/src/tests/cluster_tests.py:911618-912022
+/qpid/trunk/qpid/cpp/src/tests/cluster_tests.py:911618-916854

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/failover_soak.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/failover_soak.cpp?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/failover_soak.cpp (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/failover_soak.cpp Sat Feb 27 00:38:13 2010
@@ -54,6 +54,8 @@
 namespace qpid {
 namespace tests {
 
+vector<pid_t> pids;
+
 typedef vector<ForkedBroker *> brokerVector;
 
 typedef enum
@@ -184,17 +186,29 @@
     int
     checkChildren ( )
     {
-       vector<child *>::iterator i;
-        for ( i = begin(); i != end(); ++ i )
-            if ( (COMPLETED == (*i)->status) && (0 != (*i)->retval) )
-            {
-              cerr << "checkChildren: error on child of type "
-                   << (*i)->type
-                   << endl;
-              return (*i)->retval;
-            }
+      for ( unsigned int i = 0; i < pids.size(); ++ i )
+      {
+        int pid = pids[i];
+        int returned_pid;
+        int status;
 
-        return 0;
+        child * kid = get ( pid );
+
+        if ( kid->status != COMPLETED )
+        {
+          returned_pid = waitpid ( pid, &status, WNOHANG );
+
+          if ( returned_pid == pid )
+          {
+            int exit_status = WEXITSTATUS(status);
+            exited ( pid, exit_status );
+            if ( exit_status )  // this is a child error.
+              return exit_status;
+          }
+        }
+      }
+
+      return 0;
     }
 
 
@@ -323,6 +337,7 @@
                  int verbosity,
                  int durable )
 {
+        // ("--log-enable=notice+")
     static int brokerId = 0;
     stringstream path, prefix;
     prefix << "soak-" << brokerId;
@@ -516,6 +531,7 @@
     argv.push_back ( 0 );
 
     pid_t pid = fork();
+    pids.push_back ( pid );
 
     if ( ! pid ) {
         execv ( receiverPath, const_cast<char * const *>(&argv[0]) );
@@ -571,6 +587,7 @@
     argv.push_back ( 0 );
 
     pid_t pid = fork();
+    pids.push_back ( pid );
 
     if ( ! pid ) {
         execv ( senderPath, const_cast<char * const *>(&argv[0]) );
@@ -602,6 +619,7 @@
 int
 main ( int argc, char const ** argv )
 {
+  int brokerKills = 0;
     if ( argc != 11 ) {
         cerr << "Usage: "
              << argv[0]
@@ -625,7 +643,6 @@
     int          n_brokers          = atoi(argv[i++]);
 
     char const * host               = "127.0.0.1";
-    int maxBrokers = 50;
 
     allMyChildren.verbosity = verbosity;
 
@@ -722,104 +739,86 @@
 
 
      int minSleep = 2,
-         maxSleep = 4;
+         maxSleep = 6;
+
+     int totalBrokers = n_brokers;
 
+     int loop = 0;
 
-     for ( int totalBrokers = n_brokers;
-           totalBrokers < maxBrokers;
-           ++ totalBrokers
-         )
+     while ( 1 )
      {
+         ++ loop;
+
+         /*
+         if ( verbosity > 1 )
+           std::cerr << "------- loop " << loop << " --------\n";
+
          if ( verbosity > 0 )
              cout << totalBrokers << " brokers have been added to the cluster.\n\n\n";
+             */
 
          // Sleep for a while. -------------------------
          int sleepyTime = mrand ( minSleep, maxSleep );
-         if ( verbosity > 0 )
-             cout << "Sleeping for " << sleepyTime << " seconds.\n";
          sleep ( sleepyTime );
 
-         // Kill the oldest broker. --------------------------
-         if ( ! killFrontBroker ( brokers, verbosity ) )
+         int bullet = mrand ( 100 );
+         if ( bullet >= 95 )
+	 {
+           fprintf ( stderr, "Killing oldest broker...\n" );
+
+	   // Kill the oldest broker. --------------------------
+	   if ( ! killFrontBroker ( brokers, verbosity ) )
+	   {
+	     allMyChildren.killEverybody();
+	     killAllBrokers ( brokers, 5 );
+	     std::cerr << "END_OF_TEST ERROR_BROKER\n";
+	     return ERROR_KILLING_BROKER;
+	   }
+           ++ brokerKills;
+
+	   // Start a new broker. --------------------------
+	   if ( verbosity > 0 )
+	       cout << "Starting new broker.\n\n";
+
+	   startNewBroker ( brokers,
+			    moduleOrDir,
+			    clusterName,
+			    verbosity,
+			    durable );
+	   ++ totalBrokers;
+           printBrokers ( brokers );
+           cerr << brokerKills << " brokers have been killed.\n\n\n";
+	 }
+
+         int retval = allMyChildren.checkChildren();
+         if ( retval )
          {
-           allMyChildren.killEverybody();
-           killAllBrokers ( brokers, 5 );
-           std::cerr << "END_OF_TEST ERROR_BROKER\n";
-           return ERROR_KILLING_BROKER;
+             std::cerr << "END_OF_TEST ERROR_CLIENT\n";
+             allMyChildren.killEverybody();
+             killAllBrokers ( brokers, 5 );
+             return ERROR_ON_CHILD;
          }
 
-         // Sleep for a while. -------------------------
-         sleepyTime = mrand ( minSleep, maxSleep );
-         if ( verbosity > 1 )
-             cerr << "Sleeping for " << sleepyTime << " seconds.\n";
-         sleep ( sleepyTime );
-
-         // Start a new broker. --------------------------
-         if ( verbosity > 0 )
-             cout << "Starting new broker.\n\n";
-
-         startNewBroker ( brokers,
-                          moduleOrDir,
-                          clusterName,
-                          verbosity,
-                          durable );
-
-         if ( verbosity > 1 )
-             printBrokers ( brokers );
-
          // If all children have exited, quit.
          int unfinished = allMyChildren.unfinished();
-         if ( ! unfinished ) {
+         if ( unfinished == 0 ) {
              killAllBrokers ( brokers, 5 );
 
              if ( verbosity > 1 )
                  cout << "failoverSoak: all children have exited.\n";
-           int retval = allMyChildren.checkChildren();
-           if ( verbosity > 1 )
-             std::cerr << "failoverSoak: checkChildren: " << retval << endl;
-
-           if ( retval )
-           {
-               std::cerr << "END_OF_TEST ERROR_CLIENT\n";
-               return ERROR_ON_CHILD;
-           }
-           else
-           {
-               std::cerr << "END_OF_TEST SUCCESSFUL\n";
-               return HUNKY_DORY;
-           }
-         }
 
-         // Even if some are still running, if there's an error, quit.
-         if ( allMyChildren.checkChildren() )
-         {
-             if ( verbosity > 0 )
-                 cout << "failoverSoak: error on child.\n";
-             allMyChildren.killEverybody();
-             killAllBrokers ( brokers, 5 );
-             std::cerr << "END_OF_TEST ERROR_CLIENT\n";
-             return ERROR_ON_CHILD;
+             std::cerr << "END_OF_TEST SUCCESSFUL\n";
+             return HUNKY_DORY;
          }
 
-         if ( verbosity > 1 ) {
-           std::cerr << "------- next kill-broker loop --------\n";
-           allMyChildren.print();
-         }
      }
 
-     retval = allMyChildren.checkChildren();
-     if ( verbosity > 1 )
-       std::cerr << "failoverSoak: checkChildren: " << retval << endl;
-
-     if ( verbosity > 1 )
-         cout << "failoverSoak: maxBrokers reached.\n";
-
      allMyChildren.killEverybody();
      killAllBrokers ( brokers, 5 );
 
      std::cerr << "END_OF_TEST SUCCESSFUL\n";
 
-     return retval ? ERROR_ON_CHILD : HUNKY_DORY;
+     return HUNKY_DORY;
 }
 
 

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/run_failover_soak
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/run_failover_soak?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/run_failover_soak (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/run_failover_soak Sat Feb 27 00:38:13 2010
@@ -26,12 +26,12 @@
 
 unset QPID_NO_MODULE_DIR	# failover_soak uses --module-dir, dont want clash
 MODULES=${MODULES:-$moduledir}
-MESSAGES=${MESSAGES:-1000000}
+MESSAGES=${MESSAGES:-500000}
 REPORT_FREQUENCY=${REPORT_FREQUENCY:-20000}
 VERBOSITY=${VERBOSITY:-10}
 DURABILITY=${DURABILITY:-0}
 N_QUEUES=${N_QUEUES:-1}
-N_BROKERS=${N_BROKERS:-3}
+N_BROKERS=${N_BROKERS:-4}
 
 rm -f soak-*.log
 exec ./failover_soak $MODULES ./declare_queues ./replaying_sender ./resuming_receiver $MESSAGES $REPORT_FREQUENCY $VERBOSITY $DURABILITY $N_QUEUES $N_BROKERS

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/test_env.sh.in
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/test_env.sh.in?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/test_env.sh.in (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/test_env.sh.in Sat Feb 27 00:38:13 2010
@@ -73,3 +73,6 @@
 export QPID_NO_MODULE_DIR=1	# Don't accidentally load installed modules
 export QPID_DATA_DIR= 		# Default to no data dir, not ~/.qpidd
 
+# Options for boost test framework
+export BOOST_TEST_SHOW_PROGRESS=yes
+export BOOST_TEST_CATCH_SYSTEM_ERRORS=no

Modified: qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/verify_cluster_objects
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/verify_cluster_objects?rev=916887&r1=916886&r2=916887&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/verify_cluster_objects (original)
+++ qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/verify_cluster_objects Sat Feb 27 00:38:13 2010
@@ -75,6 +75,12 @@
                 bestAddr = addrPort
         return bestAddr
 
+class ObjectId:
+    """Object identity, use for dictionaries by object id"""
+    def __init__(self, object): self.object = object
+    def __eq__(self, other): return self.object is other.object
+    def __hash__(self): return hash(id(self.object))
+
 class Broker(object):
     def __init__(self, qmf, broker):
         self.broker = broker
@@ -94,6 +100,7 @@
             self.uptime = 0
         self.tablesByName = {}
         self.package = "org.apache.qpid.broker"
+        self.id_cache = {}              # Cache for getAbstractId
 
     def getUrl(self):
         return self.broker.getUrl()
@@ -114,13 +121,14 @@
     #
     def getAbstractId(self, object):
       """ return a string the of the hierarchical name """
+      if (ObjectId(object) in self.id_cache): return self.id_cache[ObjectId(object)]
       global _debug_recursion
       result = u""
       valstr = u""
       _debug_recursion += 1
       debug_prefix = _debug_recursion
       if (_verbose > 9):
-          print debug_prefix, "  enter gai: props ", self._properties
+          print debug_prefix, "  enter gai: props ", object._properties
       for property, value in object._properties:
 
           # we want to recurse on things which are refs.  we tell by
@@ -138,6 +146,7 @@
 
           if property.name == "systemRef":
               _debug_recursion -= 1
+              self.id_cache[ObjectId(object)] = ""
               return ""
 
           if property.index:
@@ -176,6 +185,7 @@
           if (_verbose > 9):
               print debug_prefix, "    id ", self, " -> ", result
       _debug_recursion -= 1
+      self.id_cache[ObjectId(object)] = result
       return result
 
     def loadTable(self, cls):
@@ -196,13 +206,12 @@
             # error (ie, the name-generation code is busted) if we do
             key = self.getAbstractId(obj)
             if key in self.tablesByName[cls.getClassName()]:
-                print "internal error: collision for %s on key %s\n" % (obj, key)
-                sys.exit(1)
+                raise Exception("internal error: collision for %s on key %s\n"
+                                % (obj, key))
                 
-            self.tablesByName[cls.getClassName()][self.getAbstractId(obj)] = obj
-#            sys.exit(1)
+            self.tablesByName[cls.getClassName()][key] = obj
             if _verbose > 1:
-                print "   ", obj.getObjectId(), " ", obj.getIndex(), " ", self.getAbstractId(obj)
+                print "   ", obj.getObjectId(), " ", obj.getIndex(), " ", key
 
 
 class BrokerManager:
@@ -253,9 +262,10 @@
                     raise Exception("Invalid URL 2")
                 addrList.append((tokens[1], tokens[2]))
 
-            # Find the address in the list that is most likely to be in the same subnet as the address
-            # with which we made the original QMF connection.  This increases the probability that we will
-            # be able to reach the cluster member.
+            # Find the address in the list that is most likely to be
+            # in the same subnet as the address with which we made the
+            # original QMF connection.  This increases the probability
+            # that we will be able to reach the cluster member.
 
             best = hostAddr.bestAddr(addrList)
             bestUrl = best[0] + ":" + best[1]
@@ -284,8 +294,7 @@
                 if _verbose > 0:
                     print "   ", b
         else:
-            print "Failed - Not a cluster"
-            sys.exit(1)
+            raise Exception("Failed - Not a cluster")
 
         failures = []
 
@@ -348,11 +357,10 @@
             print "Failures:"
             for failure in failures:
                 print "  %s" % failure
-            sys.exit(1)
+            raise Exception("Failures")
 
         if _verbose > 0:
             print "Success"
-        sys.exit(0)
 
 ##
 ## Main Program

Propchange: qpid/branches/qmf-devel0.7/qpid/cpp/src/tests/verify_cluster_objects
------------------------------------------------------------------------------
    svn:executable = *

Propchange: qpid/branches/qmf-devel0.7/qpid/dotnet/build-msbuild.bat
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb 27 00:38:13 2010
@@ -1 +1 @@
-/qpid/trunk/qpid/dotnet/build-msbuild.bat:911618-912022
+/qpid/trunk/qpid/dotnet/build-msbuild.bat:911618-916854

Propchange: qpid/branches/qmf-devel0.7/qpid/dotnet/build-nant-release
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb 27 00:38:13 2010
@@ -1 +1 @@
-/qpid/trunk/qpid/dotnet/build-nant-release:911618-912022
+/qpid/trunk/qpid/dotnet/build-nant-release:911618-916854

Propchange: qpid/branches/qmf-devel0.7/qpid/dotnet/build-nant.bat
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb 27 00:38:13 2010
@@ -1 +1 @@
-/qpid/trunk/qpid/dotnet/build-nant.bat:911618-912022
+/qpid/trunk/qpid/dotnet/build-nant.bat:911618-916854



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org