[Fuego] [PATCH 1/3] ftc: gen-report: Add pdf formatter

Hoang Van Tuyen tuyen.hoangvan at toshiba-tsdv.com
Fri Mar 2 03:36:16 UTC 2018


Add a formatter for pdf report output. By default, the pdf
output file is stored in /fuego-rw/report with name report.pdf.

It uses a reportlab python library for generating the report,
So, please make sure that the library is available in the system.

Signed-off-by: Hoang Van Tuyen <tuyen.hoangvan at toshiba-tsdv.com>
---
  engine/scripts/ftc | 50 +++++++++++++++++++++++++++++++++++++++++++++++++-
  1 file changed, 49 insertions(+), 1 deletion(-)

diff --git a/engine/scripts/ftc b/engine/scripts/ftc
index c6a0f3d..0b99f94 100755
--- a/engine/scripts/ftc
+++ b/engine/scripts/ftc
@@ -2037,6 +2037,46 @@ def gen_html_report(header_data, report_data):

      return report

+# add page number for a pdf file
+def add_page_number(canvas, doc):
+    from reportlab.lib.units import mm
+
+    page_num = canvas.getPageNumber()
+    text = "Page %s" % page_num
+    canvas.drawRightString(200*mm, 20*mm, text)
+
+def gen_pdf_report(header_data, report_data, report_dir):
+    from reportlab.lib import colors
+    from reportlab.lib.pagesizes import A4
+    from reportlab.lib.styles import getSampleStyleSheet
+    from reportlab.platypus import SimpleDocTemplate, Table, 
TableStyle, Paragraph
+
+    # create a pdf file
+    doc = SimpleDocTemplate(report_dir + "report.pdf", pagesize=A4)
+    elements = []
+
+    # generate header
+    styles = getSampleStyleSheet()
+    elements.append(Paragraph("Fuego Test Report\n", styles["Heading1"]))
+    for field,val_str in header_data:
+        elements.append(Paragraph("%s: %s\n" % (field, val_str), 
styles["Normal"]))
+
+    # generate lines for this report
+    fields = report_data[0]
+
+    # create the table with a header row in each page
+    report_data = [[Paragraph(str(cell), styles["Normal"]) for cell in 
row] for row in report_data]
+    table = Table(report_data, repeatRows=1, colWidths=[75,75])
+
+    # format for table in the report file
+    table.setStyle(TableStyle([("INNERGRID", (0, 0), (-1, -1), 0.25, 
colors.black),
+                               ("BOX", (0, 0), (-1, -1), 0.25, 
colors.black),
+                               ("BACKGROUND",(0, 0), (len(fields) - 
1,0), colors.silver),
+                               ("VALIGN",(0, 0), (-1, -1), "MIDDLE")]))
+
+    elements.append(table)
+    doc.build(elements, onFirstPage=add_page_number, 
onLaterPages=add_page_number)
+
  # generate a report from run results
  def do_gen_report(conf, options):
      global quiet, verbose
@@ -2058,7 +2098,7 @@ def do_gen_report(conf, options):
      fmt="txt"
      if "--format" in options:
          fmt = options[options.index("--format")+1]
-        if fmt not in ["txt","html"]:
+        if fmt not in ["txt","html","pdf"]:
              error_out("Unsupported format '%s' specified" % fmt)

      if "--layout" in options:
@@ -2073,6 +2113,11 @@ def do_gen_report(conf, options):
          #fields = ["test_name", "spec", "board", "timestamp", "tguid", 
"status"]
          #rfields = ["test_name", "spec", "board", "timestamp", 
"tguid", "tguid:measure", "tguid:unit", "tguid:status", "tguid:result"]

+        # create a directory to save report files
+        report_dir = "/fuego-rw/report/"
+        if not os.path.exists(report_dir):
+            os.makedirs(report_dir)
+
      # get data for report
      header_data = get_report_header_data(run_list, run_map, header_fields)
      report_data = get_report_data(run_list, run_map, fields)
@@ -2081,6 +2126,9 @@ def do_gen_report(conf, options):
         report = gen_text_report(header_data, report_data)
      if fmt=="html":
          report = gen_html_report(header_data, report_data)
+    if fmt=="pdf":
+        gen_pdf_report(header_data, report_data, report_dir)
+        sys.exit(0)

      print report

-- 
2.1.4


-- 
================================================================
Hoang Van Tuyen (Mr.)
TOSHIBA SOFTWARE DEVELOPMENT (VIETNAM) CO., LTD.
16th Floor, VIT Building, 519 Kim Ma Str., Ba Dinh Dist., Hanoi, Vietnam
Tel: 84-4-22208801 (Company) - Ext.251
Fax: 84-4-22208802 (Company)
Email: tuyen.hoangvan at toshiba-tsdv.com
================================================================


-- 
This mail was scanned by BitDefender
For more information please visit http://www.bitdefender.com



More information about the Fuego mailing list