summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChandni Cherukuri <chandni.cherukuri@arm.com>2018-09-23 19:58:18 +0530
committerThomas Abraham <thomas.abraham@arm.com>2019-02-18 18:21:22 +0530
commit3f9db8baf80e028b97a94885bd4ec19a207c272a (patch)
treecf486d747b0a136e17ffc9d4ddd17fc619001166
parent5252465687ac87c9ca2773a32471ae73ca462f3e (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-xsgi/acs.sh190
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