summaryrefslogtreecommitdiff
path: root/cpp/src/tests/cluster_client.cpp
diff options
context:
space:
mode:
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");
+}
+
+
+
+