Author: aconway
Date: Tue Jul  3 11:27:06 2007
New Revision: 552941

URL: http://svn.apache.org/viewvc?view=rev&rev=552941
Log:

 * src/tests/cluster_client.cpp: Cluster client test not yet included in test 
harness.
 * src/tests/start_cluster,src/tests/stop_cluster: scripts to start/stop 
cluster of
   processes on localhost.

Added:
    incubator/qpid/trunk/qpid/cpp/src/tests/cluster_client.cpp   (with props)
    incubator/qpid/trunk/qpid/cpp/src/tests/start_cluster   (with props)
    incubator/qpid/trunk/qpid/cpp/src/tests/stop_cluster   (with props)
Modified:
    incubator/qpid/trunk/qpid/cpp/src/tests/cluster.mk

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/cluster.mk
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/cluster.mk?view=diff&rev=552941&r1=552940&r2=552941
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/cluster.mk (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/cluster.mk Tue Jul  3 11:27:06 2007
@@ -29,4 +29,10 @@
 Cluster_child_SOURCES=Cluster_child.cpp Cluster.h
 Cluster_child_LDADD=$(lib_cluster) -lboost_test_exec_monitor
 
+# TODO aconway 2007-07-03: In progress
+#TESTS+=cluster_client
+check_PROGRAMS+=cluster_client
+cluster_client_SOURCES=cluster_client.cpp
+cluster_client_LDADD=$(lib_client) -lboost_unit_test_framework
+
 endif

Added: incubator/qpid/trunk/qpid/cpp/src/tests/cluster_client.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/cluster_client.cpp?view=auto&rev=552941
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/cluster_client.cpp (added)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/cluster_client.cpp Tue Jul  3 
11:27:06 2007
@@ -0,0 +1,77 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "qpid/client/Connection.h"
+#include "qpid/shared_ptr.h"
+
+#define BOOST_AUTO_TEST_MAIN    // Must come before #include<boost/test/*>
+#include <boost/test/auto_unit_test.hpp>
+
+#include <fstream>
+#include <vector>
+#include <functional>
+
+using namespace std;
+using namespace qpid;
+using namespace qpid::client;
+
+struct ClusterConnections : public vector<shared_ptr<Connection> > {
+    ClusterConnections() {
+        ifstream portfile("cluster.ports");
+        BOOST_REQUIRE(portfile.good());
+        portfile >> ws;
+        while (portfile.good()) {
+            uint16_t port;
+            portfile >> port >> ws;
+            push_back(make_shared_ptr(new Connection(port)));
+            back()->open("localhost", port);
+        }
+        BOOST_REQUIRE(size() > 1);
+    }
+
+    ~ClusterConnections() {
+        for (iterator i = begin(); i != end(); ++i ){
+            (*i)->close();
+        }
+    }
+};
+
+BOOST_AUTO_TEST_CASE(testWiringReplication) {
+    ClusterConnections cluster;
+    BOOST_REQUIRE(cluster.size() > 1);
+
+    Exchange fooEx("FooEx", Exchange::TOPIC_EXCHANGE);
+    Queue fooQ("FooQ");
+    
+    Channel broker0;
+    cluster[0]->openChannel(broker0);
+    broker0.declareExchange(fooEx);
+    broker0.declareQueue(fooQ);
+    broker0.bind(fooEx, fooQ, "FooKey");
+
+    Channel broker1;
+    cluster[1]->openChannel(broker1);
+    broker1.publish(Message("hello"), fooEx, "FooKey");
+    Message m;
+    BOOST_REQUIRE(broker1.get(m, fooQ));
+    BOOST_REQUIRE_EQUAL(m.getData(), "hello");
+}
+
+
+
+    

Propchange: incubator/qpid/trunk/qpid/cpp/src/tests/cluster_client.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/qpid/trunk/qpid/cpp/src/tests/cluster_client.cpp
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/qpid/trunk/qpid/cpp/src/tests/start_cluster
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/start_cluster?view=auto&rev=552941
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/start_cluster (added)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/start_cluster Tue Jul  3 11:27:06 
2007
@@ -0,0 +1,19 @@
+#!/bin/sh
+# Start a cluster of brokers on local host.
+# Print the cluster's URL.
+#
+
+test -f cluster.ports && { echo "cluster.ports file already exists" ; exit 1; }
+test -z "$*" && { echo "Usage: $0 cluster-size [options]"; exit 1; }
+
+SIZE=$1
+shift
+OPTS=$*
+
+for (( i=0; i<SIZE; ++i )); do
+    PORT=`../qpidd -dp0 --log.output=broker$i.log $OPTS` || exit 1
+    PORTS="$PORT $PORTS"
+done
+echo $PORTS > cluster.ports
+    
+ 

Propchange: incubator/qpid/trunk/qpid/cpp/src/tests/start_cluster
------------------------------------------------------------------------------
    svn:executable = *

Added: incubator/qpid/trunk/qpid/cpp/src/tests/stop_cluster
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/stop_cluster?view=auto&rev=552941
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/stop_cluster (added)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/stop_cluster Tue Jul  3 11:27:06 
2007
@@ -0,0 +1,16 @@
+#!/bin/sh
+# Stop brokers on ports listed in cluster.ports
+
+
+PORTS=`cat cluster.ports`
+for PORT in $PORTS ; do
+    ../qpidd -qp $PORT || ERROR="$ERROR $PORT"
+done
+
+if [ -n "$ERROR" ]; then
+    echo "Errors stopping brokers on ports: $ERROR"
+    echo $ERROR > cluster.ports
+    exit 1
+else
+    rm cluster.ports
+fi

Propchange: incubator/qpid/trunk/qpid/cpp/src/tests/stop_cluster
------------------------------------------------------------------------------
    svn:executable = *


Reply via email to