diff options
author | Alan Conway <aconway@apache.org> | 2007-07-03 18:27:06 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2007-07-03 18:27:06 +0000 |
commit | 6c656d8b08e7ad75bd5f2058826a996d467ad5e5 (patch) | |
tree | 258b5248e7b861c84520d3de7dd3bb52ab11e163 /cpp/src/tests | |
parent | 84856db9f9312ba65f82a129d7f2761ad80d83fc (diff) | |
download | qpid-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.mk | 6 | ||||
-rw-r--r-- | cpp/src/tests/cluster_client.cpp | 77 | ||||
-rwxr-xr-x | cpp/src/tests/start_cluster | 19 | ||||
-rwxr-xr-x | cpp/src/tests/stop_cluster | 16 |
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 |