Blame tests/aslts.sh

Packit Service 0129ce
#!/bin/bash
Packit Service 0129ce
#
Packit Service 0129ce
# aslts - execute ASL test suite
Packit Service 0129ce
#
Packit Service 0129ce
Packit Service 0129ce
# Will build temporary versions of iASL and acpiexec
Packit Service 0129ce
postfix=`date +%H%M%S`
Packit Service 0129ce
tmp_iasl=/tmp/iasl-$postfix
Packit Service 0129ce
tmp_acpiexec=/tmp/acpiexec-$postfix
Packit Service 0129ce
tmp_acpibin=/tmp/acpibin-$postfix
Packit Service 0129ce
Packit Service 0129ce
TEST_CASES=
Packit Service 0129ce
TEST_MODES=
Packit Service 0129ce
REBUILD_TOOLS=yes
Packit Service 0129ce
BINCOMPONLY=no
Packit Service 0129ce
EXECONLY=no
Packit Service 0129ce
Packit Service 0129ce
usage() {
Packit Service 0129ce
Packit Service 0129ce
	echo "Usage:"
Packit Service 0129ce
	echo "`basename $0` [-c case] [-m mode] [-u]"
Packit Service 0129ce
	echo "Where:"
Packit Service 0129ce
	echo "  -c:	Specify individual test cases (can be used multiple times)"
Packit Service 0129ce
	echo "  -m:	Specify individual test modes (can be used multiple times)"
Packit Service 0129ce
	echo "  -u:	Do not force rebuilding of ACPICA utilities (acpiexec, iasl)"
Packit Service 0129ce
	echo "  -e:     Perform the execution of aml files and omit binary comparison of regular aml and disassembled aml file."
Packit Service 0129ce
	echo "  -b:     Only perform binary comparison of regular aml and disasssembled aml file"
Packit Service 0129ce
	echo ""
Packit Service 0129ce
Packit Service 0129ce
	echo "Available test modes:"
Packit Service 0129ce
	echo "  n32	32-bit unoptimized code (tests are compiled with iasl -oa -r 1 and other flags)"
Packit Service 0129ce
	echo "  n64	64-bit unoptimized code (tests are compiled with iasl -oa -r 2 and other flags)"
Packit Service 0129ce
	echo "  o32	32-bit optimized code (tests are compiled with iasl -r 1 and other flags)"
Packit Service 0129ce
	echo "  o64	64-bit optimized code (tests are compiled with iasl -r 2 and other flags)"
Packit Service 0129ce
	echo ""
Packit Service 0129ce
Packit Service 0129ce
	Do 3
Packit Service 0129ce
	exit 1
Packit Service 0129ce
}
Packit Service 0129ce
Packit Service 0129ce
# Setup environment and variables.
Packit Service 0129ce
# Need a path to ASLTS and iasl,acpiexec generation dir
Packit Service 0129ce
setup_environment() {
Packit Service 0129ce
Packit Service 0129ce
	aslts_dir=$1
Packit Service 0129ce
	generation_dir=$2
Packit Service 0129ce
Packit Service 0129ce
	if [ -z "$generation_dir" ] ; then
Packit Service 0129ce
		echo "missing generation directory argument"
Packit Service 0129ce
		exit
Packit Service 0129ce
	elif [ -z "$aslts_dir" ] ; then
Packit Service 0129ce
		echo "missing aslts directory argument"
Packit Service 0129ce
		exit
Packit Service 0129ce
	elif [ ! -d "$generation_dir" ] ; then
Packit Service 0129ce
		echo $generation_dir is not a dir
Packit Service 0129ce
		exit
Packit Service 0129ce
	elif [ ! -d "$aslts_dir" ] ; then
Packit Service 0129ce
		echo $aslts_dir is not a dir
Packit Service 0129ce
		exit
Packit Service 0129ce
	fi
Packit Service 0129ce
Packit Service 0129ce
	# Variables required by ASLTS
Packit Service 0129ce
	unset ASL
Packit Service 0129ce
	unset acpiexec
Packit Service 0129ce
	unset ASLTSDIR
Packit Service 0129ce
Packit Service 0129ce
	export ASL=$tmp_iasl
Packit Service 0129ce
	export acpiexec=$tmp_acpiexec		
Packit Service 0129ce
	export acpibin=$tmp_acpibin
Packit Service 0129ce
	export ASLTSDIR=$aslts_dir
Packit Service 0129ce
	export PATH=$ASLTSDIR/bin:$PATH
Packit Service 0129ce
}
Packit Service 0129ce
Packit Service 0129ce
Packit Service 0129ce
# Generate both iASL and acpiexec from source
Packit Service 0129ce
build_acpi_tools() {
Packit Service 0129ce
Packit Service 0129ce
	restore_dir=$PWD
Packit Service 0129ce
	cd ${generation_dir}
Packit Service 0129ce
	rm -f $tmp_iasl $tmp_acpiexec $tmp_acpibin
Packit Service 0129ce
Packit Service 0129ce
	# Build native-width iASL compiler and acpiexec
Packit Service 0129ce
	if [ ! -e bin/iasl -o ! -e bin/acpiexec ]; then
Packit Service 0129ce
		REBUILD_TOOLS=yes
Packit Service 0129ce
	fi
Packit Service 0129ce
	if [ "x$REBUILD_TOOLS" = "xyes" ]; then
Packit Service 0129ce
		make clean
Packit Service 0129ce
		make iasl ASLTS=TRUE
Packit Service 0129ce
		make acpiexec ASLTS=TRUE
Packit Service 0129ce
	fi
Packit Service 0129ce
Packit Service 0129ce
	if [ -d "bin" ] && [ -f "bin/iasl" ]; then
Packit Service 0129ce
		echo "Installing ACPICA tools"
Packit Service 0129ce
		cp bin/iasl $tmp_iasl
Packit Service 0129ce
		cp bin/acpiexec $tmp_acpiexec
Packit Service 0129ce
		cp bin/acpibin $tmp_acpibin
Packit Service 0129ce
	else
Packit Service 0129ce
		echo "Could not find iASL/acpiexec tools"
Packit Service 0129ce
		exit
Packit Service 0129ce
	fi
Packit Service 0129ce
Packit Service 0129ce
	# Ensure that the tools are available
Packit Service 0129ce
	if [ ! -f $tmp_iasl ] ; then
Packit Service 0129ce
		echo "iasl compiler not found"
Packit Service 0129ce
		exit
Packit Service 0129ce
	elif [ ! -f $tmp_acpiexec ] ; then
Packit Service 0129ce
		echo "acpiexec utility not found"
Packit Service 0129ce
		exit
Packit Service 0129ce
	elif [ ! -f $tmp_acpibin ] ; then
Packit Service 0129ce
		echo "acpibin utility not found"
Packit Service 0129ce
		exit
Packit Service 0129ce
	fi
Packit Service 0129ce
Packit Service 0129ce
	cd $restore_dir
Packit Service 0129ce
}
Packit Service 0129ce
Packit Service 0129ce
Packit Service 0129ce
# Compile and run the ASLTS suite
Packit Service 0129ce
run_aslts() {
Packit Service 0129ce
Packit Service 0129ce
	# Remove a previous version of the AML test code
Packit Service 0129ce
	version=`$ASL | grep version | awk '{print $5}'`
Packit Service 0129ce
	rm -rf $ASLTSDIR/tmp/aml/$version
Packit Service 0129ce
Packit Service 0129ce
	if [ "x$TEST_MODES" = "x" ]; then
Packit Service 0129ce
		TEST_MODES="n32 n64 o32 o64"
Packit Service 0129ce
	fi
Packit Service 0129ce
	Do 0 $TEST_MODES $TEST_CASES $EXECONLY
Packit Service 0129ce
	if [ $? -ne 0 ]; then
Packit Service 0129ce
		echo "ASLTS Compile Failure"
Packit Service 0129ce
		exit 1
Packit Service 0129ce
	fi
Packit Service 0129ce
Packit Service 0129ce
	# Execute the test suite
Packit Service 0129ce
	if [ "x$BINCOMPONLY" = "xno" ]; then
Packit Service 0129ce
		echo ""
Packit Service 0129ce
		echo "ASL Test Suite Started: `date`"
Packit Service 0129ce
		start_time=$(date)
Packit Service 0129ce
Packit Service 0129ce
		if [ "x$TEST_MODES" = "x" ]; then
Packit Service 0129ce
			TEST_MODES="n32 n64 o32 o64"
Packit Service 0129ce
		fi
Packit Service 0129ce
		Do 1 $TEST_MODES $TEST_CASES
Packit Service 0129ce
Packit Service 0129ce
		echo ""
Packit Service 0129ce
		echo "ASL Test Suite Finished: `date`"
Packit Service 0129ce
		echo "                Started: $start_time"
Packit Service 0129ce
Packit Service 0129ce
		rm -f $tmp_iasl $tmp_acpiexec $tmp_acpibin
Packit Service 0129ce
	fi;
Packit Service 0129ce
}
Packit Service 0129ce
Packit Service 0129ce
SRCDIR=`(cd \`dirname $0\`; cd ..; pwd)`
Packit Service 0129ce
setup_environment $SRCDIR/tests/aslts $SRCDIR/generate/unix
Packit Service 0129ce
Packit Service 0129ce
# To use common utilities
Packit Service 0129ce
. $SRCDIR/tests/aslts/bin/common
Packit Service 0129ce
. $SRCDIR/tests/aslts/bin/settings
Packit Service 0129ce
RESET_SETTINGS
Packit Service 0129ce
INIT_ALL_AVAILABLE_CASES
Packit Service 0129ce
INIT_ALL_AVAILABLE_MODES
Packit Service 0129ce
Packit Service 0129ce
while getopts "c:m:ueb" opt
Packit Service 0129ce
do
Packit Service 0129ce
	case $opt in
