summaryrefslogtreecommitdiff
path: root/cpp/src/tests
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2007-07-03 18:27:06 +0000
committerAlan Conway <aconway@apache.org>2007-07-03 18:27:06 +0000
commit6c656d8b08e7ad75bd5f2058826a996d467ad5e5 (patch)
tree258b5248e7b861c84520d3de7dd3bb52ab11e163 /cpp/src/tests
parent84856db9f9312ba65f82a129d7f2761ad80d83fc (diff)
downloadqpid-python-6c656d8b08e7ad75bd5f2058826a996d467ad5e5.tar.gz
* 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. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@552941 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests')
-rw-r--r--cpp/src/tests/cluster.mk6
-rw-r--r--cpp/src/tests/cluster_client.cpp77
-rwxr-xr-xcpp/src/tests/start_cluster19
-rwxr-xr-xcpp/src/tests/stop_cluster16
4 files changed, 118 insertions, 0 deletions
diff --git a/cpp/src/tests/cluster.mk b/cpp/src/tests/cluster.mk
index 33e1569d3c..7407565f62 100644
--- a/cpp/src/tests/cluster.mk
+++ b/cpp/src/tests/cluster.mk
@@ -29,4 +29,10 @@ check_PROGRAMS+=Cluster_child
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
diff --git a/cpp/src/tests/cluster_client.cpp b/cpp/src/tests/cluster_client.cpp
new file mode 100644
index 0000000000..421a33a40a
--- /dev/null
+++ b/cpp/src/tests/cluster_client.cpp
@@ -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");
+}
+
+
+
+
diff --git a/cpp/src/tests/start_cluster b/cpp/src/tests/start_cluster
new file mode 100755
index 0000000000..c2806bb225
--- /dev/null
+++ b/cpp/src/tests/start_cluster
@@ -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
+
+
diff --git a/cpp/src/tests/stop_cluster b/cpp/src/tests/stop_cluster
new file mode 100755
index 0000000000..f5db5a4488
--- /dev/null
+++ b/cpp/src/tests/stop_cluster
@@ -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