cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

run_kselftest.sh (2103B)


      1#!/bin/sh
      2# SPDX-License-Identifier: GPL-2.0
      3#
      4# Run installed kselftest tests.
      5#
      6BASE_DIR=$(realpath $(dirname $0))
      7cd $BASE_DIR
      8TESTS="$BASE_DIR"/kselftest-list.txt
      9if [ ! -r "$TESTS" ] ; then
     10	echo "$0: Could not find list of tests to run ($TESTS)" >&2
     11	available=""
     12else
     13	available="$(cat "$TESTS")"
     14fi
     15
     16. ./kselftest/runner.sh
     17ROOT=$PWD
     18
     19usage()
     20{
     21	cat <<EOF
     22Usage: $0 [OPTIONS]
     23  -s | --summary		Print summary with detailed log in output.log
     24  -t | --test COLLECTION:TEST	Run TEST from COLLECTION
     25  -c | --collection COLLECTION	Run all tests from COLLECTION
     26  -l | --list			List the available collection:test entries
     27  -d | --dry-run		Don't actually run any tests
     28  -h | --help			Show this usage info
     29EOF
     30	exit $1
     31}
     32
     33COLLECTIONS=""
     34TESTS=""
     35dryrun=""
     36while true; do
     37	case "$1" in
     38		-s | --summary)
     39			logfile="$BASE_DIR"/output.log
     40			cat /dev/null > $logfile
     41			shift ;;
     42		-t | --test)
     43			TESTS="$TESTS $2"
     44			shift 2 ;;
     45		-c | --collection)
     46			COLLECTIONS="$COLLECTIONS $2"
     47			shift 2 ;;
     48		-l | --list)
     49			echo "$available"
     50			exit 0 ;;
     51		-d | --dry-run)
     52			dryrun="echo"
     53			shift ;;
     54		-h | --help)
     55			usage 0 ;;
     56		"")
     57			break ;;
     58		*)
     59			usage 1 ;;
     60	esac
     61done
     62
     63# Add all selected collections to the explicit test list.
     64if [ -n "$COLLECTIONS" ]; then
     65	for collection in $COLLECTIONS ; do
     66		found="$(echo "$available" | grep "^$collection:")"
     67		if [ -z "$found" ] ; then
     68			echo "No such collection '$collection'" >&2
     69			exit 1
     70		fi
     71		TESTS="$TESTS $found"
     72	done
     73fi
     74# Replace available test list with explicitly selected tests.
     75if [ -n "$TESTS" ]; then
     76	valid=""
     77	for test in $TESTS ; do
     78		found="$(echo "$available" | grep "^${test}$")"
     79		if [ -z "$found" ] ; then
     80			echo "No such test '$test'" >&2
     81			exit 1
     82		fi
     83		valid="$valid $found"
     84	done
     85	available="$(echo "$valid" | sed -e 's/ /\n/g')"
     86fi
     87
     88collections=$(echo "$available" | cut -d: -f1 | uniq)
     89for collection in $collections ; do
     90	[ -w /dev/kmsg ] && echo "kselftest: Running tests in $collection" >> /dev/kmsg
     91	tests=$(echo "$available" | grep "^$collection:" | cut -d: -f2)
     92	($dryrun cd "$collection" && $dryrun run_many $tests)
     93done