From 06d817199454214a942f32d56034aaae87faa50b Mon Sep 17 00:00:00 2001 From: Christian Gmeiner Date: Fri, 22 May 2020 00:05:37 +0200 Subject: [PATCH] ci: extend expect-output.sh We need to support different fastboot fetch strings for different bootloader solutions. Lets extend expect-output.sh to support multiple fetch strings (-f) and add support for error catch strings (-e) to stop the CI run early. Signed-off-by: Christian Gmeiner Reviewed-by: Eric Anholt Part-of: --- .gitlab-ci/bare-metal/cros-servo.sh | 4 ++-- .gitlab-ci/bare-metal/expect-output.sh | 25 +++++++++++++++++++++++-- .gitlab-ci/bare-metal/fastboot.sh | 4 ++-- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci/bare-metal/cros-servo.sh b/.gitlab-ci/bare-metal/cros-servo.sh index b67c1f2ad65..6caff73bb93 100755 --- a/.gitlab-ci/bare-metal/cros-servo.sh +++ b/.gitlab-ci/bare-metal/cros-servo.sh @@ -72,11 +72,11 @@ $BM/write-serial.py $BM_SERIAL_EC reboot # This is emitted right when the bootloader pauses to check for input. Emit a # ^N character to request network boot, because we don't have a # direct-to-netboot firmware on cheza. -$BM/expect-output.sh serial-output.txt "load_archive: loading locale_en.bin" +$BM/expect-output.sh serial-output.txt -f "load_archive: loading locale_en.bin" $BM/write-serial.py $BM_SERIAL `printf '\016'` # Wait for the device to complete the deqp run -$BM/expect-output.sh serial-output.txt "DEQP RESULT" +$BM/expect-output.sh serial-output.txt -f "DEQP RESULT" # power down the CPU on the device $BM/write-serial.py $BM_SERIAL_EC 'power off' diff --git a/.gitlab-ci/bare-metal/expect-output.sh b/.gitlab-ci/bare-metal/expect-output.sh index a7e62a1ec8c..db82ea097e3 100755 --- a/.gitlab-ci/bare-metal/expect-output.sh +++ b/.gitlab-ci/bare-metal/expect-output.sh @@ -2,8 +2,29 @@ set -e -echo "Waiting for $1 to say '$2'" +STRINGS=$(mktemp) +ERRORS=$(mktemp) -while ! grep -q "$2" $1; do +trap "rm $STRINGS; rm $ERRORS;" EXIT + +FILE=$1 +shift 1 + +while getopts "f:e:" opt; do + case $opt in + f) echo "$OPTARG" >> $STRINGS;; + e) echo "$OPTARG" >> $STRINGS ; echo "$OPTARG" >> $ERRORS;; + esac +done +shift $((OPTIND -1)) + +echo "Waiting for $FILE to say one of following strings" +cat $STRINGS + +while ! egrep -wf $STRINGS $FILE; do sleep 2 done + +if egrep -wf $ERRORS $FILE; then + exit 1 +fi diff --git a/.gitlab-ci/bare-metal/fastboot.sh b/.gitlab-ci/bare-metal/fastboot.sh index 572fd9dc9c4..2bf4ac2a5c1 100755 --- a/.gitlab-ci/bare-metal/fastboot.sh +++ b/.gitlab-ci/bare-metal/fastboot.sh @@ -78,11 +78,11 @@ done PATH=$BM:$PATH $BM_POWERUP # Once fastboot is ready, boot our image. -$BM/expect-output.sh artifacts/serial-output.txt "fastboot: processing commands" +$BM/expect-output.sh artifacts/serial-output.txt -f "fastboot: processing commands" fastboot boot -s $BM_FASTBOOT_SERIAL artifacts/fastboot.img # Wait for the device to complete the deqp run -$BM/expect-output.sh artifacts/serial-output.txt "DEQP RESULT" +$BM/expect-output.sh artifacts/serial-output.txt -f "DEQP RESULT" # power down the device PATH=$BM:$PATH $BM_POWERDOWN