#!/bin/bash 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. NUM_CORES=1 SERIAL_NUM="" while getopts "j:s:" opt; do case $opt in j) NUM_CORES=$OPTARG ;; s) SERIAL_NUM="-s $OPTARG" ;; esac done # Define the relevant aliases source $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 \ cdm_usage_table_unittest \ certificate_provisioning_unittest \ counter_metric_unittest \ core_integration_test \ crypto_session_unittest \ device_files_unittest \ distribution_unittest \ duration_use_case_test \ event_metric_unittest \ file_store_unittest \ file_utils_unittest \ generic_crypto_unittest \ hal_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 \ system_id_extractor_unittest \ timer_unittest \ value_metric_unittest \ wv_cdm_metrics_test \ wv_plugin_test" cd $ANDROID_BUILD_TOP pwd m -j $NUM_CORES $WV_UNITTESTS # 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