You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by sh...@apache.org on 2009/04/23 23:06:39 UTC

svn commit: r768053 [2/3] - in /qpid/branches/cmake/qpid/cpp: ./ rubygen/framing.0-10/ src/ src/qpid/amqp_0_10/ src/qpid/broker/ src/qpid/client/ src/qpid/cluster/ src/qpid/framing/ src/qpid/sys/ src/qpid/sys/windows/ src/tests/ xml/

Modified: qpid/branches/cmake/qpid/cpp/src/qpid/cluster/UpdateClient.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/qpid/cluster/UpdateClient.cpp?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/qpid/cluster/UpdateClient.cpp (original)
+++ qpid/branches/cmake/qpid/cpp/src/qpid/cluster/UpdateClient.cpp Thu Apr 23 21:06:35 2009
@@ -26,6 +26,9 @@
 #include "ExpiryPolicy.h"
 #include "qpid/client/SessionBase_0_10Access.h" 
 #include "qpid/client/ConnectionAccess.h" 
+#include "qpid/client/SessionImpl.h" 
+#include "qpid/client/ConnectionImpl.h"
+#include "qpid/client/Future.h"
 #include "qpid/broker/Broker.h"
 #include "qpid/broker/Queue.h"
 #include "qpid/broker/QueueRegistry.h"
@@ -98,10 +101,7 @@
       expiry(expiry_), connections(cons), decoder(decoder_),
       connection(catchUpConnection()), shadowConnection(catchUpConnection()),
       done(ok), failed(fail), connectionSettings(cs)
-{
-    connection.open(url, cs);
-    session = connection.newSession(UPDATE);
-}
+{}
 
 UpdateClient::~UpdateClient() {}
 
