diff options
| author | Alan Conway <aconway@apache.org> | 2010-04-13 17:43:12 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2010-04-13 17:43:12 +0000 |
| commit | 2fe9565129add8c1202ff88878a936660e6be551 (patch) | |
| tree | 547e68a28da179e59d98395bc3cb1e76b43453f6 /cpp/src | |
| parent | b8a284439c00e81c21307f651c71f8256ae725f9 (diff) | |
| download | qpid-python-2fe9565129add8c1202ff88878a936660e6be551.tar.gz | |
qpid_cpp_benchmark: print send/receive stats side-by-side
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@933719 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
| -rw-r--r-- | cpp/src/tests/Statistics.cpp | 3 | ||||
| -rwxr-xr-x | cpp/src/tests/qpid_cpp_benchmark | 45 |
2 files changed, 29 insertions, 19 deletions
diff --git a/cpp/src/tests/Statistics.cpp b/cpp/src/tests/Statistics.cpp index 87cab2926c..a3852e64af 100644 --- a/cpp/src/tests/Statistics.cpp +++ b/cpp/src/tests/Statistics.cpp @@ -81,7 +81,7 @@ void ThroughputAndLatency::report(ostream& o) const { o << fixed << setprecision(2) << '\t' << min << '\t' << max << '\t' << total/messages; else - o << "Can't compute latency for 0 messages."; + o << "\t<0 messages, can't compute latency>"; } ReporterBase::ReporterBase(ostream& o, int batch, bool wantHeader) @@ -109,6 +109,7 @@ void ReporterBase::message(const messaging::Message& m) { /** Print overall report. */ void ReporterBase::report() { + if (!overall.get()) overall = create(); header(); overall->report(out); out << endl; diff --git a/cpp/src/tests/qpid_cpp_benchmark b/cpp/src/tests/qpid_cpp_benchmark index 177231f026..e4ff659393 100755 --- a/cpp/src/tests/qpid_cpp_benchmark +++ b/cpp/src/tests/qpid_cpp_benchmark @@ -42,6 +42,9 @@ op.add_option("--content-size", default=1024, type="int", metavar="BYTES", help="message size in bytes (default %default)") op.add_option("--ack-frequency", default=0, metavar="N", type="int", help="receiver ack's every N messages, 0 means unconfirmed") +op.add_option("--no-report-header", dest="report_header", default=True, + action="store_false", help="don't print header on report") +op.add_option("--repeat", default=1, metavar="N", help="repeat N times", type="int") def start_receive(queue, opts, ready_queue): return Popen(["qpid_receive", @@ -51,7 +54,8 @@ def start_receive(queue, opts, ready_queue): "--print-content=no", "--report-total", "--ack-frequency", str(opts.ack_frequency), - "--ready-address", ready_queue + "--ready-address", ready_queue, + "--report-header=no" ], stdout=PIPE, stderr=STDOUT) @@ -63,7 +67,9 @@ def start_send(queue, opts): "--send-eos", str(opts.receivers), "--content-size", str(opts.content_size), "--rate", str(opts.send_rate), - "--report-total"], + "--report-total", + "--report-header=no" + ], stdout=PIPE, stderr=STDOUT) def wait_for_output(p): @@ -79,11 +85,16 @@ def delete_queues(queues, broker): except qpid.messaging.exceptions.SendError:pass # Ignore "no such queue" c.close() -def skip_first_line(text): return "\n".join(text.split("\n")[1:]) - -def print_output(processes): - print wait_for_output(processes.pop(0)), - for p in processes: print skip_first_line(wait_for_output(p)), +def print_output(senders, receivers, want_header): + send_stats = sum([wait_for_output(p).split("\n")[:-1] for p in senders],[]) + recv_stats = sum([wait_for_output(p).split("\n")[:-1] for p in receivers],[]) + def empty_if_none(s): + if s: return s + else: return "" + stats = map(lambda s,r: empty_if_none(s)+"\t\t"+empty_if_none(r), + send_stats, recv_stats) + if want_header: print "send-tp\t\trecv-tp\tl-min\tl-max\tl-avg" + for s in stats: print s; class ReadyReceiver: """A receiver for ready messages""" @@ -105,17 +116,15 @@ def main(): opts, args = op.parse_args() ready_queue="%s-ready"%(opts.queue_name) queues = ["%s-%s"%(opts.queue_name, i) for i in xrange(opts.queues)] - delete_queues(queues, opts.broker) - ready_receiver = ReadyReceiver(ready_queue, opts.broker) - receivers = [start_receive(q, opts, ready_queue) for q in queues for i in xrange(opts.receivers)] - ready_receiver.wait(len(receivers)) # Wait for receivers to be ready. - senders = [start_send(q, opts) for q in queues for i in xrange(opts.senders)] - print "Send" - print_output(senders) - print "\nReceive" - print_output(receivers) - print - delete_queues(queues, opts.broker) + for i in xrange(opts.repeat): + delete_queues(queues, opts.broker) + ready_receiver = ReadyReceiver(ready_queue, opts.broker) + receivers = [start_receive(q, opts, ready_queue) + for q in queues for i in xrange(opts.receivers)] + ready_receiver.wait(len(receivers)) # Wait for receivers to be ready. + senders = [start_send(q, opts) for q in queues for i in xrange(opts.senders)] + print_output(senders, receivers, opts.report_header) + delete_queues(queues, opts.broker) if __name__ == "__main__": main() |
