Skip to content
Merged
Show file tree
Hide file tree
Changes from 110 commits
Commits
Show all changes
135 commits
Select commit Hold shift + click to select a range
5fa6733
add hello world itf test
lurtz May 13, 2026
7520403
add docker in docker feature for running itf
lurtz May 13, 2026
8c7b658
stricter capabilities check
lurtz May 13, 2026
b4f24d4
copy integration test framework from communication
lurtz May 18, 2026
c6ffa97
add quality to QNX tests
lurtz May 18, 2026
1342568
delete unused files
lurtz May 18, 2026
2cb9000
restore docs-as-code 3.0.0 to fix build
lurtz May 18, 2026
350a350
actually run tests on QNX
lurtz May 18, 2026
9775c06
remove tests already present in communication
lurtz May 18, 2026
073b6fe
use actual qnx workflow
lurtz May 18, 2026
8df4cf1
add another qnx toolchain
lurtz May 19, 2026
3de7ab9
use_repo score qcc toolchain pkg
lurtz May 19, 2026
0273b7b
bump QNX version to 8.0.3
lurtz May 19, 2026
057c091
bump score bazel cpp toolchains to 0.5.1
lurtz May 19, 2026
03f49e0
run integration tests in Linux via QEMU
lurtz May 19, 2026
ced97e3
at the moment no ARM64 QNX image is build
lurtz May 19, 2026
c90fa43
add Qemu, ping and genisoimage to workflow
lurtz May 19, 2026
902c043
add Qemu, ping and genisoimage to devcontainer
lurtz May 19, 2026
fca75e4
only build seed.iso if really needed
lurtz May 19, 2026
1cd3779
proper QNX x86_64 constraint
lurtz May 19, 2026
ec5322f
avoid patching ITF and use a plugin instead
lurtz May 20, 2026
96c49f0
remove unused config_setting
lurtz May 20, 2026
8f84bd0
remove not needed user-data
lurtz May 20, 2026
d56b344
run Linux QEMU tests in CI
lurtz May 20, 2026
f25f084
enable KVM
lurtz May 20, 2026
1005d20
Revert "remove not needed user-data"
lurtz May 20, 2026
d48ca0a
ensure Ubuntu image is not permanently altered by tests
lurtz May 20, 2026
2d3cc49
only build linux qemu plugin on linux
lurtz May 20, 2026
9a0b094
try another way to enable SSH password login
lurtz May 21, 2026
90f99fd
Add documentation
lurtz May 21, 2026
15112e3
Merge remote-tracking branch 'origin/main' into add-score-itf-for-int…
lurtz May 21, 2026
5ab37ba
reintroduce cpp toolchains git override
lurtz May 21, 2026
7e77fdb
ci: retry flaky linux qemu integration test in host workflow
lurtz May 21, 2026
5539497
itf: harden qemu target readiness against transient ssh resets
lurtz May 21, 2026
5c4304a
buildifier: sort linux_qemu BUILD deps
lurtz May 21, 2026
884ec4f
itf: increase linux qemu ssh readiness budget
lurtz May 21, 2026
827a9fb
ci: raise qemu integration test timeout in host workflow
lurtz May 22, 2026
8f76a9f
ci: don't fail pull_request on flaky qemu host integration step
lurtz May 22, 2026
0bf28ac
restore build_and_test_host to simpler state
lurtz May 22, 2026
b5446b7
put integration testing into separate job
lurtz May 22, 2026
d8cb5fa
comment restarting SSH
lurtz May 22, 2026
65014ad
fix(itf): attach cloud-init seed as cdrom for linux qemu
lurtz May 22, 2026
7a752a2
fix(itf): keep nocloud seed filenames in iso9660
lurtz May 22, 2026
1f6f7d8
Instead of CD image inject cloud-init data as disk image
lurtz May 22, 2026
91665f3
fix(ci): upgrade Bazel 8.3.0 to 8.4.1 and fix Starlark formatting
lurtz May 22, 2026
83b68eb
add missing tools
lurtz May 22, 2026
2911539
try again with genisoimage
lurtz May 22, 2026
5f4edb0
add cloud-image-utils to Dockerfile
lurtz May 22, 2026
c410c9d
clould-localds with way more fallbacks
lurtz May 22, 2026
21bd39d
simplify seed.img creation
lurtz May 26, 2026
4587dfa
remove git override
lurtz May 26, 2026
f3dbf94
diff minimization
lurtz May 26, 2026
9598802
run all tests with QEMU if possible and better job name
lurtz May 26, 2026
e8eddfc
better explanation why docs_as_code uses version override
lurtz May 26, 2026
b3de3e7
remove first ITF tryout
lurtz May 26, 2026
691b535
Support parallel execution of integration tests
lurtz May 26, 2026
9e9b33e
Bump docker-in-docker to version 3
lurtz May 26, 2026
1b957d7
towards ITF based integration tests
lurtz May 27, 2026
1a51e9d
smal test cleanup
lurtz May 27, 2026
0423230
cleanup
lurtz May 27, 2026
75bd0fd
make Linux Qemu and Docker work
lurtz May 27, 2026
8dfabad
check that daemons do not crash immediately
lurtz May 27, 2026
fc45cde
actually follow self established naming convection
lurtz May 27, 2026
c25f35d
ensure mergedusr is set
lurtz May 27, 2026
c456e5a
Allow other sandboxes in QNX workflows
lurtz May 27, 2026
5b91fdd
switch to bridge interfaces for integration testing
lurtz Jun 3, 2026
a17390f
move qemu based integration test execution into dedicated test config…
lurtz Jun 3, 2026
c65abea
use qnx workflow supporting linux-sandbox
lurtz Jun 3, 2026
02a5403
Merge remote-tracking branch 'origin/main' into add-score-itf-for-int…
lurtz Jun 3, 2026
bfe164b
use correct repo name
lurtz Jun 3, 2026
831b424
correct branch name
lurtz Jun 3, 2026
92082ed
retry qnx job
lurtz Jun 3, 2026
85c0f14
retry 2
lurtz Jun 3, 2026
0c052cb
Enforce linux-sandbox for QNX builds
lurtz Jun 4, 2026
049b9a6
copy QNX config from ITF
lurtz Jun 4, 2026
3a7589f
make QNX QEMU with TAP networking work
lurtz Jun 4, 2026
2f91731
Revert "make QNX QEMU with TAP networking work"
lurtz Jun 4, 2026
03e64e2
use network setup as done by ITF
lurtz Jun 4, 2026
3423c5f
remove docker backend
lurtz Jun 4, 2026
8ea09b3
Remove Ubuntu 24.04 docker
lurtz Jun 4, 2026
176c190
more complex working test with tcpdump
lurtz Jun 5, 2026
b327788
test killing tcpdump
lurtz Jun 8, 2026
4a73af5
cleanup
lurtz Jun 8, 2026
30aaaaf
split tcpdump tests into new file
lurtz Jun 8, 2026
d97cf01
someipd with tcpdump finally works
lurtz Jun 9, 2026
05e095d
tcpdump test cleanup
lurtz Jun 9, 2026
7e85682
add ping to the QNX image
lurtz Jun 9, 2026
fc3629f
fix lola startup in QNX
lurtz Jun 9, 2026
68640b6
move target specific setup into environment
lurtz Jun 9, 2026
9d6c9b5
Make QNX send SOME/IP-SD messages
lurtz Jun 10, 2026
6eab853
perform cleanup before starting a test
lurtz Jun 10, 2026
0765d37
split deamon and tcpdump test
lurtz Jun 10, 2026
ae9eea3
cleanup stale code
lurtz Jun 10, 2026
29249cd
Merge remote-tracking branch 'origin/main' into add-score-itf-for-int…
lurtz Jun 10, 2026
f7eea6f
install cloud-image-utils needed for Ubuntu QEMU tests
lurtz Jun 10, 2026
9c556d4
add null_serializer to the test image
lurtz Jun 10, 2026
18ea28b
remove setcap for tcpdump
lurtz Jun 10, 2026
f78e177
Add integration tests to QNX
lurtz Jun 10, 2026
93056e3
Support github runner ps aux messages in tcpdump test
lurtz Jun 10, 2026
43d2035
fix some pylint warnins
lurtz Jun 10, 2026
9cdc403
Fix killing and checking for running processes on target
lurtz Jun 10, 2026
166590d
correct copyright year for files in integration_test
lurtz Jun 10, 2026
f23cab0
put someipd and gatewayd startup into test fixture
lurtz Jun 10, 2026
e0c41c7
preparation to capture test traffic with tcpdump
lurtz Jun 10, 2026
5ffb06d
simplify tcpdump test
lurtz Jun 11, 2026
b01fbfa
assert that stopped applications are really stopped
lurtz Jun 11, 2026
859d36f
test killing tcpdump while still receiving data
lurtz Jun 11, 2026
c7b9b8c
simplify tcpdump output retrieval
lurtz Jun 11, 2026
2bf8b60
split tests to one test per file
lurtz Jun 11, 2026
71b6421
Add README to integration tests
lurtz Jun 11, 2026
0610501
correct use of accelerator parameters
lurtz Jun 11, 2026
e6986ae
defensive programming when stopping QEMU
lurtz Jun 11, 2026
a2d5c56
Avoid busy loop at service discovery
lurtz Jun 11, 2026
1072ad7
ping Ubuntu QEMU image
lurtz Jun 11, 2026
ea119f4
Merge remote-tracking branch 'origin/main' into add-score-itf-for-int…
lurtz Jun 11, 2026
cd25f98
Finally stopping processes works
lurtz Jun 11, 2026
8cbba0b
Merge remote-tracking branch 'origin/main' into add-score-itf-for-int…
lurtz Jun 15, 2026
e34553a
remove call to ssh-keygen
lurtz Jun 15, 2026
87b3729
Remove sanitizer configuration
lurtz Jun 17, 2026
0bee483
Merge remote-tracking branch 'origin/main' into add-score-itf-for-int…
lurtz Jun 17, 2026
2be6d11
Fix host qemu workflow
lurtz Jun 17, 2026
e2c571c
block internet access for integration tests
lurtz Jun 17, 2026
37bbe54
Only enforce network namespace for integration tests
lurtz Jun 17, 2026
49cfb1d
Merge remote-tracking branch 'origin/main' into add-score-itf-for-int…
lurtz Jun 25, 2026
af5e3c7
delete unused expand_template
lurtz Jun 25, 2026
ed8bc51
Use Ubuntu image from fixed date
lurtz Jun 25, 2026
d5554b1
use s-core setup-bazel-cache
lurtz Jun 25, 2026
1dbbc55
remove test QNX job
lurtz Jun 25, 2026
31b3716
remove unneeded file export
lurtz Jun 25, 2026
2309d8e
Revert "remove test QNX job"
lurtz Jun 25, 2026
d35e4b8
patch score_tooling to remove Android dependency
lurtz Jun 25, 2026
948e8a5
Remove build_and_test_qnx from CI job
lurtz Jun 26, 2026
e7ebd8d
Revert "patch score_tooling to remove Android dependency"
lurtz Jun 25, 2026
a6e3b62
resend ping if tcpdump capture failed
lurtz Jun 26, 2026
3c5bc0b
Merge remote-tracking branch 'origin/main' into add-score-itf-for-int…
lurtz Jun 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -56,16 +56,35 @@ common:x86_64-qnx --config=_toolchain_common
common:x86_64-qnx --platforms=@score_bazel_platforms//:x86_64-qnx-sdp_8.0.0-posix
common:x86_64-qnx --extra_toolchains=@score_qcc_x86_64_toolchain//:all
common:x86_64-qnx --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_pc_nto_qnx800
common:x86_64-qnx --extra_toolchains=@score_qnx_x86_64_ifs_toolchain//:all
common:x86_64-qnx --repo_env=TARGET_ARCH=x86_64

common:aarch64-qnx --config=_toolchain_common
common:aarch64-qnx --platforms=@score_bazel_platforms//:aarch64-qnx-sdp_8.0.0-posix
common:aarch64-qnx --extra_toolchains=@score_qcc_aarch64_toolchain//:all
common:aarch64-qnx --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_aarch64_unknown_nto_qnx800
common:aarch64-qnx --extra_toolchains=@score_qnx_aarch64_ifs_toolchain//:all
common:aarch64-qnx --repo_env=TARGET_ARCH=aarch64

common --credential_helper=*.qnx.com=%workspace%/.github/tools/qnx_credential_helper.py

# Force linux-sandbox to integration test execution only.
# All integration tests have to have "integration_test" in their rule name,
# otherwise they will be executed without sandboxing, which is not desired.
# QEMU-based integration tests must run in linux-sandbox because they modify
# network interfaces and IP configuration. Use this config for those runs:
# bazel test --config=qemu-integration //...
test:qemu-integration --strategy_regexp='^Testing .*integration_test.*=linux-sandbox'
test:qemu-integration --//quality/integration_testing/flags:linux_backend=qemu
test:qemu-integration --run_under=@score_itf//scripts:run_under_qemu
test:x86_64-qnx --strategy_regexp='^Testing .*integration_test.*=linux-sandbox'
test:x86_64-qnx --run_under=@score_itf//scripts:run_under_qemu
test:aarch64-qnx --strategy_regexp='^Testing .*integration_test.*=linux-sandbox'
test:aarch64-qnx --run_under=@score_itf//scripts:run_under_qemu
# Enforce isolated network namespaces for sandboxed tests (linux-sandbox), required by fixed network ports
test --nosandbox_default_allow_network
Comment thread
lurtz marked this conversation as resolved.
Outdated


