]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[4493] Updated statistics calculation.
authorMarcin Siodelski <marcin@isc.org>
Mon, 2 May 2016 17:29:12 +0000 (19:29 +0200)
committerMarcin Siodelski <marcin@isc.org>
Mon, 2 May 2016 17:29:12 +0000 (19:29 +0200)
Presented rate is now the number of ACK/Reply messages,
rather than DO/SA.

src/bin/perfdhcp/test_control.cc

index ec348753297ce58583b2df2f0b20aacfdfdfa6db..bcb28f303a14dcbef26cd15d5cf61c3ec2d18bbf 100644 (file)
@@ -27,6 +27,7 @@
 #include <stdint.h>
 #include <unistd.h>
 #include <signal.h>
+#include <sstream>
 #include <sys/wait.h>
 
 using namespace std;
@@ -970,22 +971,37 @@ void
 TestControl::printRate() const {
     double rate = 0;
     CommandOptions& options = CommandOptions::instance();
+    std::string exchange_name = "4-way exchanges";
     if (options.getIpVersion() == 4) {
+        StatsMgr4::ExchangeType xchg_type =
+            options.getExchangeMode() == CommandOptions::DO_SA ?
+            StatsMgr4::XCHG_DO : StatsMgr4::XCHG_RA;
+        if (xchg_type == StatsMgr4::XCHG_DO) {
+            exchange_name = "DISCOVER-OFFER";
+        }
         double duration =
             stats_mgr4_->getTestPeriod().length().total_nanoseconds() / 1e9;
-        rate = stats_mgr4_->getRcvdPacketsNum(StatsMgr4::XCHG_DO) / duration;
+        rate = stats_mgr4_->getRcvdPacketsNum(xchg_type) / duration;
     } else if (options.getIpVersion() == 6) {
+        StatsMgr6::ExchangeType xchg_type =
+            options.getExchangeMode() == CommandOptions::DO_SA ?
+            StatsMgr6::XCHG_SA : StatsMgr6::XCHG_RR;
+        if (xchg_type == StatsMgr6::XCHG_SA) {
+            exchange_name = options.isRapidCommit() ? "Solicit-Reply" :
+                "Solicit-Advertise";
+        }
         double duration =
             stats_mgr6_->getTestPeriod().length().total_nanoseconds() / 1e9;
-        rate = stats_mgr6_->getRcvdPacketsNum(StatsMgr6::XCHG_SA) / duration;
+        rate = stats_mgr6_->getRcvdPacketsNum(xchg_type) / duration;
     }
-    std::cout << "***Rate statistics***" << std::endl;
+    std::ostringstream s;
+    s << "***Rate statistics***" << std::endl;
+    s << "Rate: " << rate << " " << exchange_name << "/second";
     if (options.getRate() > 0) {
-        std::cout << "Rate: " << rate << " exchanges/second, expected rate: "
-                  << options.getRate() << " exchanges/second" <<  std::endl << std::endl;
-    } else {
-        std::cout << "Rate: " << rate << std::endl << std::endl;
+        s << ", expected rate: " << options.getRate() << std::endl;
     }
+
+    std::cout << s.str() << std::endl;
 }
 
 void