summaryrefslogtreecommitdiff
path: root/cpp/perftest
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2007-08-15 14:56:51 +0000
committerAlan Conway <aconway@apache.org>2007-08-15 14:56:51 +0000
commit4ea2e527fedb69bd0ae93e79acefebf106b34318 (patch)
tree6310181a0d61b675ccd97491ba52c161883434a0 /cpp/perftest
parent8c9a768363eb8a5069920adc054eb89295584db1 (diff)
downloadqpid-python-4ea2e527fedb69bd0ae93e79acefebf106b34318.tar.gz
* perftest/topic_publisher.cpp, topic_listener.cpp:
Combined into a single preftest.cpp executable and moved to src/tests. New perftest: - Supports all client-side options (--host, --port etc.) - Can be run as producer (--listen), consumer (--publish) or both. - --count specifies number of messages (default 500000 as before) git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@566211 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/perftest')
-rw-r--r--cpp/perftest/Makefile.am11
-rw-r--r--cpp/perftest/topic_listener.cpp121
-rw-r--r--cpp/perftest/topic_publisher.cpp188
3 files changed, 0 insertions, 320 deletions
diff --git a/cpp/perftest/Makefile.am b/cpp/perftest/Makefile.am
deleted file mode 100644
index 41ece4452c..0000000000
--- a/cpp/perftest/Makefile.am
+++ /dev/null
@@ -1,11 +0,0 @@
-noinst_PROGRAMS=topic_listener topic_publisher
-INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/src/gen -I$(top_builddir)src/gen
-lib_client = $(top_builddir)/src/libqpidclient.la
-
-
-topic_listener_LDADD=$(lib_client)
-topic_listener_SOURCES=topic_listener.cpp
-
-topic_publisher_LDADD=$(lib_client)
-topic_publisher_SOURCES=topic_publisher.cpp
-
diff --git a/cpp/perftest/topic_listener.cpp b/cpp/perftest/topic_listener.cpp
deleted file mode 100644
index e9d31f3a29..0000000000
--- a/cpp/perftest/topic_listener.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- *
- */
-
-/**
- * Test hack code -- will upadte into a harness, work in progress
- */
-
-#include "qpid/QpidError.h"
-#include "qpid/client/ClientChannel.h"
-#include "qpid/client/Connection.h"
-#include "qpid/client/ClientExchange.h"
-#include "qpid/client/MessageListener.h"
-#include "qpid/client/ClientQueue.h"
-#include "qpid/sys/Monitor.h"
-#include <unistd.h>
-#include "qpid/sys/Time.h"
-#include <cstdlib>
-#include <iostream>
-#include <time.h>
-
-using namespace qpid::client;
-using namespace qpid::sys;
-using namespace std;
-
-
-bool done = 0;
-
-class Listener : public MessageListener{
- string queueName;
-public:
- virtual void received(Message& msg);
- ~Listener() { };
- Listener (string& _queueName): queueName(_queueName){};
-};
-
-
-int main() {
- Connection connection;
- Channel channel;
- Message msg;
- Message msg1;
- cout << "Starting listener" << endl;
- try {
- connection.open("127.0.0.1", 5672, "guest", "guest", "/test");
- connection.openChannel(channel);
- channel.start();
-
- string queueControl = "control";
- Queue response(queueControl);
- channel.declareQueue(response);
- channel.bind(Exchange::STANDARD_TOPIC_EXCHANGE, response, queueControl);
-
-
- while (!channel.get(msg, response, AUTO_ACK)) {
- cout <<" waiting... " << endl;
- sleep(1);
- }
- string queueName =msg.getData();
- string queueNameC =queueName+ "-1";
-
- cout << "Using Queue:" << queueName << endl;
- cout << "Reply Queue:" << queueNameC << endl;
- // create consume queue
- Queue consume(queueName);
- channel.declareQueue(consume);
- channel.bind(Exchange::STANDARD_TOPIC_EXCHANGE, consume, queueName);
-
-
- // create completion queue
- Queue completion(queueNameC);
- channel.declareQueue(completion);
- channel.bind(Exchange::STANDARD_TOPIC_EXCHANGE, completion, queueNameC);
-
- Listener listener(queueName);
- channel.consume(consume, queueName, &listener);
- cout << "Consuming" << endl;
-
-
- while (!done)
- sleep(1);
-
- // complete.
- msg1.setData(queueName);
- channel.publish(msg1, Exchange::STANDARD_TOPIC_EXCHANGE, queueNameC);
-
-
- channel.close();
- connection.close();
- return 0;
- } catch(const std::exception& error) {
- cout << "Unexpected exception: " << error.what() << endl;
- }
- connection.close();
- return 1;
-}
-
-void Listener::received(Message& msg) {
- if (msg.getData() == queueName)
- {
- cout << "Done:" << queueName <<endl;
- done = 1;
- }
-}
diff --git a/cpp/perftest/topic_publisher.cpp b/cpp/perftest/topic_publisher.cpp
deleted file mode 100644
index 80815fb143..0000000000
--- a/cpp/perftest/topic_publisher.cpp
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- *
- */
-
-/**
- * Test hack code -- will upadte into a harness, work in progress
- */
-
-#include "qpid/QpidError.h"
-#include "qpid/client/ClientChannel.h"
-#include "qpid/client/Connection.h"
-#include "qpid/client/ClientExchange.h"
-#include "qpid/client/MessageListener.h"
-#include "qpid/client/ClientQueue.h"
-#include "qpid/sys/Monitor.h"
-#include <unistd.h>
-#include "qpid/sys/Time.h"
-#include <cstdlib>
-#include <iostream>
-#include <iomanip>
-#include <time.h>
-
-using namespace qpid::client;
-using namespace qpid::sys;
-using std::string;
-
-
-bool done = 0;
-
-
-struct timespec operator-(const struct timespec& lhs, const struct timespec& rhs) {
- timespec r;
- r.tv_nsec = lhs.tv_nsec - rhs.tv_nsec;
- r.tv_sec = lhs.tv_sec - rhs.tv_sec;
- if (r.tv_nsec < 0) {
- r.tv_nsec += 1000000000;
- r.tv_sec -= 1;
- }
- return r;
-}
-
-std::ostream& operator<<(std::ostream& o, const struct timespec& ts) {
- o << ts.tv_sec << "." << std::setw(9) << std::setfill('0') << std::right << ts.tv_nsec;
- return o;
-}
-
-double toDouble(const struct timespec& ts) {
- return double(ts.tv_nsec)/1000000000 + ts.tv_sec;
-}
-
-class Listener : public MessageListener{
-
-void set_time() {
- timespec ts;
- if (::clock_gettime(CLOCK_REALTIME, &ts))
- std::cout << "Error" << std::endl;
- startTime = ts;
- }
-
-void print_time() {
- timespec ts;
- if (::clock_gettime(CLOCK_REALTIME, &ts))
- std::cout << "Error" << std::endl;
- std::cout << "Total Time:" << ts-startTime << std::endl;
- double rate = messageCount*2/toDouble(ts-startTime);
- std::cout << "returned Messages:" << messageCount << std::endl;
- std::cout << "round trip Rate:" << rate << std::endl;
- }
-
- struct timespec startTime;
- int messageCount;
-
- public:
-
-
- Listener(int mcount): messageCount(mcount) {
- set_time();
- }
-
- virtual void received(Message& msg) {
- print_time();
- std::cout << "Message: " << msg.getData() << std::endl;
- done = 1;
- }
-
- ~Listener() { };
-
-
-
-
-};
-
-
-int main() {
- Connection connection;
- Channel channel;
- Message msg;
- try {
- connection.open("127.0.0.1", 5672, "guest", "guest", "/test");
- connection.openChannel(channel);
- channel.start();
-
- string queueControl = "control";
- Queue response(queueControl);
- channel.declareQueue(response);
- channel.bind(Exchange::STANDARD_TOPIC_EXCHANGE, response, queueControl);
-
- string queueName ="queue01";
- string queueNameC =queueName+"-1";
-
- // create publish queue
- Queue publish(queueName);
- channel.declareQueue(publish);
- channel.bind(Exchange::STANDARD_TOPIC_EXCHANGE, publish, queueName);
-
- // create completion queue
- Queue completion(queueNameC);
- channel.declareQueue(completion);
- channel.bind(Exchange::STANDARD_TOPIC_EXCHANGE, completion, queueNameC);
-
- // pass queue name
- msg.setData(queueName);
- channel.publish(msg, Exchange::STANDARD_TOPIC_EXCHANGE, queueControl);
-
- std::cout << "Setup return queue:"<< queueNameC << std::endl;
-
- int count = 500000;
- Listener listener(count);
- channel.consume(completion, queueNameC, &listener);
- std::cout << "Setup consumer:"<< queueNameC << std::endl;
-
-
-
-
- struct timespec startTime;
- if (::clock_gettime(CLOCK_REALTIME, &startTime))
- std::cout << "Error" << std::endl;
-
- for (int i=0; i<count; i++) {
- msg.setData("Message 0123456789 ");
- channel.publish(msg, Exchange::STANDARD_TOPIC_EXCHANGE, queueName);
- }
-
- struct timespec endTime;
- if (::clock_gettime(CLOCK_REALTIME, &endTime))
- std::cout << "Error" << std::endl;
- std::cout << "publish Time:" << endTime-startTime << std::endl;
- double rate = count/toDouble(endTime-startTime);
- std::cout << "publish Messages:" << count << std::endl;
- std::cout << "publish Rate:" << rate << std::endl;
-
-
- msg.setData(queueName); // last message to queue.
- channel.publish(msg, Exchange::STANDARD_TOPIC_EXCHANGE, queueName);
-
- std::cout << "wait:"<< queueNameC << std::endl;
-
- while (!done)
- sleep(1);
-
-
- channel.close();
- connection.close();
- return 0;
- } catch(const std::exception& error) {
- std::cout << error.what() << std::endl;
- }
- return 1;
-}
-
-