diff options
author | Chandni Cherukuri <chandni.cherukuri@arm.com> | 2018-09-23 19:58:18 +0530 |
---|---|---|
committer | Thomas Abraham <thomas.abraham@arm.com> | 2019-02-18 18:21:22 +0530 |
commit | 3f9db8baf80e028b97a94885bd4ec19a207c272a (patch) | |
tree | cf486d747b0a136e17ffc9d4ddd17fc619001166 | |
parent | 5252465687ac87c9ca2773a32471ae73ca462f3e (diff) |
sgi/acs: add helper script for executing acs tests
Add a run script for the ACS feature validation on SGI platforms.
The script looks for the compiled luv-live image and sets it as
the virtio-disk for the model to boot from.
Change-Id: I2f308d2461ba3c922ee8fc3224bf96c032e26396
Signed-off-by: Chandni Cherukuri <chandni.cherukuri@arm.com>
-rwxr-xr-x | sgi/acs.sh | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/sgi/acs.sh b/sgi/acs.sh new file mode 100755 index 0000000..d365471 --- /dev/null +++ b/sgi/acs.sh @@ -0,0 +1,190 @@ +#!/bin/bash + +############################################################################### +# Copyright (c) 2019, ARM Limited and Contributors. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# Neither the name of ARM nor the names of its contributors may be used +# to endorse or promote products derived from this software without specific +# prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +################################################################################# + +source sgi_common_util.sh + +declare -A sgi_platforms +sgi_platforms[sgi575]=1 + +__print_supported_sgi_platforms() +{ + echo "Supported platforms are -" + for plat in "${!sgi_platforms[@]}" ; + do + printf "\t $plat \n" + done + echo +} + +print_usage () +{ + echo "" + echo "Execute SBSA and SBBR tests." + echo "Usage: ./acs.sh -p <platform> [-n <true|false>] [-j <true|false>] [-a \"model params\"]" + echo "" + echo "Supported command line parameters:" + echo " -p SGI platform name (mandatory)" + echo " -n Enable network: true or false (default: false)" + echo " -j Automate acs test: true or false (default: false)" + echo " -a Additional model parameters, if any" + echo "" + __print_supported_sgi_platforms + echo "Example 1: ./acs.sh -p sgi575" + echo " Executes ACS tests for sgi575 platform." + echo + echo "Example 2: ./acs.sh -p sgi575 -j true" + echo " Executes ACS tests for sgi575 platform and terminates the fvp model" + echo " automatically when the test ends." + echo "" +} + +# get_acs_test_results: Extracts the ACS test results from LUV-RESULTS partition +# of luvOS disc image using the offset to start and end sectors. +get_acs_test_results() +{ + local flag=false + + mkdir -p $outdir + + # Get the start and end sectors offset in LUV-RESULTS partition + sector=($(gdisk -l $acs_image | awk '/^Number/{p=1;next}; p{gsub(/[^[:digit:]]/, "", $2); print $2; print $3}')) + arr=( $( echo "${sector[@]}" | sed -e 's/ /\n/g' ) ) + + # Copy the SBSA/SBBR results from the LUV-RESULTS partition + dd if=$acs_image of=luvres skip=${arr[0]} count=${arr[1]} &> /dev/null + mcopy -i luvres ::/Sbsa_results/uefi/SbsaResults.log $outdir/sgi-${MODEL_PID}-sbsaResults_uefi_${CURRENT_DATE_TIME}.log + mcopy -i luvres ::/Sbsa_results/linux/SbsaResults.log $outdir/sgi-${MODEL_PID}-sbsaResults_linux_${CURRENT_DATE_TIME}.log + mcopy -i luvres ::/results.md $outdir/sgi-${MODEL_PID}-acs_results_${CURRENT_DATE_TIME}.md + + # Check whether the results are extracted successfully or not + if [ -f "$outdir/sgi-${MODEL_PID}-sbsaResults_uefi_${CURRENT_DATE_TIME}.log" ] && \ + [ -f "$outdir/sgi-${MODEL_PID}-sbsaResults_linux_${CURRENT_DATE_TIME}.log" ] && \ + [ -f "$outdir/sgi-${MODEL_PID}-acs_results_${CURRENT_DATE_TIME}.md" ]; then + flag=true + echo "Detailed SBSA/SBBR results:" + echo "SBSA UEFI shell tests results are at $outdir/sgi-${MODEL_PID}-sbsaResults_uefi_${CURRENT_DATE_TIME}.log" + echo "SBSA OS tests results are at $outdir/sgi-${MODEL_PID}-sbsaResults_linux_${CURRENT_DATE_TIME}.log" + echo "LuvOS test results are at $outdir/sgi-${MODEL_PID}-acs_results_${CURRENT_DATE_TIME}.md" + fi + if [[ ! "$flag" = true ]]; then + echo "SBSA/SBBR results files are not exist in LUV-RESULTS partitions" + fi +} + +# print_acs_test_summary: Parse and print the ACS test results summary from the build log +print_acs_test_summary() +{ + # Parse and print UEFI shell results + echo "UEFI shell based SBSA test results..................." + sed -n '/SBSA Architecture Compliance Suite/{:a;n;/SBSA tests complete/b;p;ba}' \ + $PWD/$platform/$UART0_ARMTF_OUTPUT_FILE_NAME + + # Parse and print ACS results + echo "FWTS and ACS SBSA results..........................." + sed -n '/Test results summary/{:a;n;/qemuarm64 login/b;p;ba}' \ + $PWD/$platform/$UART0_ARMTF_OUTPUT_FILE_NAME +} + +while getopts "p:n:a:j:h" opt; do + case $opt in + p) + platform=$OPTARG + ;; + j) + ;; + n|a) + ;; + *) + print_usage + exit 1 + ;; + esac +done + +#Ensure that the platform is supported +if [ -z "$platform" ] ; then + print_usage + exit 1 +fi + +if [ -z "${sgi_platforms[$platform]}" ] ; then + echo "[ERROR] Could not deduce the selected platform." + __print_supported_sgi_platforms + exit 1 +fi + +#Run the SBSA/SBBR tests +acs_image="../../../../output/$platform/luv-live-image-gpt.img" + +platform_dir="platforms/$platform" + +pushd $platform_dir + +if [ ! -f $acs_image ]; then + echo "LUV image luv-live-image-gpt.img not found at $acs_image" + print_usage + exit 1 +fi + +set -- "$@" "-v" "$acs_image" +source ./run_model.sh + +# if model failed to start, exit +if [ "$MODEL_PID" == "0" ] ; then + exit 1 +fi + +# wait for the test to complete +parse_log_file "$PWD/$platform/$UART0_ARMTF_OUTPUT_FILE_NAME" "login:" 7200 +ret=$? + +# kill the model's children, then kill the model +kill_model +sleep 5 + +if [ "$ret" != "0" ]; then + echo "[ERROR]: ACS test failed or timedout!" + exit 1 +else + echo "[SUCCESS]: ACS test completed!" +fi + +outdir=$PWD/$platform/acs + +# Parse and print ACS test summary +print_acs_test_summary + +# Get the ACS test results +get_acs_test_results + +popd +exit 0 |