Re: [PATCH 6/6] CI: run the riscv64 smoke test via QTB framework console-test
Baptiste Le Duc <[email protected]>
| Newsgroups | gmane.comp.emulators.xen.devel |
|---|---|
| Message-ID | <1786980254.8631fc262581453bbf619ec5b2062170.1a01052c27d000c4f3@vates.tech> |
On 2026-08-10 18:09 +0200, Baptiste Le Duc wrote: During an internal review, Zheng Zhang ([email protected]) pointed out that this patch series defines the qemu-9.0.0 in riscv64-test-needs of test.yaml, whereas we should use the QEMU bundled in the 13-qtb-riscv64 container. I will fix this in v2 by resolving qemu-system-riscv64 from $PATH, since the test runs inside the 13-qtb-riscv64 container. As a consequence, the OpenSBI path in `binaries` in config.yaml is no longer needed either: qemu-system-riscv64 uses the firmware bundled with it. > qemu-smoke-riscv64-gcc drove QEMU through > automation/scripts/qemu-smoke-riscv64.sh, an expect wrapper whose machine > description (cpus, memory, device tree, console wiring) lived in the script > itself. The QTB framework now owns all of that: machines come from the > shared catalog, expectations from the test type's own YAML. > > Turn .qemu-riscv64 into a template running qemu_smoke_riscv64.py <type> run > <test> in the qtb-riscv64 container, machine and test picked per job > through QTB_TEST_TYPE/QTB_TEST. The container comes from the test-artifacts > registry, hence the new ARTIFACTS_REGISTRY next to the existing > ARTIFACTS_REPO/ARTIFACTS_BRANCH. QTB_BINARIES_DIR points at the artifacts > of the job in the new .riscv64-test-needs anchor (QEMU and its firmware), > and QTB_LOG_DIR collects the per-console logs, kept on failure and on > success. > > Point qemu-smoke-riscv64-gcc at that template, running the console-test > type on dom0less-1smp-0domu-1vcpu-aplic-imsic-null: a Xen-only machine, so > the smoke check is Xen's own "All set up" on console 0, the same string the > expect script waited for. > > Drop automation/scripts/qemu-smoke-riscv64.sh as it has no caller left in > the CI after this patch and drop smoke.serial from the .qemu-riscv64 > artifacts since no riscv64 job uses it anymore, the logs are now kept under > QTB_LOG_DIR. > > Assisted-by: Claude:claude-opus-5 > Signed-off-by: Baptiste Le Duc <[email protected]> > --- > .gitlab-ci.yml | 3 +++ > automation/gitlab-ci/test.yaml | 26 ++++++++++++++++++------ > automation/scripts/qemu-smoke-riscv64.sh | 19 ----------------- > 3 files changed, 23 insertions(+), 25 deletions(-) > delete mode 100755 automation/scripts/qemu-smoke-riscv64.sh > > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml > index f42a9abeaa..15f93b8634 100644 > --- a/.gitlab-ci.yml > +++ b/.gitlab-ci.yml > @@ -11,6 +11,9 @@ variables: > ARTIFACTS_BRANCH: > description: "Branch in test-artifacts to use" > value: master > + ARTIFACTS_REGISTRY: > + description: "Registry holding the test-artifacts containers" > + value: registry.gitlab.com/xen-project/hardware/test-artifacts > LINUX_JOB_X86_64: > description: "Job name in test-artifacts to use for Linux x86_64" > value: linux-6.6.56-x86_64 > diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml > index 61adc1baff..4775d2cc4e 100644 > --- a/automation/gitlab-ci/test.yaml > +++ b/automation/gitlab-ci/test.yaml > @@ -5,6 +5,11 @@ > - if: $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY > when: on_success > > +.riscv64-test-needs: &riscv64-test-needs > + - project: $ARTIFACTS_REPO > + job: qemu-9.0.0-riscv64 > + ref: $ARTIFACTS_BRANCH > + > .arm64-test-needs: &arm64-test-needs > - project: $ARTIFACTS_REPO > job: $LINUX_JOB_ARM64 > @@ -72,14 +77,21 @@ > TEST_TIMEOUT_OVERRIDE: 120 > > .qemu-riscv64: > + image: ${ARTIFACTS_REGISTRY}/${CONTAINER} > extends: .test-jobs-common > variables: > - CONTAINER: debian:13-riscv64 > - LOGFILE: qemu-smoke-riscv64.log > + CONTAINER: debian:13-qtb-riscv64 > + QTB_LOG_DIR: qtb-logs > + QTB_BINARIES_DIR: ${CI_PROJECT_DIR}/binaries > + script: > + - ./automation/scripts/qemu_smoke_riscv64.py > + ${QTB_TEST_TYPE} > + run > + ${QTB_TEST} > + --log-dir ${QTB_LOG_DIR} > artifacts: > paths: > - - smoke.serial > - - '*.log' > + - ${QTB_LOG_DIR} > when: always > tags: > - x86_64 > @@ -779,9 +791,11 @@ qemu-xtf-argo-x86_64-gcc-debug: > > qemu-smoke-riscv64-gcc: > extends: .qemu-riscv64 > - script: > - - ./automation/scripts/qemu-smoke-riscv64.sh 2>&1 | tee ${LOGFILE} > + variables: > + QTB_TEST_TYPE: console-test > + QTB_TEST: dom0less-1smp-0domu-1vcpu-aplic-imsic-null > needs: > + - *riscv64-test-needs > - debian-13-riscv64-gcc-debug > > qemu-smoke-ppc64le-powernv9-gcc: > diff --git a/automation/scripts/qemu-smoke-riscv64.sh b/automation/scripts/qemu-smoke-riscv64.sh > deleted file mode 100755 > index c0b1082a08..0000000000 > --- a/automation/scripts/qemu-smoke-riscv64.sh > +++ /dev/null > @@ -1,19 +0,0 @@ > -#!/bin/bash > - > -set -ex -o pipefail > - > -# Run the test > -rm -f smoke.serial > - > -export TEST_CMD="qemu-system-riscv64 \ > - -M virt,aia=aplic-imsic \ > - -cpu rv64,svpbmt=on \ > - -smp 1 \ > - -nographic \ > - -m 2g \ > - -kernel binaries/xen" > - > -export TEST_LOG="smoke.serial" > -export PASSED="All set up" > - > -./automation/scripts/console.exp |& sed 's/\r\+$//' > > > -- > Baptiste Le Duc | Vates Hypervisor & Kernel Engineer > > XCP-ng & Xen Orchestra - Vates solutions > > web: https://vates.tech