Skip to content

Commit

Permalink
[guest-test] New Test: add 6 TDX guest BAT TCs
Browse files Browse the repository at this point in the history
1. add 6 TDX guest BAT TCs
2. code clean up by removing unnecessary return
3. update previous TCs direct execution command info

[Test Components] tdx
[Test Types] func
[Supported Devices] spr,emr,gnr,srf

Signed-off-by: Hongyu Ning <hongyu.ning@intel.com>
  • Loading branch information
hongyuni committed Dec 27, 2023
1 parent 6522bf7 commit 246036b
Show file tree
Hide file tree
Showing 3 changed files with 217 additions and 123 deletions.
170 changes: 81 additions & 89 deletions guest-test/tdx/tdx.test_executor.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,22 +25,18 @@ guest_attest_test() {
selftest_item=$1
guest_test_prepare tdx_attest_check.sh
guest_test_source_code tdx_attest_test_suite tdx_guest_test || \
{ die "Failed to prepare guest test source code for $selftest_item"; return 1; }
die "Failed to prepare guest test source code for $selftest_item"
guest_test_entry tdx_attest_check.sh "-t $selftest_item" || \
{ die "Failed on $TESTCASE tdx_attest_check.sh -t $selftest_item"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_attest_check.sh -t $selftest_item"
[[ "$GCOV" == "off" ]] && guest_test_close
}

guest_tsm_attest() {
test_item=$1
guest_test_prepare tdx_attest_check.sh
guest_test_entry tdx_attest_check.sh "-t $test_item" || \
{ die "Failed on $TESTCASE tdx_attest_check.sh -t $test_item"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_attest_check.sh -t $test_item"
[[ "$GCOV" == "off" ]] && guest_test_close
}

###################### Do Works ######################
Expand Down Expand Up @@ -69,18 +65,14 @@ case "$TESTCASE" in
guest_test_prepare tdx_guest_boot_check.sh
guest_test_entry tdx_guest_boot_check.sh "-v $VCPU -s $SOCKETS -m $MEM" || \
die "Failed on TD_BOOT test tdx_guest_boot_check.sh -v $VCPU -s $SOCKETS -m $MEM"
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
[[ "$GCOV" == "off" ]] && guest_test_close
;;
GUEST_TESTCASE_EXAMPLE)
guest_test_prepare guest_test.sh
guest_test_source_code test_source_code_dir_example test_binary_example
guest_test_entry guest_test.sh "-t $TESTCASE" || \
{ die "Failed on $TESTCASE guest_test.sh -t $TESTCASE"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE guest_test.sh -t $TESTCASE"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_ATTEST_VERIFY_REPORT)
guest_attest_test "global.verify_report" || \
Expand All @@ -102,9 +94,7 @@ case "$TESTCASE" in
guest_test_prepare tdx_speed_test.sh
guest_test_entry tdx_speed_test.sh || \
die "Failed on TD_NET_SPEED tdx_speed_test.sh"
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_TSM_ATTEST_QUOTE_PRECHECK)
guest_tsm_attest "tsm.get_quote.precheck" || \
Expand All @@ -121,142 +111,144 @@ case "$TESTCASE" in
TD_MEM_EBIZZY_FUNC)
guest_test_prepare tdx_mem_test.sh
guest_test_source_code tdx_ebizzy_test_suite ebizzy || \
{ die "Failed to prepare guest test source code of tdx_ebizzy_test_suite"; return 1; }
die "Failed to prepare guest test source code of tdx_ebizzy_test_suite"
guest_test_entry tdx_mem_test.sh "-t EBIZZY_FUNC" || \
{ die "Failed on $TESTCASE tdx_mem_test.sh -t EBIZZY_FUNC"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_mem_test.sh -t EBIZZY_FUNC"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_MEM_ACPT_T_1C_8G_1W)
guest_test_prepare tdx_mem_test.sh
guest_test_entry tdx_mem_test.sh "-t MEM_ACPT_T_1C_8G_1W" || \
{ die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_1C_8G_1W"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_1C_8G_1W"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_MEM_ACPT_T_1C_8G_32W)
guest_test_prepare tdx_mem_test.sh
guest_test_entry tdx_mem_test.sh "-t MEM_ACPT_T_1C_8G_32W" || \
{ die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_1C_8G_32W"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_1C_8G_32W"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_MEM_ACPT_T_1C_32G_1W)
guest_test_prepare tdx_mem_test.sh
guest_test_entry tdx_mem_test.sh "-t MEM_ACPT_T_1C_32G_1W" || \
{ die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_1C_32G_1W"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_1C_32G_1W"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_MEM_ACPT_T_1C_32G_32W)
guest_test_prepare tdx_mem_test.sh
guest_test_entry tdx_mem_test.sh "-t MEM_ACPT_T_1C_32G_32W" || \
{ die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_1C_32G_32W"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_1C_32G_32W"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_MEM_ACPT_T_1C_96G_1W)
guest_test_prepare tdx_mem_test.sh
guest_test_entry tdx_mem_test.sh "-t MEM_ACPT_T_1C_96G_1W" || \
{ die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_1C_96G_1W"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_1C_96G_1W"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_MEM_ACPT_T_1C_96G_32W)
guest_test_prepare tdx_mem_test.sh
guest_test_entry tdx_mem_test.sh "-t MEM_ACPT_T_1C_96G_32W" || \
{ die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_1C_96G_32W"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_1C_96G_32W"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_MEM_ACPT_T_32C_8G_32W)
guest_test_prepare tdx_mem_test.sh
guest_test_entry tdx_mem_test.sh "-t MEM_ACPT_T_32C_8G_32W" || \
{ die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_32C_8G_32W"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_32C_8G_32W"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_MEM_ACPT_T_32C_8G_256W)
guest_test_prepare tdx_mem_test.sh
guest_test_entry tdx_mem_test.sh "-t MEM_ACPT_T_32C_8G_256W" || \
{ die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_32C_8G_256W"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_32C_8G_256W"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_MEM_ACPT_T_32C_32G_32W)
guest_test_prepare tdx_mem_test.sh
guest_test_entry tdx_mem_test.sh "-t MEM_ACPT_T_32C_32G_32W" || \
{ die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_32C_32G_32W"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_32C_32G_32W"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_MEM_ACPT_T_32C_32G_256W)
guest_test_prepare tdx_mem_test.sh
guest_test_entry tdx_mem_test.sh "-t MEM_ACPT_T_32C_32G_256W" || \
{ die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_32C_32G_256W"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_32C_32G_256W"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_MEM_ACPT_T_32C_96G_32W)
guest_test_prepare tdx_mem_test.sh
guest_test_entry tdx_mem_test.sh "-t MEM_ACPT_T_32C_96G_32W" || \
{ die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_32C_96G_32W"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_32C_96G_32W"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_MEM_ACPT_T_32C_96G_256W)
guest_test_prepare tdx_mem_test.sh
guest_test_entry tdx_mem_test.sh "-t MEM_ACPT_T_32C_96G_256W" || \
{ die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_32C_96G_256W"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_T_32C_96G_256W"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_MEM_ACPT_FUNC)
guest_test_prepare tdx_mem_test.sh
guest_test_entry tdx_mem_test.sh "-t MEM_ACPT_FUNC" || \
{ die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_FUNC"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_FUNC"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_MEM_ACPT_CAL)
guest_test_prepare tdx_mem_test.sh
guest_test_entry tdx_mem_test.sh "-t MEM_ACPT_CAL" || \
{ die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_CAL"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_CAL"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_MEM_ACPT_NEG)
guest_test_prepare tdx_mem_test.sh
guest_test_entry tdx_mem_test.sh "-t MEM_ACPT_NEG" || \
{ die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_NEG"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_mem_test.sh -t MEM_ACPT_NEG"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_VE_HALT)
guest_test_prepare tdx_test_module.sh
guest_test_source_code tdx_halt_test_module halt_test || \
{ die "Failed to prepare guest test kernel module for $TESTCASE"; return 1; }
die "Failed to prepare guest test kernel module for $TESTCASE"
guest_test_entry tdx_test_module.sh "halt_test" || \
{ die "Failed on $TESTCASE tdx_test_module.sh halt_test"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
die "Failed on $TESTCASE tdx_test_module.sh halt_test"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_GUEST_CPUINFO)
guest_test_prepare tdx_guest_bat_test.sh
guest_test_entry tdx_guest_bat_test.sh "-t GUEST_CPUINFO" || \
die "Failed on $TESTCASE tdx_guest_bat_test.sh -t GUEST_CPUINFO"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_GUEST_KCONFIG)
guest_test_prepare tdx_guest_bat_test.sh
guest_test_entry tdx_guest_bat_test.sh "-t GUEST_KCONFIG" || \
die "Failed on $TESTCASE tdx_guest_bat_test.sh -t GUEST_KCONFIG"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_GUEST_DRIVER_KCONFIG)
guest_test_prepare tdx_guest_bat_test.sh
guest_test_entry tdx_guest_bat_test.sh "-t GUEST_DRIVER_KCONFIG" || \
die "Failed on $TESTCASE tdx_guest_bat_test.sh -t GUEST_DRIVER_KCONFIG"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_GUEST_LAZY_ACCEPT_KCONFIG)
guest_test_prepare tdx_guest_bat_test.sh
guest_test_entry tdx_guest_bat_test.sh "-t GUEST_LAZY_ACCEPT_KCONFIG" || \
die "Failed on $TESTCASE tdx_guest_bat_test.sh -t GUEST_LAZY_ACCEPT_KCONFIG"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_GUEST_TSM_REPORTS_KCONFIG)
guest_test_prepare tdx_guest_bat_test.sh
guest_test_entry tdx_guest_bat_test.sh "-t GUEST_TSM_REPORTS_KCONFIG" || \
die "Failed on $TESTCASE tdx_guest_bat_test.sh -t GUEST_TSM_REPORTS_KCONFIG"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
TD_GUEST_ATTEST_DEV)
guest_test_prepare tdx_guest_bat_test.sh
guest_test_entry tdx_guest_bat_test.sh "-t GUEST_ATTEST_DEV" || \
die "Failed on $TESTCASE tdx_guest_bat_test.sh -t GUEST_ATTEST_DEV"
[[ "$GCOV" == "off" ]] && guest_test_close
;;
:)
test_print_err "Must specify the test scenario option by [-t]"
Expand Down
94 changes: 94 additions & 0 deletions guest-test/tdx/tdx_guest_bat_test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
#!/usr/bin/bash
# SPDX-License-Identifier: GPL-2.0-only
# Copyright (c) 2023 Intel Corporation

