Files
android/libwvdrmengine/build_all_unit_tests.sh

121 lines
3.4 KiB
Bash
Executable File

#!/bin/sh
set -e
if [ -z "$ANDROID_BUILD_TOP" ]; then
echo "Android build environment not set"
exit -1
fi
# Read arguments in case the user wants to do a multicore build or
# copy files to a specific android device by providing a serial number.
# The default build target is for AIDL service, use "-t hidl" to
# build for HIDL service.
WV_UNITTESTS_BUILD_TARGET=""
NUM_CORES=1
SERIAL_NUM=""
while getopts "j:s:t:" opt; do
case $opt in
j)
NUM_CORES=$OPTARG
;;
s)
SERIAL_NUM="-s $OPTARG"
;;
t)
WV_UNITTESTS_BUILD_TARGET="WV_UNITTESTS_BUILD_TARGET=$OPTARG"
;;
esac
done
# Define the relevant aliases
. $ANDROID_BUILD_TOP/build/envsetup.sh
# Build all the targets
# This list is slightly longer than the one in run_all_unit_tests.sh because
# it does not run very long tests or tests needing special setup.
WV_UNITTESTS="base64_test \
buffer_reader_test \
cdm_coverage_test \
cdm_engine_test \
cdm_engine_metrics_decorator_unittest \
cdm_feature_test \
cdm_extended_duration_test \
cdm_session_unittest \
certificate_provisioning_unittest \
counter_metric_unittest \
crypto_session_unittest \
device_files_unittest \
distribution_unittest \
duration_use_case_test \
event_metric_unittest \
file_store_unittest \
file_utils_unittest \
generic_crypto_unittest \
hidl_metrics_adapter_unittest \
http_socket_test \
initialization_data_unittest \
keybox_ota_test \
libwvdrmdrmplugin_hal_test \
libwvdrmengine_hal_test \
libwvdrmmediacrypto_hal_test \
license_keys_unittest \
license_unittest \
metrics_collections_unittest \
oemcrypto_test \
odk_test \
okp_fallback_policy_test \
ota_keybox_provisioner_test \
policy_engine_constraints_unittest \
policy_engine_unittest \
policy_integration_test \
reboot_test \
request_license_test \
rw_lock_test \
service_certificate_unittest \
timer_unittest \
usage_table_header_unittest \
value_metric_unittest \
wv_cdm_metrics_test"
cd $ANDROID_BUILD_TOP
pwd
m -j $NUM_CORES $WV_UNITTESTS $WV_UNITTESTS_BUILD_TARGET
# Detect the device and check if Verity is going to stop the script from working
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. build_and_run_all_unit_tests.sh "
echo "does not work if Verity is enabled. Please disable Verity with"
echo "\"adb $SERIAL_NUM disable-verity\" and try again."
exit -1
fi
# Push the files to the device
# Given a local path to a file, this will try to push it to /data/nativetest.
# If that fails, an error message will be printed.
try_adb_push() {
# android-tests.zip requires /data/nativetest, we should use the same
if [ -f $OUT/data/nativetest/$1 ]; then
test_file=$OUT/data/nativetest/$1
elif [ -f $OUT/data/nativetest/vendor/$1/$1 ]; then
test_file=$OUT/data/nativetest/vendor/$1/$1
else
echo "I cannot find $1"
echo "I think it should be in $OUT/data/nativetest"
exit 1
fi
adb $SERIAL_NUM shell mkdir -p /data/nativetest
adb $SERIAL_NUM push $test_file /data/nativetest/$1
}
# Push the tests to the device
for f in $WV_UNITTESTS; do
try_adb_push $f
done