Bug: b/70299597 Merge of http://go/wvgerrit/67304 Test: Android, CE CDM, and Linux tests There's a few different things that can go wrong in the L3 initialization, with seeding and device key failures among others. They should be recorded in metrics to track. Along the same lines, since multiple errors can happen in conjunction, metrics needs to change to add more fields for errors. This CL also adds the hidl_metrics_adapter_unittest to the Android test scripts. Change-Id: Ie5bcf81bbe294a1136c58410f90087a13b3d911d
137 lines
4.5 KiB
Bash
Executable File
137 lines
4.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Read arguments in case the user wants to copy files to a specific
|
|
# android device by providing a serial number
|
|
SERIAL_NUM=""
|
|
while getopts "j:s:" opt; do
|
|
case $opt in
|
|
s)
|
|
SERIAL_NUM="-s $OPTARG"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
final_result=0
|
|
failed_tests=()
|
|
|
|
# Below, we will append filters to the exclusion portion of GTEST_FILTER, so we
|
|
# need to guarantee it has one.
|
|
if [ -z "$GTEST_FILTER" ]; then
|
|
# If it wasn't set, make it add all tests, and remove none.
|
|
GTEST_FILTER="*-"
|
|
# if GTEST_FILTER already has a negative sign, we leave it alone.
|
|
elif [ 0 -eq `expr index "$GTEST_FILTER" "-"` ]; then
|
|
# If GTEST_FILTER was set, but does not have a negative sign, add one. This
|
|
# gives gtest an empty list of tests to skip.
|
|
GTEST_FILTER="$GTEST_FILTER-"
|
|
fi
|
|
|
|
# Execute a command in "adb shell" and capture the result.
|
|
adb_shell_run() {
|
|
local test_file=$1
|
|
shift
|
|
if adb $SERIAL_NUM shell ls /data/bin/$test_file &> /dev/null; then
|
|
test_file=/data/bin/$test_file
|
|
else
|
|
echo "Please install the test on the device in /data/bin, "
|
|
echo "or begin execution by running ./build_and_run_all_unit_tests.sh"
|
|
exit 1
|
|
fi
|
|
echo "------ Starting: $test_file"
|
|
local tmp_log="$OUT/mediadrmtest.log"
|
|
local adb_error="[ADB SHELL] $@ $test_file failed"
|
|
adb $SERIAL_NUM shell "GTEST_FILTER=$GTEST_FILTER $@ $test_file" \|\| echo "$adb_error" | tee "$tmp_log"
|
|
! grep -Fq "$adb_error" "$tmp_log"
|
|
local result=$?
|
|
if [ $result -ne 0 ]; then
|
|
final_result=$result
|
|
failed_tests+=("$adb_error")
|
|
fi
|
|
}
|
|
|
|
# Use Package Manager (via adb shell) to enable or disable DroidGuard.
|
|
# Disabling DroidGuard during the test run prevents concurrency issues
|
|
# with provisioning status.
|
|
set_droidguard() {
|
|
adb $SERIAL_NUM shell pm $1 com.google.android.gms/com.google.android.gms.droidguard.DroidGuardService
|
|
}
|
|
|
|
if [ -z "$ANDROID_BUILD_TOP" ]; then
|
|
echo "Android build environment not set"
|
|
exit -1
|
|
fi
|
|
|
|
echo "waiting for device"
|
|
ADB_OUTPUT=`adb $SERIAL_NUM root && echo ". " && adb $SERIAL_NUM wait-for-device remount`
|
|
echo $ADB_OUTPUT
|
|
if echo $ADB_OUTPUT | grep -qi "verity"; then
|
|
echo
|
|
echo "ERROR: This device has Verity enabled. run_all_unit_tests.sh does not "
|
|
echo "work if Verity is enabled. Please disable Verity with"
|
|
echo "\"adb $SERIAL_NUM disable-verity\" and try again."
|
|
exit -1
|
|
fi
|
|
|
|
# Disable DroidGuard to prevent provisioning collisions
|
|
set_droidguard disable
|
|
|
|
# Run oemcrypto tests first due to historical test order issues
|
|
adb_shell_run oemcrypto_test \
|
|
GTEST_FILTER="$GTEST_FILTER:*Level1Required" FORCE_LEVEL3_OEMCRYPTO=yes
|
|
adb_shell_run oemcrypto_test
|
|
|
|
# Run request_license_test next to ensure device is provisioned
|
|
adb_shell_run request_license_test
|
|
|
|
# cdm_extended_duration_test takes >30 minutes to run.
|
|
# adb_shell_run cdm_extended_duration_test
|
|
|
|
# cdm_feature_test to be run with modified/mock oemcrypto
|
|
# adb_shell_run cdm_feature_test
|
|
|
|
# Additional tests
|
|
adb_shell_run base64_test
|
|
adb_shell_run buffer_reader_test
|
|
adb_shell_run cdm_engine_test
|
|
adb_shell_run cdm_session_unittest
|
|
adb_shell_run counter_metric_unittest
|
|
adb_shell_run crypto_session_unittest
|
|
adb_shell_run device_files_unittest
|
|
adb_shell_run distribution_unittest
|
|
adb_shell_run event_metric_unittest
|
|
adb_shell_run file_store_unittest
|
|
adb_shell_run file_utils_unittest
|
|
adb_shell_run generic_crypto_unittest
|
|
adb_shell_run hidl_metrics_adapter_unittest
|
|
adb_shell_run http_socket_test
|
|
adb_shell_run initialization_data_unittest
|
|
adb_shell_run libwvdrmdrmplugin_hidl_test
|
|
adb_shell_run libwvdrmdrmplugin_test
|
|
adb_shell_run libwvdrmmediacrypto_hidl_test
|
|
adb_shell_run libwvdrmmediacrypto_test
|
|
adb_shell_run license_keys_unittest
|
|
adb_shell_run license_unittest
|
|
adb_shell_run policy_engine_constraints_unittest
|
|
adb_shell_run policy_engine_unittest
|
|
adb_shell_run service_certificate_unittest
|
|
adb_shell_run timer_unittest
|
|
adb_shell_run usage_table_header_unittest
|
|
adb_shell_run value_metric_unittest
|
|
adb_shell_run wv_cdm_metrics_test
|
|
|
|
# Run the non-Treble test on non-Treble devices
|
|
if adb $SERIAL_NUM shell ls /vendor/lib/mediadrm/libwvdrmengine.so &> /dev/null ||
|
|
adb $SERIAL_NUM shell ls /vendor/lib64/mediadrm/libwvdrmengine.so &> /dev/null; then
|
|
library_path="/vendor/lib/mediadrm/:/vendor/lib64/mediadrm/"
|
|
adb_shell_run libwvdrmengine_test LD_LIBRARY_PATH=$library_path
|
|
fi
|
|
|
|
# Run the Treble test on Treble devices
|
|
if adb $SERIAL_NUM shell ls /vendor/lib/libwvhidl.so &> /dev/null ||
|
|
adb $SERIAL_NUM shell ls /vendor/lib64/libwvhidl.so &> /dev/null; then
|
|
adb_shell_run libwvdrmengine_hidl_test
|
|
fi
|
|
|
|
# Re-enable DroidGuard
|
|
set_droidguard enable
|