[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v1] automation: add x86_64 xilinx smoke test



On Fri, 26 Jul 2024, victorm.lira@xxxxxxx wrote:
> From: Victor Lira <victorm.lira@xxxxxxx>
> 
> Add a test script and related job for running x86_64 dom0 tests.
> 
> Signed-off-by: Victor Lira <victorm.lira@xxxxxxx>

Looks great!

Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>


> ---
> Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> Cc: Doug Goldstein <cardoe@xxxxxxxxxx>
> ---
>  automation/gitlab-ci/test.yaml                |  24 +++
>  .../scripts/xilinx-smoke-dom0-x86_64.sh       | 144 ++++++++++++++++++
>  2 files changed, 168 insertions(+)
>  create mode 100755 automation/scripts/xilinx-smoke-dom0-x86_64.sh
> 
> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
> index d89e41f244..4e74946419 100644
> --- a/automation/gitlab-ci/test.yaml
> +++ b/automation/gitlab-ci/test.yaml
> @@ -96,6 +96,22 @@
>    tags:
>      - xilinx
> 
> +.xilinx-x86_64:
> +  extends: .test-jobs-common
> +  variables:
> +    CONTAINER: ubuntu:xenial-xilinx
> +    LOGFILE: xilinx-smoke-x86_64.log
> +  artifacts:
> +    paths:
> +      - smoke.serial
> +      - '*.log'
> +    when: always
> +  only:
> +    variables:
> +      - $XILINX_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true"
> +  tags:
> +    - xilinx
> +
>  .adl-x86-64:
>    extends: .test-jobs-common
>    variables:
> @@ -159,6 +175,14 @@ xilinx-smoke-dom0less-arm64-gcc-debug-gem-passthrough:
>      - *arm64-test-needs
>      - alpine-3.18-gcc-debug-arm64
> 
> +xilinx-smoke-dom0-x86_64-gcc-debug:
> +  extends: .xilinx-x86_64
> +  script:
> +    - ./automation/scripts/xilinx-smoke-dom0-x86_64.sh ping 2>&1 | tee 
> ${LOGFILE}
> +  needs:
> +    - *x86-64-test-needs
> +    - alpine-3.18-gcc-debug
> +
>  adl-smoke-x86-64-gcc-debug:
>    extends: .adl-x86-64
>    script:
> diff --git a/automation/scripts/xilinx-smoke-dom0-x86_64.sh 
> b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
> new file mode 100755
> index 0000000000..e6e6fac6a5
> --- /dev/null
> +++ b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
> @@ -0,0 +1,144 @@
> +#!/bin/sh
> +
> +# Run x86_64 dom0 tests on hardware.
> +
> +set -ex
> +
> +fatal() {
> +    echo "$(basename "$0") $*" >&2
> +    exit 1
> +}
> +
> +# Test parameter defaults.
> +TEST="$1"
> +PASS_MSG="Test passed: ${TEST}"
> +XEN_CMD_CONSOLE="console=com1 com1=115200,8n1,0x3F8,4"
> +XEN_CMD_DOM0="dom0=pvh dom0_max_vcpus=4 dom0_mem=4G"
> +XEN_CMD_XEN="sched=null loglvl=all guest_loglvl=all console_timestamps=boot"
> +XEN_CMD_EXTRA=""
> +DOM0_CMD=""
> +DOMU_CMD=""
> +DOMU_CFG='
> +type = "pvh"
> +name = "domU"
> +kernel = "/boot/vmlinuz"
> +ramdisk = "/boot/initrd-domU"
> +extra = "root=/dev/ram0 console=hvc0"
> +memory = 512
> +vif = [ "bridge=xenbr0", ]
> +disk = [ ]
> +'
> +TIMEOUT_SECONDS=120
> +
> +# Select test variant.
> +if [ "${TEST}" = "ping" ]; then
> +    DOMU_MSG="domU online"
> +    DOMU_CMD="
> +ifconfig eth0 192.168.0.2
> +until ping -c 10 192.168.0.1; do
> +    sleep 1
> +done
> +echo \"${DOMU_MSG}\"
> +"
> +    DOM0_CMD="
> +set +x
> +until grep -q \"${DOMU_MSG}\" /var/log/xen/console/guest-domU.log; do
> +    sleep 1
> +done
> +set -x
> +echo \"${PASS_MSG}\"
> +"
> +else
> +    fatal "Unknown test: ${TEST}"
> +fi
> +
> +# Set up domU rootfs.
> +mkdir -p rootfs
> +cd rootfs
> +tar xzf ../binaries/initrd.tar.gz
> +mkdir proc
> +mkdir run
> +mkdir srv
> +mkdir sys
> +rm var/run
> +echo "#!/bin/sh
> +
> +${DOMU_CMD}
> +" > etc/local.d/xen.start
> +chmod +x etc/local.d/xen.start
> +echo "rc_verbose=yes" >> etc/rc.conf
> +sed -i -e 's/^Welcome/domU \0/' etc/issue
> +find . | cpio -H newc -o | gzip > ../binaries/domU-rootfs.cpio.gz
> +cd ..
> +rm -rf rootfs
> +
> +# Set up dom0 rootfs.
> +mkdir -p rootfs
> +cd rootfs
> +tar xzf ../binaries/initrd.tar.gz
> +mkdir boot
> +mkdir proc
> +mkdir run
> +mkdir srv
> +mkdir sys
> +rm var/run
> +cp -ar ../binaries/dist/install/* .
> +echo "#!/bin/bash
> +
> +export LD_LIBRARY_PATH=/usr/local/lib
> +bash /etc/init.d/xencommons start
> +
> +brctl addbr xenbr0
> +brctl addif xenbr0 eth0
> +ifconfig eth0 up
> +ifconfig xenbr0 up
> +ifconfig xenbr0 192.168.0.1
> +
> +# get domU console content into test log
> +tail -F /var/log/xen/console/guest-domU.log 2>/dev/null | sed -e 
> \"s/^/(domU) /\" &
> +xl create /etc/xen/domU.cfg
> +${DOM0_CMD}
> +" > etc/local.d/xen.start
> +chmod +x etc/local.d/xen.start
> +echo "${DOMU_CFG}" > etc/xen/domU.cfg
> +echo "rc_verbose=yes" >> etc/rc.conf
> +echo "XENCONSOLED_TRACE=all" >> etc/default/xencommons
> +echo "QEMU_XEN=/bin/false" >> etc/default/xencommons
> +mkdir -p var/log/xen/console
> +cp ../binaries/bzImage boot/vmlinuz
> +cp ../binaries/domU-rootfs.cpio.gz boot/initrd-domU
> +find . | cpio -H newc -o | gzip > ../binaries/dom0-rootfs.cpio.gz
> +cd ..
> +
> +# Load software into TFTP server directory.
> +TFTP="/scratch/gitlab-runner/tftp"
> +XEN_CMDLINE="${XEN_CMD_CONSOLE} ${XEN_CMD_XEN} ${XEN_CMD_DOM0} 
> ${XEN_CMD_EXTRA}"
> +cp -f binaries/xen ${TFTP}/pxelinux.cfg/xen
> +cp -f binaries/bzImage ${TFTP}/pxelinux.cfg/vmlinuz
> +cp -f binaries/dom0-rootfs.cpio.gz ${TFTP}/pxelinux.cfg/initrd-dom0
> +echo "
> +net_default_server=10.0.6.1
> +multiboot2 (tftp)/pxelinux.cfg/xen ${XEN_CMDLINE}
> +module2 (tftp)/pxelinux.cfg/vmlinuz console=hvc0 root=/dev/ram0 
> earlyprintk=xen
> +module2 (tftp)/pxelinux.cfg/initrd-dom0
> +boot
> +" > ${TFTP}/pxelinux.cfg/grub.cfg
> +
> +# Power cycle board and collect serial port output.
> +SERIAL_CMD="cat /dev/ttyUSB9 | tee smoke.serial | sed 's/\r//'"
> +sh /scratch/gitlab-runner/v2000a.sh 2
> +sleep 5
> +sh /scratch/gitlab-runner/v2000a.sh 1
> +sleep 5
> +set +e
> +stty -F /dev/ttyUSB9 115200
> +timeout -k 1 ${TIMEOUT_SECONDS} nohup sh -c "${SERIAL_CMD}"
> +sh /scratch/gitlab-runner/v2000a.sh 2
> +
> +set -e
> +
> +if grep -q "${PASS_MSG}" smoke.serial; then
> +    exit 0
> +fi
> +
> +fatal "Test failed"
> --
> 2.25.1
> 



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.