summaryrefslogtreecommitdiff
path: root/cpp/src/tests/cluster_client.cpp
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/cluster_client.cpp
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/cluster_client.cpp')
-rw-r--r--cpp/src/tests/cluster_client.cpp77
1 files changed, 77 insertions, 0 deletions
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");
+}
+
+
+
+