1#!/bin/sh 2 3known_tests=( 4 audio_bluetooth_hw_test 5 bluetooth-test-audio-hal-interface 6 bluetooth_test_common 7 bluetoothtbd_test 8 net_test_audio_a2dp_hw 9 net_test_avrcp 10 net_test_bluetooth 11 net_test_btcore 12 net_test_bta 13 net_test_btif 14 net_test_btif_profile_queue 15 net_test_btif_config_cache 16 net_test_device 17 net_test_hci 18 net_test_stack 19 net_test_stack_multi_adv 20 net_test_stack_ad_parser 21 net_test_stack_smp 22 net_test_types 23 net_test_btu_message_loop 24 net_test_osi 25 net_test_performance 26 net_test_stack_rfcomm 27 net_test_gatt_conn_multiplexing 28) 29 30known_remote_tests=( 31 net_test_rfcomm_suite 32) 33 34 35usage() { 36 binary="$(basename "$0")" 37 echo "Usage: ${binary} --help" 38 echo " ${binary} [-i <iterations>] [-s <specific device>] [--all] [<test name>[.<filter>] ...] [--<arg> ...]" 39 echo 40 echo "Unknown long arguments are passed to the test." 41 echo 42 echo "Known test names:" 43 44 for name in "${known_tests[@]}" 45 do 46 echo " ${name}" 47 done 48 49 echo 50 echo "Known tests that need a remote device:" 51 for name in "${known_remote_tests[@]}" 52 do 53 echo " ${name}" 54 done 55} 56 57iterations=1 58device= 59tests=() 60test_args=() 61while [ $# -gt 0 ] 62do 63 case "$1" in 64 -h|--help) 65 usage 66 exit 0 67 ;; 68 -i) 69 shift 70 if [ $# -eq 0 ]; then 71 echo "error: number of iterations expected" 1>&2 72 usage 73 exit 2 74 fi 75 iterations=$(( $1 )) 76 shift 77 ;; 78 -s) 79 shift 80 if [ $# -eq 0 ]; then 81 echo "error: no device specified" 1>&2 82 usage 83 exit 2 84 fi 85 device="$1" 86 shift 87 ;; 88 --all) 89 tests+=( "${known_tests[@]}" ) 90 shift 91 ;; 92 --*) 93 test_args+=( "$1" ) 94 shift 95 ;; 96 *) 97 tests+=( "$1" ) 98 shift 99 ;; 100 esac 101done 102 103if [ "${#tests[@]}" -eq 0 ]; then 104 tests+=( "${known_tests[@]}" ) 105fi 106 107adb=( "adb" ) 108if [ -n "${device}" ]; then 109 adb+=( "-s" "${device}" ) 110fi 111 112source ${ANDROID_BUILD_TOP}/build/envsetup.sh 113target_arch=$(gettargetarch) 114 115failed_tests=() 116for spec in "${tests[@]}" 117do 118 name="${spec%%.*}" 119 if [[ $target_arch == *"64"* ]]; then 120 binary="/data/nativetest64/${name}/${name}" 121 else 122 binary="/data/nativetest/${name}/${name}" 123 fi 124 125 push_command=( "${adb[@]}" push {"${ANDROID_PRODUCT_OUT}",}"${binary}" ) 126 test_command=( "${adb[@]}" shell "${binary}" ) 127 if [ "${name}" != "${spec}" ]; then 128 filter="${spec#*.}" 129 test_command+=( "--gtest_filter=${filter}" ) 130 fi 131 test_command+=( "${test_args[@]}" ) 132 133 echo "--- ${name} ---" 134 echo "pushing..." 135 "${push_command[@]}" 136 echo "running..." 137 failed_count=0 138 for i in $(seq 1 ${iterations}) 139 do 140 "${test_command[@]}" || failed_count=$(( $failed_count + 1 )) 141 done 142 143 if [ $failed_count != 0 ]; then 144 failed_tests+=( "${name} ${failed_count}/${iterations}" ) 145 fi 146done 147 148if [ "${#failed_tests[@]}" -ne 0 ]; then 149 for failed_test in "${failed_tests[@]}" 150 do 151 echo "!!! FAILED TEST: ${failed_test} !!!" 152 done 153 exit 1 154fi 155 156exit 0 157