You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2010/04/13 19:43:12 UTC

svn commit: r933719 - in /qpid/trunk/qpid/cpp/src/tests: Statistics.cpp qpid_cpp_benchmark

Author: aconway
Date: Tue Apr 13 17:43:12 2010
New Revision: 933719

URL: http://svn.apache.org/viewvc?rev=933719&view=rev
Log:
qpid_cpp_benchmark: print send/receive stats side-by-side

Modified:
    qpid/trunk/qpid/cpp/src/tests/Statistics.cpp
    qpid/trunk/qpid/cpp/src/tests/qpid_cpp_benchmark

Modified: qpid/trunk/qpid/cpp/src/tests/Statistics.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/Statistics.cpp?rev=933719&r1=933718&r2=933719&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/Statistics.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/Statistics.cpp Tue Apr 13 17:43:12 2010
@@ -81,7 +81,7 @@ void ThroughputAndLatency::report(ostrea
         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 messagi
 
 /** Print overall report. */
 void ReporterBase::report() {
+    if (!overall.get()) overall = create();
     header();
     overall->report(out);
     out << endl;

Modified: qpid/trunk/qpid/cpp/src/tests/qpid_cpp_benchmark
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/qpid_cpp_benchmark?rev=933719&r1=933718&r2=933719&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/qpid_cpp_benchmark (original)
+++ qpid/trunk/qpid/cpp/src/tests/qpid_cpp_benchmark Tue Apr 13 17:43:12 2010
@@ -42,6 +42,9 @@ op.add_option("--content-size", default=
               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_que
                   "--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()
 



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org