From 6c656d8b08e7ad75bd5f2058826a996d467ad5e5 Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Tue, 3 Jul 2007 18:27:06 +0000 Subject: * 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 --- cpp/src/tests/cluster.mk | 6 ++++ cpp/src/tests/cluster_client.cpp | 77 ++++++++++++++++++++++++++++++++++++++++ cpp/src/tests/start_cluster | 19 ++++++++++ cpp/src/tests/stop_cluster | 16 +++++++++ 4 files changed, 118 insertions(+) create mode 100644 cpp/src/tests/cluster_client.cpp create mode 100755 cpp/src/tests/start_cluster create mode 100755 cpp/src/tests/stop_cluster (limited to 'cpp/src') 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 +#include + +#include +#include +#include + +using namespace std; +using namespace qpid; +using namespace qpid::client; + +struct ClusterConnections : public vector > { + 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 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 -- cgit v1.2.1