Report Generator
Here are some details about this system.
outline [edit section]
- batch jobs can create 'logrun' files for use in generating reports
- logrun files are in json format and contain results from multiple tests
- during execution, results are saved to the logrun file
- a special Jenkins job can create reports (Report.make_pdf)
- reports.sh has shell functions used to generate reports
- reports are only created for batch jobs (it appears)
- external tools are used to generate the log:
- loggen.py
- creates logrun files, and appends data to them
- also, outputs the login in report xml format
- gentexml.py
- converts logrun file to report xml format
- texml
- converts report xml format to report .tex format
- pdflatex
- converts report .tex format to pdf
- loggen.py
loggen.py and gentexml.py are Fuego programs. texml and pdflatex are generic programs for managing documents.
reports generation [edit section]
- PDF reports can be generated from accumulated logrun results, by invoking a special Jenkins job: Reports.make_pdf
- this job has the command sequence:
source /home/jenkins/scripts/reports.sh gen_report
- this job has the command sequence:
See gen_report
file formats [edit section]
logrun file format [edit section]
There are two kinds of logrun entries: Functional and Benchmark.A logrun file is in json format, with top level fields of:
- device
- testplan
- runLogs - a list of entries of the form:
- testName, logFile
- testName, testResult
- runNumber
logrun entries [edit section]
Each logrun entry is a dictionary containing two fields. For a Benchmark the second field is the logFile. For a Functional test, the second field is the testResult.
- logFile is the filename containing benchmark results (xxx.res.json file)
- testResult is a string with the overall result for a functional test
- the value comes from the log_compare function and is one of the following:
- "test error"
- "passed"
- "failed"
- the value comes from the log_compare function and is one of the following:
res.json file format [edit section]
This file is produced for Benchmarks only. It is in json format, and contains a single object with a set of pairsHere is an example res.json for Benchmark.Dhrystone:
{ "Dhrystone": "12500000.0" }
Here is the res.json for Benchmark.ffsb. (It's a bit more complicated than most others)
{ "Main.append_fsync.TPercent": "1.393", "Main.create_fsync.TPercent": "22.452", "Main.delete.OpWeight": "9.302", "Main.create_fsync.Transactions": "15477", "Syscall_latency.write.Min": "0.000000", "Syscall_latency.open.Max": "55.584999", "Main.open_close.Transactions": "91", "Main.create_fsync.OpWeight": "9.725", "Main.stat.TPS": "8.11", "Main.delete.TPercent": "0.128", "Main.open_close.TPS": "8.03", "Syscall_latency.close.Avg": "0.002518", "Main.delete.TPS": "7.76", "Main.append.TPS": "89.08", "Main.append.Transactions": "1010", "Main.writeall.OpWeight": "10.888", "Main.writeall.Transactions": "13750", "Syscall_latency.read.Avg": "0.001175", "Main.create.OpWeight": "10.782", "Syscall_latency.open.Min": "0.002000", "Syscall_latency.unlink.Min": "0.016000", "Syscall_latency.write.Avg": "0.002091", "Main.writeall_fsync.Transactions": "13976", "Main.stat.TPercent": "0.133", "Main.stat.OpWeight": "9.725", "Main.stat.Transactions": "92", "Main.readall.OpWeight": "9.619", "Syscall_latency.unlink.Max": "3.539000", "Main.writeall.TPS": "1212.78", "Main.append.TPercent": "1.465", "Syscall_latency.read.Max": "0.440000", "Main.create.TPercent": "25.646", "Main.create.TPS": "1559.32", "Main.create.Transactions": "17679", "Syscall_latency.read.Min": "0.000000", "Main.readall.Transactions": "5812", "Syscall_latency.write.Max": "10.133000", "Throughput.Read": "2000.00", "Syscall_latency.unlink.Avg": "0.188614", "Main.writeall_fsync.OpWeight": "9.514", "Main.open_close.OpWeight": "9.619", "Syscall_latency.stat.Avg": "0.005761", "Throughput.Write": "21700.00", "Syscall_latency.open.Avg": "0.172316", "Main.writeall_fsync.TPS": "1232.71", "Syscall_latency.close.Max": "0.014000", "Main.append.OpWeight": "10.677", "Syscall_latency.stat.Max": "0.019000", "Syscall_latency.close.Min": "0.000000", "Main.readall.TPercent": "8.431", "Main.readall.TPS": "512.63", "Syscall_latency.stat.Min": "0.002000", "Main.writeall_fsync.TPercent": "20.274", "Main.delete.Transactions": "88", "Main.writeall.TPercent": "19.946", "Main.create_fsync.TPS": "1365.10", "Main.append_fsync.OpWeight": "10.148", "Main.open_close.TPercent": "0.132", "Main.append_fsync.Transactions": "960", "Main.append_fsync.TPS": "84.67" }
SEE ALSO [edit section]
- loggen.py, gentexml.py, check_create_logrun, check_create_functional_logrun, set_testres_file, gen_report