# Author: Hongyu Ning <hongyu.ning@intel.com>
#
# History: 14, Dec., 2023 - Hongyu Ning - creation


# @desc This script do basic acceptance test in TDX Guest VM

###################### Variables ######################
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
echo "$SCRIPT_DIR"
source common.sh

while getopts :t: arg; do
case $arg in
t)
BAT_CASE=$OPTARG
;;
*)
test_print_err "Must supply an argument to -$OPTARG."
exit 1
;;
esac
done

###################### Functions ######################
# Check this cpu could support the function which contain the parameter
# $1: Parameter should be support in cpuinfo
# Return: 0 for true, otherwise false
cpu_info_check() {
local cpu_func=$1
[ -n "$cpu_func" ] || die "cpu info check name is null:$cpu_func"
grep -q "$cpu_func" /proc/cpuinfo || block_test "CPU not support:$cpu_func"
test_print_trc "/proc/cpuinfo contain '$cpu_func'"
return 0
}

# function based on test_kconfig, check if kconfig is set to y
kconfig_y() {
local KCONFIG_ITEM=$1
test_kconfig "y" "$KCONFIG_ITEM" || \
die "$KCONFIG_ITEM not set to y"
test_print_trc "$KCONFIG_ITEM set to y as expected"
}

# function based on test_kconfig, check if kconfig is set to y or m
kconfig_y_or_m() {
local KCONFIG_ITEM=$1
if test_kconfig "y" "$KCONFIG_ITEM"; then
test_print_trc "$KCONFIG_ITEM set to y as expected"
elif test_kconfig "m" "$KCONFIG_ITEM"; then
test_print_trc "$KCONFIG_ITEM set to m as expected"
else
die "$KCONFIG_ITEM not set to y or m"
fi
}

###################### Do Works ######################
case "$BAT_CASE" in
GUEST_CPUINFO)
cpu_info_check tdx_guest
;;
GUEST_KCONFIG)
kconfig_y CONFIG_INTEL_TDX_GUEST
;;
GUEST_DRIVER_KCONFIG)
kconfig_y_or_m CONFIG_TDX_GUEST_DRIVER
;;
GUEST_LAZY_ACCEPT_KCONFIG)
kconfig_y CONFIG_UNACCEPTED_MEMORY
;;
GUEST_TSM_REPORTS_KCONFIG)
kconfig_y_or_m CONFIG_TSM_REPORTS
;;
GUEST_ATTEST_DEV)
ATTEST_DEV=/dev/tdx_guest
if [ -c "$ATTEST_DEV" ]; then
test_print_trc "TDX guest attestation device exists"
else
die "TDX guest attestation device $ATTEST_DEV doesn't exist"
fi
;;
:)
test_print_err "Must specify the memory case option by [-t]"
exit 1
;;
\?)
test_print_err "Input test case option $MEM_CASE is not supported"
exit 1
;;
esac
Loading

0 comments on commit 246036b

Please sign in to comment.