QTIP output report format fixed 67/9167/2
authorNauman_Ahad <nauman_ahad@xflowresearch.com>
Wed, 3 Feb 2016 14:41:26 +0000 (19:41 +0500)
committerNauman_Ahad <nauman_ahad@xflowresearch.com>
Wed, 3 Feb 2016 14:53:45 +0000 (19:53 +0500)
In addtion to grahs, output report shows invidual testcase result details.

Change-Id: Id774eac340d12526fd317c1b4b00b51a22b114cf
Signed-off-by: Nauman_Ahad <nauman_ahad@xflowresearch.com>
data/report/Qtip_Report.py
data/report/get_results.py [new file with mode: 0644]

index e8b52c1..5132e1b 100644 (file)
@@ -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', '<br/> ').replace(' ','&nbsp;')
+        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="<bullet>&bull;</bullet>Server Type: Dell PowerEdge R630 Server"
+Stor.append(Paragraph(ptext,Style['Bullet']))
+ptext="<bullet>&bull;</bullet>CPU: Intel  Xeon E5-2698 @ 2300 MHz"
+Stor.append(Paragraph(ptext, Style["Bullet"]))
+ptext="<bullet>&bull;</bullet>RAM: 128GB"
+Stor.append(Paragraph(ptext, Style["Bullet"]))
+ptext="<bullet>&bull;</bullet>Storage SSD: 420GB"
+Stor.append(Paragraph(ptext, Style["Bullet"]))
+ptext="<bullet>&bull;</bullet>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 (file)
index 0000000..01fb808
--- /dev/null
@@ -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)))) == "<type 'dict'>":
+            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)