Author: gsim
Date: Mon Jun 18 15:19:27 2012
New Revision: 1351386

URL: http://svn.apache.org/viewvc?rev=1351386&view=rev
Log:
QPID-4030: Check send rate actually achieved and report if it fails to match 
the desired rate

Modified:
    qpid/trunk/qpid/cpp/src/tests/qpid-latency-test.cpp

Modified: qpid/trunk/qpid/cpp/src/tests/qpid-latency-test.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/qpid-latency-test.cpp?rev=1351386&r1=1351385&r2=1351386&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/qpid-latency-test.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/qpid-latency-test.cpp Mon Jun 18 15:19:27 2012
@@ -359,19 +359,29 @@ void Sender::sendByRate()
     }
     uint64_t interval = TIME_SEC/opts.rate;
     int64_t timeLimit = opts.timeLimit * TIME_SEC;
-    uint64_t sent = 0, missedRate = 0;
+    uint64_t sent = 0;
     AbsTime start = now();
+    AbsTime last = start;
     while (true) {
         AbsTime sentAt=now();
         msg.getDeliveryProperties().setTimestamp(Duration(EPOCH, sentAt));
         async(session).messageTransfer(arg::content=msg, arg::acceptMode=1);
         if (opts.sync) session.sync();
         ++sent;
+        if (Duration(last, sentAt) > TIME_SEC*2) {
+            Duration t(start, now());
+            //check rate actually achieved thus far
+            uint actualRate = sent / (t/TIME_SEC);
+            //report inability to stay within 1% of desired rate
+            if (actualRate < opts.rate && opts.rate - actualRate > 
opts.rate/100) {
+                std::cerr << "WARNING: Desired send rate: " << opts.rate << ", 
actual send rate: " << actualRate << std::endl;
+            }
+            last = sentAt;
+        }
+
         AbsTime waitTill(start, sent*interval);
         Duration delay(sentAt, waitTill);
-        if (delay < 0)
-            ++missedRate;
-        else
+        if (delay > 0)
             sys::usleep(delay / TIME_USEC);
         if (timeLimit != 0 && Duration(start, now()) > timeLimit) {
             session.sync();



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to