You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by cc...@apache.org on 2009/01/06 21:22:34 UTC
svn commit: r732096 - /qpid/trunk/qpid/cpp/src/tests/latencytest.cpp
Author: cctrieloff
Date: Tue Jan 6 12:22:34 2009
New Revision: 732096
URL: http://svn.apache.org/viewvc?rev=732096&view=rev
Log:
Add option to use single connection for all producers, and consumers to test high queue count configurations without using many physical connections.
Modified:
qpid/trunk/qpid/cpp/src/tests/latencytest.cpp
Modified: qpid/trunk/qpid/cpp/src/tests/latencytest.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/latencytest.cpp?rev=732096&r1=732095&r2=732096&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/latencytest.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/latencytest.cpp Tue Jan 6 12:22:34 2009
@@ -55,16 +55,19 @@
bool csv;
bool durable;
string base;
+ bool singleConnect;
Args() : size(256), count(1000), rate(0), reportFrequency(1000),
timeLimit(0), queues(1),
prefetch(100), ack(0),
- durable(false), base("latency-test")
+ durable(false), base("latency-test"), singleConnect(false)
+
{
addOptions()
("size", optValue(size, "N"), "message size")
("queues", optValue(queues, "N"), "number of queues")
+ ("single-connection", optValue(singleConnect, "yes|no"), "Use one connection for multiple sessions.")
("count", optValue(count, "N"), "number of messages to send")
("rate", optValue(rate, "N"), "target message rate (causes count to be ignored)")
("sync", optValue(sync), "send messages synchronously")
@@ -85,6 +88,7 @@
Args opts;
double c_min, c_avg, c_max;
+Connection globalConnection;
uint64_t current_time()
{
@@ -109,14 +113,15 @@
class Client : public Runnable
{
protected:
- Connection connection;
+ Connection* connection;
+ Connection localConnection;
AsyncSession session;
Thread thread;
string queue;
public:
Client(const string& q);
- virtual ~Client() {}
+ virtual ~Client();
void start();
void join();
@@ -171,8 +176,14 @@
Client::Client(const string& q) : queue(q)
{
- opts.open(connection);
- session = connection.newSession();
+ if (opts.singleConnect){
+ connection = &globalConnection;
+ if (!globalConnection.isOpen()) opts.open(globalConnection);
+ }else{
+ connection = &localConnection;
+ opts.open(localConnection);
+ }
+ session = connection->newSession();
}
void Client::start()
@@ -189,8 +200,16 @@
{
try{
test();
+ } catch(const std::exception& e) {
+ std::cout << "Error in receiver: " << e.what() << std::endl;
+ }
+}
+
+Client::~Client()
+{
+ try{
session.close();
- connection.close();
+ connection->close();
} catch(const std::exception& e) {
std::cout << "Error in receiver: " << e.what() << std::endl;
}