diff options
author | Rajith Muditha Attapattu <rajith@apache.org> | 2011-05-27 15:44:23 +0000 |
---|---|---|
committer | Rajith Muditha Attapattu <rajith@apache.org> | 2011-05-27 15:44:23 +0000 |
commit | 66765100f4257159622cefe57bed50125a5ad017 (patch) | |
tree | a88ee23bb194eb91f0ebb2d9b23ff423e3ea8e37 /cpp/src/tests/echotest.cpp | |
parent | 1aeaa7b16e5ce54f10c901d75c4d40f9f88b9db6 (diff) | |
parent | 88b98b2f4152ef59a671fad55a0d08338b6b78ca (diff) | |
download | qpid-python-rajith_jms_client.tar.gz |
Creating a branch for experimenting with some ideas for JMS client.rajith_jms_client
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/rajith_jms_client@1128369 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests/echotest.cpp')
-rw-r--r-- | cpp/src/tests/echotest.cpp | 158 |
1 files changed, 0 insertions, 158 deletions
diff --git a/cpp/src/tests/echotest.cpp b/cpp/src/tests/echotest.cpp deleted file mode 100644 index 5114ab883d..0000000000 --- a/cpp/src/tests/echotest.cpp +++ /dev/null @@ -1,158 +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. - * - */ - -#include <qpid/client/Connection.h> -#include <qpid/client/SubscriptionManager.h> -#include <qpid/client/AsyncSession.h> -#include <qpid/client/Message.h> -#include <qpid/client/MessageListener.h> -#include <qpid/sys/Time.h> -#include <qpid/Options.h> - -#include <iostream> - -using namespace qpid::client; -using namespace qpid::framing; -using namespace qpid::sys; -using namespace std; - -namespace qpid { -namespace tests { - -struct Args : public qpid::Options, - public qpid::client::ConnectionSettings -{ - bool help; - uint count; - uint size; - bool summary; - - Args() : qpid::Options("Simple latency test optins"), help(false), count(20), size(0), summary() - { - using namespace qpid; - addOptions() - ("help", optValue(help), "Print this usage statement") - ("count", optValue(count, "N"), "Number of messages to send") - ("size", optValue(count, "N"), "Size of messages") - ("broker,b", optValue(host, "HOST"), "Broker host to connect to") - ("port,p", optValue(port, "PORT"), "Broker port to connect to") - ("username", optValue(username, "USER"), "user name for broker log in.") - ("password", optValue(password, "PASSWORD"), "password for broker log in.") - ("mechanism", optValue(mechanism, "MECH"), "SASL mechanism to use when authenticating.") - ("tcp-nodelay", optValue(tcpNoDelay), "Turn on tcp-nodelay") - ("s,summary", optValue(summary), "Print only average latency."); - } -}; - -uint64_t current_time() -{ - Duration t(EPOCH, now()); - return t; -} - -class Listener : public MessageListener -{ - private: - Session session; - SubscriptionManager subscriptions; - uint counter; - const uint limit; - std::string queue; - Message request; - double total, min, max; - bool summary; - - public: - Listener(Session& session, uint limit, bool summary); - void start(uint size); - void received(Message& message); -}; - -Listener::Listener(Session& s, uint l, bool summary_) : - session(s), subscriptions(s), counter(0), limit(l), - queue(session.getId().getName()), total(), - min(std::numeric_limits<double>::max()), max(), summary(summary_) -{} - -void Listener::start(uint size) -{ - session.queueDeclare(arg::queue=queue, arg::exclusive=true, arg::autoDelete=true); - request.getDeliveryProperties().setRoutingKey(queue); - subscriptions.subscribe(*this, queue, SubscriptionSettings(FlowControl::unlimited(), ACCEPT_MODE_NONE)); - - request.getDeliveryProperties().setTimestamp(current_time()); - if (size) request.setData(std::string(size, 'X')); - async(session).messageTransfer(arg::content=request); - subscriptions.run(); -} - -void Listener::received(Message& response) -{ - //extract timestamp and compute latency: - uint64_t sentAt = response.getDeliveryProperties().getTimestamp(); - uint64_t receivedAt = current_time(); - - double latency = ((double) (receivedAt - sentAt)) / TIME_MSEC; - if (!summary) cout << "Latency: " << latency << "ms" << endl; - min = std::min(latency, min); - max = std::max(latency, max); - total += latency; - - if (++counter < limit) { - request.getDeliveryProperties().setTimestamp(current_time()); - async(session).messageTransfer(arg::content=request); - } else { - subscriptions.cancel(queue); - if (summary) cout << min << "\t" << max << "\t" << total/limit << endl; - else cout << "min: " << min << " max: " << max << " average: " << total/limit << endl; - } -} - -}} // namespace qpid::tests - -using namespace qpid::tests; - -int main(int argc, char** argv) -{ - Args opts; - opts.parse(argc, argv); - - if (opts.help) { - std::cout << opts << std::endl; - return 0; - } - - Connection connection; - try { - connection.open(opts); - Session session = connection.newSession(); - Listener listener(session, opts.count, opts.summary); - listener.start(opts.size); - - connection.close(); - return 0; - } catch(const std::exception& error) { - std::cout << error.what() << std::endl; - } - return 1; -} - - |