Re: [PATCHv5 kselftest next] selftests/run_kselftest.sh: make each test individually selectable

From: Naresh Kamboju
Date: Fri Sep 25 2020 - 04:22:07 EST


On Mon, 14 Sep 2020 at 07:53, Hangbin Liu <liuhangbin@xxxxxxxxx> wrote:
>
> Currently, after generating run_kselftest.sh, there is no way to choose
> which test we could run. All the tests are listed together and we have
> to run all every time. This patch enhanced the run_kselftest.sh to make
> the tests individually selectable. e.g.
>
> $ ./run_kselftest.sh -t "bpf size timers"

My test run break on linux next

./run_kselftest.sh: line 1331: syntax error near unexpected token `)'
./run_kselftest.sh: line 1331: `-e -s | --summary )
logfile=$BASE_DIR/output.log; cat /dev/null > $logfile; shift ;;'

steps do run:
# run_kselftest.sh file generated by kselftest Makefile and included in tarball
./run_kselftest.sh 2>&1 | tee "${LOGFILE}"

ref:
https://github.com/nareshkamboju/test-definitions/blob/master/automated/linux/kselftest/kselftest.sh#L222

full test run log:
https://lkft.validation.linaro.org/scheduler/job/1786826#L1391

>
> Before the patch:
> ================
>
> $ cat run_kselftest.sh
> \#!/bin/sh
> BASE_DIR=$(realpath $(dirname $0))
> cd $BASE_DIR
> . ./kselftest/runner.sh
> ROOT=$PWD
> if [ "$1" = "--summary" ]; then
> logfile=$BASE_DIR/output.log
> cat /dev/null > $logfile
> fi
> [ -w /dev/kmsg ] && echo "kselftest: Running tests in android" >> /dev/kmsg
> cd android
> run_many \
> "run.sh"
> cd $ROOT
> ...<snip>...
> [ -w /dev/kmsg ] && echo "kselftest: Running tests in zram" >> /dev/kmsg
> cd zram
> run_many \
> "zram.sh"
> cd $ROOT
>
> After the patch:
> ===============
>
> $ cat run_kselftest.sh
> \#!/bin/sh
> BASE_DIR=$(realpath $(dirname $0))
> . ./kselftest/runner.sh
> TESTS="android ...<snip>... filesystems/binderfs ...<snip>... zram"
>
> run_android()
> {
> [ -w /dev/kmsg ] && echo "kselftest: Running tests in android" >> /dev/kmsg
> cd android
> run_many \
> "run.sh"
> cd $ROOT
> }
>
> ...<snip>...
>
> run_filesystems_binderfs()
> {
> [ -w /dev/kmsg ] && echo "kselftest: Running tests in filesystems/binderfs" >> /dev/kmsg
> cd filesystems/binderfs
> run_many \
> "binderfs_test"
> cd $ROOT
> }
>
> ...<snip>...
>
> run_zram()
> {
> [ -w /dev/kmsg ] && echo "kselftest: Running tests in zram" >> /dev/kmsg
> cd zram
> run_many \
> "zram.sh"
> cd $ROOT
> }
>
> usage()
> {
> cat <<EOF
> usage: ${0##*/} OPTS
> -s | --summary Only print summary info and put detailed log in output.log
> -t | --tests Test name you want to run specifically
> -h | --help Show this usage info
> EOF
> }
>
> while true; do
> case "$1" in
> -s | --summary ) logfile=$BASE_DIR/output.log; cat /dev/null > $logfile; shift ;;
> -t | --tests ) TESTS=$2; shift 2 ;;
> -l | --list ) echo $TESTS; exit 0 ;;
> -h | --help ) usage; exit 0 ;;
> "" ) break;;
> * ) usage; exit 1;;
> esac
> done
>
> cd $BASE_DIR
> ROOT=$PWD
> for folder in $TESTS; do
> folder=$(echo $folder | tr -s '/-' '_')
> run_$folder
> done
>
> Signed-off-by: Hangbin Liu <liuhangbin@xxxxxxxxx>

Reported-by: Naresh Kamboju <naresh.kamboju@xxxxxxxxxx>

--
Linaro LKFT
https://lkft.linaro.org