|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] automation: use expect utility in xilinx tests
commit 5e99a40ea54a6bf0bdc18241992866a642d7782b
Author: Victor Lira <victorm.lira@xxxxxxx>
AuthorDate: Thu Aug 29 15:34:23 2024 -0700
Commit: Stefano Stabellini <stefano.stabellini@xxxxxxx>
CommitDate: Thu Aug 29 18:43:47 2024 -0700
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>
---
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 7c282eff3a..e1cd838809 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#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |