diff --git a/.bazelrc b/.bazelrc index a31dd6992..645481ac2 100644 --- a/.bazelrc +++ b/.bazelrc @@ -73,9 +73,10 @@ build:x86_64-qnx --platforms=@score_bazel_platforms//:x86_64-qnx-sdp_8.0.0-posix build:x86_64-qnx --extra_toolchains=@score_qcc_x86_64_toolchain//:x86_64-qnx-sdp_8.0.0 build:x86_64-qnx --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_pc_nto_qnx800 build:x86_64-qnx --extra_toolchains=@score_qnx_x86_64_ifs_toolchain//:ifs-x86_64-qnx-sdp_8.0.0 -test:x86_64-qnx --run_under=@score_qnx_unit_tests//src:run_under_qnx -test:x86_64-qnx --test_tag_filters=-skip_local # see https://github.com/eclipse-score/lifecycle/issues/272 -test:x86_64-qnx --test_lang_filters=cc,rust +test:x86_64-qnx --define config=x86_64-qnx +# test:x86_64-qnx --run_under=@score_qnx_unit_tests//src:run_under_qnx +# test:x86_64-qnx --test_tag_filters=-skip_local # see https://github.com/eclipse-score/lifecycle/issues/272 +# test:x86_64-qnx --test_lang_filters=cc,rust # Target configuration for CPU:AArch64|OS:QNX build (do not use it in case of system toolchains!) build:arm64-qnx --config=stub diff --git a/tests/utils/bazel/integration.bzl b/tests/utils/bazel/integration.bzl index 6267f513e..e66a5f4be 100644 --- a/tests/utils/bazel/integration.bzl +++ b/tests/utils/bazel/integration.bzl @@ -81,17 +81,27 @@ def integration_test( "//tests/utils/testing_utils", ], data = kwargs.pop("data", []) + [":environment"] + select({ - "//config:host": [], - "//conditions:default": ["//tests/utils/environments:test_environment"], + "//config:x86_64-linux": [ + "//tests/utils/environments/x86_64-linux", + ], + "//config:x86_64-qnx": [ + "//tests/utils/environments/x86_64-qnx:qemu_config.json", + "//tests/utils/environments/x86_64-qnx:qemu_image", + ], + "//conditions:default": [], }), args = kwargs.pop("args", []) + [ "--score-test-binary-path=$(locations :environment)", "--score-test-remote-directory={}/tests/{}".format(install_prefix, name), ] + select({ "//config:x86_64-linux": [ - "--docker-image-bootstrap=$(location //tests/utils/environments:test_environment)", + "--docker-image-bootstrap=$(location //tests/utils/environments/x86_64-linux)", "--docker-image=score_itf_examples:latest", ], + "//config:x86_64-qnx": [ + "--qemu-config=$(location //tests/utils/environments/x86_64-qnx:qemu_config.json)", + "--qemu-image=$(location //tests/utils/environments/x86_64-qnx:qemu_image)", + ], "//config:host": [ "--local-dir=/tmp/score_itf_host/{}".format(name), ], @@ -99,7 +109,7 @@ def integration_test( }), plugins = ["//tests/utils/plugins:integration_plugin"] + select({ "//config:x86_64-linux": ["@score_itf//score/itf/plugins:docker_plugin"], - "//config:x86_64-qnx": ["@score_itf//score/itf/plugins/qemu"], + "//config:x86_64-qnx": ["@score_itf//score/itf/plugins:qemu_plugin"], "//config:host": ["//tests/utils/plugins:localhost_plugin"], "//conditions:default": [], }), diff --git a/tests/utils/environments/BUILD b/tests/utils/environments/BUILD index 2c85cdb51..bf049e025 100644 --- a/tests/utils/environments/BUILD +++ b/tests/utils/environments/BUILD @@ -15,25 +15,3 @@ exports_files( ["ecu_logging_config.json"], visibility = ["//tests/utils/environments:__subpackages__"], ) - -# Empty target for native builds -filegroup( - name = "empty_target", - srcs = [], - visibility = [ - "//examples:__subpackages__", - "//tests:__subpackages__", - ], -) - -alias( - name = "test_environment", - actual = select({ - "//config:x86_64-linux": "//tests/utils/environments/x86_64-linux", - "//conditions:default": ":empty_target", - }), - visibility = [ - "//examples:__subpackages__", - "//tests:__subpackages__", - ], -) diff --git a/tests/utils/environments/x86_64-qnx/BUILD b/tests/utils/environments/x86_64-qnx/BUILD new file mode 100644 index 000000000..12a12b7ef --- /dev/null +++ b/tests/utils/environments/x86_64-qnx/BUILD @@ -0,0 +1,33 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +load("@rules_pkg//pkg:mappings.bzl", "pkg_files") +load("@score_rules_imagefs//rules/qnx:ifs.bzl", "qnx_ifs") + +pkg_files( + name = "qnx_config", + srcs = ["qcrypto.conf"], + prefix = "/etc", +) + +exports_files( + ["qemu_config.json"], + visibility = ["//tests:__subpackages__"], +) + +qnx_ifs( + name = "qemu_image", + build_file = ":init.build", + srcs = [":qnx_config"], + visibility = ["//tests:__subpackages__"], +) \ No newline at end of file diff --git a/tests/utils/environments/x86_64-qnx/init.build b/tests/utils/environments/x86_64-qnx/init.build new file mode 100644 index 000000000..f03faa5c6 --- /dev/null +++ b/tests/utils/environments/x86_64-qnx/init.build @@ -0,0 +1,412 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +# This file originates from https://github.com/eclipse-score/communication/blob/8826549731f455fad66bd8f54292e3355bf046c3/quality/integration_testing/environments/qnx8_qemu/init_x86_64.build + +############################################################################### +# +# Example image built based on minimal configuration from QNX +# +############################################################################### + +[-optional] + +[image=0x3600000] +[virtual=x86_64,multiboot] boot = { + startup-x86 -v -D8250..115200 -zz + PATH=/proc/boot + LD_LIBRARY_PATH=/proc/boot + [+keeplinked] procnto-smp-instr +} + +[+script] startup-script = { + procmgr_symlink /dev/shmem /tmp + display_msg Welcome to QNX OS 8.0 on x86_64 tweaked for S-CORE! + # These env variables get inherited by all programs which follow + SYSNAME=nto + TERM=qansi + + devc-ser8250 & + waitfor /dev/ser1 + reopen /dev/ser1 + + /proc/boot/startup.sh + + [+session] /bin/sh & +} + +[uid=0 gid=0 perms=0700] startup.sh = { + # Enable logging via slogger2 + echo "---> Starting slogger2" + slogger2 -m -s 253952 -G 7 -V -g 486 + waitfor /dev/slog2 + + # PCI server required for virtio-net (QEMU networking) + echo "---> Starting PCI Services" + pci-server --config=/proc/boot/pci_server.cfg + waitfor /dev/pci + + # Required to support POSIX pipes (used e.g. by service discovery) + echo "---> Starting Pipe" + pipe + waitfor /dev/pipe + + # Start random number generator service (provides /dev/random + # needed by C++ std::random_device and other consumers). + echo "---> Starting Random" + random + waitfor /dev/random + + # Service discovery depends on inotify, which requires fsevmgr + echo "---> Starting fsevmgr" + fsevmgr + waitfor /dev/fsnotify + + # Create a RAM disk and mount it at /tmp_discovery + # Block size reduced to the minimum, since we only put flag files without content. + # 4096 inodes for approx. 1360 service offers (~2-3 files per service offer) + echo "---> Starting devb-ram" + devb-ram ram capacity=1 blk ramdisk=10m,cache=512k,vnode=256 2>/dev/null + waitfor /dev/ram0 + + echo "---> Mounting RAM disk" + mkqnx6fs -q -b 512 -i 4096 /dev/ram0 + mount -t qnx6 /dev/ram0 /tmp_discovery + chmod 777 /tmp_discovery + + # Pseudo-terminal driver needed by sshd + echo "---> Starting devc-pty" + devc-pty -n 32 + + # Networking stack for SSH-based ITF test harness communication + echo "---> Starting Networking" + io-sock -m phy -m pci -d vtnet_pci + waitfor /dev/socket + + echo "---> Configuring network interface" + if_up -p vtnet0 + ifconfig vtnet0 10.0.2.15 netmask 255.255.255.0 + sysctl -w net.inet.icmp.bmcastecho=1 + sysctl -w qnx.sec.droproot=33:33 + + echo "---> Setting hostname" + hostname qnx-score + + # SSH daemon - ITF test harness communicates via SSH + echo "---> Starting SSH daemon" + /proc/boot/sshd -f /var/ssh/sshd_config +} + +# dynamic loader +/usr/lib/ldqnx-64.so.2=ldqnx-64.so.2 + +cam-disk.so # CAM disk driver for storage devices +fs-qnx6.so # QNX6 file system support +io-blk.so # Block I/O manager +libc++.so.2 # C++ standard library +libc.so # C standard library (essential) +libc.so.6 # Main C library (malloc, printf, file I/O, etc.) +libcam.so.2 # CAM library for device access +libcrypto.so.3 # OpenSSL 3 crypto library (needed by qcrypto-openssl-3 plugin) +libexpat.so.2 # XML parser library (needed by PCI subsystem) +libfsnotify.so.1 # File system notification library +libgcc_s.so.1 # GCC runtime support library +libiconv.so.1 # Character encoding conversion library +libjail.so.1 # Jail/sandbox library (needed by sshd) +libm.so # Math library +libpam.so.2 # PAM authentication library (needed by sshd) +libpci.so.3.0 # PCI access library (needed by pci-server) +libqcrypto.so.1.0 # QNX cryptographic library +libqh.so.1 # QNX helper library +libqnxnoexcept.so=${QNXNOEXCEPT_LIBRARY} +libregex.so.1 # Regular expression library +libsecpol.so.1 # Security policy library +libslog2.so.1 # System logging library (slog2_* functions) +libslog2parse.so.1 # System log parsing library +libsocket.so.4 # Socket library (needed by libcrypto) +libssl.so.3 # OpenSSL TLS library (needed by sshd) +libz.so # Zlib compression library + +# qcrypto plugin loaded by the random service at runtime +[search=${QNX_TARGET}/x86_64/lib/dll] qcrypto-openssl-3.so + +############################################# +### NETWORKING COMPONENTS ### +############################################# +io-sock # Network stack manager +mods-pci.so # PCI network module +mods-phy.so # PHY network module +devs-vtnet_pci.so # VirtIO network PCI driver (QEMU) + +[type=link] /bin/sh=/proc/boot/ksh # Create symbolic link: sh -> ksh (standard shell link) +[type=link] /bin/ls=/proc/boot/ls # Link ls to IFS version for compatibility + +toybox # Minimal Unix utilities collection (replaces many GNU tools) +[type=link] cp=toybox # Copy files and directories +[type=link] ls=toybox # List directory contents +[type=link] cat=toybox # Display file contents +[type=link] chmod=toybox # Change file permissions +[type=link] rm=toybox # Remove files and directories +[type=link] dd=toybox # Convert and copy files with specified I/O block size +[type=link] echo=toybox # Display text +[type=link] grep=toybox # Search text patterns in files +[type=link] mkdir=toybox # Create directories +[type=link] ascii=toybox # Display ASCII character set +[type=link] base64=toybox # Base64 encoding/decoding utility +[type=link] basename=toybox # Extract filename from path +[type=link] bc=toybox # Basic calculator +[type=link] bunzip2=toybox # Decompress bzip2 files +[type=link] bzcat=toybox # Display contents of bzip2 files +[type=link] cal=toybox # Display calendar +[type=link] chgrp=toybox # Change group ownership +[type=link] chown=toybox # Change file ownership +[type=link] cksum=toybox # Calculate checksums +[type=link] clear=toybox # Clear terminal screen +[type=link] cmp=toybox # Compare files byte by byte +[type=link] comm=toybox # Compare sorted files line by line +[type=link] cpio=toybox # Copy files to/from archives +[type=link] crc32=toybox # Calculate CRC32 checksums +[type=link] cut=toybox # Extract columns from files +[type=link] date=toybox # Display or set system date +[type=link] diff=toybox # Compare files line by line +[type=link] dirname=toybox # Extract directory from path +[type=link] dos2unix=toybox # Convert DOS line endings to Unix +[type=link] du=toybox # Display disk usage +[type=link] egrep=toybox # Extended grep with regular expressions +[type=link] env=toybox # Display or set environment variables +[type=link] expand=toybox # Convert tabs to spaces +[type=link] expr=toybox # Evaluate expressions +[type=link] false=toybox # Return false status +[type=link] fgrep=toybox # Fast grep for fixed strings +[type=link] file=toybox # Determine file type +[type=link] find=toybox # Search for files and directories +[type=link] fmt=toybox # Format text paragraphs +[type=link] groups=toybox # Display user group membership +[type=link] gunzip=toybox # Decompress gzip files +[type=link] gzip=toybox # Compress files with gzip +[type=link] hd=toybox # Hexadecimal dump (alias for hexdump) +[type=link] head=toybox # Display first lines of files +[type=link] hexdump=toybox # Display files in hexadecimal format +[type=link] id=toybox # Display user and group IDs +[type=link] install=toybox # Copy files and set attributes +[type=link] link=toybox # Create hard links +[type=link] logname=toybox # Display login name +[type=link] md5sum=toybox # Calculate MD5 checksums +[type=link] mkfifo=toybox # Create named pipes (FIFOs) +[type=link] mktemp=toybox # Create temporary files/directories +[type=link] more=toybox # Display files page by page +[type=link] mv=toybox # Move/rename files and directories +[type=link] nl=toybox # Number lines in files +[type=link] nohup=toybox # Run commands immune to hangups +[type=link] od=toybox # Dump files in octal format +[type=link] paste=toybox # Merge lines from files +[type=link] patch=toybox # Apply patches to files +[type=link] printenv=toybox # Print environment variables +[type=link] printf=toybox # Format and print data +[type=link] pwd=toybox # Print working directory +[type=link] readlink=toybox # Display target of symbolic links +[type=link] realpath=toybox # Display absolute path +[type=link] rmdir=toybox # Remove empty directories +[type=link] sed=toybox # Stream editor for filtering/transforming text +[type=link] seq=toybox # Generate sequences of numbers +[type=link] sha1sum=toybox # Calculate SHA1 checksums +[type=link] sleep=toybox # Suspend execution for specified time +[type=link] sort=toybox # Sort lines in text files +[type=link] split=toybox # Split files into pieces +[type=link] stat=toybox # Display file/filesystem status +[type=link] strings=toybox # Extract printable strings from files +[type=link] tail=toybox # Display last lines of files +[type=link] tee=toybox # Copy input to files and stdout +[type=link] test=toybox # Evaluate conditional expressions +[type=link] time=toybox # Time command execution +[type=link] timeout=toybox # Run command with time limit +[type=link] touch=toybox # Update file timestamps +[type=link] tr=toybox # Translate or delete characters +[type=link] true=toybox # Return true status +[type=link] truncate=toybox # Truncate files to specified size +[type=link] tty=toybox # Display terminal name +[type=link] uname=toybox # Display system information +[type=link] uniq=toybox # Remove duplicate lines +[type=link] unix2dos=toybox # Convert Unix line endings to DOS +[type=link] unlink=toybox # Remove files (system call interface) +[type=link] uudecode=toybox # Decode uuencoded files +[type=link] uuencode=toybox # Encode files using uuencoding +[type=link] uuidgen=toybox # Generate UUIDs +[type=link] wc=toybox # Count lines, words, and characters +[type=link] which=toybox # Locate commands in PATH +[type=link] whoami=toybox # Display current username +[type=link] xargs=toybox # Execute commands from standard input +[type=link] xxd=toybox # Make hexdump or reverse +[type=link] yes=toybox # Output string repeatedly +[type=link] zcat=toybox # Display contents of compressed files +[type=link] nc=toybox # Netcat for network connections and packet streaming +[type=link] netcat=toybox # Netcat alias for network connections +[type=link] waitfor=on # Create symbolic link: waitfor -> on (waits for resources to become available) +[type=link] ability=on # Create symbolic link: ability -> on (manages process abilities/privileges) +[type=link] setconf=getconf # Create symbolic link: setconf -> getconf (sets configuration parameters) +[type=link] libslog2.so=libslog2.so.1 # Create version-neutral symbolic link +[type=link] libsocket.so=libsocket.so.4 # Create version-neutral symbolic link +[type=link] libqh.so=libqh.so.1 # Create version-neutral symbolic link +[type=link] qcrypto-openssl.so=qcrypto-openssl-3.so + +############################################# +### Tools ### +############################################# +devb-ram # RAM disk block device manager +devc-pty # Pseudo-terminal driver (needed by sshd) +devc-ser8250 # Serial port driver for 8250/16550 UART controllers (console access) +fsevmgr # File system event manager +getconf # Get system configuration values +hostname # Set/display system hostname +if_up # Bring network interface up +ifconfig # Configure network interfaces +ksh # Korn shell - provides command-line interface and scripting +ln # Create file links +mkqnx6fs # Create QNX6 file systems +mount # File system mount utility - mounts/unmounts file systems +on # Command execution utility - runs commands with specific options +pci-server # PCI server (required for virtio-net) +pdebug # Process debugger +pidin # Process information display - shows running processes (like 'ps' on Linux) +pipe # Named pipe manager +random # Random number generator service (/dev/random, /dev/urandom) +route # Manage network routing tables +slay # Kill or modify a process by name or ID +slog2info # System log viewer - displays logged messages +slogger2 # System logging daemon - collects and manages log messages +sshd # SSH daemon (ITF test harness communicates via SSH) +sysctl # View/modify kernel parameters + +/usr/lib/ssh/sftp-server=${QNX_TARGET}/${PROCESSOR}/usr/libexec/sftp-server # SFTP server (file transfer for ITF) +/usr/libexec/sshd-session=${QNX_TARGET}/${PROCESSOR}/usr/libexec/sshd-session # SSH session handler (required by OpenSSH 9.8+) + +############################################# +### PCI COMPONENTS ### +############################################# +pci/pci_hw-Intel_x86.so +pci/pci_slog2.so +pci/pci_cap-0x05.so +pci/pci_cap-0x10.so +pci/pci_cap-0x11.so +pci/pci_strings.so +pci/pci_bkwd_compat.so +pci/pci_debug2.so + +############################################# +### SYSTEM DIRECTORIES ### +############################################# +[gid=0 uid=0 dperms=755 type=dir] /var/chroot/sshd +[gid=0 uid=0 dperms=700 type=dir] /var/ssh + +[perms=0444] pci_server.cfg = { +[buscfg] +DO_BUS_CONFIG=no + +[envars] +PCI_DEBUG_MODULE=pci_debug2.so +PCI_HW_MODULE=pci_hw-Intel_x86.so +PCI_HW_CONFIG_FILE=/proc/boot/pci_hw.cfg +} + +[perms=0444] pci_hw.cfg = { +[interrupts] +B0:D17:F0 A 18 +B0:D17:F0 B 19 +B0:D17:F0 C 16 +B0:D17:F0 D 17 +B3:D0:F0 A 18 +B3:D0:F0 B 19 +B3:D0:F0 C 16 +B3:D0:F0 D 17 +} + +[uid=0 gid=0 perms=0444] /etc/passwd = { +root::0:0:Superuser:/:/bin/sh +qnxuser::1000:1000:QNX User:/:/bin/sh +sshd::15:6:sshd:/:/bin/false +} + +[uid=0 gid=0 perms=0444] /etc/group = { +root::0:root +qnxuser::1000:qnxuser +sshd::6:sshd +} + +[uid=0 gid=0 perms=0444] /etc/profile = { +export TERM=qansi +export PATH=/proc/boot +export LD_LIBRARY_PATH=/proc/boot +export MAGIC=/system/etc/magic +} + +[uid=0 gid=0 perms=0400] /var/ssh/ssh_host_rsa_key = { +-----BEGIN OPENSSH PRIVATE KEY----- +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 +Fu+/MLbJQuA1zpAAAAAAEC +-----END OPENSSH PRIVATE KEY----- +} + +[uid=0 gid=0 perms=0444] /var/ssh/sshd_config = { +Port 22 +Protocol 2 +HostKey /var/ssh/ssh_host_rsa_key +AllowTcpForwarding yes +Subsystem sftp /usr/lib/ssh/sftp-server +PasswordAuthentication yes +PermitEmptyPasswords yes +PubkeyAuthentication no +ChallengeResponseAuthentication no +HostbasedAuthentication no +PermitRootLogin yes +PermitUserEnvironment yes +PidFile none +LogLevel DEBUG +StrictModes no +UseDNS no +MaxAuthTries 3 +LoginGraceTime 30 +} \ No newline at end of file diff --git a/tests/utils/environments/x86_64-qnx/qcrypto.conf b/tests/utils/environments/x86_64-qnx/qcrypto.conf new file mode 100644 index 000000000..b8a712181 --- /dev/null +++ b/tests/utils/environments/x86_64-qnx/qcrypto.conf @@ -0,0 +1,6 @@ +# Minimal qcrypto configuration for the random service. +# Uses the OpenSSL 3 plugin for cryptographic operations. +# The library auto-prepends "qcrypto-" to the plugin name, +# so "openssl-3" resolves to "qcrypto-openssl-3.so". +[random] +openssl-3 tags=random \ No newline at end of file diff --git a/tests/utils/environments/x86_64-qnx/qemu_config.json b/tests/utils/environments/x86_64-qnx/qemu_config.json new file mode 100644 index 000000000..1b19d57ab --- /dev/null +++ b/tests/utils/environments/x86_64-qnx/qemu_config.json @@ -0,0 +1,18 @@ +{ + "networks": [ + { + "name": "lo", + "ip_address": "127.0.0.1", + "gateway": "127.0.0.1" + } + ], + "ssh_port": 2222, + "qemu_num_cores": 2, + "qemu_ram_size": "1G", + "port_forwarding": [ + { + "host_port": 2222, + "guest_port": 22 + } + ] +} \ No newline at end of file