summaryrefslogtreecommitdiff
path: root/rtemsspec/tests
diff options
context:
space:
mode:
Diffstat (limited to 'rtemsspec/tests')
-rw-r--r--rtemsspec/tests/spec-packagebuild/qdp/build/bsp.yml2
-rw-r--r--rtemsspec/tests/spec-packagebuild/qdp/build/gcda.yml13
-rw-r--r--rtemsspec/tests/spec-packagebuild/qdp/package-build.yml2
-rw-r--r--rtemsspec/tests/spec-packagebuild/qdp/steps/gcda-producer.yml23
-rw-r--r--rtemsspec/tests/spec-packagebuild/qdp/test-logs/coverage.yml15
-rw-r--r--rtemsspec/tests/test-files/pkg/build/bsp/f.gcda0
-rw-r--r--rtemsspec/tests/test-files/pkg/build/bsp/f.gcno0
-rw-r--r--rtemsspec/tests/test-files/pkg/test-log-coverage.json167
-rw-r--r--rtemsspec/tests/test_packagebuild.py21
9 files changed, 243 insertions, 0 deletions
diff --git a/rtemsspec/tests/spec-packagebuild/qdp/build/bsp.yml b/rtemsspec/tests/spec-packagebuild/qdp/build/bsp.yml
index 109b8ed8..eba8a01b 100644
--- a/rtemsspec/tests/spec-packagebuild/qdp/build/bsp.yml
+++ b/rtemsspec/tests/spec-packagebuild/qdp/build/bsp.yml
@@ -12,6 +12,8 @@ files:
hash: null
- file: b.norun.exe
hash: null
+- file: f.gcno
+ hash: null
hash: null
links: []
patterns: []
diff --git a/rtemsspec/tests/spec-packagebuild/qdp/build/gcda.yml b/rtemsspec/tests/spec-packagebuild/qdp/build/gcda.yml
new file mode 100644
index 00000000..687663e3
--- /dev/null
+++ b/rtemsspec/tests/spec-packagebuild/qdp/build/gcda.yml
@@ -0,0 +1,13 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2023 embedded brains GmbH & Co. KG
+copyrights-by-license: {}
+directory: ${../variant:/build-directory}/gcda
+directory-state-type: generic
+enabled-by: true
+files: []
+hash: null
+links: []
+patterns: []
+qdp-type: directory-state
+type: qdp
diff --git a/rtemsspec/tests/spec-packagebuild/qdp/package-build.yml b/rtemsspec/tests/spec-packagebuild/qdp/package-build.yml
index b97ccd14..3b8c2419 100644
--- a/rtemsspec/tests/spec-packagebuild/qdp/package-build.yml
+++ b/rtemsspec/tests/spec-packagebuild/qdp/package-build.yml
@@ -18,6 +18,8 @@ links:
- role: build-step
uid: steps/run-tests
- role: build-step
+ uid: steps/gcda-producer
+- role: build-step
uid: steps/archive
qdp-type: package-build
type: qdp
diff --git a/rtemsspec/tests/spec-packagebuild/qdp/steps/gcda-producer.yml b/rtemsspec/tests/spec-packagebuild/qdp/steps/gcda-producer.yml
new file mode 100644
index 00000000..957464f3
--- /dev/null
+++ b/rtemsspec/tests/spec-packagebuild/qdp/steps/gcda-producer.yml
@@ -0,0 +1,23 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+build-step-type: gcda-producer
+copyrights:
+- Copyright (C) 2023 embedded brains GmbH & Co. KG
+description: |
+ Produces gcda files.
+enabled-by: gcda-producer
+gcov-tool: foo
+links:
+- hash: null
+ name: build
+ role: input
+ uid: ../build/bsp
+- hash: null
+ name: log
+ role: input
+ uid: ../test-logs/coverage
+- name: destination
+ role: output
+ uid: ../build/gcda
+qdp-type: build-step
+type: qdp
+working-directory: ${../build/bsp:/directory}
diff --git a/rtemsspec/tests/spec-packagebuild/qdp/test-logs/coverage.yml b/rtemsspec/tests/spec-packagebuild/qdp/test-logs/coverage.yml
new file mode 100644
index 00000000..abc53ac2
--- /dev/null
+++ b/rtemsspec/tests/spec-packagebuild/qdp/test-logs/coverage.yml
@@ -0,0 +1,15 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2023 embedded brains GmbH & Co. KG
+copyrights-by-license: {}
+directory: ${../variant:/deployment-directory}
+directory-state-type: generic
+enabled-by: true
+files:
+- file: test-log-coverage.json
+ hash: null
+hash: null
+links: []
+patterns: []
+qdp-type: directory-state
+type: qdp
diff --git a/rtemsspec/tests/test-files/pkg/build/bsp/f.gcda b/rtemsspec/tests/test-files/pkg/build/bsp/f.gcda
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/rtemsspec/tests/test-files/pkg/build/bsp/f.gcda
diff --git a/rtemsspec/tests/test-files/pkg/build/bsp/f.gcno b/rtemsspec/tests/test-files/pkg/build/bsp/f.gcno
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/rtemsspec/tests/test-files/pkg/build/bsp/f.gcno
diff --git a/rtemsspec/tests/test-files/pkg/test-log-coverage.json b/rtemsspec/tests/test-files/pkg/test-log-coverage.json
new file mode 100644
index 00000000..ef729a6a
--- /dev/null
+++ b/rtemsspec/tests/test-files/pkg/test-log-coverage.json
@@ -0,0 +1,167 @@
+{
+ "duration": 272.82567146699876,
+ "end-time": "2023-07-11T09:52:01.875951",
+ "reports": [
+ {
+ "command-line": [
+ "sparc-rtems6-sis",
+ "-leon3",
+ "-extirq",
+ "12",
+ "-dumbio",
+ "-r",
+ "-m",
+ "2",
+ "ts-unit-no-clock-0.exe"
+ ],
+ "data-ranges": [
+ [
+ 41,
+ 2081
+ ]
+ ],
+ "duration": 11.234533725000801,
+ "executable": "ts-unit-no-clock-0.exe",
+ "executable-sha512": "605858485568eff4a0e4ebccbc979d113b226127a9e13bffd4d650255074a5cbeeb0ca671742038a365ded9f049ae750752b4ef3d757d13a3ee44f866f4e9271",
+ "info": {
+ "build": [
+ "RTEMS_SMP"
+ ],
+ "line-begin-of-test": 9,
+ "line-build": 12,
+ "line-end-of-test": 37,
+ "line-state": 11,
+ "line-tools": 13,
+ "line-version": 10,
+ "name": "TestsuitesUnitNoClock0",
+ "state": "EXPECTED_PASS",
+ "tools": "10.4.0 20220628 (RTEMS 6, RSB f8d79ee51187d98b88b8b7400ad77a991f53c8c0, Newlib b9898fc)",
+ "version": "6.0.0.1c46841ad34939632fee92894e8c73b4ea92f979"
+ },
+ "line-gcov-info-base64-begin": 40,
+ "line-gcov-info-base64-end": 42,
+ "output": [
+ "",
+ " SIS - SPARC/RISCV instruction simulator 2.30, copyright Jiri Gaisler 2020",
+ " Bug-reports to jiri@gaisler.se",
+ "",
+ " LEON3 emulation enabled, 2 cpus online, delta 50 clocks",
+ "",
+ " Loaded ts-unit-no-clock-0.exe, entry 0x40000000",
+ "",
+ "",
+ "*** BEGIN OF TEST TestsuitesUnitNoClock0 ***",
+ "*** TEST VERSION: 6.0.0.1c46841ad34939632fee92894e8c73b4ea92f979",
+ "*** TEST STATE: EXPECTED_PASS",
+ "*** TEST BUILD: RTEMS_SMP",
+ "*** TEST TOOLS: 10.4.0 20220628 (RTEMS 6, RSB f8d79ee51187d98b88b8b7400ad77a991f53c8c0, Newlib b9898fc)",
+ "A:TestsuitesUnitNoClock0",
+ "S:Platform:RTEMS",
+ "S:Compiler:10.4.0 20220628 (RTEMS 6, RSB f8d79ee51187d98b88b8b7400ad77a991f53c8c0, Newlib b9898fc)",
+ "S:Version:6.0.0.1c46841ad34939632fee92894e8c73b4ea92f979",
+ "S:BSP:gr712rc",
+ "S:BuildLabel:sparc/gr712rc/smp/qual-only-coverage",
+ "S:TargetHash:SHA256:5zrudgccHYC6azWEU3SRYUnkVXCeq9MufBd5zmfMeEg=",
+ "S:RTEMS_DEBUG:0",
+ "S:RTEMS_MULTIPROCESSING:0",
+ "S:RTEMS_POSIX_API:0",
+ "S:RTEMS_PROFILING:0",
+ "S:RTEMS_SMP:1",
+ "B:ScoreRbtreeUnitRbtree",
+ "E:ScoreRbtreeUnitRbtree:N:495132:F:0:D:1.164048",
+ "B:ScoreMsgqUnitMsgq",
+ "E:ScoreMsgqUnitMsgq:N:41:F:0:D:0.010895",
+ "B:RtemsConfigUnitConfig",
+ "E:RtemsConfigUnitConfig:N:1:F:0:D:0.001789",
+ "B:MisalignedBuiltinMemcpy",
+ "E:MisalignedBuiltinMemcpy:N:1:F:0:D:0.001803",
+ "Z:TestsuitesUnitNoClock0:C:4:N:495175:F:0:D:1.185642",
+ "Y:ReportHash:SHA256:a8e6RdqXa7Pt_SGpe7s2ezaVCSSY-j5PFEj6JTjrB4A=",
+ "",
+ "*** END OF TEST TestsuitesUnitNoClock0 ***",
+ "",
+ "",
+ "*** BEGIN OF GCOV INFO BASE64 ***",
+ "Z2NmbkIwNFIAAACVL29wdC==",
+ "*** END OF GCOV INFO BASE64 ***",
+ "cpu 0 in error mode (tt = 0x80)",
+ " 804542950 4003a5a0: 91d02000 ta 0x0"
+ ],
+ "start-time": "2023-07-11T09:47:29.059658"
+ },
+ {
+ "command-line": [
+ "sparc-rtems6-sis",
+ "-leon3",
+ "-extirq",
+ "12",
+ "-dumbio",
+ "-r",
+ "-m",
+ "2",
+ "ts-fatal-sparc-leon3-cache-snooping-disabled-boot.exe"
+ ],
+ "data-ranges": [
+ [
+ 35,
+ 1559
+ ]
+ ],
+ "duration": 1.5510155570082134,
+ "executable": "ts-fatal-sparc-leon3-cache-snooping-disabled-boot.exe",
+ "executable-sha512": "69f7d8cabeb23bba8c5b43fd658803f479d19a83cc858485ffc54bb727a0810bddb8ae61493839b4ade11094990e27c064426e45beaac3eadba01643ef120366",
+ "info": {
+ "build": [
+ "RTEMS_SMP"
+ ],
+ "line-begin-of-test": 9,
+ "line-build": 12,
+ "line-state": 11,
+ "line-tools": 13,
+ "line-version": 10,
+ "name": "TestsuitesBspsFatalSparcLeon3CacheSnoopingDisabledBoot",
+ "state": "EXPECTED_PASS",
+ "tools": "10.4.0 20220628 (RTEMS 6, RSB f8d79ee51187d98b88b8b7400ad77a991f53c8c0, Newlib b9898fc)",
+ "version": "6.0.0.1c46841ad34939632fee92894e8c73b4ea92f979"
+ }
+ },
+ {
+ "command-line": [
+ "sparc-rtems6-sis",
+ "-leon3",
+ "-extirq",
+ "12",
+ "-dumbio",
+ "-r",
+ "-m",
+ "2",
+ "ts-fatal-sparc-leon3-cache-snooping-disabled-boot.exe"
+ ],
+ "data-ranges": [
+ [
+ 35,
+ 1559
+ ]
+ ],
+ "duration": 1.5510155570082134,
+ "executable": "ts-fatal-sparc-leon3-cache-snooping-disabled-boot.exe",
+ "executable-sha512": "69f7d8cabeb23bba8c5b43fd658803f479d19a83cc858485ffc54bb727a0810bddb8ae61493839b4ade11094990e27c064426e45beaac3eadba01643ef120366",
+ "info": {
+ "build": [
+ "RTEMS_SMP"
+ ],
+ "line-begin-of-test": 9,
+ "line-end-of-test": 14,
+ "line-build": 12,
+ "line-state": 11,
+ "line-tools": 13,
+ "line-version": 10,
+ "name": "TestsuitesBspsFatalSparcLeon3CacheSnoopingDisabledBoot",
+ "state": "EXPECTED_PASS",
+ "tools": "10.4.0 20220628 (RTEMS 6, RSB f8d79ee51187d98b88b8b7400ad77a991f53c8c0, Newlib b9898fc)",
+ "version": "6.0.0.1c46841ad34939632fee92894e8c73b4ea92f979"
+ }
+ }
+ ],
+ "start-time": "2023-07-11T09:47:29.050266"
+}
diff --git a/rtemsspec/tests/test_packagebuild.py b/rtemsspec/tests/test_packagebuild.py
index 6ff9c8e4..cf6d91c2 100644
--- a/rtemsspec/tests/test_packagebuild.py
+++ b/rtemsspec/tests/test_packagebuild.py
@@ -35,6 +35,7 @@ import tarfile
from typing import List, NamedTuple
from rtemsspec.items import EmptyItem, Item, ItemCache, ItemGetValueContext
+import rtemsspec.gcdaproducer
from rtemsspec.packagebuild import BuildItem, BuildItemMapper, \
build_item_input, PackageBuildDirector
from rtemsspec.packagebuildfactory import create_build_item_factory
@@ -113,6 +114,13 @@ def _test_runner_subprocess(command, check, stdin, stdout, timeout):
return _Subprocess(b"u\r\nv\nw\n")
+def _gcov_tool(command, check, cwd, input):
+ assert command == ["foo", "merge-stream"]
+ assert check
+ assert input == b"gcfnB04R\x00\x00\x00\x95/opt"
+ (Path(cwd) / "file.gcda").touch()
+
+
def test_packagebuild(caplog, tmpdir, monkeypatch):
tmp_dir = Path(tmpdir)
item_cache = _create_item_cache(tmp_dir, Path("spec-packagebuild"))
@@ -403,3 +411,16 @@ def test_packagebuild(caplog, tmpdir, monkeypatch):
director.build_package(None, ["/qdp/steps/run-tests"])
log = get_and_clear_log(caplog)
assert f"use previous report for: {build_bsp.directory}/a.exe"
+
+ # Test GCDAProducer
+ variant["enabled"] = ["gcda-producer"]
+ test_log_coverage = director["/qdp/test-logs/coverage"]
+ test_log_coverage.load()
+ monkeypatch.setattr(rtemsspec.gcdaproducer, "subprocess_run", _gcov_tool)
+ director.build_package(None, None)
+ monkeypatch.undo()
+ log = get_and_clear_log(caplog)
+ assert f"/qdp/steps/gcda-producer: copy *.gcno files from '{tmp_dir}/pkg/build/bsp' to '{tmp_dir}/pkg/build/gcda'" in log
+ assert f"/qdp/steps/gcda-producer: remove unexpected *.gcda file in build directory: '{tmp_dir}/pkg/build/bsp/f.gcda'" in log
+ assert f"/qdp/steps/gcda-producer: process: ts-unit-no-clock-0.exe" in log
+ assert f"/qdp/steps/gcda-producer: move *.gcda files from '{tmp_dir}/pkg/build/bsp' to '{tmp_dir}/pkg/build/gcda'" in log