lava_helper: enable trace-based code coverage in FVP MPS2 jobs
Enable trace-based code coverage supportin in FVP MPS2 LAVA jobs,
where LAVA would fetch the coverage trace plugin from the downloads
repository [1].
This patch does not cover the extraction of trace logs from LAVA
into Jenkins, so the latter can convert logs into human-friendly LCOV
html reports. This is WIP and will be coverered in a separate patch.
[1] https://downloads.trustedfirmware.org
Signed-off-by: Leonardo Sandoval <leonardo.sandoval@linaro.org>
Change-Id: I81a8aaf3edaa4fd84e46526ed3d29ad94aa23a1b
diff --git a/lava_helper/jinja2_templates/fvp_mps2.jinja2 b/lava_helper/jinja2_templates/fvp_mps2.jinja2
index b799a3a..6f81efb 100644
--- a/lava_helper/jinja2_templates/fvp_mps2.jinja2
+++ b/lava_helper/jinja2_templates/fvp_mps2.jinja2
@@ -24,7 +24,10 @@
url: {{ firmware_url }}
s:
url: {{ bootloader_url }}
-
+{%- if enable_code_coverage %}
+ cc:
+ url: {{ coverage_trace_plugin }}
+{%- endif %}
- boot:
failure_retry: 3
namespace: docker
@@ -57,6 +60,10 @@
- "--parameter fvp_mps2.UART0.shutdown_on_eot=1"
- "--parameter 'fvp_mps2.UART0.out_file=-'"
- "--parameter fvp_mps2.mps2_visualisation.disable-visualisation=1"
+{%- if enable_code_coverage %}
+ - "--plugin {CC}"
+{%- endif %}
+
prompts:
- '(.*)'
diff --git a/lava_helper/lava_create_jobs.py b/lava_helper/lava_create_jobs.py
index 1cffdb8..3fd75cc 100755
--- a/lava_helper/lava_create_jobs.py
+++ b/lava_helper/lava_create_jobs.py
@@ -131,6 +131,8 @@
"data_bin_offset": config.get('data_bin_offset', ''),
"docker_prefix": vars(user_args).get('docker_prefix', ''),
"license_variable": vars(user_args).get('license_variable', ''),
+ "enable_code_coverage": user_args.enable_code_coverage == "TRUE",
+ "coverage_trace_plugin": coverage_trace_plugin,
"build_job_url": artifact_store_url,
"cpu0_baseline": config.get("cpu0_baseline", 0),
"cpu0_initvtor_s": config.get("cpu0_initvtor_s", "0x10000000")
@@ -278,6 +280,9 @@
cmdargs.add_argument(
"--license-variable", dest="license_variable", action="store", help="License string for Fastmodels"
)
+ cmdargs.add_argument(
+ "--enable-code-coverage", dest="enable_code_coverage", action="store", default="FALSE", help="Enable trace-base code coverage"
+ )
cmdargs.add_argument("--bl2", dest="bl2", action="store_true", help="BL2")
cmdargs.add_argument(
"--psa-api-suite", dest="psa_suite", action="store", help="PSA API Suite name"
diff --git a/lava_helper/lava_helper_configs.py b/lava_helper/lava_helper_configs.py
index 3ddb364..1f95d12 100644
--- a/lava_helper/lava_helper_configs.py
+++ b/lava_helper/lava_helper_configs.py
@@ -19,6 +19,8 @@
__project__ = "Trusted Firmware-M Open CI"
__version__ = "1.2.0"
+tf_downloads="https://downloads.trustedfirmware.org"
+coverage_trace_plugin=tf_downloads + "/coverage-plugin/qa-tools/coverage-tool/coverage-plugin/coverage_trace.so"
def lava_gen_get_config_subset(config,
default=True,