From 5a0ad01399b28ab2dfbb60b64734914e0dd3d2d5 Mon Sep 17 00:00:00 2001 From: Nauman_Ahad Date: Wed, 3 Feb 2016 19:41:26 +0500 Subject: QTIP output report format fixed In addtion to grahs, output report shows invidual testcase result details. Change-Id: Id774eac340d12526fd317c1b4b00b51a22b114cf Signed-off-by: Nauman_Ahad (cherry picked from commit c9d87c44a77957b5299d3a619f846f4316047102) --- data/report/Qtip_Report.py | 73 ++++++++++++++++++++++++++++++++++++++++++---- data/report/get_results.py | 49 +++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+), 5 deletions(-) create mode 100644 data/report/get_results.py diff --git a/data/report/Qtip_Report.py b/data/report/Qtip_Report.py index e8b52c1a..5132e1b6 100644 --- a/data/report/Qtip_Report.py +++ b/data/report/Qtip_Report.py @@ -1,9 +1,26 @@ +from reportlab.pdfgen import canvas from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import inch from reportlab.lib.pagesizes import letter +from reportlab.platypus import ListFlowable, ListItem import qtip_graph as graph -import get_indices as results +import get_indices as results +from get_results import report_concat +from get_results import generate_result + +def dump_result(Stor,directory, testcase): + lower_s=testcase.lower() + Stor.append(Paragraph(testcase,Style['h3'])) + l1=report_concat(directory,lower_s) + l=1 + for a in l1: + Stor.append(Paragraph(testcase+" result_"+str(l),Style['h5'])) + raw_string=generate_result(a,0) + replaced_string=raw_string.replace('\n', '
').replace(' ',' ') + Stor.append(Paragraph(replaced_string,Style['BodyText'])) + l=l+1 + doc = SimpleDocTemplate("../../results/QTIP_results.pdf",pagesize=letter, rightMargin=72,leftMargin=72, topMargin=72,bottomMargin=18) @@ -33,16 +50,62 @@ except IOError: pass Stor.append(Paragraph("Compute Suite: %f" %compute, Style['h5'])) -Stor.append(Paragraph("Storage Suite: %f" %storage, Style['h5'])) -Stor.append(Paragraph("Netowrk Suite: %f" %network, Style['h5'])) +Stor.append(Paragraph("Storage Suite: %f" %storage, Style['h5'])) +Stor.append(Paragraph("Network Suite: %f" %network, Style['h5'])) graph.plot_indices(compute,storage,network) qtip_graph=('qtip_graph.jpeg') im=Image(qtip_graph, 5*inch,4*inch) Stor.append(im) Stor.append(Spacer(0, 12)) -ptext="For Details of the Reference POD hardware, please visit: https://wiki.opnfv.org/reference_pod_hardware_details" +Stor.append(Paragraph("Reference POD", Style['h5'])) +ptext="The Dell OPNFV Lab POD3 has been taken as the reference POD against which the reference results have been collected. The POD consists of 6 identical servers. The details of such a server are:" Stor.append(Paragraph(ptext,Style['Normal'])) +ptext="Server Type: Dell PowerEdge R630 Server" +Stor.append(Paragraph(ptext,Style['Bullet'])) +ptext="CPU: Intel Xeon E5-2698 @ 2300 MHz" +Stor.append(Paragraph(ptext, Style["Bullet"])) +ptext="RAM: 128GB" +Stor.append(Paragraph(ptext, Style["Bullet"])) +ptext="Storage SSD: 420GB" +Stor.append(Paragraph(ptext, Style["Bullet"])) +ptext="Network Card: Intel 2P X520/2P I350 rNDC" +Stor.append(Paragraph(ptext, Style["Bullet"])) +ptext="Servers interconnected through a DELL S4810 switch using a 10Gbps physical link" +Stor.append(Paragraph(ptext, Style["Bullet"])) Stor.append(Spacer(0, 12)) -ptext="For Details of the Reference POD Results, please visit: https://wiki.opnfv.org/reference_pod_qtip_results" +ptext="For Further Details of the Reference POD hardware, please visit: https://wiki.opnfv.org/reference_pod_hardware_details" Stor.append(Paragraph(ptext,Style['Normal'])) +Stor.append(Spacer(0, 12)) +ptext="For Details of the Reference POD Results, please visit: https://wiki.opnfv.org/reference_pod_qtip_results" +Stor.append(Spacer(0, 12)) +Stor.append(Paragraph(ptext,Style['Normal'])) +Stor.append(Paragraph("RAW Results", Style['h1'])) +Stor.append(Paragraph("Compute Results", Style['h2'])) + +dump_result(Stor,"../../results/dhrystone/","Dhrystone_bm") +dump_result(Stor,"../../results/dhrystone/","Dhrystone_vm") + +dump_result(Stor,"../../results/whetstone/","Whetstone_bm") +dump_result(Stor,"../../results/whetstone/","Whetstone_vm") + +dump_result(Stor,"../../results/ramspeed/","Ramspeed_bm") +dump_result(Stor,"../../results/ramspeed/","Ramspeed_vm") + +dump_result(Stor,"../../results/ssl/","SSL_bm") +dump_result(Stor,"../../results/ssl/","SSL_vm") + +#dump_result(Stor,"../../results/dpi/","DPI_bm") +#dump_result(Stor,"../../results/dpi/","DPI_vm") + +Stor.append(Paragraph("Network Results", Style['h2'])) +dump_result(Stor,"../../results/iperf/","IPERF_bm") +dump_result(Stor,"../../results/iperf/","IPERF_vm") +dump_result(Stor,"../../results/iperf/","IPERF_vm_2") + +Stor.append(Paragraph("Storage Results", Style['h2'])) +dump_result(Stor,"../../results/fio/","fio_bm") +dump_result(Stor,"../../results/fio/","fio_vm") + + doc.build(Stor) +#canvas.save() diff --git a/data/report/get_results.py b/data/report/get_results.py new file mode 100644 index 00000000..01fb8080 --- /dev/null +++ b/data/report/get_results.py @@ -0,0 +1,49 @@ +import os +import json + + +def report_concat (targ_dir, testcase): + machine_temp=[]; + machines=[]; + diction={}; + + for file in os.listdir(targ_dir): + if file.endswith(".json"): + machine_temp.append(file) + + l=len(machine_temp) + + for x in range (0,l): + file_t=machine_temp[x] + with open (targ_dir+file_t) as result_file: + result_djson=json.load(result_file) + if result_djson['1 Testcase Name'] == str(testcase): + machines.append(result_djson) + return machines + +def space_count(l): + spc='' + for x in range(l): + spc=spc+' ' + return spc + + +def custom_dict(list1,list2,k): + string_1='' + for num_1 in range (0,len(list1)): + string_1=string_1+space_count(k)+str(list1[num_1][0])+"="+str(list2[num_1])+"\n" + return string_1 + +def generate_result(dict_a,k): + list_1=[] + list_2=[] + count=0 + for i,j in sorted(dict_a.iteritems()): + list_1.append([]) + list_1[count].append(i) + if (str(type(dict_a.get(i)))) == "": + list_2.append(str("\n"+generate_result(dict_a.get(i),int(k+1)))) + else: + list_2.append(dict_a.get(i)) + count=count+1 + return custom_dict(list_1,list_2,k) -- cgit 1.2.3-korg