Message ID | 20250416053213.921444-3-dmukhin@ford.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | CI: updates to XTF CI runners | expand |
On Wed, 16 Apr 2025, dmkhn@proton.me wrote: > From: Denis Mukhin <dmukhin@ford.com> > > Use qemu-xtf.sh for qemu-smoke-x86-64-gcc-efi job. > > Lead time is reduced a bit since not all XTF code base is built, just the > required test. > > Signed-off-by: Denis Mukhin <dmukhin@ford.com> > --- > automation/gitlab-ci/test.yaml | 2 +- > .../include/configs/xtf-x86-64-efi-config | 0 > automation/scripts/include/xtf-x86-64-efi | 52 +++++++++++++++++++ > automation/scripts/qemu-smoke-x86-64-efi.sh | 43 --------------- > 4 files changed, 53 insertions(+), 44 deletions(-) > create mode 100644 automation/scripts/include/configs/xtf-x86-64-efi-config > create mode 100644 automation/scripts/include/xtf-x86-64-efi > delete mode 100755 automation/scripts/qemu-smoke-x86-64-efi.sh > > diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml > index 3adc841335..ca1e4eb528 100644 > --- a/automation/gitlab-ci/test.yaml > +++ b/automation/gitlab-ci/test.yaml > @@ -687,7 +687,7 @@ qemu-smoke-x86-64-clang-pvh: > qemu-smoke-x86-64-gcc-efi: > extends: .qemu-smoke-x86-64 > script: > - - ./automation/scripts/qemu-smoke-x86-64-efi.sh pv 2>&1 | tee ${LOGFILE} > + - ./automation/scripts/qemu-xtf.sh x86-64-efi hvm64 example 2>&1 | tee ${LOGFILE} > needs: > - debian-12-x86_64-gcc-debug > > diff --git a/automation/scripts/include/configs/xtf-x86-64-efi-config b/automation/scripts/include/configs/xtf-x86-64-efi-config > new file mode 100644 > index 0000000000..e69de29bb2 > diff --git a/automation/scripts/include/xtf-x86-64-efi b/automation/scripts/include/xtf-x86-64-efi > new file mode 100644 > index 0000000000..79622d5a6c > --- /dev/null > +++ b/automation/scripts/include/xtf-x86-64-efi > @@ -0,0 +1,52 @@ > +#!/bin/bash > +# > +# XTF test utilities (x86_64, EFI). > +# > + > +# Arch-specific environment overrides. > +function xtf_arch_prepare() > +{ > + export FW_PREFIX="${FW_PREFIX:-/usr/share/OVMF/}" > + export QEMU_PREFIX="${QEMU_PREFIX:-}" > + export XEN_BINARY="${XEN_BINARY:-${WORKDIR}/xen.efi}" Any chance we can avoid using WORKDIR? Or alternatively, we can remove TOP? Or remove both? :-) Maybe it is best to keep WORKDIR and remove TOP, I am not sure. I am just trying to reduce the amount of variables used and that we depend upon. I assume you tested the pipeline and it worked, right? > + export XEN_CONSOLE="${XEN_CONSOLE:-com1}" > + export XTF_SRC_BRANCH="${XTF_SRC_BRANCH:-master}" > + export XTF_SRC_URI="${XTF_SRC_URI:-https://xenbits.xen.org/git-http/xtf.git}" > + export XTF_SRC_VARIANTS="hvm64 pv64" > +} > + > +# Perform arch-specific XTF environment setup. > +function xtf_arch_setup() > +{ > + local esp_dir="${WORKDIR}/boot-esp" > + local efi_dir="${esp_dir}/EFI/BOOT" > + > + # Generate EFI boot environment > + mkdir -p ${efi_dir} > + cp ${XEN_BINARY} ${efi_dir}/BOOTX64.EFI > + cp ${XTF_BINARY} ${efi_dir}/kernel > + > + cat > ${efi_dir}/BOOTX64.cfg <<EOF > +[global] > +default=test > + > +[test] > +options=${XEN_CMDLINE} > +kernel=kernel > +EOF > + > + # NB: OVMF_CODE.fd is read-only, no need to copy > + cp ${FW_PREFIX}OVMF_VARS.fd ${WORKDIR} > + > + export TEST_CMD="${QEMU_PREFIX}qemu-system-x86_64 \ > + -no-reboot \ > + -nographic \ > + -monitor none \ > + -serial stdio \ > + -m 512 \ > + -M q35,kernel-irqchip=split \ > + -drive if=pflash,format=raw,readonly=on,file=${FW_PREFIX}OVMF_CODE.fd \ > + -drive if=pflash,format=raw,file=${WORKDIR}/OVMF_VARS.fd \ > + -drive file=fat:rw:${esp_dir},media=disk,index=0,format=raw \ > + " > +} > diff --git a/automation/scripts/qemu-smoke-x86-64-efi.sh b/automation/scripts/qemu-smoke-x86-64-efi.sh > deleted file mode 100755 > index 7572722be6..0000000000 > --- a/automation/scripts/qemu-smoke-x86-64-efi.sh > +++ /dev/null > @@ -1,43 +0,0 @@ > -#!/bin/bash > - > -set -ex -o pipefail > - > -# variant should be either pv or pvh > -variant=$1 > - > -# Clone and build XTF > -git clone https://xenbits.xen.org/git-http/xtf.git > -cd xtf && make -j$(nproc) && cd - > - > -case $variant in > - pvh) k=test-hvm64-example extra="dom0-iommu=none dom0=pvh" ;; > - *) k=test-pv64-example extra= ;; > -esac > - > -mkdir -p boot-esp/EFI/BOOT > -cp binaries/xen.efi boot-esp/EFI/BOOT/BOOTX64.EFI > -cp xtf/tests/example/$k boot-esp/EFI/BOOT/kernel > - > -cat > boot-esp/EFI/BOOT/BOOTX64.cfg <<EOF > -[global] > -default=test > - > -[test] > -options=loglvl=all console=com1 noreboot console_timestamps=boot $extra > -kernel=kernel > -EOF > - > -cp /usr/share/OVMF/OVMF_CODE.fd OVMF_CODE.fd > -cp /usr/share/OVMF/OVMF_VARS.fd OVMF_VARS.fd > - > -rm -f smoke.serial > -export TEST_CMD="qemu-system-x86_64 -nographic -M q35,kernel-irqchip=split \ > - -drive if=pflash,format=raw,readonly=on,file=OVMF_CODE.fd \ > - -drive if=pflash,format=raw,file=OVMF_VARS.fd \ > - -drive file=fat:rw:boot-esp,media=disk,index=0,format=raw \ > - -m 512 -monitor none -serial stdio" > - > -export TEST_LOG="smoke.serial" > -export PASSED="Test result: SUCCESS" > - > -./automation/scripts/console.exp | sed 's/\r\+$//' > -- > 2.34.1 > >
On Wed, Apr 16, 2025 at 05:14:41PM -0700, Stefano Stabellini wrote: > On Wed, 16 Apr 2025, dmkhn@proton.me wrote: > > From: Denis Mukhin <dmukhin@ford.com> > > > > Use qemu-xtf.sh for qemu-smoke-x86-64-gcc-efi job. > > > > Lead time is reduced a bit since not all XTF code base is built, just the > > required test. > > > > Signed-off-by: Denis Mukhin <dmukhin@ford.com> > > --- > > automation/gitlab-ci/test.yaml | 2 +- > > .../include/configs/xtf-x86-64-efi-config | 0 > > automation/scripts/include/xtf-x86-64-efi | 52 +++++++++++++++++++ > > automation/scripts/qemu-smoke-x86-64-efi.sh | 43 --------------- > > 4 files changed, 53 insertions(+), 44 deletions(-) > > create mode 100644 automation/scripts/include/configs/xtf-x86-64-efi-config > > create mode 100644 automation/scripts/include/xtf-x86-64-efi > > delete mode 100755 automation/scripts/qemu-smoke-x86-64-efi.sh > > > > diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml > > index 3adc841335..ca1e4eb528 100644 > > --- a/automation/gitlab-ci/test.yaml > > +++ b/automation/gitlab-ci/test.yaml > > @@ -687,7 +687,7 @@ qemu-smoke-x86-64-clang-pvh: > > qemu-smoke-x86-64-gcc-efi: > > extends: .qemu-smoke-x86-64 > > script: > > - - ./automation/scripts/qemu-smoke-x86-64-efi.sh pv 2>&1 | tee ${LOGFILE} > > + - ./automation/scripts/qemu-xtf.sh x86-64-efi hvm64 example 2>&1 | tee ${LOGFILE} > > needs: > > - debian-12-x86_64-gcc-debug > > > > diff --git a/automation/scripts/include/configs/xtf-x86-64-efi-config b/automation/scripts/include/configs/xtf-x86-64-efi-config > > new file mode 100644 > > index 0000000000..e69de29bb2 > > diff --git a/automation/scripts/include/xtf-x86-64-efi b/automation/scripts/include/xtf-x86-64-efi > > new file mode 100644 > > index 0000000000..79622d5a6c > > --- /dev/null > > +++ b/automation/scripts/include/xtf-x86-64-efi > > @@ -0,0 +1,52 @@ > > +#!/bin/bash > > +# > > +# XTF test utilities (x86_64, EFI). > > +# > > + > > +# Arch-specific environment overrides. > > +function xtf_arch_prepare() > > +{ > > + export FW_PREFIX="${FW_PREFIX:-/usr/share/OVMF/}" > > + export QEMU_PREFIX="${QEMU_PREFIX:-}" > > + export XEN_BINARY="${XEN_BINARY:-${WORKDIR}/xen.efi}" > > Any chance we can avoid using WORKDIR? Or alternatively, we can remove > TOP? Or remove both? :-) Yeah, it grew a bit convoluted, but I decided to give it a try to collect opinions. Thanks for the feedback! These two variables have different meanings: - WORKDIR is a scratch location for keeping artifacts like DTB, EFI config, imagebuilder config. - TOP (looks like at the very least needs a better name) is the helper variable pointint to the location of automation/scripts. > > Maybe it is best to keep WORKDIR and remove TOP, I am not sure. I am > just trying to reduce the amount of variables used and that we depend > upon. I think it should be easy to drop TOP. > > I assume you tested the pipeline and it worked, right? Yes, the pipeline is green: https://gitlab.com/xen-project/people/dmukhin/xen/-/pipelines/1770437024 > > > > + export XEN_CONSOLE="${XEN_CONSOLE:-com1}" > > + export XTF_SRC_BRANCH="${XTF_SRC_BRANCH:-master}" > > + export XTF_SRC_URI="${XTF_SRC_URI:-https://xenbits.xen.org/git-http/xtf.git}" > > + export XTF_SRC_VARIANTS="hvm64 pv64" > > +} > > + > > +# Perform arch-specific XTF environment setup. > > +function xtf_arch_setup() > > +{ > > + local esp_dir="${WORKDIR}/boot-esp" > > + local efi_dir="${esp_dir}/EFI/BOOT" > > + > > + # Generate EFI boot environment > > + mkdir -p ${efi_dir} > > + cp ${XEN_BINARY} ${efi_dir}/BOOTX64.EFI > > + cp ${XTF_BINARY} ${efi_dir}/kernel > > + > > + cat > ${efi_dir}/BOOTX64.cfg <<EOF > > +[global] > > +default=test > > + > > +[test] > > +options=${XEN_CMDLINE} > > +kernel=kernel > > +EOF > > + > > + # NB: OVMF_CODE.fd is read-only, no need to copy > > + cp ${FW_PREFIX}OVMF_VARS.fd ${WORKDIR} > > + > > + export TEST_CMD="${QEMU_PREFIX}qemu-system-x86_64 \ > > + -no-reboot \ > > + -nographic \ > > + -monitor none \ > > + -serial stdio \ > > + -m 512 \ > > + -M q35,kernel-irqchip=split \ > > + -drive if=pflash,format=raw,readonly=on,file=${FW_PREFIX}OVMF_CODE.fd \ > > + -drive if=pflash,format=raw,file=${WORKDIR}/OVMF_VARS.fd \ > > + -drive file=fat:rw:${esp_dir},media=disk,index=0,format=raw \ > > + " > > +} > > diff --git a/automation/scripts/qemu-smoke-x86-64-efi.sh b/automation/scripts/qemu-smoke-x86-64-efi.sh > > deleted file mode 100755 > > index 7572722be6..0000000000 > > --- a/automation/scripts/qemu-smoke-x86-64-efi.sh > > +++ /dev/null > > @@ -1,43 +0,0 @@ > > -#!/bin/bash > > - > > -set -ex -o pipefail > > - > > -# variant should be either pv or pvh > > -variant=$1 > > - > > -# Clone and build XTF > > -git clone https://xenbits.xen.org/git-http/xtf.git > > -cd xtf && make -j$(nproc) && cd - > > - > > -case $variant in > > - pvh) k=test-hvm64-example extra="dom0-iommu=none dom0=pvh" ;; > > - *) k=test-pv64-example extra= ;; > > -esac > > - > > -mkdir -p boot-esp/EFI/BOOT > > -cp binaries/xen.efi boot-esp/EFI/BOOT/BOOTX64.EFI > > -cp xtf/tests/example/$k boot-esp/EFI/BOOT/kernel > > - > > -cat > boot-esp/EFI/BOOT/BOOTX64.cfg <<EOF > > -[global] > > -default=test > > - > > -[test] > > -options=loglvl=all console=com1 noreboot console_timestamps=boot $extra > > -kernel=kernel > > -EOF > > - > > -cp /usr/share/OVMF/OVMF_CODE.fd OVMF_CODE.fd > > -cp /usr/share/OVMF/OVMF_VARS.fd OVMF_VARS.fd > > - > > -rm -f smoke.serial > > -export TEST_CMD="qemu-system-x86_64 -nographic -M q35,kernel-irqchip=split \ > > - -drive if=pflash,format=raw,readonly=on,file=OVMF_CODE.fd \ > > - -drive if=pflash,format=raw,file=OVMF_VARS.fd \ > > - -drive file=fat:rw:boot-esp,media=disk,index=0,format=raw \ > > - -m 512 -monitor none -serial stdio" > > - > > -export TEST_LOG="smoke.serial" > > -export PASSED="Test result: SUCCESS" > > - > > -./automation/scripts/console.exp | sed 's/\r\+$//' > > -- > > 2.34.1 > > > >
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml index 3adc841335..ca1e4eb528 100644 --- a/automation/gitlab-ci/test.yaml +++ b/automation/gitlab-ci/test.yaml @@ -687,7 +687,7 @@ qemu-smoke-x86-64-clang-pvh: qemu-smoke-x86-64-gcc-efi: extends: .qemu-smoke-x86-64 script: - - ./automation/scripts/qemu-smoke-x86-64-efi.sh pv 2>&1 | tee ${LOGFILE} + - ./automation/scripts/qemu-xtf.sh x86-64-efi hvm64 example 2>&1 | tee ${LOGFILE} needs: - debian-12-x86_64-gcc-debug diff --git a/automation/scripts/include/configs/xtf-x86-64-efi-config b/automation/scripts/include/configs/xtf-x86-64-efi-config new file mode 100644 index 0000000000..e69de29bb2 diff --git a/automation/scripts/include/xtf-x86-64-efi b/automation/scripts/include/xtf-x86-64-efi new file mode 100644 index 0000000000..79622d5a6c --- /dev/null +++ b/automation/scripts/include/xtf-x86-64-efi @@ -0,0 +1,52 @@ +#!/bin/bash +# +# XTF test utilities (x86_64, EFI). +# + +# Arch-specific environment overrides. +function xtf_arch_prepare() +{ + export FW_PREFIX="${FW_PREFIX:-/usr/share/OVMF/}" + export QEMU_PREFIX="${QEMU_PREFIX:-}" + export XEN_BINARY="${XEN_BINARY:-${WORKDIR}/xen.efi}" + export XEN_CONSOLE="${XEN_CONSOLE:-com1}" + export XTF_SRC_BRANCH="${XTF_SRC_BRANCH:-master}" + export XTF_SRC_URI="${XTF_SRC_URI:-https://xenbits.xen.org/git-http/xtf.git}" + export XTF_SRC_VARIANTS="hvm64 pv64" +} + +# Perform arch-specific XTF environment setup. +function xtf_arch_setup() +{ + local esp_dir="${WORKDIR}/boot-esp" + local efi_dir="${esp_dir}/EFI/BOOT" + + # Generate EFI boot environment + mkdir -p ${efi_dir} + cp ${XEN_BINARY} ${efi_dir}/BOOTX64.EFI + cp ${XTF_BINARY} ${efi_dir}/kernel + + cat > ${efi_dir}/BOOTX64.cfg <<EOF +[global] +default=test + +[test] +options=${XEN_CMDLINE} +kernel=kernel +EOF + + # NB: OVMF_CODE.fd is read-only, no need to copy + cp ${FW_PREFIX}OVMF_VARS.fd ${WORKDIR} + + export TEST_CMD="${QEMU_PREFIX}qemu-system-x86_64 \ + -no-reboot \ + -nographic \ + -monitor none \ + -serial stdio \ + -m 512 \ + -M q35,kernel-irqchip=split \ + -drive if=pflash,format=raw,readonly=on,file=${FW_PREFIX}OVMF_CODE.fd \ + -drive if=pflash,format=raw,file=${WORKDIR}/OVMF_VARS.fd \ + -drive file=fat:rw:${esp_dir},media=disk,index=0,format=raw \ + " +} diff --git a/automation/scripts/qemu-smoke-x86-64-efi.sh b/automation/scripts/qemu-smoke-x86-64-efi.sh deleted file mode 100755 index 7572722be6..0000000000 --- a/automation/scripts/qemu-smoke-x86-64-efi.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash - -set -ex -o pipefail - -# variant should be either pv or pvh -variant=$1 - -# Clone and build XTF -git clone https://xenbits.xen.org/git-http/xtf.git -cd xtf && make -j$(nproc) && cd - - -case $variant in - pvh) k=test-hvm64-example extra="dom0-iommu=none dom0=pvh" ;; - *) k=test-pv64-example extra= ;; -esac - -mkdir -p boot-esp/EFI/BOOT -cp binaries/xen.efi boot-esp/EFI/BOOT/BOOTX64.EFI -cp xtf/tests/example/$k boot-esp/EFI/BOOT/kernel - -cat > boot-esp/EFI/BOOT/BOOTX64.cfg <<EOF -[global] -default=test - -[test] -options=loglvl=all console=com1 noreboot console_timestamps=boot $extra -kernel=kernel -EOF - -cp /usr/share/OVMF/OVMF_CODE.fd OVMF_CODE.fd -cp /usr/share/OVMF/OVMF_VARS.fd OVMF_VARS.fd - -rm -f smoke.serial -export TEST_CMD="qemu-system-x86_64 -nographic -M q35,kernel-irqchip=split \ - -drive if=pflash,format=raw,readonly=on,file=OVMF_CODE.fd \ - -drive if=pflash,format=raw,file=OVMF_VARS.fd \ - -drive file=fat:rw:boot-esp,media=disk,index=0,format=raw \ - -m 512 -monitor none -serial stdio" - -export TEST_LOG="smoke.serial" -export PASSED="Test result: SUCCESS" - -./automation/scripts/console.exp | sed 's/\r\+$//'