[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen stable-4.19] automation: use expect utility in xilinx tests
commit 9c17da3ea0d04226c584feedf4121691a440b4a6 Author: Victor Lira <victorm.lira@xxxxxxx> AuthorDate: Thu Aug 29 15:34:23 2024 -0700 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Mon Nov 11 18:16:35 2024 +0000 automation: use expect utility in xilinx tests Fixes: 95764a0817a5 (automation: update xilinx test scripts (tty)) This patch introduced a CI failure due to a timeout in xilinx-x86_64 test. Change xilinx-x86_64 and xilinx-arm64 scripts to use "expect" utility to determine test result and allow early exit from tests. Add "expect" to xilinx container environment (dockerfile). Rename references to "QEMU" in "qemu-key.exp" expect script to "TEST" to be used by both QEMU and hardware tests. Signed-off-by: Victor Lira <victorm.lira@xxxxxxx> Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> (cherry picked from commit 5e99a40ea54a6bf0bdc18241992866a642d7782b) --- automation/build/ubuntu/xenial-xilinx.dockerfile | 1 + automation/gitlab-ci/test.yaml | 2 + automation/scripts/console.exp | 49 +++++++++++++++++++++++ automation/scripts/qemu-alpine-x86_64.sh | 6 +-- automation/scripts/qemu-key.exp | 49 ----------------------- automation/scripts/qemu-smoke-dom0-arm32.sh | 6 +-- automation/scripts/qemu-smoke-dom0-arm64.sh | 6 +-- automation/scripts/qemu-smoke-dom0less-arm32.sh | 6 +-- automation/scripts/qemu-smoke-dom0less-arm64.sh | 6 +-- automation/scripts/qemu-smoke-ppc64le.sh | 6 +-- automation/scripts/qemu-smoke-riscv64.sh | 6 +-- automation/scripts/qemu-smoke-x86-64.sh | 6 +-- automation/scripts/qemu-xtf-dom0less-arm64.sh | 6 +-- automation/scripts/xilinx-smoke-dom0-x86_64.sh | 22 +++++----- automation/scripts/xilinx-smoke-dom0less-arm64.sh | 19 ++++----- 15 files changed, 99 insertions(+), 97 deletions(-) diff --git a/automation/build/ubuntu/xenial-xilinx.dockerfile b/automation/build/ubuntu/xenial-xilinx.dockerfile index f03d62e8bd..6107d8b771 100644 --- a/automation/build/ubuntu/xenial-xilinx.dockerfile +++ b/automation/build/ubuntu/xenial-xilinx.dockerfile @@ -20,6 +20,7 @@ RUN apt-get update && \ git \ gzip \ file \ + expect \ && \ apt-get autoremove -y && \ apt-get clean && \ diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml index 3b339f387f..cecc18a019 100644 --- a/automation/gitlab-ci/test.yaml +++ b/automation/gitlab-ci/test.yaml @@ -84,6 +84,7 @@ variables: CONTAINER: ubuntu:xenial-xilinx LOGFILE: qemu-smoke-xilinx.log + TEST_TIMEOUT: 120 artifacts: paths: - smoke.serial @@ -103,6 +104,7 @@ LOGFILE: xilinx-smoke-x86_64.log XEN_CMD_CONSOLE: "console=com2 com2=115200,8n1,0x2F8,4" TEST_BOARD: "crater" + TEST_TIMEOUT: 1000 artifacts: paths: - smoke.serial diff --git a/automation/scripts/console.exp b/automation/scripts/console.exp new file mode 100755 index 0000000000..f538aa6bd0 --- /dev/null +++ b/automation/scripts/console.exp @@ -0,0 +1,49 @@ +#!/usr/bin/expect -f + +if {[info exists env(TEST_TIMEOUT)]} { + set timeout $env(TEST_TIMEOUT) +} else { + set timeout 1500 +} + +log_file -a $env(TEST_LOG) + +match_max 10000 + +eval spawn $env(TEST_CMD) + +expect_after { + -re "(.*)\r" { + exp_continue -continue_timer + } + timeout {send_error "ERROR-Timeout!\n"; exit 1} + eof {send_error "ERROR-EOF!\n"; exit 1} +} + +if {[info exists env(UBOOT_CMD)]} { + expect "=>" + + send "$env(UBOOT_CMD)\r" +} + +if {[info exists env(LOG_MSG)]} { + expect { + "$env(PASSED)" { + expect "$env(LOG_MSG)" + exit 0 + } + "$env(LOG_MSG)" { + expect "$env(PASSED)" + exit 0 + } + } +} + +expect { + "$env(PASSED)" { + exit 0 + } +} + +expect eof + diff --git a/automation/scripts/qemu-alpine-x86_64.sh b/automation/scripts/qemu-alpine-x86_64.sh index 93914c41bc..1ff689b577 100755 --- a/automation/scripts/qemu-alpine-x86_64.sh +++ b/automation/scripts/qemu-alpine-x86_64.sh @@ -76,7 +76,7 @@ EOF # Run the test rm -f smoke.serial -export QEMU_CMD="qemu-system-x86_64 \ +export TEST_CMD="qemu-system-x86_64 \ -cpu qemu64,+svm \ -m 2G -smp 2 \ -monitor none -serial stdio \ @@ -84,8 +84,8 @@ export QEMU_CMD="qemu-system-x86_64 \ -device virtio-net-pci,netdev=n0 \ -netdev user,id=n0,tftp=binaries,bootfile=/pxelinux.0" -export QEMU_LOG="smoke.serial" +export TEST_LOG="smoke.serial" export LOG_MSG="Domain-0" export PASSED="BusyBox" -./automation/scripts/qemu-key.exp | sed 's/\r\+$//' +./automation/scripts/console.exp | sed 's/\r\+$//' diff --git a/automation/scripts/qemu-key.exp b/automation/scripts/qemu-key.exp deleted file mode 100755 index 66c4164831..0000000000 --- a/automation/scripts/qemu-key.exp +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/expect -f - -if {[info exists env(QEMU_TIMEOUT)]} { - set timeout $env(QEMU_TIMEOUT) -} else { - set timeout 1500 -} - -log_file -a $env(QEMU_LOG) - -match_max 10000 - -eval spawn $env(QEMU_CMD) - -expect_after { - -re "(.*)\r" { - exp_continue -continue_timer - } - timeout {send_error "ERROR-Timeout!\n"; exit 1} - eof {send_error "ERROR-EOF!\n"; exit 1} -} - -if {[info exists env(UBOOT_CMD)]} { - expect "=>" - - send "$env(UBOOT_CMD)\r" -} - -if {[info exists env(LOG_MSG)]} { - expect { - "$env(PASSED)" { - expect "$env(LOG_MSG)" - exit 0 - } - "$env(LOG_MSG)" { - expect "$env(PASSED)" - exit 0 - } - } -} - -expect { - "$env(PASSED)" { - exit 0 - } -} - -expect eof - diff --git a/automation/scripts/qemu-smoke-dom0-arm32.sh b/automation/scripts/qemu-smoke-dom0-arm32.sh index 0e758dc8f4..b752424cc2 100755 --- a/automation/scripts/qemu-smoke-dom0-arm32.sh +++ b/automation/scripts/qemu-smoke-dom0-arm32.sh @@ -77,7 +77,7 @@ git clone --depth 1 https://gitlab.com/xen-project/imagebuilder.git bash imagebuilder/scripts/uboot-script-gen -t tftp -d . -c config rm -f ${serial_log} -export QEMU_CMD="./qemu-system-arm \ +export TEST_CMD="./qemu-system-arm \ -machine virt \ -machine virtualization=true \ -smp 4 \ @@ -91,8 +91,8 @@ export QEMU_CMD="./qemu-system-arm \ -bios /usr/lib/u-boot/qemu_arm/u-boot.bin" export UBOOT_CMD="virtio scan; dhcp; tftpb 0x40000000 boot.scr; source 0x40000000" -export QEMU_LOG="${serial_log}" +export TEST_LOG="${serial_log}" export LOG_MSG="Domain-0" export PASSED="/ #" -../automation/scripts/qemu-key.exp | sed 's/\r\+$//' +../automation/scripts/console.exp | sed 's/\r\+$//' diff --git a/automation/scripts/qemu-smoke-dom0-arm64.sh b/automation/scripts/qemu-smoke-dom0-arm64.sh index 81f210f7f5..4d22a124df 100755 --- a/automation/scripts/qemu-smoke-dom0-arm64.sh +++ b/automation/scripts/qemu-smoke-dom0-arm64.sh @@ -93,7 +93,7 @@ bash imagebuilder/scripts/uboot-script-gen -t tftp -d binaries/ -c binaries/conf # Run the test rm -f smoke.serial -export QEMU_CMD="./binaries/qemu-system-aarch64 \ +export TEST_CMD="./binaries/qemu-system-aarch64 \ -machine virtualization=true \ -cpu cortex-a57 -machine type=virt \ -m 2048 -monitor none -serial stdio \ @@ -104,8 +104,8 @@ export QEMU_CMD="./binaries/qemu-system-aarch64 \ -bios /usr/lib/u-boot/qemu_arm64/u-boot.bin" export UBOOT_CMD="virtio scan; dhcp; tftpb 0x40000000 boot.scr; source 0x40000000" -export QEMU_LOG="smoke.serial" +export TEST_LOG="smoke.serial" export LOG_MSG="Domain-0" export PASSED="BusyBox" -./automation/scripts/qemu-key.exp | sed 's/\r\+$//' +./automation/scripts/console.exp | sed 's/\r\+$//' diff --git a/automation/scripts/qemu-smoke-dom0less-arm32.sh b/automation/scripts/qemu-smoke-dom0less-arm32.sh index 38e8a0b0bd..41f6e5d8e6 100755 --- a/automation/scripts/qemu-smoke-dom0less-arm32.sh +++ b/automation/scripts/qemu-smoke-dom0less-arm32.sh @@ -130,7 +130,7 @@ bash imagebuilder/scripts/uboot-script-gen -t tftp -d . -c config # Run the test rm -f ${serial_log} -export QEMU_CMD="./qemu-system-arm \ +export TEST_CMD="./qemu-system-arm \ -machine virt \ -machine virtualization=true \ -smp 4 \ @@ -144,8 +144,8 @@ export QEMU_CMD="./qemu-system-arm \ -bios /usr/lib/u-boot/qemu_arm/u-boot.bin" export UBOOT_CMD="virtio scan; dhcp; tftpb 0x40000000 boot.scr; source 0x40000000" -export QEMU_LOG="${serial_log}" +export TEST_LOG="${serial_log}" export LOG_MSG="${dom0_prompt}" export PASSED="${passed}" -../automation/scripts/qemu-key.exp | sed 's/\r\+$//' +../automation/scripts/console.exp | sed 's/\r\+$//' diff --git a/automation/scripts/qemu-smoke-dom0less-arm64.sh b/automation/scripts/qemu-smoke-dom0less-arm64.sh index ea67650e17..83e1866ca6 100755 --- a/automation/scripts/qemu-smoke-dom0less-arm64.sh +++ b/automation/scripts/qemu-smoke-dom0less-arm64.sh @@ -204,7 +204,7 @@ bash imagebuilder/scripts/uboot-script-gen -t tftp -d binaries/ -c binaries/conf # Run the test rm -f smoke.serial -export QEMU_CMD="./binaries/qemu-system-aarch64 \ +export TEST_CMD="./binaries/qemu-system-aarch64 \ -machine virtualization=true \ -cpu cortex-a57 -machine type=virt,gic-version=$gic_version \ -m 2048 -monitor none -serial stdio \ @@ -215,8 +215,8 @@ export QEMU_CMD="./binaries/qemu-system-aarch64 \ -bios /usr/lib/u-boot/qemu_arm64/u-boot.bin" export UBOOT_CMD="virtio scan; dhcp; tftpb 0x40000000 boot.scr; source 0x40000000" -export QEMU_LOG="smoke.serial" +export TEST_LOG="smoke.serial" export LOG_MSG="Welcome to Alpine Linux" export PASSED="${passed}" -./automation/scripts/qemu-key.exp | sed 's/\r\+$//' +./automation/scripts/console.exp | sed 's/\r\+$//' diff --git a/automation/scripts/qemu-smoke-ppc64le.sh b/automation/scripts/qemu-smoke-ppc64le.sh index 49e189c370..617096ad1f 100755 --- a/automation/scripts/qemu-smoke-ppc64le.sh +++ b/automation/scripts/qemu-smoke-ppc64le.sh @@ -10,7 +10,7 @@ machine=$1 # Run the test rm -f ${serial_log} -export QEMU_CMD="qemu-system-ppc64 \ +export TEST_CMD="qemu-system-ppc64 \ -bios skiboot.lid \ -M $machine \ -m 2g \ @@ -21,7 +21,7 @@ export QEMU_CMD="qemu-system-ppc64 \ -serial stdio \ -kernel binaries/xen" -export QEMU_LOG="${serial_log}" +export TEST_LOG="${serial_log}" export PASSED="Hello, ppc64le!" -./automation/scripts/qemu-key.exp | sed 's/\r\+$//' +./automation/scripts/console.exp | sed 's/\r\+$//' diff --git a/automation/scripts/qemu-smoke-riscv64.sh b/automation/scripts/qemu-smoke-riscv64.sh index 422ee03e0d..8f755d0a6a 100755 --- a/automation/scripts/qemu-smoke-riscv64.sh +++ b/automation/scripts/qemu-smoke-riscv64.sh @@ -5,14 +5,14 @@ set -ex -o pipefail # Run the test rm -f smoke.serial -export QEMU_CMD="qemu-system-riscv64 \ +export TEST_CMD="qemu-system-riscv64 \ -M virt \ -smp 1 \ -nographic \ -m 2g \ -kernel binaries/xen" -export QEMU_LOG="smoke.serial" +export TEST_LOG="smoke.serial" export PASSED="All set up" -./automation/scripts/qemu-key.exp | sed 's/\r\+$//' +./automation/scripts/console.exp | sed 's/\r\+$//' diff --git a/automation/scripts/qemu-smoke-x86-64.sh b/automation/scripts/qemu-smoke-x86-64.sh index 7495185d9f..da0c26cc2f 100755 --- a/automation/scripts/qemu-smoke-x86-64.sh +++ b/automation/scripts/qemu-smoke-x86-64.sh @@ -15,12 +15,12 @@ case $variant in esac rm -f smoke.serial -export QEMU_CMD="qemu-system-x86_64 -nographic -kernel binaries/xen \ +export TEST_CMD="qemu-system-x86_64 -nographic -kernel binaries/xen \ -initrd xtf/tests/example/$k \ -append \"loglvl=all console=com1 noreboot console_timestamps=boot $extra\" \ -m 512 -monitor none -serial stdio" -export QEMU_LOG="smoke.serial" +export TEST_LOG="smoke.serial" export PASSED="Test result: SUCCESS" -./automation/scripts/qemu-key.exp | sed 's/\r\+$//' +./automation/scripts/console.exp | sed 's/\r\+$//' diff --git a/automation/scripts/qemu-xtf-dom0less-arm64.sh b/automation/scripts/qemu-xtf-dom0less-arm64.sh index acef1637e2..9608de6ec0 100755 --- a/automation/scripts/qemu-xtf-dom0less-arm64.sh +++ b/automation/scripts/qemu-xtf-dom0less-arm64.sh @@ -50,7 +50,7 @@ bash imagebuilder/scripts/uboot-script-gen -t tftp -d binaries/ -c binaries/conf # Run the test rm -f smoke.serial -export QEMU_CMD="./binaries/qemu-system-aarch64 \ +export TEST_CMD="./binaries/qemu-system-aarch64 \ -machine virtualization=true \ -cpu cortex-a57 -machine type=virt \ -m 2048 -monitor none -serial stdio \ @@ -61,7 +61,7 @@ export QEMU_CMD="./binaries/qemu-system-aarch64 \ -bios /usr/lib/u-boot/qemu_arm64/u-boot.bin" export UBOOT_CMD="virtio scan; dhcp; tftpb 0x40000000 boot.scr; source 0x40000000" -export QEMU_LOG="smoke.serial" +export TEST_LOG="smoke.serial" export PASSED="${passed}" -./automation/scripts/qemu-key.exp | sed 's/\r\+$//' +./automation/scripts/console.exp | sed 's/\r\+$//' diff --git a/automation/scripts/xilinx-smoke-dom0-x86_64.sh b/automation/scripts/xilinx-smoke-dom0-x86_64.sh index 4559e2b9ee..ef6e1361a9 100755 --- a/automation/scripts/xilinx-smoke-dom0-x86_64.sh +++ b/automation/scripts/xilinx-smoke-dom0-x86_64.sh @@ -1,8 +1,8 @@ -#!/bin/sh +#!/usr/bin/env bash # Run x86_64 dom0 tests on hardware. -set -ex +set -ex -o pipefail fatal() { echo "$(basename "$0") $*" >&2 @@ -27,7 +27,6 @@ memory = 512 vif = [ "bridge=xenbr0", ] disk = [ ] ' -TIMEOUT_SECONDS=200 # Select test variant. if [ "${TEST}" = "ping" ]; then @@ -125,20 +124,19 @@ boot # Power cycle board and collect serial port output. SERIAL_DEV="/dev/serial/${TEST_BOARD}" -SERIAL_CMD="cat ${SERIAL_DEV} | tee smoke.serial | sed 's/\r//'" sh /scratch/gitlab-runner/${TEST_BOARD}.sh 2 sleep 5 sh /scratch/gitlab-runner/${TEST_BOARD}.sh 1 sleep 5 set +e stty -F ${SERIAL_DEV} 115200 -timeout -k 1 ${TIMEOUT_SECONDS} nohup sh -c "${SERIAL_CMD}" -sh /scratch/gitlab-runner/${TEST_BOARD}.sh 2 - -set -e -if grep -q "${PASS_MSG}" smoke.serial; then - exit 0 -fi +# Capture test result and power off board before exiting. +export PASSED="${PASS_MSG}" +export TEST_CMD="cat ${SERIAL_DEV}" +export TEST_LOG="smoke.serial" -fatal "Test failed" +./automation/scripts/console.exp | sed 's/\r\+$//' +TEST_RESULT=$? +sh "/scratch/gitlab-runner/${TEST_BOARD}.sh" 2 +exit ${TEST_RESULT} diff --git a/automation/scripts/xilinx-smoke-dom0less-arm64.sh b/automation/scripts/xilinx-smoke-dom0less-arm64.sh index 18aa07f0a2..b24ad11b8c 100755 --- a/automation/scripts/xilinx-smoke-dom0less-arm64.sh +++ b/automation/scripts/xilinx-smoke-dom0less-arm64.sh @@ -1,6 +1,6 @@ #!/bin/bash -set -ex +set -ex -o pipefail test_variant=$1 @@ -137,13 +137,14 @@ cd $START SERIAL_DEV="/dev/serial/zynq" set +e stty -F ${SERIAL_DEV} 115200 -timeout -k 1 120 nohup sh -c "cat ${SERIAL_DEV} | tee smoke.serial | sed 's/\r//'" -# stop the board -cd /scratch/gitlab-runner -bash zcu102.sh 2 -cd $START +# Capture test result and power off board before exiting. +export PASSED="${passed}" +export LOG_MSG="Welcome to Alpine Linux" +export TEST_CMD="cat ${SERIAL_DEV}" +export TEST_LOG="smoke.serial" -set -e -(grep -q "^Welcome to Alpine Linux" smoke.serial && grep -q "${passed}" smoke.serial) || exit 1 -exit 0 +./automation/scripts/console.exp | sed 's/\r\+$//' +TEST_RESULT=$? +sh "/scratch/gitlab-runner/zcu102.sh" 2 +exit ${TEST_RESULT} -- generated by git-patchbot for /home/xen/git/xen.git#stable-4.19
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |