Publishing packet forwarding test cases results. 07/33007/5
authorkalyanreddy <reddyx.gundarapu@intel.com>
Wed, 5 Apr 2017 13:31:26 +0000 (19:01 +0530)
committerKalyan reddy Gundarapu <reddyx.gundarapu@intel.com>
Thu, 6 Apr 2017 13:36:54 +0000 (13:36 +0000)
This patch includes scripts to push packet forwarding test results
in to local influxdb and then publish on to local grafana dashboard.

Change-Id: I2f93b13730c0a791bd1e7530e0349cd52a649b58
Co-Authored by:Srinivas <srinivas.atmakuri@tcs.com>
Signed-off-by: Gundarapu Kalyan Reddy <reddyx.gundarapu@intel.com>
ci/envs/data_publish.py [new file with mode: 0755]
ci/envs/packet_forwarding.sh [changed mode: 0644->0755]

diff --git a/ci/envs/data_publish.py b/ci/envs/data_publish.py
new file mode 100755 (executable)
index 0000000..67b3054
--- /dev/null
@@ -0,0 +1,47 @@
+from __future__ import print_function
+import glob, os
+import csv
+import json
+import sys
+import ast
+import subprocess
+from influxdb import InfluxDBClient
+
+time_stamp=sys.argv[1]
+test_type=sys.argv[2]
+results_dir=sys.argv[3]
+
+def publish_results(testtype):
+    for file in glob.glob("*.csv"):
+        print(file)
+        f = open( file, 'r' )
+        reader = csv.DictReader( f )
+        result = json.dumps( [ row for row in reader ] )
+        result = ast.literal_eval(result)
+        print(result)
+
+        for i in result:
+            test = i['id'] + '_' +testtype
+            json_body = [
+                 {
+                     "measurement": test,
+                     "tags": {
+                     "id": i['id'],
+                     "type": i['type'],
+                     "packet_size": i['packet_size']
+                     },
+                     "time": time_stamp,
+                     "fields": {
+                     "min_value": i['min_latency_ns'],
+                     "avg_value": i['avg_latency_ns'],
+                     "max_value": i['max_latency_ns']
+                     }
+                 }
+            ]
+            print(time_stamp)
+            client = InfluxDBClient('104.197.68.199', 8086, 'opnfv', '0pnfv2015', 'yardstick')
+            client.switch_database('yardstick')
+            client.write_points(json_body)
+
+os.chdir(results_dir)
+publish_results(test_type)
old mode 100644 (file)
new mode 100755 (executable)
index 643957a..c93bb27
@@ -77,6 +77,13 @@ function print_results() {
     done
 }
 
+function publish_results() {
+    test_type=$1
+    results_dir=${TEST_REPORT_LOG_DIR}/${LOG_SUBDIR}/results*
+    time_stamp=$(date -u +"%Y-%m-%d-%H-%M-%S")
+    ( cd /root/workspace/scripts ; python data_publish.py $time_stamp $test_type $results_dir )
+}
+
 function execute_vsperf() {
     # figure out list of TCs and execution parameters
     case $2 in
@@ -148,6 +155,9 @@ function execute_vsperf() {
     mkdir -p ${TEST_REPORT_LOG_DIR}/${LOG_SUBDIR}
     [ -f "$LOG_FILE" ] && mv "${LOG_FILE}" "${TEST_REPORT_LOG_DIR}/${LOG_SUBDIR}" &> /dev/null
     [ -d "$RES_DIR" ] && mv "$RES_DIR" "${TEST_REPORT_LOG_DIR}/${LOG_SUBDIR}" &> /dev/null
+
+    # Publish test cases results to Grafana Dashboard
+    publish_results $1
 }
 
 #Install vsperf and set up the environment