diff --git a/libwvdrmengine/build_and_run_all_unit_tests.sh b/libwvdrmengine/build_and_run_all_unit_tests.sh index e1ef862a..a0df822a 100755 --- a/libwvdrmengine/build_and_run_all_unit_tests.sh +++ b/libwvdrmengine/build_and_run_all_unit_tests.sh @@ -3,72 +3,99 @@ set -e if [ -z "$ANDROID_BUILD_TOP" ]; then - echo "Android build environment not set" - exit -1 + echo "Android build environment not set" + exit -1 fi +# Read arguments in case the user wants to do a multicore build +NUM_CORES=1 +while getopts "j:" opt; do + case $opt in + j) + NUM_CORES=$OPTARG + ;; + esac +done + +# Define the relevant aliases . $ANDROID_BUILD_TOP/build/envsetup.sh +# Build all the targets cd $ANDROID_BUILD_TOP/vendor/widevine/libwvdrmengine pwd -mm || mma +mm -j $NUM_CORES || mma -j $NUM_CORES cd $ANDROID_BUILD_TOP/vendor/widevine/libwvdrmengine/test/unit pwd -mm || mma +mm -j $NUM_CORES || mma -j $NUM_CORES cd $ANDROID_BUILD_TOP/vendor/widevine/libwvdrmengine/cdm/test pwd -mm || mma +mm -j $NUM_CORES || mma -j $NUM_CORES cd $ANDROID_BUILD_TOP/vendor/widevine/libwvdrmengine/mediacrypto/test pwd -mm || mma +mm -j $NUM_CORES || mma -j $NUM_CORES cd $ANDROID_BUILD_TOP/vendor/widevine/libwvdrmengine/mediadrm/test pwd -mm || mma +mm -j $NUM_CORES || mma -j $NUM_CORES cd $ANDROID_BUILD_TOP/vendor/widevine/libwvdrmengine/oemcrypto/test pwd -mm || mma +mm -j $NUM_CORES || mma -j $NUM_CORES +# Detect the device and check if Verity is going to stop the script from working echo "waiting for device" -adb root && adb wait-for-device remount +ADB_OUTPUT=`adb root && adb 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 disable-verity\" and try again." + exit -1 +fi +# Push the files to the device + +# Given a local path to a file, this will first try to push it to /vendor/bin +# and then, if that fails, to /data/widevine_tests. try_adb_push() { # Swallow the error message -- assume it is a read-only file system. - if ! adb push $@ /system/bin > /dev/null; then + if ! adb push $@ /vendor/bin &> /dev/null; then adb shell mkdir -p /data/widevine_tests # If this fails, the user will get the error message. adb push $@ /data/widevine_tests fi } -try_adb_push $OUT/system/bin/oemcrypto_test -try_adb_push $OUT/system/bin/request_license_test -try_adb_push $OUT/system/bin/cdm_extended_duration_test -try_adb_push $OUT/system/bin/policy_engine_unittest -try_adb_push $OUT/system/bin/policy_engine_constraints_unittest -try_adb_push $OUT/system/bin/libwvdrmmediacrypto_test -try_adb_push $OUT/system/bin/libwvdrmmediacrypto_hidl_test -try_adb_push $OUT/system/bin/libwvdrmdrmplugin_test -try_adb_push $OUT/system/bin/libwvdrmdrmplugin_hidl_test -try_adb_push $OUT/system/bin/cdm_engine_test -try_adb_push $OUT/system/bin/cdm_session_unittest -try_adb_push $OUT/system/bin/file_store_unittest -try_adb_push $OUT/system/bin/file_utils_unittest -try_adb_push $OUT/system/bin/license_unittest -try_adb_push $OUT/system/bin/license_keys_unittest -try_adb_push $OUT/system/bin/initialization_data_unittest -try_adb_push $OUT/system/bin/device_files_unittest -try_adb_push $OUT/system/bin/service_certificate_unittest -try_adb_push $OUT/system/bin/timer_unittest -try_adb_push $OUT/system/bin/libwvdrmengine_test -try_adb_push $OUT/system/bin/libwvdrmengine_hidl_test -try_adb_push $OUT/system/bin/buffer_reader_test -try_adb_push $OUT/system/bin/distribution_test -try_adb_push $OUT/system/bin/event_metric_test +# Push the tests to the device +try_adb_push $OUT/vendor/bin/oemcrypto_test +try_adb_push $OUT/vendor/bin/request_license_test +try_adb_push $OUT/vendor/bin/cdm_extended_duration_test +try_adb_push $OUT/vendor/bin/policy_engine_unittest +try_adb_push $OUT/vendor/bin/policy_engine_constraints_unittest +try_adb_push $OUT/vendor/bin/libwvdrmmediacrypto_test +try_adb_push $OUT/vendor/bin/libwvdrmmediacrypto_hidl_test +try_adb_push $OUT/vendor/bin/libwvdrmdrmplugin_test +try_adb_push $OUT/vendor/bin/libwvdrmdrmplugin_hidl_test +try_adb_push $OUT/vendor/bin/cdm_engine_test +try_adb_push $OUT/vendor/bin/cdm_session_unittest +try_adb_push $OUT/vendor/bin/file_store_unittest +try_adb_push $OUT/vendor/bin/file_utils_unittest +try_adb_push $OUT/vendor/bin/license_unittest +try_adb_push $OUT/vendor/bin/license_keys_unittest +try_adb_push $OUT/vendor/bin/initialization_data_unittest +try_adb_push $OUT/vendor/bin/device_files_unittest +try_adb_push $OUT/vendor/bin/service_certificate_unittest +try_adb_push $OUT/vendor/bin/timer_unittest +try_adb_push $OUT/vendor/bin/libwvdrmengine_test +try_adb_push $OUT/vendor/bin/libwvdrmengine_hidl_test +try_adb_push $OUT/vendor/bin/buffer_reader_test +try_adb_push $OUT/vendor/bin/distribution_test +try_adb_push $OUT/vendor/bin/event_metric_test +# Run the tests using run_all_unit_tests.sh cd $ANDROID_BUILD_TOP/vendor/widevine/libwvdrmengine ./run_all_unit_tests.sh diff --git a/libwvdrmengine/cdm/test/unit-test.mk b/libwvdrmengine/cdm/test/unit-test.mk index a61a3a73..d5abfc69 100644 --- a/libwvdrmengine/cdm/test/unit-test.mk +++ b/libwvdrmengine/cdm/test/unit-test.mk @@ -50,6 +50,10 @@ LOCAL_SHARED_LIBRARIES := \ LOCAL_CFLAGS += -DUNIT_TEST +LOCAL_MODULE_OWNER := widevine + +LOCAL_PROPRIETARY_MODULE := true + LOCAL_MODULE_TARGET_ARCH := arm x86 mips include $(BUILD_EXECUTABLE) diff --git a/libwvdrmengine/mediacrypto/test/Android.mk b/libwvdrmengine/mediacrypto/test/Android.mk index 3b931376..3fbf53d1 100644 --- a/libwvdrmengine/mediacrypto/test/Android.mk +++ b/libwvdrmengine/mediacrypto/test/Android.mk @@ -45,6 +45,10 @@ LOCAL_MODULE := libwvdrmmediacrypto_test LOCAL_MODULE_TAGS := tests +LOCAL_MODULE_OWNER := widevine + +LOCAL_PROPRIETARY_MODULE := true + LOCAL_MODULE_TARGET_ARCH := arm x86 mips include $(BUILD_EXECUTABLE) @@ -106,6 +110,10 @@ LOCAL_MODULE := libwvdrmmediacrypto_hidl_test LOCAL_MODULE_TAGS := tests +LOCAL_MODULE_OWNER := widevine + +LOCAL_PROPRIETARY_MODULE := true + LOCAL_MODULE_TARGET_ARCH := arm x86 mips include $(BUILD_EXECUTABLE) diff --git a/libwvdrmengine/mediadrm/test/Android.mk b/libwvdrmengine/mediadrm/test/Android.mk index 95a0e97f..8fdaca28 100644 --- a/libwvdrmengine/mediadrm/test/Android.mk +++ b/libwvdrmengine/mediadrm/test/Android.mk @@ -46,6 +46,10 @@ LOCAL_MODULE := libwvdrmdrmplugin_test LOCAL_MODULE_TAGS := tests +LOCAL_MODULE_OWNER := widevine + +LOCAL_PROPRIETARY_MODULE := true + LOCAL_MODULE_TARGET_ARCH := arm x86 mips include $(BUILD_EXECUTABLE) @@ -108,6 +112,10 @@ LOCAL_MODULE := libwvdrmdrmplugin_hidl_test LOCAL_MODULE_TAGS := tests +LOCAL_MODULE_OWNER := widevine + +LOCAL_PROPRIETARY_MODULE := true + LOCAL_MODULE_TARGET_ARCH := arm x86 mips include $(BUILD_EXECUTABLE) diff --git a/libwvdrmengine/oemcrypto/test/Android.mk b/libwvdrmengine/oemcrypto/test/Android.mk index 56e6fff6..20ef7c34 100644 --- a/libwvdrmengine/oemcrypto/test/Android.mk +++ b/libwvdrmengine/oemcrypto/test/Android.mk @@ -5,6 +5,10 @@ include $(CLEAR_VARS) LOCAL_MODULE:=oemcrypto_test LOCAL_MODULE_TAGS := tests +LOCAL_MODULE_OWNER := widevine + +LOCAL_PROPRIETARY_MODULE := true + LOCAL_MODULE_TARGET_ARCH := arm x86 mips include $(LOCAL_PATH)/common.mk diff --git a/libwvdrmengine/run_all_unit_tests.sh b/libwvdrmengine/run_all_unit_tests.sh index 110ac16e..bb23ff2f 100755 --- a/libwvdrmengine/run_all_unit_tests.sh +++ b/libwvdrmengine/run_all_unit_tests.sh @@ -19,12 +19,12 @@ fi adb_shell_run() { local test_file=$1 shift - if adb shell ls /data/widevine_tests/$test_file; then + if adb shell ls /data/widevine_tests/$test_file &> /dev/null; then test_file=/data/widevine_tests/$test_file else - test_file=/system/bin/$test_file - echo $test_file + test_file=/vendor/bin/$test_file fi + echo $test_file local tmp_log="$OUT/mediadrmtest.log" local adb_error="[ADB SHELL] $@ $test_file failed" adb shell "GTEST_FILTER=$GTEST_FILTER $@ $test_file" \|\| echo "$adb_error" | tee "$tmp_log" @@ -88,12 +88,18 @@ adb_shell_run buffer_reader_test adb_shell_run distribution_test adb_shell_run event_metric_test -library_path="/system/vendor/lib/mediadrm/ " -adb_shell_run libwvdrmengine_test LD_LIBRARY_PATH=$library_path +# Run the non-Treble test on non-Treble devices +if adb shell ls /vendor/lib/mediadrm/libwvdrmengine.so &> /dev/null || + adb 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 -library_path="/system/vendor/lib/hw/ " -adb_shell_run libwvdrmengine_hidl_test LD_LIBRARY_PATH=$library_path +# Run the Treble test on Treble devices +if adb shell ls /vendor/lib/libwvhidl.so &> /dev/null || + adb shell ls /vendor/lib64/libwvhidl.so &> /dev/null; then + adb_shell_run libwvdrmengine_hidl_test +fi # Re-enable DroidGuard set_droidguard enable -