Packit Service 0129ce
	b)
Packit Service 0129ce
		BINCOMPONLY=yes
Packit Service 0129ce
		echo "Running only binary comparisons"
Packit Service 0129ce
	;;
Packit Service 0129ce
	c)
Packit Service 0129ce
		get_collection_opcode "$OPTARG"
Packit Service 0129ce
		if [ $? -eq $COLLS_NUM ]; then
Packit Service 0129ce
			echo "Invalid test case: $OPTARG"
Packit Service 0129ce
			usage
Packit Service 0129ce
		else
Packit Service 0129ce
			TEST_CASES="$OPTARG $TEST_CASES"
Packit Service 0129ce
		fi
Packit Service 0129ce
	;;
Packit Service 0129ce
	e)
Packit Service 0129ce
		EXECONLY=yes
Packit Service 0129ce
		echo "Running tests without binary comparisons"
Packit Service 0129ce
	;;
Packit Service 0129ce
	m)
Packit Service 0129ce
		check_mode_id "$OPTARG"
Packit Service 0129ce
		if [ $? -eq 1 ]; then
Packit Service 0129ce
			echo "Invalid test mode: $OPTARG"
Packit Service 0129ce
			usage
Packit Service 0129ce
		else
Packit Service 0129ce
			TEST_MODES="$OPTARG $TEST_MODES"
Packit Service 0129ce
		fi
Packit Service 0129ce
	;;
Packit Service 0129ce
	u)
Packit Service 0129ce
		REBUILD_TOOLS=no
Packit Service 0129ce
	;;
Packit Service 0129ce
	?)
Packit Service 0129ce
		echo "Invalid argument: $opt"
Packit Service 0129ce
		usage
Packit Service 0129ce
	;;
Packit Service 0129ce
	esac
Packit Service 0129ce
done
Packit Service 0129ce
shift $(($OPTIND - 1))
Packit Service 0129ce
Packit Service 0129ce
build_acpi_tools
Packit Service 0129ce
run_aslts
Packit Service 0129ce