On Mon, Nov 23, 2020 at 11:25:08AM -0500, Willem de Bruijn wrote: > From: Willem de Bruijn <willemb@xxxxxxxxxx> > > Kselftest expects processes to signal pass/fail/skip through exitcode. > > C programs can include kselftest.h for readable definitions. > > Add analogous kselftest.sh for shell tests. Extract the existing > definitions from udpgso_bench.sh. > > Tested: make TARGETS=net kselftest > Link: https://patchwork.kernel.org/project/netdevbpf/patch/20201113231655.139948-4-acardace@xxxxxxxxxx/ > Signed-off-by: Willem de Bruijn <willemb@xxxxxxxxxx> > > --- > > applies cleanly to netnext (f9e425e99b07) and kselftest (v5.10-rc1) > --- > tools/testing/selftests/kselftest.sh | 52 +++++++++++++++++++++ > tools/testing/selftests/net/udpgso_bench.sh | 42 +---------------- > 2 files changed, 53 insertions(+), 41 deletions(-) > create mode 100644 tools/testing/selftests/kselftest.sh > > diff --git a/tools/testing/selftests/kselftest.sh b/tools/testing/selftests/kselftest.sh > new file mode 100644 > index 000000000000..c5a1cff57402 > --- /dev/null > +++ b/tools/testing/selftests/kselftest.sh > @@ -0,0 +1,52 @@ > +#!/bin/bash > +# SPDX-License-Identifier: GPL-2.0 > +# > +# kselftest shell test support library > +# > +# - Define pass/fail/skip exitcodes > +# - Multiprocess support: aggregate child process results > + > +readonly KSFT_PASS=0 > +readonly KSFT_FAIL=1 > +readonly KSFT_SKIP=4 > + > +readonly GREEN='\033[0;92m' > +readonly YELLOW='\033[0;33m' > +readonly RED='\033[0;31m' > +readonly NC='\033[0m' # No Color > + > +num_pass=0 > +num_err=0 > +num_skip=0 > + > +# Test child process exit code, add to aggregates. > +kselftest_test_exitcode() { > + local -r exitcode=$1 > + > + if [[ ${exitcode} -eq ${KSFT_PASS} ]]; then > + num_pass=$(( $num_pass + 1 )) > + elif [[ ${exitcode} -eq ${KSFT_SKIP} ]]; then > + num_skip=$(( $num_skip + 1 )) > + else > + num_err=$(( $num_err + 1 )) > + fi > +} > + > +# Exit from main process. > +kselftest_exit() { > + echo -e "$(basename $0): PASS=${num_pass} SKIP=${num_skip} FAIL=${num_err}" > + > + if [[ $num_err -ne 0 ]]; then > + echo -e "$(basename $0): ${RED}FAIL${NC}" > + exit ${KSFT_FAIL} > + fi > + > + if [[ $num_skip -ne 0 ]]; then > + echo -e "$(basename $0): ${YELLOW}SKIP${NC}" > + exit ${KSFT_SKIP} > + fi > + > + echo -e "$(basename $0): ${GREEN}PASS${NC}" > + exit ${KSFT_PASS} > +} > + > diff --git a/tools/testing/selftests/net/udpgso_bench.sh b/tools/testing/selftests/net/udpgso_bench.sh > index 80b5d352702e..c1f9affe6cf0 100755 > --- a/tools/testing/selftests/net/udpgso_bench.sh > +++ b/tools/testing/selftests/net/udpgso_bench.sh > @@ -3,47 +3,7 @@ > # > # Run a series of udpgso benchmarks > > -readonly GREEN='\033[0;92m' > -readonly YELLOW='\033[0;33m' > -readonly RED='\033[0;31m' > -readonly NC='\033[0m' # No Color > - > -readonly KSFT_PASS=0 > -readonly KSFT_FAIL=1 > -readonly KSFT_SKIP=4 > - > -num_pass=0 > -num_err=0 > -num_skip=0 > - > -kselftest_test_exitcode() { > - local -r exitcode=$1 > - > - if [[ ${exitcode} -eq ${KSFT_PASS} ]]; then > - num_pass=$(( $num_pass + 1 )) > - elif [[ ${exitcode} -eq ${KSFT_SKIP} ]]; then > - num_skip=$(( $num_skip + 1 )) > - else > - num_err=$(( $num_err + 1 )) > - fi > -} > - > -kselftest_exit() { > - echo -e "$(basename $0): PASS=${num_pass} SKIP=${num_skip} FAIL=${num_err}" > - > - if [[ $num_err -ne 0 ]]; then > - echo -e "$(basename $0): ${RED}FAIL${NC}" > - exit ${KSFT_FAIL} > - fi > - > - if [[ $num_skip -ne 0 ]]; then > - echo -e "$(basename $0): ${YELLOW}SKIP${NC}" > - exit ${KSFT_SKIP} > - fi > - > - echo -e "$(basename $0): ${GREEN}PASS${NC}" > - exit ${KSFT_PASS} > -} > +source "$(dirname $0)/../kselftest.sh" > > wake_children() { > local -r jobs="$(jobs -p)" > -- > 2.29.2.454.gaff20da3a2-goog > Reviewed-by: Antonio Cardace <acardace@redhat>