test --test_output=errors
build --incompatible_strict_action_env

Expand Down
2 changes: 1 addition & 1 deletion .bazelversion
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8.3.0
8.4.1

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With older bazel version Python 3.12 is not found in QNX builds

2 changes: 2 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,7 @@ RUN if [ "$USERNAME" != "vscode" ]; then \
&& chmod 0440 /etc/sudoers.d/${USERNAME}; \
fi

RUN apt-get update && apt-get install -y qemu-system-x86 iputils-ping tcpdump cloud-image-utils

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These tools are at the moment not managed by bazel, but used from the environment by bazel. I guess some might not like it.


# Set the default user for the container
USER ${USERNAME}
9 changes: 9 additions & 0 deletions .devcontainer/devcontainer-lock.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"features": {
"ghcr.io/devcontainers/features/docker-in-docker:3": {
"version": "3.0.1",
"resolved": "ghcr.io/devcontainers/features/docker-in-docker@sha256:ca2508495b01ba29eba93e8153772a2daa65eaa86471cc6863fe2a3d21933df9",
"integrity": "sha256:ca2508495b01ba29eba93e8153772a2daa65eaa86471cc6863fe2a3d21933df9"
}
}
}
7 changes: 6 additions & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
},
"remoteUser": "${localEnv:USER}",
"runArgs": [
"--privileged"
"--privileged",
"--device=/dev/kvm"
],
"mounts": [
{
Expand All @@ -22,13 +23,17 @@
"type": "bind"
}
],
"features": {
"ghcr.io/devcontainers/features/docker-in-docker:3": {}
},
"initializeCommand": {
"Make sure QNX licenses exists": "mkdir -p ~/.qnx/license && touch -a ~/.qnx/license/licenses",
"Make sure .netrc exists": "touch -a ~/.netrc"
},
"onCreateCommand": {
"Setup external symlink": "[ -L external ] || ln -s \"bazel-$(basename $PWD)/external\" external"
},
"postStartCommand": "sudo chmod 666 /dev/kvm",
"customizations": {
"vscode": {
"extensions": [
Expand Down
45 changes: 45 additions & 0 deletions .github/workflows/build_and_test_host.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,48 @@ jobs:
bazel test //... --build_tests_only
- run: df -h
if: always()

build_and_int_qemu_test_host:
runs-on: ubuntu-24.04
steps:
- uses: eclipse-score/more-disk-space@v1
- name: Checkout repository
uses: actions/checkout@v6
- name: Create Bazel output base directory
run: |
sudo mkdir -p /mnt/.bazel
sudo chown -R $USER:$USER /mnt/.bazel
- name: Create config indicator file
run: echo "host" > .bazel_config
- name: Setup Bazel
uses: bazel-contrib/setup-bazel@0.19.0
with:
output-base: /mnt/.bazel
# Avoid downloading Bazel every time.
bazelisk-cache: true
# Store build cache per workflow.
disk-cache: ${{ github.workflow }}
# Share repository cache between workflows.
repository-cache: |
- ./MODULE.bazel
- ./.bazel_config
# Cache external/
external-cache: true
cache-save: ${{ github.event_name == 'push' }}
- name: Install tools needed for ITF tests
run: |
sudo apt-get update
sudo apt-get install -y qemu-system-x86 iputils-ping tcpdump cloud-image-utils
- name: Allow linux-sandbox
uses: ./.github/actions/unblock_user_namespace_for_linux_sandbox
- run: df -h
- name: Enable KVM group permissons
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Run Linux QEMU integration tests
run: |
bazel test --config=qemu-integration //quality/... //tests/integration_test/...
- run: df -h
if: always()
3 changes: 2 additions & 1 deletion .github/workflows/build_and_test_qnx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,14 @@ jobs:
fail-fast: false
matrix:
bazel-config: ["x86_64-qnx", "aarch64-qnx"]
uses: eclipse-score/cicd-workflows/.github/workflows/qnx-build.yml@93aac16ada7d247bbb6ae926509ddea74cf5213a # main (2026-06-03)
uses: eclipse-score/cicd-workflows/.github/workflows/qnx-build.yml@dfc6ffae7b8db630dbf49865314df6c46802d385 # main (2026-06-09)
permissions:
contents: read
pull-requests: read
with:
# TODO: build all targets ( //... ) once python toolchain issue is resolved.
bazel-target: "//src/... //tests/... //examples/..."
bazel-test-target: "//quality/... //tests/integration_test/..."
bazel-config: ${{ matrix.bazel-config }}
credential-helper: ".github/tools/qnx_credential_helper.py"
bazel-disk-cache: ${{ github.workflow }}-${{ matrix.bazel-config }}
Expand Down
7 changes: 7 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,13 @@ jobs:
if: github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'test-cross')
secrets: inherit
uses: ./.github/workflows/build_and_test_cross_compilation.yml
build_and_test_qnx:
# just for testing
secrets: inherit
uses: ./.github/workflows/build_and_test_qnx.yml
permissions:
contents: read
pull-requests: read
Comment thread
lurtz marked this conversation as resolved.
Outdated
Comment thread
lurtz marked this conversation as resolved.
Outdated
copyright:
secrets: inherit
uses: ./.github/workflows/copyright.yml
Expand Down
41 changes: 41 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,9 @@ use_repo(
"score_gcc_aarch64_toolchain",
"score_gcc_x86_64_toolchain",
"score_qcc_aarch64_toolchain",
"score_qcc_aarch64_toolchain_pkg",
"score_qcc_x86_64_toolchain",
"score_qcc_x86_64_toolchain_pkg",
)

# ============================================================================
Expand Down Expand Up @@ -185,6 +187,12 @@ download_archive(
# ============================================================================
bazel_dep(name = "score_docs_as_code", version = "3.0.0", dev_dependency = True)

# score_itf depends on a newer (4.0.3) version, which causes a build break for us
single_version_override(
module_name = "score_docs_as_code",
version = "3.0.0",
)

# ============================================================================
# Communication Framework
# ============================================================================
Expand Down Expand Up @@ -266,3 +274,36 @@ http_archive(
"https://github.com/COVESA/vsomeip/archive/refs/tags/3.6.1.tar.gz",
],
)

# ============================================================================
# Integration Testing
# ============================================================================
bazel_dep(name = "score_itf", version = "0.4.0", dev_dependency = True)
bazel_dep(name = "score_rules_imagefs", version = "0.0.3", dev_dependency = True)
bazel_dep(name = "rules_oci", version = "2.2.7", dev_dependency = True)

http_file = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")

http_file(
name = "ubuntu_24_04_cloudimg",
downloaded_file_path = "noble-server-cloudimg-amd64.img",
# TODO: Pin sha256 after verifying a working snapshot URL.
url = "https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img",
)
Comment thread
lurtz marked this conversation as resolved.

imagefs = use_extension("@score_rules_imagefs//extensions:imagefs.bzl", "imagefs", dev_dependency = True)
imagefs.toolchain(
name = "score_qnx_x86_64_ifs_toolchain",
sdp_to_import = "@score_qcc_x86_64_toolchain_pkg",
target_cpu = "x86_64",
target_os = "qnx",
type = "ifs",
)
imagefs.toolchain(
name = "score_qnx_aarch64_ifs_toolchain",
sdp_to_import = "@score_qcc_aarch64_toolchain_pkg",
target_cpu = "aarch64",
target_os = "qnx",
type = "ifs",
)
use_repo(imagefs, "score_qnx_aarch64_ifs_toolchain", "score_qnx_x86_64_ifs_toolchain")
Loading
Loading