@@ -110,6 +110,8 @@
 
 void UpdateClient::run() {
     try {
+        connection.open(updateeUrl, connectionSettings);
+        session = connection.newSession(UPDATE);
         update();
         done();
     } catch (const std::exception& e) {
@@ -126,15 +128,19 @@
     // Update queue is used to transfer acquired messages that are no longer on their original queue.
     session.queueDeclare(arg::queue=UPDATE, arg::autoDelete=true);
     session.sync();
-    session.close();
 
     std::for_each(connections.begin(), connections.end(), boost::bind(&UpdateClient::updateConnection, this, _1));
 
+    session.queueDelete(arg::queue=UPDATE);
+    session.close();
+
+
     ClusterConnectionProxy(session).expiryId(expiry.getId());
     ClusterConnectionMembershipBody membership;
     map.toMethodBody(membership);
     AMQFrame frame(membership);
     client::ConnectionAccess::getImpl(connection)->handle(frame);
+
     connection.close();
     QPID_LOG(debug,  updaterId << " updated state to " << updateeId << " at " << updateeUrl);
 }
@@ -203,7 +209,6 @@
         sb.get()->send(transfer, message.payload->getFrames());
         if (message.payload->isContentReleased()){
             uint16_t maxFrameSize = sb.get()->getConnection()->getNegotiatedSettings().maxFrameSize;
-
             uint16_t maxContentSize = maxFrameSize - AMQFrame::frameOverhead();
             bool morecontent = true;
             for (uint64_t offset = 0; morecontent; offset += maxContentSize)

Modified: qpid/branches/cmake/qpid/cpp/src/qpid/cluster/UpdateClient.h
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/qpid/cluster/UpdateClient.h?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/qpid/cluster/UpdateClient.h (original)
+++ qpid/branches/cmake/qpid/cpp/src/qpid/cluster/UpdateClient.h Thu Apr 23 21:06:35 2009
@@ -24,6 +24,7 @@
 
 #include "ClusterMap.h"
 #include "qpid/client/Connection.h"
+#include "qpid/client/ConnectionSettings.h"
 #include "qpid/client/AsyncSession.h"
 #include "qpid/broker/SemanticState.h"
 #include "qpid/sys/Runnable.h"

Modified: qpid/branches/cmake/qpid/cpp/src/qpid/framing/AMQFrame.h
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/qpid/framing/AMQFrame.h?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/qpid/framing/AMQFrame.h (original)
+++ qpid/branches/cmake/qpid/cpp/src/qpid/framing/AMQFrame.h Thu Apr 23 21:06:35 2009
@@ -26,7 +26,6 @@
 #include "AMQContentBody.h"
 #include "AMQHeartbeatBody.h"
 #include "ProtocolVersion.h"
-#include "qpid/sys/LatencyMetric.h"
 #include <boost/intrusive_ptr.hpp>
 #include <boost/cast.hpp>
 #include "qpid/CommonImportExport.h"
@@ -34,7 +33,7 @@
 namespace qpid {
 namespace framing {
 
-class AMQFrame : public AMQDataBlock, public sys::LatencyMetricTimestamp
+class AMQFrame : public AMQDataBlock
 {
   public:
     QPID_COMMON_EXTERN AMQFrame(const boost::intrusive_ptr<AMQBody>& b=0);

Modified: qpid/branches/cmake/qpid/cpp/src/qpid/sys/windows/IoHandlePrivate.h
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/qpid/sys/windows/IoHandlePrivate.h?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/qpid/sys/windows/IoHandlePrivate.h (original)
+++ qpid/branches/cmake/qpid/cpp/src/qpid/sys/windows/IoHandlePrivate.h Thu Apr 23 21:06:35 2009
@@ -23,6 +23,7 @@
  */
 
 #include "AsynchIoResult.h"
+#include "qpid/CommonImportExport.h"
 
 #include <winsock2.h>
 
@@ -49,7 +50,7 @@
     AsynchIO::RequestCallback cbRequest;
 };
 
-SOCKET toFd(const IOHandlePrivate* h);
+QPID_COMMON_EXTERN SOCKET toFd(const IOHandlePrivate* h);
 
 }}
 

Modified: qpid/branches/cmake/qpid/cpp/src/tests/AsyncCompletion.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/AsyncCompletion.cpp?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/AsyncCompletion.cpp (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/AsyncCompletion.cpp Thu Apr 23 21:06:35 2009
@@ -24,6 +24,8 @@
 #include "qpid/sys/BlockingQueue.h"
 #include "qpid/client/AsyncSession.h"
 #include "qpid/sys/Time.h"
+#include "qpid/framing/QueueQueryResult.h"
+#include "qpid/client/TypedResult.h"
 
 using namespace std;
 using namespace qpid;
@@ -97,4 +99,15 @@
     sync.wait();                // Should complete now, all messages are completed.
 }
 
+QPID_AUTO_TEST_CASE(testGetResult) {
+    SessionFixture fix;
+    AsyncSession s = fix.session;
+
+    s.queueDeclare("q", arg::durable=true);
+    TypedResult<QueueQueryResult> tr = s.queueQuery("q");
+    QueueQueryResult qq = tr.get();
+    BOOST_CHECK_EQUAL(qq.getQueue(), "q");
+    BOOST_CHECK_EQUAL(qq.getMessageCount(), 0U);
+}
+
 QPID_AUTO_TEST_SUITE_END()

Modified: qpid/branches/cmake/qpid/cpp/src/tests/BrokerFixture.h
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/BrokerFixture.h?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/BrokerFixture.h (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/BrokerFixture.h Thu Apr 23 21:06:35 2009
@@ -114,10 +114,12 @@
     SessionType session;
     qpid::client::SubscriptionManager subs;
     qpid::client::LocalQueue lq;
-    ClientT(uint16_t port, const std::string& name=std::string())
-        : connection(port), session(connection.newSession(name)), subs(session) {}
-    ClientT(const qpid::client::ConnectionSettings& settings, const std::string& name=std::string())
-        : connection(settings), session(connection.newSession(name)), subs(session) {}
+    std::string name;
+
+    ClientT(uint16_t port, const std::string& name_=std::string())
+        : connection(port), session(connection.newSession(name_)), subs(session), name(name_) {}
+    ClientT(const qpid::client::ConnectionSettings& settings, const std::string& name_=std::string())
+        : connection(settings), session(connection.newSession(name_)), subs(session), name(name_) {}
 
     ~ClientT() { connection.close(); }
 };

Modified: qpid/branches/cmake/qpid/cpp/src/tests/ClientSessionTest.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/ClientSessionTest.cpp?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/ClientSessionTest.cpp (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/ClientSessionTest.cpp Thu Apr 23 21:06:35 2009
@@ -28,7 +28,7 @@
 #include "qpid/sys/Runnable.h"
 #include "qpid/sys/Time.h"
 #include "qpid/client/Session.h"
-#include "qpid/framing/TransferContent.h"
+#include "qpid/client/Message.h"
 #include "qpid/framing/reply_exceptions.h"
 
 #include <boost/optional.hpp>
@@ -121,7 +121,7 @@
     fix.session =fix.connection.newSession();
     size_t count = 100;
     for (size_t i = 0; i < count; ++i) 
-        fix.session.messageTransfer(arg::content=TransferContent(boost::lexical_cast<string>(i), "my-queue"));
+        fix.session.messageTransfer(arg::content=Message(boost::lexical_cast<string>(i), "my-queue"));
     DummyListener listener(fix.session, "my-queue", count);
     listener.run();
     BOOST_CHECK_EQUAL(count, listener.messages.size());        
@@ -137,7 +137,7 @@
     DummyListener listener(fix.session, "my-queue", count);
     sys::Thread t(listener);
     for (size_t i = 0; i < count; ++i) {
-        fix.session.messageTransfer(arg::content=TransferContent(boost::lexical_cast<string>(i), "my-queue"));
+        fix.session.messageTransfer(arg::content=Message(boost::lexical_cast<string>(i), "my-queue"));
     }
     t.join();
     BOOST_CHECK_EQUAL(count, listener.messages.size());        
@@ -173,7 +173,7 @@
     fix.session.suspend();
     // Make sure we are still subscribed after resume.
     fix.connection.resume(fix.session);
-    fix.session.messageTransfer(arg::content=TransferContent("my-message", "my-queue"));
+    fix.session.messageTransfer(arg::content=Message("my-message", "my-queue"));
     FrameSet::shared_ptr msg = fix.session.get();
     BOOST_CHECK_EQUAL(string("my-message"), msg->getContent());
 }

Modified: qpid/branches/cmake/qpid/cpp/src/tests/ClusterFixture.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/ClusterFixture.cpp?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/ClusterFixture.cpp (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/ClusterFixture.cpp Thu Apr 23 21:06:35 2009
@@ -61,8 +61,14 @@
 
 #include "ClusterFixture.h"
 
-ClusterFixture::ClusterFixture(size_t n, int localIndex_, const Args& args_)
-    : name(Uuid(true).str()), localIndex(localIndex_), userArgs(args_)
+ClusterFixture::ClusterFixture(size_t n, int localIndex_, const Args& args_, const string& clusterLib_)
+    : name(Uuid(true).str()), localIndex(localIndex_), userArgs(args_), clusterLib(clusterLib_)
+{
+    add(n);
+}
+
+ClusterFixture::ClusterFixture(size_t n, int localIndex_, boost::function<void (Args&, size_t)> updateArgs_, const string& clusterLib_)
+    : name(Uuid(true).str()), localIndex(localIndex_), updateArgs(updateArgs_), clusterLib(clusterLib_)
 {
     add(n);
 }
@@ -70,13 +76,14 @@
 const ClusterFixture::Args ClusterFixture::DEFAULT_ARGS =
     list_of<string>("--auth=no")("--no-data-dir");
 
-ClusterFixture::Args ClusterFixture::makeArgs(const std::string& prefix) {
-    Args args = list_of<string>("qpidd " __FILE__)
+ClusterFixture::Args ClusterFixture::makeArgs(const std::string& prefix, size_t index) {
+    Args args = list_of<string>("qpidd ")
         ("--no-module-dir")
-        ("--load-module=../.libs/cluster.so")
-        ("--cluster-name")(name) 
+        ("--load-module")(clusterLib)
+        ("--cluster-name")(name)
         ("--log-prefix")(prefix);
     args.insert(args.end(), userArgs.begin(), userArgs.end());
+    if (updateArgs) updateArgs(args, index);
     return args;
 }
 
@@ -84,7 +91,7 @@
     if (size() != size_t(localIndex))  { // fork a broker process.
         std::ostringstream os; os << "fork" << size();
         std::string prefix = os.str();
-        forkedBrokers.push_back(shared_ptr<ForkedBroker>(new ForkedBroker(makeArgs(prefix))));
+        forkedBrokers.push_back(shared_ptr<ForkedBroker>(new ForkedBroker(makeArgs(prefix, size()))));
         push_back(forkedBrokers.back()->getPort());
     }
     else {                      // Run in this process
@@ -106,7 +113,7 @@
     assert(int(size()) == localIndex);
     ostringstream os; os << "local" << localIndex;
     string prefix = os.str();
-    Args args(makeArgs(prefix));
+    Args args(makeArgs(prefix, localIndex));
     vector<const char*> argv(args.size());
     transform(args.begin(), args.end(), argv.begin(), boost::bind(&string::c_str, _1));
     qpid::log::Logger::instance().setPrefix(prefix);
@@ -116,7 +123,7 @@
 }
 
 bool ClusterFixture::hasLocal() const { return localIndex >= 0 && size_t(localIndex) < size(); }
-    
+
 /** Kill a forked broker with sig, or shutdown localBroker if n==0. */
 void ClusterFixture::kill(size_t n, int sig) {
     if (n == size_t(localIndex))
@@ -131,3 +138,22 @@
     kill(n,sig);
     try { c.close(); } catch(...) {}
 }
+
+/**
+ * Get the known broker ports from a Connection.
+ *@param n if specified wait for the cluster size to be n, up to a timeout.
+ */
+std::set<int> knownBrokerPorts(qpid::client::Connection& source, int n) {
+    std::vector<qpid::Url> urls = source.getKnownBrokers();
+    if (n >= 0 && unsigned(n) != urls.size()) {
+        // Retry up to 10 secs in .1 second intervals.
+        for (size_t retry=100; urls.size() != unsigned(n) && retry != 0; --retry) {
+            qpid::sys::usleep(1000*100); // 0.1 secs
+            urls = source.getKnownBrokers();
+        }
+    }
+    std::set<int> s;
+    for (std::vector<qpid::Url>::const_iterator i = urls.begin(); i != urls.end(); ++i)
+        s.insert((*i)[0].get<qpid::TcpAddress>()->port);
+    return s;
+}

Modified: qpid/branches/cmake/qpid/cpp/src/tests/ClusterFixture.h
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/ClusterFixture.h?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/ClusterFixture.h (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/ClusterFixture.h Thu Apr 23 21:06:35 2009
@@ -38,6 +38,7 @@
 #include "qpid/log/Logger.h"
 
 #include <boost/bind.hpp>
+#include <boost/function.hpp>
 #include <boost/shared_ptr.hpp>
 
 #include <string>
@@ -59,43 +60,55 @@
 using boost::shared_ptr;
 using qpid::cluster::Cluster;
 
-
+#define DEFAULT_CLUSTER_LIB "../.libs/cluster.so"
 
 /** Cluster fixture is a vector of ports for the replicas.
- * 
+ *
  * At most one replica (by default replica 0) is in the current
  * process, all others are forked as children.
  */
 class ClusterFixture : public vector<uint16_t>  {
   public:
     typedef std::vector<std::string> Args;
+    static const Args DEFAULT_ARGS;
+
     /** @param localIndex can be -1 meaning don't automatically start a local broker.
      * A local broker can be started with addLocal().
      */
-    ClusterFixture(size_t n, int localIndex=0, const Args& args=DEFAULT_ARGS);
+    ClusterFixture(size_t n, int localIndex=0, const Args& args=DEFAULT_ARGS, const string& clusterLib = DEFAULT_CLUSTER_LIB);
+
+    /**@param updateArgs function is passed the index of the cluster member and can update the arguments. */
+    ClusterFixture(size_t n, int localIndex, boost::function<void (Args&, size_t)> updateArgs, const string& clusterLib = DEFAULT_CLUSTER_LIB);
+
     void add(size_t n) { for (size_t i=0; i < n; ++i) add(); }
     void add();                 // Add a broker.
     void setup();
 
     bool hasLocal() const;
-    
-    /** Kill a forked broker with sig, or shutdown localBroker if n==0. */
+
+    /** Kill a forked broker with sig, or shutdown localBroker. */
     void kill(size_t n, int sig=SIGINT);
 
     /** Kill a broker and suppressing errors from closing connection c. */
     void killWithSilencer(size_t n, client::Connection& c, int sig=SIGINT);
 
   private:
-    static const Args DEFAULT_ARGS;
-    
+
     void addLocal();            // Add a local broker.
-    Args makeArgs(const std::string& prefix);
+    Args makeArgs(const std::string& prefix, size_t index);
     string name;
     std::auto_ptr<BrokerFixture> localBroker;
     int localIndex;
     std::vector<shared_ptr<ForkedBroker> > forkedBrokers;
     Args userArgs;
+    boost::function<void (Args&, size_t)> updateArgs;
+    string clusterLib;
 };
 
+/**
+ * Get the known broker ports from a Connection.
+ *@param n if specified wait for the cluster size to be n, up to a timeout.
+ */
+std::set<int> knownBrokerPorts(qpid::client::Connection& source, int n=-1);
 
 #endif  /*!CLUSTER_FIXTURE_H*/

Modified: qpid/branches/cmake/qpid/cpp/src/tests/ForkedBroker.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/ForkedBroker.cpp?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/ForkedBroker.cpp (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/ForkedBroker.cpp Thu Apr 23 21:06:35 2009
@@ -20,20 +20,39 @@
  */
 
 #include "ForkedBroker.h"
+#include "qpid/log/Statement.h"
 #include <boost/bind.hpp>
+#include <boost/algorithm/string.hpp>
 #include <algorithm>
 #include <stdlib.h>
 #include <sys/types.h>
 #include <signal.h>
 
-ForkedBroker::ForkedBroker(const Args& args) { init(args); }
+using namespace std;
+using qpid::ErrnoException;
 
-ForkedBroker::ForkedBroker(int argc, const char* const argv[]) { init(Args(argv, argc+argv)); }
+ForkedBroker::ForkedBroker(const Args& constArgs) {
+    Args args(constArgs);
+    Args::iterator i = find(args.begin(), args.end(), string("TMP_DATA_DIR"));
+    if (i != args.end()) {
+        args.erase(i);
+        char dd[] = "/tmp/ForkedBroker.XXXXXX";
+        if (!mkdtemp(dd))
+            throw qpid::ErrnoException("Can't create data dir");
+        dataDir = dd;
+        args.push_back("--data-dir");
+        args.push_back(dataDir);
+    }
+    init(args);
+}
 
 ForkedBroker::~ForkedBroker() {
-    try { kill(); } catch(const std::exception& e) {
+    try { kill(); }
+    catch (const std::exception& e) {
         QPID_LOG(error, QPID_MSG("Killing forked broker: " << e.what()));
     }
+    if (!dataDir.empty()) 
+        ::system(("rm -rf "+dataDir).c_str());
 }
 
 void ForkedBroker::kill(int sig) {
@@ -42,14 +61,25 @@
     pid = 0;                // Reset pid here in case of an exception.
     using qpid::ErrnoException;
     if (::kill(savePid, sig) < 0) 
-        throw ErrnoException("kill failed");
+            throw ErrnoException("kill failed");
     int status;
     if (::waitpid(savePid, &status, 0) < 0 && sig != 9) 
         throw ErrnoException("wait for forked process failed");
     if (WEXITSTATUS(status) != 0 && sig != 9) 
         throw qpid::Exception(QPID_MSG("Forked broker exited with: " << WEXITSTATUS(status)));
 }
+        
+namespace std {
+static ostream& operator<<(ostream& o, const ForkedBroker::Args& a) {
+    copy(a.begin(), a.end(), ostream_iterator<string>(o, " "));
+    return o;
+}
 
+bool isLogOption(const std::string& s) {
+    return boost::starts_with(s, "--log-enable") || boost::starts_with(s, "--trace");
+}
+
+}
         
 void ForkedBroker::init(const Args& userArgs) {
     using qpid::ErrnoException;
@@ -70,17 +100,20 @@
     }
     else {                  // child
         ::close(pipeFds[0]);
-        // FIXME aconway 2009-02-12: 
         int fd = ::dup2(pipeFds[1], 1); // pipe stdout to the parent.
         if (fd < 0) throw ErrnoException("dup2 failed");
-        const char* prog = "../qpidd";
+        const char* prog = ::getenv("QPID_FORKED_BROKER");
+        if (!prog) prog = "../qpidd";
         Args args(userArgs);
         args.push_back("--port=0");
-        if (!::getenv("QPID_TRACE") && !::getenv("QPID_LOG_ENABLE"))
-            args.push_back("--log-enable=error+"); // Keep quiet except for errors.
+        // Keep quiet except for errors.
+        if (!::getenv("QPID_TRACE") && !::getenv("QPID_LOG_ENABLE")
+            && find_if(userArgs.begin(), userArgs.end(), isLogOption) == userArgs.end())
+            args.push_back("--log-enable=error+"); 
         std::vector<const char*> argv(args.size());
         std::transform(args.begin(), args.end(), argv.begin(), boost::bind(&std::string::c_str, _1));
         argv.push_back(0);
+        QPID_LOG(debug, "ForkedBroker exec " << prog << ": " << args);
         execv(prog, const_cast<char* const*>(&argv[0]));
         throw ErrnoException("execv failed");
     }

Modified: qpid/branches/cmake/qpid/cpp/src/tests/ForkedBroker.h
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/ForkedBroker.h?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/ForkedBroker.h (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/ForkedBroker.h Thu Apr 23 21:06:35 2009
@@ -48,19 +48,26 @@
   public:
     typedef std::vector<std::string> Args;
 
+    // argv args are passed to broker.
+    // 
+    // Special value "TMP_DATA_DIR" is substituted with a temporary
+    // data directory for the broker.
+    // 
     ForkedBroker(const Args& argv);
-    ForkedBroker(int argc, const char* const argv[]);
     ~ForkedBroker();
 
     void kill(int sig=SIGINT);
+    int wait();                 // Wait for exit, return exit status.
     uint16_t getPort() { return port; }
     pid_t getPID() { return pid; }
 
   private:
+
     void init(const Args& args);
 
     pid_t pid;
     int port;
+    std::string dataDir;
 };
 
 #endif  /*!TESTS_FORKEDBROKER_H*/

Modified: qpid/branches/cmake/qpid/cpp/src/tests/Makefile.am
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/Makefile.am?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/Makefile.am (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/Makefile.am Thu Apr 23 21:06:35 2009
@@ -96,7 +96,9 @@
 	RetryList.cpp \
 	RateFlowcontrolTest.cpp \
 	FrameDecoder.cpp \
-	ReplicationTest.cpp
+	ReplicationTest.cpp \
+	ClientMessageTest.cpp \
+	PollableCondition.cpp
 
 if HAVE_XML
 unit_test_SOURCES+= XmlClientSessionTest.cpp
@@ -110,11 +112,17 @@
 # 	amqp_0_10/Map.cpp \
 # 	amqp_0_10/handlers.cpp 
 
+TESTLIBFLAGS = -module -rpath $(abs_builddir)
 
 check_LTLIBRARIES += libshlibtest.la
-libshlibtest_la_LDFLAGS = -module -rpath $(abs_builddir)
+libshlibtest_la_LDFLAGS = $(TESTLIBFLAGS)
 libshlibtest_la_SOURCES = shlibtest.cpp
 
+check_LTLIBRARIES += test_store.la
+test_store_la_SOURCES = test_store.cpp
+test_store_la_LIBADD = $(lib_broker) # FIXME aconway 2009-04-03: required?
+test_store_la_LDFLAGS = $(TESTLIBFLAGS)
+
 include cluster.mk
 if SSL
 include ssl.mk
@@ -236,24 +244,6 @@
 
 CLEANFILES+=valgrind.out *.log *.vglog* dummy_test $(unit_wrappers)
 
-# FIXME aconway 2008-05-23: Disabled interop_runner because it uses
-# the obsolete Channel class.  Convert to Session and re-enable.
-# 
-# check_PROGRAMS += interop_runner
-
-# interop_runner_SOURCES = 	\
-#   interop_runner.cpp	 	\
-#   SimpleTestCaseBase.cpp	\
-#   BasicP2PTest.cpp		\
-#   BasicPubSubTest.cpp		\
-#   SimpleTestCaseBase.h		\
-#   BasicP2PTest.h		\
-#   BasicPubSubTest.h		\
-#   TestCase.h			\
-#   TestOptions.h ConnectionOptions.h
-# interop_runner_LDADD = $(lib_client) $(lib_common) $(extra_libs)
-
-
 # Longer running stability tests, not run by default check: target.
 # Not run under valgrind, too slow
 

Modified: qpid/branches/cmake/qpid/cpp/src/tests/SocketProxy.h
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/SocketProxy.h?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/SocketProxy.h (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/SocketProxy.h Thu Apr 23 21:06:35 2009
@@ -21,45 +21,58 @@
  *
  */
 
+#include "qpid/sys/IOHandle.h"
+#ifdef _WIN32
+#  include "qpid/sys/windows/IoHandlePrivate.h"
+   typedef SOCKET FdType;
+#else
+#  include "qpid/sys/posix/PrivatePosix.h"
+   typedef int FdType;
+#endif
 #include "qpid/sys/Socket.h"
-#include "qpid/sys/Poller.h"
 #include "qpid/sys/Runnable.h"
 #include "qpid/sys/Thread.h"
 #include "qpid/sys/Mutex.h"
-#include "qpid/client/Connection.h"
 #include "qpid/log/Statement.h"
 
-#include <algorithm>
-
 /**
  * A simple socket proxy that forwards to another socket. 
  * Used between client & local broker to simulate network failures.
  */
 class SocketProxy : private qpid::sys::Runnable
 {
+    // Need a Socket we can get the fd from
+    class LowSocket : public qpid::sys::Socket {
+    public:
+        FdType getFd() { return toFd(impl); }
+    };
+
   public:
     /** Connect to connectPort on host, start a forwarding thread.
      * Listen for connection on getPort().
      */
     SocketProxy(int connectPort, const std::string host="localhost")
-        : closed(false), port(listener.listen()), dropClient(), dropServer()
+      : closed(false), joined(true),
+        port(listener.listen()), dropClient(), dropServer()
     {
         client.connect(host, connectPort);
+        joined = false;
         thread = qpid::sys::Thread(static_cast<qpid::sys::Runnable*>(this));
     }
     
-    ~SocketProxy() { close(); }
+      ~SocketProxy() { close(); if (!joined) thread.join(); }
 
     /** Simulate a network disconnect. */
     void close() {
         {
             qpid::sys::Mutex::ScopedLock l(lock);
-            if (closed) return;
+            if (closed) { return; }
             closed=true;
         }
-        poller.shutdown();
-        if (thread.id() != qpid::sys::Thread::current().id())
-        thread.join();
+        if (thread.id() != qpid::sys::Thread::current().id()) {
+            thread.join();
+            joined = true;
+        }
         client.close();
     }
 
@@ -85,56 +98,72 @@
     }
 
     void run() {
-        std::auto_ptr<qpid::sys::Socket> server;
+        std::auto_ptr<LowSocket> server;
         try {
-            qpid::sys::PollerHandle listenerHandle(listener);
-            poller.addFd(listenerHandle, qpid::sys::Poller::INPUT);
-            qpid::sys::Poller::Event event = poller.wait();
-            throwIf(event.type == qpid::sys::Poller::SHUTDOWN, "SocketProxy: Closed by close()");
-            throwIf(!(event.type == qpid::sys::Poller::READABLE && event.handle == &listenerHandle), "SocketProxy: Accept failed");
-
-            poller.delFd(listenerHandle);
-            server.reset(listener.accept());
-
-            // Pump data between client & server sockets
-            qpid::sys::PollerHandle clientHandle(client);
-            qpid::sys::PollerHandle serverHandle(*server);
-            poller.addFd(clientHandle, qpid::sys::Poller::INPUT);
-            poller.addFd(serverHandle, qpid::sys::Poller::INPUT);
+            fd_set socks;
+            FdType maxFd = listener.getFd();
+            struct timeval tmo;
+            for (;;) {
+                FD_ZERO(&socks);
+                FD_SET(maxFd, &socks);
+                tmo.tv_sec = 0;
+                tmo.tv_usec = 500 * 1000;
+                if (select(maxFd+1, &socks, 0, 0, &tmo) == 0) {
+                    qpid::sys::Mutex::ScopedLock l(lock);
+                    throwIf(closed, "SocketProxy: Closed by close()");
+                    continue;
+                }
+                throwIf(!FD_ISSET(maxFd, &socks), "SocketProxy: Accept failed");
+                break;   // Accept ready... go to next step
+            }
+            server.reset(reinterpret_cast<LowSocket *>(listener.accept()));
+            maxFd = server->getFd();
+            if (client.getFd() > maxFd)
+                maxFd = client.getFd();
             char buffer[1024];
             for (;;) {
-                qpid::sys::Poller::Event event = poller.wait();
-                throwIf(event.type == qpid::sys::Poller::SHUTDOWN, "SocketProxy: Closed by close()");
-                throwIf(event.type == qpid::sys::Poller::DISCONNECTED, "SocketProxy: client/server disconnected");
-                if (event.handle == &serverHandle) {
+                FD_ZERO(&socks);
+                tmo.tv_sec = 0;
+                tmo.tv_usec = 500 * 1000;
+                FD_SET(client.getFd(), &socks);
+                FD_SET(server->getFd(), &socks);
+                if (select(maxFd+1, &socks, 0, 0, &tmo) == 0) {
+                    qpid::sys::Mutex::ScopedLock l(lock);
+                    throwIf(closed, "SocketProxy: Closed by close()");
+                    continue;
+                }
+                // Something is set; relay data as needed until something closes
+                if (FD_ISSET(server->getFd(), &socks)) {
                     ssize_t n = server->read(buffer, sizeof(buffer));
+                    throwIf(n <= 0, "SocketProxy: server disconnected");
                     if (!dropServer) client.write(buffer, n);
-                    poller.rearmFd(serverHandle);
-                } else if (event.handle == &clientHandle) {
+                }
+                if (FD_ISSET(client.getFd(), &socks)) {
                     ssize_t n = client.read(buffer, sizeof(buffer));
-                    if (!dropClient) server->write(buffer, n);
-                    poller.rearmFd(clientHandle);
-                } else {
-                    throwIf(true, "SocketProxy: No handle ready");
+                    throwIf(n <= 0, "SocketProxy: client disconnected");
+                    if (!dropServer) server->write(buffer, n);
                 }
+                if (!FD_ISSET(client.getFd(), &socks) &&
+                    !FD_ISSET(server->getFd(), &socks))
+                    throwIf(true, "SocketProxy: No handle ready");
             }
         }
         catch (const std::exception& e) {
             QPID_LOG(debug, "SocketProxy::run exception: " << e.what());
         }
         try {
-        if (server.get()) server->close();
-        close(); 
-    }
+            if (server.get()) server->close();
+            close(); 
+        }
         catch (const std::exception& e) {
             QPID_LOG(debug, "SocketProxy::run exception in client/server close()" << e.what());
         }
     }
 
     mutable qpid::sys::Mutex lock;
-    bool closed;
-    qpid::sys::Poller poller;
-    qpid::sys::Socket client, listener;
+    mutable bool closed;
+    bool joined;
+    LowSocket client, listener;
     uint16_t port;
     qpid::sys::Thread thread;
     bool dropClient, dropServer;

Modified: qpid/branches/cmake/qpid/cpp/src/tests/XmlClientSessionTest.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/XmlClientSessionTest.cpp?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/XmlClientSessionTest.cpp (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/XmlClientSessionTest.cpp Thu Apr 23 21:06:35 2009
@@ -26,7 +26,7 @@
 #include "qpid/sys/Monitor.h"
 #include "qpid/sys/Thread.h"
 #include "qpid/sys/Runnable.h"
-#include "qpid/framing/TransferContent.h"
+#include "qpid/client/Message.h"
 #include "qpid/framing/reply_exceptions.h"
 #include "qpid/client/Connection.h"
 #include "qpid/client/SubscriptionManager.h"

Modified: qpid/branches/cmake/qpid/cpp/src/tests/client_test.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/client_test.cpp?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/client_test.cpp (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/client_test.cpp Thu Apr 23 21:06:35 2009
@@ -32,8 +32,8 @@
 #include "qpid/client/Connection.h"
 #include "qpid/client/Message.h"
 #include "qpid/client/Session.h"
-#include "qpid/framing/FrameSet.h"
-#include "qpid/framing/all_method_bodies.h"
+#include "qpid/client/SubscriptionManager.h"
+
 
 using namespace qpid;
 using namespace qpid::client;
@@ -113,35 +113,18 @@
         session.messageTransfer(arg::destination="MyExchange", arg::content=msgOut, arg::acceptMode=1);
 	if (opts.verbose) print("Published message: ", msgOut);
 
-        //subscribe to the queue, add sufficient credit and then get
-        //incoming 'frameset', check that its a message transfer and
-        //then convert it to a message (see Dispatcher and
-        //SubscriptionManager utilties for common reusable patterns at
-        //a higher level)
-        session.messageSubscribe(arg::queue="MyQueue", arg::destination="MyId");
-        session.messageFlow(arg::destination="MyId", arg::unit=0, arg::value=1); //credit for one message
-        session.messageFlow(arg::destination="MyId", arg::unit=1, arg::value=0xFFFFFFFF); //credit for infinite bytes
-	if (opts.verbose) std::cout << "Subscribed to queue." << std::endl;
-        FrameSet::shared_ptr incoming = session.get();
-        if (incoming->isA<MessageTransferBody>()) {
-            Message msgIn(*incoming);
-            if (msgIn.getData() == msgOut.getData()) {
-                if (opts.verbose) std::cout << "Received the exepected message." << std::endl;
-                session.messageAccept(SequenceSet(msgIn.getId()));
-                session.markCompleted(msgIn.getId(), true, true);
-            } else {
-                print("Received an unexepected message: ", msgIn);
-            }
-        } else {
-            throw Exception("Unexpected command received");
-        }
-        
+        // Using the SubscriptionManager, get the message from the queue.
+        SubscriptionManager subs(session);
+        Message msgIn = subs.get("MyQueue");
+        if (msgIn.getData() == msgOut.getData()) 
+            if (opts.verbose) std::cout << "Received the exepected message." << std::endl;
+
         //close the session & connection
 	session.close();
 	if (opts.verbose) std::cout << "Closed session." << std::endl;
 	connection.close();	
 	if (opts.verbose) std::cout << "Closed connection." << std::endl;
-    return 0;
+        return 0;
     } catch(const std::exception& e) {
 	std::cout << e.what() << std::endl;
     }

Modified: qpid/branches/cmake/qpid/cpp/src/tests/client_test.vcproj
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/client_test.vcproj?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/client_test.vcproj (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/client_test.vcproj Thu Apr 23 21:06:35 2009
@@ -3,7 +3,7 @@
 	ProjectType="Visual C++"
 	Version="9.00"
 	Name="client_test"
-	ProjectGUID="{9A95F0E4-FECA-1BAD-2431-8A11DB0D67CE}"
+	ProjectGUID="{9A95F0E4-FECA-1BAD-2431-8A11CDC7409E}"
 	RootNamespace="client_test"
 	Keyword="Win32Proj"
 	SignManifests="true"

Modified: qpid/branches/cmake/qpid/cpp/src/tests/cluster.mk
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/cluster.mk?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/cluster.mk (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/cluster.mk Thu Apr 23 21:06:35 2009
@@ -34,8 +34,10 @@
   federated_cluster_test clustered_replication_test
 
 check_PROGRAMS+=cluster_test
-cluster_test_SOURCES=unit_test.cpp cluster_test.cpp ClusterFixture.cpp ClusterFixture.h ForkedBroker.h ForkedBroker.cpp
-cluster_test_LDADD=$(lib_client) ../cluster.la -lboost_unit_test_framework 
+cluster_test_SOURCES=unit_test.cpp ClusterFixture.cpp ClusterFixture.h ForkedBroker.h ForkedBroker.cpp \
+	cluster_test.cpp PartialFailure.cpp ClusterFailover.cpp
+
+cluster_test_LDADD=$(lib_client) ../cluster.la test_store.la -lboost_unit_test_framework 
 
 unit_test_LDADD+=../cluster.la
 

Modified: qpid/branches/cmake/qpid/cpp/src/tests/cluster_test.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/cluster_test.cpp?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/cluster_test.cpp (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/cluster_test.cpp Thu Apr 23 21:06:35 2009
@@ -35,6 +35,7 @@
 #include "qpid/framing/Uuid.h"
 #include "qpid/framing/reply_exceptions.h"
 #include "qpid/framing/enum.h"
+#include "qpid/framing/MessageTransferBody.h"
 #include "qpid/log/Logger.h"
 #include "qpid/sys/Monitor.h"
 #include "qpid/sys/Thread.h"
@@ -73,7 +74,7 @@
 
 
 ostream& operator<<(ostream& o, const cpg_name* n) {
-    return o << cluster::Cpg::str(*n);
+    return o << Cpg::str(*n);
 }
 
 ostream& operator<<(ostream& o, const cpg_address& a) {
@@ -89,29 +90,12 @@
     return o;
 }
 
-template <class C> set<uint16_t> makeSet(const C& c) {
-    set<uint16_t> s;
+template <class C> set<int> makeSet(const C& c) {
+    set<int> s;
     copy(c.begin(), c.end(), inserter(s, s.begin()));
     return s;
 }
 
-template <class T>  set<uint16_t> knownBrokerPorts(T& source, int n=-1) {
-    vector<Url> urls = source.getKnownBrokers();
-    if (n >= 0 && unsigned(n) != urls.size()) {
-        BOOST_MESSAGE("knownBrokerPorts waiting for " << n << ": " << urls);
-        // Retry up to 10 secs in .1 second intervals.
-        for (size_t retry=100; urls.size() != unsigned(n) && retry != 0; --retry) {
-            sys::usleep(1000*100); // 0.1 secs
-            urls = source.getKnownBrokers();
-        }
-    }
-    BOOST_MESSAGE("knownBrokerPorts expecting " << n << ": " << urls);
-    set<uint16_t> s;
-    for (vector<Url>::const_iterator i = urls.begin(); i != urls.end(); ++i) 
-        s.insert((*i)[0].get<TcpAddress>()->port);
-    return s;
-}
-
 class Sender {
   public:
     Sender(boost::shared_ptr<ConnectionImpl> ci, uint16_t ch) : connection(ci), channel(ch) {}
@@ -175,7 +159,6 @@
 
 QPID_AUTO_TEST_CASE(testAcl) {
     ofstream policyFile("cluster_test.acl");
-    // FIXME aconway 2009-02-12: guest -> qpidd?
     policyFile << "acl allow foo@QPID create queue name=foo" << endl
                << "acl allow foo@QPID create queue name=foo2" << endl
                << "acl deny foo@QPID create queue name=bar" << endl
@@ -446,13 +429,13 @@
 QPID_AUTO_TEST_CASE(testConnectionKnownHosts) {
     ClusterFixture cluster(1);
     Client c0(cluster[0], "c0");
-    set<uint16_t> kb0 = knownBrokerPorts(c0.connection);
+    set<int> kb0 = knownBrokerPorts(c0.connection);
     BOOST_CHECK_EQUAL(kb0.size(), 1u);
     BOOST_CHECK_EQUAL(kb0, makeSet(cluster));
 
     cluster.add();
     Client c1(cluster[1], "c1");
-    set<uint16_t> kb1 = knownBrokerPorts(c1.connection);
+    set<int> kb1 = knownBrokerPorts(c1.connection);
     kb0 = knownBrokerPorts(c0.connection, 2);
     BOOST_CHECK_EQUAL(kb1.size(), 2u);
     BOOST_CHECK_EQUAL(kb1, makeSet(cluster));
@@ -460,7 +443,7 @@
 
     cluster.add();
     Client c2(cluster[2], "c2");
-    set<uint16_t> kb2 = knownBrokerPorts(c2.connection);
+    set<int> kb2 = knownBrokerPorts(c2.connection);
     kb1 = knownBrokerPorts(c1.connection, 3);
     kb0 = knownBrokerPorts(c0.connection, 3);
     BOOST_CHECK_EQUAL(kb2.size(), 3u);

Modified: qpid/branches/cmake/qpid/cpp/src/tests/clustered_replication_test
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/clustered_replication_test?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/clustered_replication_test (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/clustered_replication_test Thu Apr 23 21:06:35 2009
@@ -23,6 +23,7 @@
 # failures:
 srcdir=`dirname $0`
 PYTHON_DIR=$srcdir/../../../python
+export PYTHONPATH=$PYTHON_DIR
 
 trap stop_brokers INT EXIT
 

Modified: qpid/branches/cmake/qpid/cpp/src/tests/consume.vcproj
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/consume.vcproj?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/consume.vcproj (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/consume.vcproj Thu Apr 23 21:06:35 2009
@@ -3,7 +3,7 @@
 	ProjectType="Visual C++"
 	Version="9.00"
 	Name="consume"
-	ProjectGUID="{7F5DE0A1-FECA-1BAD-2431-8A11DB0D67CE}"
+	ProjectGUID="{7F5DE0A1-FECA-1BAD-2431-8A11CDC7409E}"
 	RootNamespace="consume"
 	Keyword="Win32Proj"
 	SignManifests="true"

Modified: qpid/branches/cmake/qpid/cpp/src/tests/declare_queues.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/declare_queues.cpp?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/declare_queues.cpp (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/declare_queues.cpp Thu Apr 23 21:06:35 2009
@@ -33,14 +33,15 @@
 int main(int argc, char ** argv) 
 {
     ConnectionSettings settings;
-    if ( argc != 3 )
+    if ( argc != 4 )
     {
-      cerr << "Usage: declare_queues host port\n";
+      cerr << "Usage: declare_queues host port durability\n";
       return 1;
     }
 
     settings.host = argv[1];
     settings.port = atoi(argv[2]);
+    int durability = atoi(argv[3]);
     
     FailoverManager connection(settings);
     try {
@@ -48,7 +49,10 @@
         while (!complete) {
             Session session = connection.connect().newSession();
             try {
-                session.queueDeclare(arg::queue="message_queue");
+                if ( durability )
+                  session.queueDeclare(arg::queue="message_queue", arg::durable=true);
+                else
+                  session.queueDeclare(arg::queue="message_queue");
                 complete = true;
             } catch (const qpid::TransportFailure&) {}
         }

Modified: qpid/branches/cmake/qpid/cpp/src/tests/echotest.vcproj
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/echotest.vcproj?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/echotest.vcproj (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/echotest.vcproj Thu Apr 23 21:06:35 2009
@@ -3,7 +3,7 @@
 	ProjectType="Visual C++"
 	Version="9.00"
 	Name="echotest"
-	ProjectGUID="{0A5AF6BE-FECA-1BAD-2431-8A11DB0D67CE}"
+	ProjectGUID="{0A5AF6BE-FECA-1BAD-2431-8A11CDC7409E}"
 	RootNamespace="echotest"
 	Keyword="Win32Proj"
 	SignManifests="true"

Modified: qpid/branches/cmake/qpid/cpp/src/tests/failover_soak.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/failover_soak.cpp?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/failover_soak.cpp (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/failover_soak.cpp Thu Apr 23 21:06:35 2009
@@ -220,63 +220,13 @@
         cout << "\n\n\n\n";
     }
 
-
-    /* 
-       Only call this if you already know there is at least 
-       one child still running.  Supply a time in seconds.
-       If it has been at least that long since a shild stopped
-       running, we judge the system to have hung.
-    */
-    int
-    hanging ( int hangTime )
-    {
-        struct timeval now,
-                       duration;
-        gettimeofday ( &now, 0 );
-
-        int how_many_hanging = 0;
-
-        vector<child *>::iterator i;
-        for ( i = begin(); i != end(); ++ i )
-        {
-            //Not in POSIX
-            //timersub ( & now, &((*i)->startTime), & duration );
-            duration.tv_sec = now.tv_sec - (*i)->startTime.tv_sec;
-            duration.tv_usec = now.tv_usec - (*i)->startTime.tv_usec;
-            if (duration.tv_usec < 0) {
-                --duration.tv_sec;
-                duration.tv_usec += 1000000;
-            }
-
-            if ( (COMPLETED != (*i)->status)     // child isn't done running
-                  &&
-                 ( duration.tv_sec >= hangTime ) // it's been too long
-               )
-            {
-                std::cerr << "Child of type " 
-                          << (*i)->type 
-                          << " hanging.   "
-                          << "PID is "
-                          << (*i)->pid
-                          << endl;
-                ++ how_many_hanging;
-            }
-        }
-        
-        return how_many_hanging;
-    }
-    
-
     int verbosity;
 };
 
 
-
 children allMyChildren;
 
 
-
-
 void 
 childExit ( int ) 
 {
@@ -361,36 +311,45 @@
   }
 }
 
-
+bool endsWith(const char* str, const char* suffix) {
+    return (strlen(suffix) < strlen(str) && 0 == strcmp(str+strlen(str)-strlen(suffix), suffix));
+}
 
 
 void
 startNewBroker ( brokerVector & brokers,
-                 char const * srcRoot,
-                 char const * moduleDir,
+                 char const * moduleOrDir,
                  string const clusterName,
-                 int verbosity ) 
+                 int verbosity,
+                 int durable ) 
 {
     static int brokerId = 0;
-    stringstream path, prefix, module;
-    module << moduleDir << "/cluster.so";
-    path << srcRoot << "/qpidd";
+    stringstream path, prefix;
     prefix << "soak-" << brokerId;
     std::vector<std::string> argv = list_of<string>
         ("qpidd")
-        ("--no-module-dir")
-        ("--load-module=cluster.so")
-        ("--cluster-name")
-        (clusterName)
+        ("--cluster-name")(clusterName)
         ("--auth=no")
-        ("--no-data-dir")
         ("--mgmt-enable=no")
-        ("--log-prefix")
-        (prefix.str())
-        ("--log-to-file")
-        (prefix.str()+".log");
+        ("--log-prefix")(prefix.str())
+        ("--log-to-file")(prefix.str()+".log")
+        ("--log-enable=error+")
+        ("TMP_DATA_DIR");
+
+    if (endsWith(moduleOrDir, "cluster.so")) {
+        // Module path specified, load only that module.
+        argv.push_back(string("--load-module=")+moduleOrDir);
+        argv.push_back("--no-module-dir");
+        if ( durable ) {
+          std::cerr << "failover_soak warning: durable arg hass no effect.  Use \"dir\" option of \"moduleOrDir\".\n";
+        }
+    }
+    else {
+        // Module directory specified, load all modules in dir.
+        argv.push_back(string("--module-dir=")+moduleOrDir);
+    }
 
-    newbie = new ForkedBroker ( argv );
+    newbie = new ForkedBroker (argv);
     newbie_port = newbie->getPort();
     ForkedBroker * broker = newbie;
 
@@ -473,7 +432,8 @@
 runDeclareQueuesClient ( brokerVector brokers, 
                             char const *  host,
                             char const *  path,
-                            int verbosity
+                            int verbosity,
+                            int durable
                           ) 
 {
     string name("declareQueues");
@@ -492,6 +452,10 @@
     argv.push_back ( "declareQueues" );
     argv.push_back ( host );
     argv.push_back ( portSs.str().c_str() );
+    if ( durable )
+      argv.push_back ( "1" );
+    else
+      argv.push_back ( "0" );
     argv.push_back ( 0 );
     pid_t pid = fork();
 
@@ -562,7 +526,8 @@
                        char const *  senderPath,
                        char const *  nMessages,
                        char const *  reportFrequency,
-                       int verbosity
+                       int verbosity,
+                       int durability
                      ) 
 {
     string name("sender");
@@ -586,6 +551,10 @@
     argv.push_back ( nMessages );
     argv.push_back ( reportFrequency );
     argv.push_back ( verbosityStr );
+    if ( durability )
+      argv.push_back ( "1" );
+    else
+      argv.push_back ( "0" );
     argv.push_back ( 0 );
 
     pid_t pid = fork();
@@ -613,27 +582,33 @@
 #define ERROR_KILLING_BROKER  8
 
 
+// If you want durability, use the "dir" option of "moduleOrDir" .
+
+
 int
 main ( int argc, char const ** argv ) 
 {    
-    if ( argc < 9 ) {
-        cerr << "Usage: failoverSoak srcRoot moduleDir host senderPath receiverPath nMessages verbosity\n";
-        cerr << "    ( argc was " << argc << " )\n";
+    if ( argc != 9 ) {
+        cerr << "Usage: "
+             << argv[0]
+             << "moduleOrDir declareQueuesPath senderPath receiverPath nMessages reportFrequency verbosity durable"
+             << endl;
+        cerr << "\tverbosity is an integer, durable is 0 or 1\n";
         return BAD_ARGS;
     }
-
     signal ( SIGCHLD, childExit );
 
-    char const * srcRoot            = argv[1];
-    char const * moduleDir          = argv[2];
-    char const * host               = argv[3];
-    char const * declareQueuesPath  = argv[4];
-    char const * senderPath         = argv[5];
-    char const * receiverPath       = argv[6];
-    char const * nMessages          = argv[7];
-    char const * reportFrequency    = argv[8];
-    int          verbosity          = atoi(argv[9]);
+    int i = 1;
+    char const * moduleOrDir        = argv[i++];
+    char const * declareQueuesPath  = argv[i++];
+    char const * senderPath         = argv[i++];
+    char const * receiverPath       = argv[i++];
+    char const * nMessages          = argv[i++];
+    char const * reportFrequency    = argv[i++];
+    int          verbosity          = atoi(argv[i++]);
+    int          durable            = atoi(argv[i++]);
 
+    char const * host               = "127.0.0.1";
     int maxBrokers = 50;
 
     allMyChildren.verbosity = verbosity;
@@ -652,10 +627,10 @@
     int nBrokers = 3;
     for ( int i = 0; i < nBrokers; ++ i ) {
         startNewBroker ( brokers,
-                         srcRoot,
-                         moduleDir, 
+                         moduleOrDir, 
                          clusterName,
-                         verbosity ); 
+                         verbosity,
+                         durable ); 
     }
 
 
@@ -665,7 +640,7 @@
      // Run the declareQueues child.
      int childStatus;
      pid_t dqClientPid = 
-     runDeclareQueuesClient ( brokers, host, declareQueuesPath, verbosity );
+     runDeclareQueuesClient ( brokers, host, declareQueuesPath, verbosity, durable );
      if ( -1 == dqClientPid ) {
          cerr << "END_OF_TEST ERROR_START_DECLARE_1\n";
          return CANT_FORK_DQ;
@@ -701,7 +676,8 @@
                             senderPath, 
                             nMessages,
                             reportFrequency,
-                            verbosity );
+                            verbosity,
+                            durable );
      if ( -1 == sendingClientPid ) {
          cerr << "END_OF_TEST ERROR_START_SENDER\n";
          return CANT_FORK_SENDER;
@@ -745,10 +721,10 @@
              cout << "Starting new broker.\n\n";
 
          startNewBroker ( brokers,
-                          srcRoot,
-                          moduleDir, 
+                          moduleOrDir, 
                           clusterName,
-                          verbosity ); 
+                          verbosity,
+                          durable ); 
        
          if ( verbosity > 1 )
              printBrokers ( brokers );
@@ -787,16 +763,6 @@
              return ERROR_ON_CHILD;
          }
 
-         // If one is hanging, quit.
-         if ( allMyChildren.hanging ( 120 ) )
-         {
-             /*
-              * Don't kill any processes.  Leave alive for questioning.
-              * */
-             std::cerr << "END_OF_TEST ERROR_HANGING\n";
-             return HANGING;
-         }
-
          if ( verbosity > 1 ) {
            std::cerr << "------- next kill-broker loop --------\n";
            allMyChildren.print();

Modified: qpid/branches/cmake/qpid/cpp/src/tests/header_test.vcproj
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/header_test.vcproj?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/header_test.vcproj (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/header_test.vcproj Thu Apr 23 21:06:35 2009
@@ -3,7 +3,7 @@
 	ProjectType="Visual C++"
 	Version="9.00"
 	Name="header_test"
-	ProjectGUID="{1B23F05D-FECA-1BAD-2431-8A11DB0D67CE}"
+	ProjectGUID="{1B23F05D-FECA-1BAD-2431-8A11CDC7409E}"
 	RootNamespace="header_test"
 	Keyword="Win32Proj"
 	SignManifests="true"

Modified: qpid/branches/cmake/qpid/cpp/src/tests/latencytest.vcproj
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/latencytest.vcproj?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/latencytest.vcproj (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/latencytest.vcproj Thu Apr 23 21:06:35 2009
@@ -3,7 +3,7 @@
 	ProjectType="Visual C++"
 	Version="9.00"
 	Name="latencytest"
-	ProjectGUID="{4A809018-FECA-1BAD-2431-8A11DB0D67CE}"
+	ProjectGUID="{4A809018-FECA-1BAD-2431-8A11CDC7409E}"
 	RootNamespace="latencytest"
 	Keyword="Win32Proj"
 	SignManifests="true"

Modified: qpid/branches/cmake/qpid/cpp/src/tests/perftest.vcproj
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/perftest.vcproj?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/perftest.vcproj (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/perftest.vcproj Thu Apr 23 21:06:35 2009
@@ -3,7 +3,7 @@
 	ProjectType="Visual C++"
 	Version="9.00"
 	Name="perftest"
-	ProjectGUID="{1F2066BE-FECA-1BAD-2431-8A11DB0D67CE}"
+	ProjectGUID="{1F2066BE-FECA-1BAD-2431-8A11CDC7409E}"
 	RootNamespace="perftest"
 	Keyword="Win32Proj"
 	SignManifests="true"

Modified: qpid/branches/cmake/qpid/cpp/src/tests/publish.vcproj
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/publish.vcproj?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/publish.vcproj (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/publish.vcproj Thu Apr 23 21:06:35 2009
@@ -3,7 +3,7 @@
 	ProjectType="Visual C++"
 	Version="9.00"
 	Name="publish"
-	ProjectGUID="{AE773E7F-FECA-1BAD-2431-8A11DB0D67CE}"
+	ProjectGUID="{AE773E7F-FECA-1BAD-2431-8A11CDC7409E}"
 	RootNamespace="publish"
 	Keyword="Win32Proj"
 	SignManifests="true"

Modified: qpid/branches/cmake/qpid/cpp/src/tests/receiver.vcproj
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/receiver.vcproj?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/receiver.vcproj (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/receiver.vcproj Thu Apr 23 21:06:35 2009
@@ -3,7 +3,7 @@
 	ProjectType="Visual C++"
 	Version="9.00"
 	Name="receiver"
-	ProjectGUID="{7D314A98-FECA-1BAD-2431-8A11DB0D67CE}"
+	ProjectGUID="{7D314A98-FECA-1BAD-2431-8A11CDC7409E}"
 	RootNamespace="receiver"
 	Keyword="Win32Proj"
 	SignManifests="true"

Modified: qpid/branches/cmake/qpid/cpp/src/tests/replaying_sender.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/replaying_sender.cpp?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/replaying_sender.cpp (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/replaying_sender.cpp Thu Apr 23 21:06:35 2009
@@ -40,9 +40,10 @@
   public:
     Sender(const std::string& queue, uint count, uint reportFreq);
     void execute(AsyncSession& session, bool isRetry);
-    uint getSent();
+    uint getSent(); 
 
-    int verbosity;
+    void setVerbosity   ( int v ) { verbosity   = v; }
+    void setPersistence ( int p ) { persistence = p; }
 
   private:
     MessageReplayTracker sender;
@@ -51,9 +52,11 @@
     const uint reportFrequency;
     Message message;
     
+    int verbosity;
+    int persistence;
 };
 
-Sender::Sender(const std::string& queue, uint count_, uint reportFreq ) : sender(10), count(count_), sent(0), reportFrequency(reportFreq)
+Sender::Sender(const std::string& queue, uint count_, uint reportFreq ) : sender(10), count(count_), sent(0), reportFrequency(reportFreq), verbosity(0), persistence(0)
 {
     message.getDeliveryProperties().setRoutingKey(queue);
 }
@@ -69,6 +72,9 @@
         message_data << ++sent;
         message.setData(message_data.str());
         message.getHeaders().setInt("sn", sent);
+        if ( persistence )
+          message.getDeliveryProperties().setDeliveryMode(PERSISTENT);
+
         sender.send(message);
         if (count > reportFrequency && !(sent % reportFrequency)) {
             if ( verbosity > 0 )
@@ -91,9 +97,9 @@
 {
     ConnectionSettings settings;
 
-    if ( argc != 6 )
+    if ( argc != 7 )
     {
-      std::cerr << "Usage: replaying_sender host port n_messages report_frequency verbosity\n";
+      std::cerr << "Usage: replaying_sender host port n_messages report_frequency verbosity persistence\n";
       return 1;
     }
 
@@ -102,10 +108,12 @@
     int n_messages      = atoi(argv[3]);
     int reportFrequency = atoi(argv[4]);
     int verbosity       = atoi(argv[5]);
+    int persistence     = atoi(argv[6]);
 
     FailoverManager connection(settings);
     Sender sender("message_queue", n_messages, reportFrequency );
-    sender.verbosity = verbosity;
+    sender.setVerbosity   ( verbosity   );
+    sender.setPersistence ( persistence );
     try {
         connection.execute ( sender );
         if ( verbosity > 0 )

Modified: qpid/branches/cmake/qpid/cpp/src/tests/run_failover_soak
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/run_failover_soak?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/run_failover_soak (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/run_failover_soak Thu Apr 23 21:06:35 2009
@@ -45,12 +45,12 @@
 
 host=127.0.0.1
 
-src_root=..
-module_dir=$src_root/.libs
-
+MODULES=${MODULES:-../.libs}
 MESSAGES=${MESSAGES:-300000}
 REPORT_FREQUENCY=${REPORT_FREQUENCY:-`expr $MESSAGES / 20`}
 VERBOSITY=${VERBOSITY:-1}
+DURABILITY=${DURABILITY:-1}
 
-exec ./failover_soak $src_root $module_dir $host ./declare_queues ./replaying_sender ./resuming_receiver $MESSAGES $REPORT_FREQUENCY $VERBOSITY
+rm -f soak-*.log
+exec ./failover_soak $MODULES ./declare_queues ./replaying_sender ./resuming_receiver $MESSAGES $REPORT_FREQUENCY $VERBOSITY $DURABILITY
 

Modified: qpid/branches/cmake/qpid/cpp/src/tests/sender.vcproj
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/sender.vcproj?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/sender.vcproj (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/sender.vcproj Thu Apr 23 21:06:35 2009
@@ -3,7 +3,7 @@
 	ProjectType="Visual C++"
 	Version="9.00"
 	Name="sender"
-	ProjectGUID="{09714CB8-FECA-1BAD-2431-8A11DB0D67CE}"
+	ProjectGUID="{09714CB8-FECA-1BAD-2431-8A11CDC7409E}"
 	RootNamespace="sender"
 	Keyword="Win32Proj"
 	SignManifests="true"

Modified: qpid/branches/cmake/qpid/cpp/src/tests/shlibtest.vcproj
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/shlibtest.vcproj?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/shlibtest.vcproj (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/shlibtest.vcproj Thu Apr 23 21:06:35 2009
@@ -3,7 +3,7 @@
 	ProjectType="Visual C++"
 	Version="9.00"
 	Name="shlibtest"
-	ProjectGUID="{37AB26B9-FECA-1BAD-2431-8A11DB0D67CE}"
+	ProjectGUID="{37AB26B9-FECA-1BAD-2431-8A11CDC7409E}"
 	RootNamespace="shlibtest"
 	Keyword="Win32Proj"
 	SignManifests="true"

Modified: qpid/branches/cmake/qpid/cpp/src/tests/start_cluster
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/start_cluster?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/start_cluster (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/start_cluster Thu Apr 23 21:06:35 2009
@@ -28,15 +28,17 @@
     echo $* | newgrp ais
 }
 
-rm -f cluster*.log
-SIZE=${1:-1}; shift
+rm -f cluster*.log cluster.ports qpidd.port
+
+SIZE=${1:-3}; shift
 CLUSTER=`pwd`		# Cluster name=pwd, avoid clashes.
-OPTS="-d --no-module-dir --load-module ../.libs/cluster.so  --cluster-name=$CLUSTER --no-data-dir --auth=no $@"
+OPTS="-d --no-module-dir --load-module ../.libs/cluster.so  --cluster-name=$CLUSTER --auth=no $@"
 
 for (( i=0; i<SIZE; ++i )); do
-    PORT=`with_ais_group ../qpidd  -p0 --log-to-file=cluster$i.log $OPTS`  || exit 1
+    DDIR=`mktemp -d /tmp/start_cluster.XXXXXXXXXX`
+    PORT=`with_ais_group ../qpidd  -p0 --log-to-file=cluster$i.log $OPTS  --data-dir=$DDIR`  || exit 1
     echo $PORT >> cluster.ports
 done
 
-head cluster.ports > qpidd.port	# First member's port for tests.
+head -n 1 cluster.ports > qpidd.port	# First member's port for tests.
 

Modified: qpid/branches/cmake/qpid/cpp/src/tests/tests.sln
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/tests.sln?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/tests.sln (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/tests.sln Thu Apr 23 21:06:35 2009
@@ -8,37 +8,37 @@
 #
 # MPC Command:
 # C:\ace\MPC\mwc.pl -type vc9 -features boost=1 tests.mwc
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "client_test", "client_test.vcproj", "{9A95F0E4-FECA-1BAD-2431-8A11DB0D67CE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "client_test", "client_test.vcproj", "{9A95F0E4-FECA-1BAD-2431-8A11CDC7409E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "consume", "consume.vcproj", "{7F5DE0A1-FECA-1BAD-2431-8A11DB0D67CE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "consume", "consume.vcproj", "{7F5DE0A1-FECA-1BAD-2431-8A11CDC7409E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "echotest", "echotest.vcproj", "{0A5AF6BE-FECA-1BAD-2431-8A11DB0D67CE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "echotest", "echotest.vcproj", "{0A5AF6BE-FECA-1BAD-2431-8A11CDC7409E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "header_test", "header_test.vcproj", "{1B23F05D-FECA-1BAD-2431-8A11DB0D67CE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "header_test", "header_test.vcproj", "{1B23F05D-FECA-1BAD-2431-8A11CDC7409E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "latencytest", "latencytest.vcproj", "{4A809018-FECA-1BAD-2431-8A11DB0D67CE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "latencytest", "latencytest.vcproj", "{4A809018-FECA-1BAD-2431-8A11CDC7409E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perftest", "perftest.vcproj", "{1F2066BE-FECA-1BAD-2431-8A11DB0D67CE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perftest", "perftest.vcproj", "{1F2066BE-FECA-1BAD-2431-8A11CDC7409E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "publish", "publish.vcproj", "{AE773E7F-FECA-1BAD-2431-8A11DB0D67CE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "publish", "publish.vcproj", "{AE773E7F-FECA-1BAD-2431-8A11CDC7409E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "receiver", "receiver.vcproj", "{7D314A98-FECA-1BAD-2431-8A11DB0D67CE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "receiver", "receiver.vcproj", "{7D314A98-FECA-1BAD-2431-8A11CDC7409E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sender", "sender.vcproj", "{09714CB8-FECA-1BAD-2431-8A11DB0D67CE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sender", "sender.vcproj", "{09714CB8-FECA-1BAD-2431-8A11CDC7409E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shlibtest", "shlibtest.vcproj", "{37AB26B9-FECA-1BAD-2431-8A11DB0D67CE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shlibtest", "shlibtest.vcproj", "{37AB26B9-FECA-1BAD-2431-8A11CDC7409E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "topic_listener", "topic_listener.vcproj", "{9392D1EE-FECA-1BAD-2431-8A11DB0D67CE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "topic_listener", "topic_listener.vcproj", "{9392D1EE-FECA-1BAD-2431-8A11CDC7409E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "topic_publisher", "topic_publisher.vcproj", "{7D66FE10-FECA-1BAD-2431-8A11DB0D67CE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "topic_publisher", "topic_publisher.vcproj", "{7D66FE10-FECA-1BAD-2431-8A11CDC7409E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "txjob", "txjob.vcproj", "{09034A53-FECA-1BAD-2431-8A11DB0D67CE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "txjob", "txjob.vcproj", "{09034A53-FECA-1BAD-2431-8A11CDC7409E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "txshift", "txshift.vcproj", "{6E3B2A6B-FECA-1BAD-2431-8A11DB0D67CE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "txshift", "txshift.vcproj", "{6E3B2A6B-FECA-1BAD-2431-8A11CDC7409E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "txtest", "txtest.vcproj", "{697786BE-FECA-1BAD-2431-8A11DB0D67CE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "txtest", "txtest.vcproj", "{697786BE-FECA-1BAD-2431-8A11CDC7409E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unit_test", "unit_test.vcproj", "{51E5F6B9-FECA-1BAD-2431-8A11DB0D67CE}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unit_test", "unit_test.vcproj", "{51E5F6B9-FECA-1BAD-2431-8A11CDC7409E}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -48,134 +48,134 @@
 		Release|x64 = Release|x64
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{9A95F0E4-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{9A95F0E4-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.Build.0 = Debug|Win32
-		{9A95F0E4-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.ActiveCfg = Debug|x64
-		{9A95F0E4-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.Build.0 = Debug|x64
-		{9A95F0E4-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.ActiveCfg = Release|Win32
-		{9A95F0E4-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.Build.0 = Release|Win32
-		{9A95F0E4-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.ActiveCfg = Release|x64
-		{9A95F0E4-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.Build.0 = Release|x64
-		{7F5DE0A1-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{7F5DE0A1-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.Build.0 = Debug|Win32
-		{7F5DE0A1-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.ActiveCfg = Debug|x64
-		{7F5DE0A1-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.Build.0 = Debug|x64
-		{7F5DE0A1-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.ActiveCfg = Release|Win32
-		{7F5DE0A1-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.Build.0 = Release|Win32
-		{7F5DE0A1-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.ActiveCfg = Release|x64
-		{7F5DE0A1-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.Build.0 = Release|x64
-		{0A5AF6BE-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{0A5AF6BE-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.Build.0 = Debug|Win32
-		{0A5AF6BE-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.ActiveCfg = Debug|x64
-		{0A5AF6BE-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.Build.0 = Debug|x64
-		{0A5AF6BE-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.ActiveCfg = Release|Win32
-		{0A5AF6BE-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.Build.0 = Release|Win32
-		{0A5AF6BE-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.ActiveCfg = Release|x64
-		{0A5AF6BE-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.Build.0 = Release|x64
-		{1B23F05D-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{1B23F05D-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.Build.0 = Debug|Win32
-		{1B23F05D-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.ActiveCfg = Debug|x64
-		{1B23F05D-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.Build.0 = Debug|x64
-		{1B23F05D-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.ActiveCfg = Release|Win32
-		{1B23F05D-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.Build.0 = Release|Win32
-		{1B23F05D-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.ActiveCfg = Release|x64
-		{1B23F05D-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.Build.0 = Release|x64
-		{4A809018-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{4A809018-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.Build.0 = Debug|Win32
-		{4A809018-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.ActiveCfg = Debug|x64
-		{4A809018-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.Build.0 = Debug|x64
-		{4A809018-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.ActiveCfg = Release|Win32
-		{4A809018-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.Build.0 = Release|Win32
-		{4A809018-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.ActiveCfg = Release|x64
-		{4A809018-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.Build.0 = Release|x64
-		{1F2066BE-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{1F2066BE-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.Build.0 = Debug|Win32
-		{1F2066BE-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.ActiveCfg = Debug|x64
-		{1F2066BE-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.Build.0 = Debug|x64
-		{1F2066BE-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.ActiveCfg = Release|Win32
-		{1F2066BE-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.Build.0 = Release|Win32
-		{1F2066BE-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.ActiveCfg = Release|x64
-		{1F2066BE-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.Build.0 = Release|x64
-		{AE773E7F-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{AE773E7F-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.Build.0 = Debug|Win32
-		{AE773E7F-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.ActiveCfg = Debug|x64
-		{AE773E7F-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.Build.0 = Debug|x64
-		{AE773E7F-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.ActiveCfg = Release|Win32
-		{AE773E7F-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.Build.0 = Release|Win32
-		{AE773E7F-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.ActiveCfg = Release|x64
-		{AE773E7F-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.Build.0 = Release|x64
-		{7D314A98-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{7D314A98-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.Build.0 = Debug|Win32
-		{7D314A98-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.ActiveCfg = Debug|x64
-		{7D314A98-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.Build.0 = Debug|x64
-		{7D314A98-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.ActiveCfg = Release|Win32
-		{7D314A98-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.Build.0 = Release|Win32
-		{7D314A98-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.ActiveCfg = Release|x64
-		{7D314A98-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.Build.0 = Release|x64
-		{09714CB8-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{09714CB8-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.Build.0 = Debug|Win32
-		{09714CB8-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.ActiveCfg = Debug|x64
-		{09714CB8-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.Build.0 = Debug|x64
-		{09714CB8-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.ActiveCfg = Release|Win32
-		{09714CB8-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.Build.0 = Release|Win32
-		{09714CB8-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.ActiveCfg = Release|x64
-		{09714CB8-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.Build.0 = Release|x64
-		{37AB26B9-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{37AB26B9-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.Build.0 = Debug|Win32
-		{37AB26B9-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.ActiveCfg = Debug|x64
-		{37AB26B9-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.Build.0 = Debug|x64
-		{37AB26B9-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.ActiveCfg = Release|Win32
-		{37AB26B9-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.Build.0 = Release|Win32
-		{37AB26B9-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.ActiveCfg = Release|x64
-		{37AB26B9-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.Build.0 = Release|x64
-		{9392D1EE-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{9392D1EE-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.Build.0 = Debug|Win32
-		{9392D1EE-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.ActiveCfg = Debug|x64
-		{9392D1EE-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.Build.0 = Debug|x64
-		{9392D1EE-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.ActiveCfg = Release|Win32
-		{9392D1EE-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.Build.0 = Release|Win32
-		{9392D1EE-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.ActiveCfg = Release|x64
-		{9392D1EE-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.Build.0 = Release|x64
-		{7D66FE10-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{7D66FE10-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.Build.0 = Debug|Win32
-		{7D66FE10-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.ActiveCfg = Debug|x64
-		{7D66FE10-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.Build.0 = Debug|x64
-		{7D66FE10-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.ActiveCfg = Release|Win32
-		{7D66FE10-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.Build.0 = Release|Win32
-		{7D66FE10-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.ActiveCfg = Release|x64
-		{7D66FE10-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.Build.0 = Release|x64
-		{09034A53-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{09034A53-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.Build.0 = Debug|Win32
-		{09034A53-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.ActiveCfg = Debug|x64
-		{09034A53-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.Build.0 = Debug|x64
-		{09034A53-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.ActiveCfg = Release|Win32
-		{09034A53-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.Build.0 = Release|Win32
-		{09034A53-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.ActiveCfg = Release|x64
-		{09034A53-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.Build.0 = Release|x64
-		{6E3B2A6B-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{6E3B2A6B-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.Build.0 = Debug|Win32
-		{6E3B2A6B-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.ActiveCfg = Debug|x64
-		{6E3B2A6B-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.Build.0 = Debug|x64
-		{6E3B2A6B-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.ActiveCfg = Release|Win32
-		{6E3B2A6B-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.Build.0 = Release|Win32
-		{6E3B2A6B-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.ActiveCfg = Release|x64
-		{6E3B2A6B-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.Build.0 = Release|x64
-		{697786BE-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{697786BE-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.Build.0 = Debug|Win32
-		{697786BE-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.ActiveCfg = Debug|x64
-		{697786BE-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.Build.0 = Debug|x64
-		{697786BE-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.ActiveCfg = Release|Win32
-		{697786BE-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.Build.0 = Release|Win32
-		{697786BE-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.ActiveCfg = Release|x64
-		{697786BE-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.Build.0 = Release|x64
-		{51E5F6B9-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{51E5F6B9-FECA-1BAD-2431-8A11DB0D67CE}.Debug|Win32.Build.0 = Debug|Win32
-		{51E5F6B9-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.ActiveCfg = Debug|x64
-		{51E5F6B9-FECA-1BAD-2431-8A11DB0D67CE}.Debug|x64.Build.0 = Debug|x64
-		{51E5F6B9-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.ActiveCfg = Release|Win32
-		{51E5F6B9-FECA-1BAD-2431-8A11DB0D67CE}.Release|Win32.Build.0 = Release|Win32
-		{51E5F6B9-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.ActiveCfg = Release|x64
-		{51E5F6B9-FECA-1BAD-2431-8A11DB0D67CE}.Release|x64.Build.0 = Release|x64
+		{9A95F0E4-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{9A95F0E4-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.Build.0 = Debug|Win32
+		{9A95F0E4-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.ActiveCfg = Debug|x64
+		{9A95F0E4-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.Build.0 = Debug|x64
+		{9A95F0E4-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.ActiveCfg = Release|Win32
+		{9A95F0E4-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.Build.0 = Release|Win32
+		{9A95F0E4-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.ActiveCfg = Release|x64
+		{9A95F0E4-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.Build.0 = Release|x64
+		{7F5DE0A1-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{7F5DE0A1-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.Build.0 = Debug|Win32
+		{7F5DE0A1-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.ActiveCfg = Debug|x64
+		{7F5DE0A1-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.Build.0 = Debug|x64
+		{7F5DE0A1-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.ActiveCfg = Release|Win32
+		{7F5DE0A1-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.Build.0 = Release|Win32
+		{7F5DE0A1-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.ActiveCfg = Release|x64
+		{7F5DE0A1-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.Build.0 = Release|x64
+		{0A5AF6BE-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{0A5AF6BE-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.Build.0 = Debug|Win32
+		{0A5AF6BE-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.ActiveCfg = Debug|x64
+		{0A5AF6BE-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.Build.0 = Debug|x64
+		{0A5AF6BE-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.ActiveCfg = Release|Win32
+		{0A5AF6BE-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.Build.0 = Release|Win32
+		{0A5AF6BE-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.ActiveCfg = Release|x64
+		{0A5AF6BE-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.Build.0 = Release|x64
+		{1B23F05D-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{1B23F05D-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.Build.0 = Debug|Win32
+		{1B23F05D-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.ActiveCfg = Debug|x64
+		{1B23F05D-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.Build.0 = Debug|x64
+		{1B23F05D-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.ActiveCfg = Release|Win32
+		{1B23F05D-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.Build.0 = Release|Win32
+		{1B23F05D-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.ActiveCfg = Release|x64
+		{1B23F05D-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.Build.0 = Release|x64
+		{4A809018-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{4A809018-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.Build.0 = Debug|Win32
+		{4A809018-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.ActiveCfg = Debug|x64
+		{4A809018-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.Build.0 = Debug|x64
+		{4A809018-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.ActiveCfg = Release|Win32
+		{4A809018-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.Build.0 = Release|Win32
+		{4A809018-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.ActiveCfg = Release|x64
+		{4A809018-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.Build.0 = Release|x64
+		{1F2066BE-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{1F2066BE-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.Build.0 = Debug|Win32
+		{1F2066BE-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.ActiveCfg = Debug|x64
+		{1F2066BE-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.Build.0 = Debug|x64
+		{1F2066BE-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.ActiveCfg = Release|Win32
+		{1F2066BE-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.Build.0 = Release|Win32
+		{1F2066BE-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.ActiveCfg = Release|x64
+		{1F2066BE-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.Build.0 = Release|x64
+		{AE773E7F-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{AE773E7F-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.Build.0 = Debug|Win32
+		{AE773E7F-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.ActiveCfg = Debug|x64
+		{AE773E7F-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.Build.0 = Debug|x64
+		{AE773E7F-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.ActiveCfg = Release|Win32
+		{AE773E7F-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.Build.0 = Release|Win32
+		{AE773E7F-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.ActiveCfg = Release|x64
+		{AE773E7F-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.Build.0 = Release|x64
+		{7D314A98-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{7D314A98-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.Build.0 = Debug|Win32
+		{7D314A98-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.ActiveCfg = Debug|x64
+		{7D314A98-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.Build.0 = Debug|x64
+		{7D314A98-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.ActiveCfg = Release|Win32
+		{7D314A98-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.Build.0 = Release|Win32
+		{7D314A98-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.ActiveCfg = Release|x64
+		{7D314A98-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.Build.0 = Release|x64
+		{09714CB8-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{09714CB8-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.Build.0 = Debug|Win32
+		{09714CB8-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.ActiveCfg = Debug|x64
+		{09714CB8-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.Build.0 = Debug|x64
+		{09714CB8-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.ActiveCfg = Release|Win32
+		{09714CB8-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.Build.0 = Release|Win32
+		{09714CB8-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.ActiveCfg = Release|x64
+		{09714CB8-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.Build.0 = Release|x64
+		{37AB26B9-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{37AB26B9-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.Build.0 = Debug|Win32
+		{37AB26B9-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.ActiveCfg = Debug|x64
+		{37AB26B9-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.Build.0 = Debug|x64
+		{37AB26B9-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.ActiveCfg = Release|Win32
+		{37AB26B9-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.Build.0 = Release|Win32
+		{37AB26B9-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.ActiveCfg = Release|x64
+		{37AB26B9-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.Build.0 = Release|x64
+		{9392D1EE-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{9392D1EE-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.Build.0 = Debug|Win32
+		{9392D1EE-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.ActiveCfg = Debug|x64
+		{9392D1EE-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.Build.0 = Debug|x64
+		{9392D1EE-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.ActiveCfg = Release|Win32
+		{9392D1EE-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.Build.0 = Release|Win32
+		{9392D1EE-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.ActiveCfg = Release|x64
+		{9392D1EE-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.Build.0 = Release|x64
+		{7D66FE10-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{7D66FE10-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.Build.0 = Debug|Win32
+		{7D66FE10-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.ActiveCfg = Debug|x64
+		{7D66FE10-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.Build.0 = Debug|x64
+		{7D66FE10-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.ActiveCfg = Release|Win32
+		{7D66FE10-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.Build.0 = Release|Win32
+		{7D66FE10-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.ActiveCfg = Release|x64
+		{7D66FE10-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.Build.0 = Release|x64
+		{09034A53-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{09034A53-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.Build.0 = Debug|Win32
+		{09034A53-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.ActiveCfg = Debug|x64
+		{09034A53-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.Build.0 = Debug|x64
+		{09034A53-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.ActiveCfg = Release|Win32
+		{09034A53-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.Build.0 = Release|Win32
+		{09034A53-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.ActiveCfg = Release|x64
+		{09034A53-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.Build.0 = Release|x64
+		{6E3B2A6B-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{6E3B2A6B-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.Build.0 = Debug|Win32
+		{6E3B2A6B-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.ActiveCfg = Debug|x64
+		{6E3B2A6B-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.Build.0 = Debug|x64
+		{6E3B2A6B-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.ActiveCfg = Release|Win32
+		{6E3B2A6B-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.Build.0 = Release|Win32
+		{6E3B2A6B-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.ActiveCfg = Release|x64
+		{6E3B2A6B-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.Build.0 = Release|x64
+		{697786BE-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{697786BE-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.Build.0 = Debug|Win32
+		{697786BE-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.ActiveCfg = Debug|x64
+		{697786BE-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.Build.0 = Debug|x64
+		{697786BE-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.ActiveCfg = Release|Win32
+		{697786BE-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.Build.0 = Release|Win32
+		{697786BE-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.ActiveCfg = Release|x64
+		{697786BE-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.Build.0 = Release|x64
+		{51E5F6B9-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{51E5F6B9-FECA-1BAD-2431-8A11CDC7409E}.Debug|Win32.Build.0 = Debug|Win32
+		{51E5F6B9-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.ActiveCfg = Debug|x64
+		{51E5F6B9-FECA-1BAD-2431-8A11CDC7409E}.Debug|x64.Build.0 = Debug|x64
+		{51E5F6B9-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.ActiveCfg = Release|Win32
+		{51E5F6B9-FECA-1BAD-2431-8A11CDC7409E}.Release|Win32.Build.0 = Release|Win32
+		{51E5F6B9-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.ActiveCfg = Release|x64
+		{51E5F6B9-FECA-1BAD-2431-8A11CDC7409E}.Release|x64.Build.0 = Release|x64
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

Modified: qpid/branches/cmake/qpid/cpp/src/tests/topic_listener.vcproj
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/topic_listener.vcproj?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/topic_listener.vcproj (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/topic_listener.vcproj Thu Apr 23 21:06:35 2009
@@ -3,7 +3,7 @@
 	ProjectType="Visual C++"
 	Version="9.00"
 	Name="topic_listener"
-	ProjectGUID="{9392D1EE-FECA-1BAD-2431-8A11DB0D67CE}"
+	ProjectGUID="{9392D1EE-FECA-1BAD-2431-8A11CDC7409E}"
 	RootNamespace="topic_listener"
 	Keyword="Win32Proj"
 	SignManifests="true"

Modified: qpid/branches/cmake/qpid/cpp/src/tests/topic_publisher.vcproj
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/topic_publisher.vcproj?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/topic_publisher.vcproj (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/topic_publisher.vcproj Thu Apr 23 21:06:35 2009
@@ -3,7 +3,7 @@
 	ProjectType="Visual C++"
 	Version="9.00"
 	Name="topic_publisher"
-	ProjectGUID="{7D66FE10-FECA-1BAD-2431-8A11DB0D67CE}"
+	ProjectGUID="{7D66FE10-FECA-1BAD-2431-8A11CDC7409E}"
 	RootNamespace="topic_publisher"
 	Keyword="Win32Proj"
 	SignManifests="true"

Modified: qpid/branches/cmake/qpid/cpp/src/tests/txjob.vcproj
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/txjob.vcproj?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/txjob.vcproj (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/txjob.vcproj Thu Apr 23 21:06:35 2009
@@ -3,7 +3,7 @@
 	ProjectType="Visual C++"
 	Version="9.00"
 	Name="txjob"
-	ProjectGUID="{09034A53-FECA-1BAD-2431-8A11DB0D67CE}"
+	ProjectGUID="{09034A53-FECA-1BAD-2431-8A11CDC7409E}"
 	RootNamespace="txjob"
 	Keyword="Win32Proj"
 	SignManifests="true"

Modified: qpid/branches/cmake/qpid/cpp/src/tests/txshift.vcproj
URL: http://svn.apache.org/viewvc/qpid/branches/cmake/qpid/cpp/src/tests/txshift.vcproj?rev=768053&r1=768052&r2=768053&view=diff
==============================================================================
--- qpid/branches/cmake/qpid/cpp/src/tests/txshift.vcproj (original)
+++ qpid/branches/cmake/qpid/cpp/src/tests/txshift.vcproj Thu Apr 23 21:06:35 2009
@@ -3,7 +3,7 @@
 	ProjectType="Visual C++"
 	Version="9.00"
 	Name="txshift"
-	ProjectGUID="{6E3B2A6B-FECA-1BAD-2431-8A11DB0D67CE}"
+	ProjectGUID="{6E3B2A6B-FECA-1BAD-2431-8A11CDC7409E}"
 	RootNamespace="txshift"
 	Keyword="Win32Proj"
 	SignManifests="true"



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