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_client.cpp | 77 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 cpp/src/tests/cluster_client.cpp (limited to 'cpp/src/tests/cluster_client.cpp') 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"); +} + + + + -- cgit v1.2.1