Report Generator in 'raw' format
Fuego includes a report generator.
Here are some details about this system.
= outline =
* 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 and gentexml.py are Fuego programs. texml and pdflatex
are generic programs for managing documents.
== reports generation ==
* PDF reports can be generated from accumulated logrun results, by invoking a special Jenkins job: Reports.make_pdf
* this job has the command sequence:
{{{#!YellowBox
source /home/jenkins/scripts/reports.sh
gen_report
}}}
See [[function_gen_report|gen_report]]
= file formats =
== logrun file format ==
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 ===
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"
== res.json file format ==
This file is produced for Benchmarks only. It is in json format, and contains a single object with a set of pairs
Here is an example res.json for Benchmark.Dhrystone:
{{{#!YellowBox
{
"Dhrystone": "12500000.0"
}
}}}
Here is the res.json for Benchmark.ffsb. (It's a bit more complicated than most others)
{{{#!YellowBox
{
"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 ==
* [[loggen.py]], [[gentexml.py]], [[function_check_create_logrun|check_create_logrun]], [[function_check_create_functional_logrun|check_create_functional_logrun]], [[function_set_testres_file|set_testres_file]], [[function_gen_report|gen_report]]