summaryrefslogtreecommitdiff
path: root/cpp/src/tests/perftest.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2007-12-14 11:24:45 +0000
committerGordon Sim <gsim@apache.org>2007-12-14 11:24:45 +0000
commit7409998c802dd46ca283a84f6789bd65381b3c2e (patch)
treef8c899d22d41705c8f0682fb88c8de16150c7b68 /cpp/src/tests/perftest.cpp
parent7556017af46c7ddae2fcbdccbdee07b5fa7892bc (diff)
downloadqpid-python-7409998c802dd46ca283a84f6789bd65381b3c2e.tar.gz
Allow the queue policy to be set through command line options
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@604170 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests/perftest.cpp')
-rw-r--r--cpp/src/tests/perftest.cpp23
1 files changed, 16 insertions, 7 deletions
diff --git a/cpp/src/tests/perftest.cpp b/cpp/src/tests/perftest.cpp
index 8ba0f21fc5..f844e9bb19 100644
--- a/cpp/src/tests/perftest.cpp
+++ b/cpp/src/tests/perftest.cpp
@@ -26,6 +26,7 @@
#include "qpid/client/Connection.h"
#include "qpid/client/Completion.h"
#include "qpid/client/Message.h"
+#include "qpid/framing/FieldTable.h"
#include "qpid/sys/Time.h"
#include <boost/lexical_cast.hpp>
@@ -68,6 +69,10 @@ struct Opts : public TestOptions {
// Actions
bool setup, control, publish, subscribe;
+ // Queue policy
+ uint32_t queueMaxCount;
+ uint64_t queueMaxSize;
+
// Publisher
size_t pubs;
size_t count ;
@@ -115,7 +120,10 @@ struct Opts : public TestOptions {
"N==0: Subscriber uses unconfirmed mode")
("qt", optValue(qt, "N"), "Create N queues or topics.")
- ("summary,s", optValue(summary), "Summary output: pubs/sec subs/sec transfers/sec Mbytes/sec");
+ ("summary,s", optValue(summary), "Summary output: pubs/sec subs/sec transfers/sec Mbytes/sec")
+
+ ("queue_max_count", optValue(queueMaxCount, "N"), "queue policy: count to trigger 'flow to disk'")
+ ("queue_max_size", optValue(queueMaxSize, "N"), "queue policy: accumulated size to trigger 'flow to disk'");
}
// Computed values
@@ -187,9 +195,9 @@ struct Client : public Runnable {
struct Setup : public Client {
- void queueInit(string name, bool durable=false) {
- session.queueDeclare(arg::queue=name, arg::durable=durable);
- session.queuePurge(arg::queue=name);
+ void queueInit(string name, bool durable=false, const framing::FieldTable& settings=framing::FieldTable()) {
+ session.queueDeclare(arg::queue=name, arg::durable=durable, arg::arguments=settings);
+ session.queuePurge(arg::queue=name).sync();
}
void run() {
@@ -198,14 +206,15 @@ struct Setup : public Client {
queueInit("sub_ready");
queueInit("sub_done");
if (opts.mode==SHARED) {
+ framing::FieldTable settings;//queue policy settings
+ settings.setInt("qpid.max_count", opts.queueMaxCount);
+ settings.setInt("qpid.max_size", opts.queueMaxSize);
for (size_t i = 0; i < opts.qt; ++i) {
ostringstream qname;
qname << "perftest" << i;
- queueInit(qname.str(), opts.durable);
+ queueInit(qname.str(), opts.durable, settings);
}
}
- // Make sure this is all completed before we return.
- session.getExecution().sendSyncRequest();
}
};