From: Marcin Siodelski Date: Mon, 2 May 2016 17:29:12 +0000 (+0200) Subject: [4493] Updated statistics calculation. X-Git-Tag: trac4106_update_base~31^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0f36ed7fc6e3ca73bc246d5b0258a587902a260d;p=thirdparty%2Fkea.git [4493] Updated statistics calculation. Presented rate is now the number of ACK/Reply messages, rather than DO/SA. --- diff --git a/src/bin/perfdhcp/test_control.cc b/src/bin/perfdhcp/test_control.cc index ec34875329..bcb28f303a 100644 --- a/src/bin/perfdhcp/test_control.cc +++ b/src/bin/perfdhcp/test_control.cc @@ -27,6 +27,7 @@ #include #include #include +#include #include 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