From 038580c6c957417fcf74fbaab8d3e08a1df6a519 Mon Sep 17 00:00:00 2001 From: Kyle Alexander Date: Mon, 12 Jun 2017 23:48:15 -0700 Subject: [PATCH] Update unit tests to build into /data/bin Tradefed needs these tests to be in the /DATA directory. Test: cd vendor/widevine && ./build_and_run_all_unit_tests All tests should build and pass. make tests unzip android-tests.zip and verify all tests located in DATA/bin Bug: 62055647 Change-Id: I35925e29558561c4726bb2249499bfee4e54cf45 --- .../build_and_run_all_unit_tests.sh | 72 ++++++++++--------- libwvdrmengine/cdm/test/unit-test.mk | 3 +- libwvdrmengine/mediacrypto/test/Android.mk | 6 +- libwvdrmengine/mediadrm/test/Android.mk | 6 +- libwvdrmengine/oemcrypto/test/Android.mk | 3 +- libwvdrmengine/run_all_unit_tests.sh | 48 ++++++++----- libwvdrmengine/test/castv2/Android.mk | 3 + libwvdrmengine/test/java/Android.mk | 3 + libwvdrmengine/test/unit/Android.mk | 6 +- tests/Android.mk | 31 ++++---- 10 files changed, 106 insertions(+), 75 deletions(-) diff --git a/libwvdrmengine/build_and_run_all_unit_tests.sh b/libwvdrmengine/build_and_run_all_unit_tests.sh index 9afdddd4..c8c94d5d 100755 --- a/libwvdrmengine/build_and_run_all_unit_tests.sh +++ b/libwvdrmengine/build_and_run_all_unit_tests.sh @@ -47,7 +47,7 @@ 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_OUTPUT=`adb root && adb wait-for-device remount` +ADB_OUTPUT=`adb root && echo ". " && adb wait-for-device remount` echo $ADB_OUTPUT if echo $ADB_OUTPUT | grep -qi "verity"; then echo @@ -59,43 +59,49 @@ 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. +# Given a local path to a file, this will try to push it to /data/bin. +# If that fails, an error message will be printed. try_adb_push() { - # Swallow the error message -- assume it is a read-only file system. - 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 + # android-tests.zip requires /data/bin, we should use the same + if [ -f $OUT/data/bin/$1 ]; then + test_file=$OUT/data/bin/$1 + else + echo "I cannot find $1" + echo "I think it should be in $OUT/data/bin" + exit 1 fi + adb shell mkdir -p /data/bin + adb push $test_file /data/bin/$1 } # 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/usage_table_header_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 +try_adb_push base64_test +try_adb_push buffer_reader_test +try_adb_push cdm_engine_test +try_adb_push cdm_extended_duration_test +try_adb_push cdm_session_unittest +try_adb_push device_files_unittest +try_adb_push distribution_test +try_adb_push event_metric_test +try_adb_push file_store_unittest +try_adb_push file_utils_unittest +try_adb_push http_socket_test +try_adb_push initialization_data_unittest +try_adb_push libwvdrmdrmplugin_hidl_test +try_adb_push libwvdrmdrmplugin_test +try_adb_push libwvdrmengine_hidl_test +try_adb_push libwvdrmengine_test +try_adb_push libwvdrmmediacrypto_hidl_test +try_adb_push libwvdrmmediacrypto_test +try_adb_push license_keys_unittest +try_adb_push license_unittest +try_adb_push oemcrypto_test +try_adb_push policy_engine_constraints_unittest +try_adb_push policy_engine_unittest +try_adb_push request_license_test +try_adb_push service_certificate_unittest +try_adb_push timer_unittest +try_adb_push usage_table_header_unittest # Run the tests using run_all_unit_tests.sh cd $ANDROID_BUILD_TOP/vendor/widevine/libwvdrmengine diff --git a/libwvdrmengine/cdm/test/unit-test.mk b/libwvdrmengine/cdm/test/unit-test.mk index 234fc8f8..78ce40f2 100644 --- a/libwvdrmengine/cdm/test/unit-test.mk +++ b/libwvdrmengine/cdm/test/unit-test.mk @@ -52,7 +52,8 @@ LOCAL_CFLAGS += -DUNIT_TEST LOCAL_MODULE_OWNER := widevine -LOCAL_PROPRIETARY_MODULE := true +# When built, explicitly put it in the DATA/bin directory. +LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/bin ifneq ($(TARGET_ENABLE_MEDIADRM_64), true) LOCAL_MODULE_TARGET_ARCH := arm x86 mips diff --git a/libwvdrmengine/mediacrypto/test/Android.mk b/libwvdrmengine/mediacrypto/test/Android.mk index 2ed07a3f..caebab77 100644 --- a/libwvdrmengine/mediacrypto/test/Android.mk +++ b/libwvdrmengine/mediacrypto/test/Android.mk @@ -46,7 +46,8 @@ LOCAL_MODULE_TAGS := tests LOCAL_MODULE_OWNER := widevine -LOCAL_PROPRIETARY_MODULE := true +# When built, explicitly put it in the DATA/bin directory. +LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/bin ifneq ($(TARGET_ENABLE_MEDIADRM_64), true) LOCAL_MODULE_TARGET_ARCH := arm x86 mips @@ -111,7 +112,8 @@ LOCAL_MODULE_TAGS := tests LOCAL_MODULE_OWNER := widevine -LOCAL_PROPRIETARY_MODULE := true +# When built, explicitly put it in the DATA/bin directory. +LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/bin ifneq ($(TARGET_ENABLE_MEDIADRM_64), true) LOCAL_MODULE_TARGET_ARCH := arm x86 mips diff --git a/libwvdrmengine/mediadrm/test/Android.mk b/libwvdrmengine/mediadrm/test/Android.mk index a04a4281..9859d836 100644 --- a/libwvdrmengine/mediadrm/test/Android.mk +++ b/libwvdrmengine/mediadrm/test/Android.mk @@ -46,7 +46,8 @@ LOCAL_MODULE_TAGS := tests LOCAL_MODULE_OWNER := widevine -LOCAL_PROPRIETARY_MODULE := true +# When built, explicitly put it in the DATA/bin directory. +LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/bin ifneq ($(TARGET_ENABLE_MEDIADRM_64), true) LOCAL_MODULE_TARGET_ARCH := arm x86 mips @@ -112,7 +113,8 @@ LOCAL_MODULE_TAGS := tests LOCAL_MODULE_OWNER := widevine -LOCAL_PROPRIETARY_MODULE := true +# When built, explicitly put it in the DATA/bin directory. +LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/bin ifneq ($(TARGET_ENABLE_MEDIADRM_64), true) LOCAL_MODULE_TARGET_ARCH := arm x86 mips diff --git a/libwvdrmengine/oemcrypto/test/Android.mk b/libwvdrmengine/oemcrypto/test/Android.mk index 2f78507d..4ac91c71 100644 --- a/libwvdrmengine/oemcrypto/test/Android.mk +++ b/libwvdrmengine/oemcrypto/test/Android.mk @@ -7,7 +7,8 @@ LOCAL_MODULE_TAGS := tests LOCAL_MODULE_OWNER := widevine -LOCAL_PROPRIETARY_MODULE := true +# When built, explicitly put it in the DATA/bin directory. +LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/bin ifneq ($(TARGET_ENABLE_MEDIADRM_64), true) LOCAL_MODULE_TARGET_ARCH := arm x86 mips diff --git a/libwvdrmengine/run_all_unit_tests.sh b/libwvdrmengine/run_all_unit_tests.sh index b6ca8b10..824bc8eb 100755 --- a/libwvdrmengine/run_all_unit_tests.sh +++ b/libwvdrmengine/run_all_unit_tests.sh @@ -19,10 +19,12 @@ fi adb_shell_run() { local test_file=$1 shift - if adb shell ls /data/widevine_tests/$test_file &> /dev/null; then - test_file=/data/widevine_tests/$test_file + if adb shell ls /data/bin/$test_file &> /dev/null; then + test_file=/data/bin/$test_file else - test_file=/vendor/bin/$test_file + 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 $test_file local tmp_log="$OUT/mediadrmtest.log" @@ -49,7 +51,7 @@ if [ -z "$ANDROID_BUILD_TOP" ]; then fi echo "waiting for device" -ADB_OUTPUT=`adb root && adb wait-for-device remount` +ADB_OUTPUT=`adb root && echo ". " && adb wait-for-device remount` echo $ADB_OUTPUT if echo $ADB_OUTPUT | grep -qi "verity"; then echo @@ -62,32 +64,40 @@ 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 -adb_shell_run policy_engine_unittest -adb_shell_run policy_engine_constraints_unittest -adb_shell_run libwvdrmmediacrypto_test -adb_shell_run libwvdrmmediacrypto_hidl_test -adb_shell_run libwvdrmdrmplugin_test -adb_shell_run libwvdrmdrmplugin_hidl_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 file_store_unittest -adb_shell_run file_utils_unittest -adb_shell_run license_unittest -adb_shell_run license_keys_unittest -adb_shell_run initialization_data_unittest adb_shell_run device_files_unittest -adb_shell_run usage_table_header_unittest -adb_shell_run service_certificate_unittest -adb_shell_run timer_unittest -adb_shell_run buffer_reader_test adb_shell_run distribution_test adb_shell_run event_metric_test +adb_shell_run file_store_unittest +adb_shell_run file_utils_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 # Run the non-Treble test on non-Treble devices if adb shell ls /vendor/lib/mediadrm/libwvdrmengine.so &> /dev/null || diff --git a/libwvdrmengine/test/castv2/Android.mk b/libwvdrmengine/test/castv2/Android.mk index 8b255b06..1b2b54b3 100644 --- a/libwvdrmengine/test/castv2/Android.mk +++ b/libwvdrmengine/test/castv2/Android.mk @@ -3,6 +3,9 @@ include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional +# When built, explicitly put it in the data/app partition. +LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS) + LOCAL_CERTIFICATE := platform LOCAL_SRC_FILES := $(call all-java-files-under, src) diff --git a/libwvdrmengine/test/java/Android.mk b/libwvdrmengine/test/java/Android.mk index f3795525..93bdadcd 100644 --- a/libwvdrmengine/test/java/Android.mk +++ b/libwvdrmengine/test/java/Android.mk @@ -11,6 +11,9 @@ LOCAL_JAVA_LIBRARIES := org.apache.http.legacy LOCAL_DEX_PREOPT := false +# When built, explicitly put it in the data/app partition. +LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS) + # TODO: This test app depends on framework implementation details. # LOCAL_SDK_VERSION := current diff --git a/libwvdrmengine/test/unit/Android.mk b/libwvdrmengine/test/unit/Android.mk index 439c8857..ef0fed0f 100644 --- a/libwvdrmengine/test/unit/Android.mk +++ b/libwvdrmengine/test/unit/Android.mk @@ -34,7 +34,8 @@ LOCAL_MODULE_TAGS := tests LOCAL_MODULE_OWNER := widevine -LOCAL_PROPRIETARY_MODULE := true +# When built, explicitly put it in the DATA/bin directory. +LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/bin ifneq ($(TARGET_ENABLE_MEDIADRM_64), true) LOCAL_MODULE_TARGET_ARCH := arm x86 mips @@ -82,7 +83,8 @@ LOCAL_MODULE_TAGS := tests LOCAL_MODULE_OWNER := widevine -LOCAL_PROPRIETARY_MODULE := true +# When built, explicitly put it in the DATA/bin directory. +LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/bin ifneq ($(TARGET_ENABLE_MEDIADRM_64), true) LOCAL_MODULE_TARGET_ARCH := arm x86 mips diff --git a/tests/Android.mk b/tests/Android.mk index 23c6d78d..34440715 100644 --- a/tests/Android.mk +++ b/tests/Android.mk @@ -7,35 +7,35 @@ include $(CLEAR_VARS) # Targets to be included in google_tests.zip # Referenced by vendor/google/build/tasks/google_tests.mk WIDEVINE_TEST_MAKE_TARGETS := \ + base64_test \ + buffer_reader_test \ cdm_engine_test \ cdm_extended_duration_test \ cdm_session_unittest \ device_files_unittest \ + distribution_test \ + event_metric_test \ file_store_unittest \ + file_utils_unittest \ + http_socket_test \ initialization_data_unittest \ + libwvdrmdrmplugin_hidl_test \ libwvdrmdrmplugin_test \ + libwvdrmengine_hidl_test \ libwvdrmengine_test \ + libwvdrmmediacrypto_hidl_test \ libwvdrmmediacrypto_test \ + license_keys_unittest \ license_unittest \ - max_res_engine_unittest \ - MediaDrmAPITest \ oemcrypto_test \ + policy_engine_constraints_unittest \ policy_engine_unittest \ request_license_test \ + service_certificate_unittest \ timer_unittest \ - -LOCAL_XTS_PATH := vendor/xts/xts-tests/tests/media/Android.mk -# Need to make sure LOCAL_XTS_PATH actually exists in the build environment. -# The gnu wildcard function will return a space-separated list of existing -# files that match one of the given file name patterns. If no existing file -# name matches, then that pattern is omitted from the output of the wildcard -# function. For more details, see: -# https://www.gnu.org/software/make/manual/html_node/Wildcard-Function.html -_xts_makefile := $(strip $(wildcard $(LOCAL_XTS_PATH))) -ifdef _xts_makefile - WIDEVINE_TEST_MAKE_TARGETS += XtsMediaTestCases - include $(_xts_makefile) -endif + usage_table_header_unittest \ + CastSignAPITest \ + MediaDrmAPITest \ # Call the makefiles for all our tests used in TradeFederation MODULAR_DRM_PATH := vendor/widevine/libwvdrmengine @@ -45,3 +45,4 @@ include $(MODULAR_DRM_PATH)/mediadrm/test/Android.mk include $(MODULAR_DRM_PATH)/oemcrypto/test/Android.mk include $(MODULAR_DRM_PATH)/test/unit/Android.mk include $(MODULAR_DRM_PATH)/test/java/Android.mk +include $(MODULAR_DRM_PATH)/test/castv2/Android.mk