Update results parsing script for HA tests
- allow for different workspaces
diff --git a/TestON/dependencies/Jenkins_getresult_HA.py b/TestON/dependencies/Jenkins_getresult_HA.py
new file mode 100755
index 0000000..f3ea459
--- /dev/null
+++ b/TestON/dependencies/Jenkins_getresult_HA.py
@@ -0,0 +1,117 @@
+#!/usr/bin/env python
+
+import sys
+import os
+import re
+import datetime
+import time
+import argparse
+import shutil
+
+parser = argparse.ArgumentParser()
+parser.add_argument("-n", "--name", help="Comma Separated string of test names. Ex: --name='test1, test2, test3'")
+parser.add_argument("-w", "--workspace", help="The name of the Jenkin's job/workspace where csv files will be saved'")
+args = parser.parse_args()
+
+#Pass in test names as a comma separated string argument.
+#Example: ./Jenkins_getresult.py "Test1,Test2,Test3,Test4"
+name_list = args.name.split(",")
+result_list = map(lambda x: x.strip(), name_list)
+job = args.workspace
+if job is None:
+ job = ""
+print job
+
+#NOTE: testnames list should be in order in which it is run
+testnames = result_list
+output = ''
+header = ''
+graphs = ''
+testdate = datetime.datetime.now()
+#workspace = "/var/lib/jenkins/workspace/ONOS-HA"
+workspace = "/var/lib/jenkins/workspace/"
+workspace = workspace + job
+
+header +="<p>**************************************</p>"
+header +=testdate.strftime('Jenkins test result for %H:%M on %b %d, %Y. %Z')
+
+
+#NOTE: CASE SPECIFIC THINGS
+
+#THIS LINE IS LOUSY FIXME
+if any("HA" in s for s in testnames):
+ ##Graphs
+ graphs += '<ac:structured-macro ac:name="html">\n'
+ graphs += '<ac:plain-text-body><![CDATA[\n'
+ graphs += '<iframe src="https://onos-jenkins.onlab.us/job/'+job+'/plot/getPlot?index=2&width=500&height=300" noborder="0" width="500" height="300" scrolling="yes" seamless="seamless"></iframe>\n'
+ graphs += '<iframe src="https://onos-jenkins.onlab.us/job/'+job+'/plot/getPlot?index=1&width=500&height=300" noborder="0" width="500" height="300" scrolling="yes" seamless="seamless"></iframe>\n'
+ graphs += '<iframe src="https://onos-jenkins.onlab.us/job/'+job+'/plot/getPlot?index=0&width=500&height=300" noborder="0" width="500" height="300" scrolling="yes" seamless="seamless"></iframe>\n'
+ graphs += '<iframe src="https://onos-jenkins.onlab.us/job/'+job+'/plot/getPlot?index=3&width=500&height=300" noborder="0" width="500" height="300" scrolling="yes" seamless="seamless"></iframe>\n'
+ graphs += ']]></ac:plain-text-body>\n'
+ graphs += '</ac:structured-macro>\n'
+ header +="<p> <a href='https://wiki.onosproject.org/display/OST/Test+Plan+-+HA'>Test Plan for HA Test Cases</a></p>"
+
+
+# ***
+
+
+#TestON reporting
+for test in testnames:
+ passes = 0
+ fails = 0
+ name = os.popen("ls /home/admin/ONLabTest/TestON/logs/ -rt | grep %s_ | tail -1" % test).read().split()[0]
+ path = "/home/admin/ONLabTest/TestON/logs/" + name + "/"
+ try:
+ #IF exists, move the csv file to the workspace
+ shutil.copy(path + test + ".csv", workspace)
+ except IOError:
+ #File probably doesn't exist
+ pass
+
+ output +="<p></p>"
+ #output +=" Date: %s, %s %s" % (name.split("_")[2], name.split("_")[1], name.split("_")[3]) + "<p>*******************<p>"
+ #Open the latest log folder
+ output += "<h2>Test "+str(test)+"</h2><p>************************************</p>"
+
+ f = open(path + name + ".rpt")
+
+ #Parse through each line of logs and look for specific strings to output to wiki.
+ #NOTE: with current implementation, you must specify which output to output to wiki by using
+ #main.log.report("") since it is looking for the [REPORT] tag in the logs
+ for line in f:
+ if re.search("Result summary for Testcase", line):
+ output += "<h3>"+str(line)+"</h3>"
+ #output += "<br>"
+ if re.search("\[REPORT\]", line):
+ line_split = line.split("] ")
+ #line string is split by bracket, and first two items (log tags) in list are omitted from output
+ #join is used to convert list to string
+ line_str = ''.join(line_split[2:])
+ output += "<p>"
+ output += line_str
+ output += "</p>"
+ if re.search("Result:", line):
+ output += "<p>"
+ output += line
+ output += "</p>"
+ if re.search("Pass", line):
+ passes = passes + 1
+ elif re.search("Fail", line):
+ fails = fails + 1
+ f.close()
+ #https://wiki.onosproject.org/display/OST/Test+Results+-+HA#Test+Results+-+HA
+ #Example anchor on new wiki: #TestResults-HA-TestHATestSanity
+ page_name = "TestResults-HA-Test"
+
+ header += "<li><a href=\'#" + str(page_name) + str(test) + "\'> " + str(test) + " - Results: " + str(passes) + " Passed, " + str(fails) + " Failed</a></li>"
+
+ #*********************
+ #include any other phrase specific to case you would like to include in wiki here
+ if test == "IntentPerf":
+ output += "URL to Historical Performance results data: <a href='http://10.128.5.54perf.html'>Perf Graph</a>"
+ #*********************
+
+#header_file = open("/tmp/header_ha.txt",'w')
+#header_file.write(header)
+output = header + graphs + output
+print output