aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--test/cpp/qps/report.cc1
-rwxr-xr-xtest/cpp/qps/run_auth_test.py47
-rw-r--r--test/cpp/util/benchmark_config.cc5
3 files changed, 45 insertions, 8 deletions
diff --git a/test/cpp/qps/report.cc b/test/cpp/qps/report.cc
index 91fe9524cb..25cc13156a 100644
--- a/test/cpp/qps/report.cc
+++ b/test/cpp/qps/report.cc
@@ -139,6 +139,7 @@ void UserDatabaseReporter::ReportQPSPerCore(const ScenarioResult& result) const
auto qpsPerCore = qps / result.server_config.threads();
+ userDataClient.setQPS(qps);
userDataClient.setQPSPerCore(qpsPerCore);
userDataClient.setConfigs(result.client_config, result.server_config);
}
diff --git a/test/cpp/qps/run_auth_test.py b/test/cpp/qps/run_auth_test.py
index c327a505b6..39a4a0ae3f 100755
--- a/test/cpp/qps/run_auth_test.py
+++ b/test/cpp/qps/run_auth_test.py
@@ -59,7 +59,7 @@ def fetchJSON(url, paramDict):
try:
response = urllib2.urlopen(req)
result = response.read()
-
+
except urllib2.HTTPError, error:
result = error.read()
@@ -71,7 +71,7 @@ def getUserInfo(accessToken):
paramDict = {}
JSONBody = fetchJSON(url, paramDict)
data = json.loads(JSONBody)
-
+
return data
# Returns true if stored access token is valid
@@ -197,11 +197,44 @@ def findTestPath(test):
# Search for test
for root, dirnames, filenames in os.walk('../../../'):
- for fileName in fnmatch.filter(filenames, '*'+testName):
- testPath = os.path.join(root, fileName)
+ for fileName in fnmatch.filter(filenames, testName):
+ testPath = os.path.join(root, fileName)
return testPath
+def getSysInfo():
+ # Fetch system information
+ sysInfo = os.popen('lscpu').readlines()
+
+ NICs = os.popen('ifconfig | cut -c1-8 | sed \'/^\s*$/d\' | sort -u').readlines()
+ nicAddrs = os.popen('ifconfig | grep -oE "inet addr:([0-9]{1,3}\.){3}[0-9]{1,3}"').readlines()
+
+ nicInfo = []
+
+ for i in range(0, len(NICs)):
+ NIC = NICs[i]
+ NIC = re.sub(r'[^\w]', '', NIC)
+
+ ethtoolProcess = subprocess.Popen(["ethtool",NIC], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ ethtoolResult = ethtoolProcess.communicate()[0]
+
+ ethtoolResultList = ethtoolResult.split('\n\t')
+ for ethtoolString in ethtoolResultList:
+ if ethtoolString.startswith('Speed'):
+ ethtoolString = ethtoolString.split(':')[1]
+ ethtoolString = ethtoolString.replace('Mb/s',' Mbps')
+ nicInfo.append(NIC + ' speed: ' + ethtoolString + '\n')
+ nicInfo.append(NIC + ' inet address: ' + nicAddrs[i].split(':')[1])
+
+ print 'Obtaining network info....'
+ tcp_rr_rate = str(os.popen('netperf -t TCP_RR -v 0').readlines()[1])
+ print 'Network info obtained'
+
+ nicInfo.append('TCP RR Transmission Rate per sec: ' + tcp_rr_rate + '\n')
+ sysInfo = sysInfo + nicInfo
+
+ return sysInfo
+
def main():
# If tokens directory does not exist, creates it
if not os.path.exists(ACCESS_TOKENS_DIR):
@@ -227,11 +260,11 @@ def main():
testPath = findTestPath(test) # Get path to test
testName = testPath.split('/')[-1] # Get test name
- # Fetch system information
- sysInfo = os.popen('lscpu').readlines()
+ sysInfo = getSysInfo()
+ print '\nBeginning test:\n'
# Run the test
- subprocess.call([testPath, '--access_token='+accessToken, '--test_name='+testName, '--sys_info='+str(sysInfo).strip('[]')])
+ subprocess.call([testPath, '--report_metrics_db=true', '--access_token='+accessToken, '--test_name='+testName, '--sys_info='+str(sysInfo).strip('[]')])
except OSError:
print 'Could not execute the test, please check test name'
diff --git a/test/cpp/util/benchmark_config.cc b/test/cpp/util/benchmark_config.cc
index 82663b6a01..250bb7ac8e 100644
--- a/test/cpp/util/benchmark_config.cc
+++ b/test/cpp/util/benchmark_config.cc
@@ -37,6 +37,8 @@
DEFINE_bool(enable_log_reporter, true,
"Enable reporting of benchmark results through GprLog");
+DEFINE_bool(report_metrics_db, false, "True if metrics to be reported to performance database");
+
DEFINE_string(access_token, "", "Authorizing JSON string for leaderboard");
DEFINE_string(test_name, "", "Name of the test being executed");
@@ -63,9 +65,10 @@ static std::shared_ptr<Reporter> InitBenchmarkReporters() {
composite_reporter->add(
std::unique_ptr<Reporter>(new GprLogReporter("LogReporter")));
}
- if(!FLAGS_access_token.empty())
+ if(FLAGS_report_metrics_db) {
composite_reporter->add(
std::unique_ptr<Reporter>(new UserDatabaseReporter("UserDataReporter", FLAGS_access_token, FLAGS_test_name, FLAGS_sys_info)));
+ }
return std::shared_ptr<Reporter>(composite_reporter);
}