summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/tests/perftest.cpp
diff options
context:
space:
mode:
authorCarl C. Trieloff <cctrieloff@apache.org>2009-01-06 19:30:44 +0000
committerCarl C. Trieloff <cctrieloff@apache.org>2009-01-06 19:30:44 +0000
commit51409ed32a294a4691e775be15b6a3cfe9690a7b (patch)
tree36fa6f105c2f3c2664879473c1786e3a2fa056ac /qpid/cpp/src/tests/perftest.cpp
parent095bbc7349ccadfd40a782ad6a5e7851ca65f281 (diff)
downloadqpid-python-51409ed32a294a4691e775be15b6a3cfe9690a7b.tar.gz
Add option to use single connection for all producers, and consumers to test high queue count configurations without using many physical connections.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@732071 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src/tests/perftest.cpp')
-rw-r--r--qpid/cpp/src/tests/perftest.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/qpid/cpp/src/tests/perftest.cpp b/qpid/cpp/src/tests/perftest.cpp
index be9ffd846e..7c8bfe1e8b 100644
--- a/qpid/cpp/src/tests/perftest.cpp
+++ b/qpid/cpp/src/tests/perftest.cpp
@@ -92,6 +92,7 @@ struct Opts : public TestOptions {
// General
size_t qt;
+ bool singleConnect;
size_t iterations;
Mode mode;
bool summary;
@@ -109,7 +110,7 @@ struct Opts : public TestOptions {
setup(false), control(false), publish(false), subscribe(false),
pubs(1), count(500000), size(1024), confirm(true), durable(false), uniqueData(false), syncPub(false),
subs(1), ack(0),
- qt(1), iterations(1), mode(SHARED), summary(false),
+ qt(1),singleConnect(false), iterations(1), mode(SHARED), summary(false),
intervalSub(0), intervalPub(0), tx(0), txPub(0), txSub(0), commitAsync(false)
{
addOptions()
@@ -136,6 +137,8 @@ struct Opts : public TestOptions {
"N==0: Subscriber uses unconfirmed mode")
("qt", optValue(qt, "N"), "Create N queues or topics.")
+ ("single-connection", optValue(singleConnect, "yes|no"), "Use one connection for multiple sessions.")
+
("iterations", optValue(iterations, "N"), "Desired number of iterations of the test.")
("summary,s", optValue(summary), "Summary output: pubs/sec subs/sec transfers/sec Mbytes/sec")
@@ -214,21 +217,29 @@ const std::string Opts::helpText=
"Note the <other options> must be identical for all processes.\n";
Opts opts;
+Connection globalConnection;
struct Client : public Runnable {
- Connection connection;
+ Connection* connection;
+ Connection localConnection;
AsyncSession session;
Thread thread;
Client() {
- 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();
}
~Client() {
try {
session.close();
- connection.close();
+ connection->close();
} catch (const std::exception& e) {
std::cerr << "Error in shutdown: " << e.what() << std::endl;
}