1*7eba2f3bSAndroid Build Coastguard Worker#!/bin/sh 2*7eba2f3bSAndroid Build Coastguard Worker 3*7eba2f3bSAndroid Build Coastguard Workerknown_tests=( 4*7eba2f3bSAndroid Build Coastguard Worker nfc_test_utils 5*7eba2f3bSAndroid Build Coastguard Worker) 6*7eba2f3bSAndroid Build Coastguard Worker 7*7eba2f3bSAndroid Build Coastguard Workerknown_remote_tests=( 8*7eba2f3bSAndroid Build Coastguard Worker) 9*7eba2f3bSAndroid Build Coastguard Worker 10*7eba2f3bSAndroid Build Coastguard Worker 11*7eba2f3bSAndroid Build Coastguard Workerusage() { 12*7eba2f3bSAndroid Build Coastguard Worker binary="$(basename "$0")" 13*7eba2f3bSAndroid Build Coastguard Worker echo "Usage: ${binary} --help" 14*7eba2f3bSAndroid Build Coastguard Worker echo " ${binary} [-i <iterations>] [-s <specific device>] [--all] [<test name>[.<filter>] ...] [--<arg> ...]" 15*7eba2f3bSAndroid Build Coastguard Worker echo 16*7eba2f3bSAndroid Build Coastguard Worker echo "Unknown long arguments are passed to the test." 17*7eba2f3bSAndroid Build Coastguard Worker echo 18*7eba2f3bSAndroid Build Coastguard Worker echo "Known test names:" 19*7eba2f3bSAndroid Build Coastguard Worker 20*7eba2f3bSAndroid Build Coastguard Worker for name in "${known_tests[@]}" 21*7eba2f3bSAndroid Build Coastguard Worker do 22*7eba2f3bSAndroid Build Coastguard Worker echo " ${name}" 23*7eba2f3bSAndroid Build Coastguard Worker done 24*7eba2f3bSAndroid Build Coastguard Worker 25*7eba2f3bSAndroid Build Coastguard Worker echo 26*7eba2f3bSAndroid Build Coastguard Worker echo "Known tests that need a remote device:" 27*7eba2f3bSAndroid Build Coastguard Worker for name in "${known_remote_tests[@]}" 28*7eba2f3bSAndroid Build Coastguard Worker do 29*7eba2f3bSAndroid Build Coastguard Worker echo " ${name}" 30*7eba2f3bSAndroid Build Coastguard Worker done 31*7eba2f3bSAndroid Build Coastguard Worker} 32*7eba2f3bSAndroid Build Coastguard Worker 33*7eba2f3bSAndroid Build Coastguard Workeriterations=1 34*7eba2f3bSAndroid Build Coastguard Workerdevice= 35*7eba2f3bSAndroid Build Coastguard Workertests=() 36*7eba2f3bSAndroid Build Coastguard Workertest_args=() 37*7eba2f3bSAndroid Build Coastguard Workerwhile [ $# -gt 0 ] 38*7eba2f3bSAndroid Build Coastguard Workerdo 39*7eba2f3bSAndroid Build Coastguard Worker case "$1" in 40*7eba2f3bSAndroid Build Coastguard Worker -h|--help) 41*7eba2f3bSAndroid Build Coastguard Worker usage 42*7eba2f3bSAndroid Build Coastguard Worker exit 0 43*7eba2f3bSAndroid Build Coastguard Worker ;; 44*7eba2f3bSAndroid Build Coastguard Worker -i) 45*7eba2f3bSAndroid Build Coastguard Worker shift 46*7eba2f3bSAndroid Build Coastguard Worker if [ $# -eq 0 ]; then 47*7eba2f3bSAndroid Build Coastguard Worker echo "error: number of iterations expected" 1>&2 48*7eba2f3bSAndroid Build Coastguard Worker usage 49*7eba2f3bSAndroid Build Coastguard Worker exit 2 50*7eba2f3bSAndroid Build Coastguard Worker fi 51*7eba2f3bSAndroid Build Coastguard Worker iterations=$(( $1 )) 52*7eba2f3bSAndroid Build Coastguard Worker shift 53*7eba2f3bSAndroid Build Coastguard Worker ;; 54*7eba2f3bSAndroid Build Coastguard Worker -s) 55*7eba2f3bSAndroid Build Coastguard Worker shift 56*7eba2f3bSAndroid Build Coastguard Worker if [ $# -eq 0 ]; then 57*7eba2f3bSAndroid Build Coastguard Worker echo "error: no device specified" 1>&2 58*7eba2f3bSAndroid Build Coastguard Worker usage 59*7eba2f3bSAndroid Build Coastguard Worker exit 2 60*7eba2f3bSAndroid Build Coastguard Worker fi 61*7eba2f3bSAndroid Build Coastguard Worker device="$1" 62*7eba2f3bSAndroid Build Coastguard Worker shift 63*7eba2f3bSAndroid Build Coastguard Worker ;; 64*7eba2f3bSAndroid Build Coastguard Worker --all) 65*7eba2f3bSAndroid Build Coastguard Worker tests+=( "${known_tests[@]}" ) 66*7eba2f3bSAndroid Build Coastguard Worker shift 67*7eba2f3bSAndroid Build Coastguard Worker ;; 68*7eba2f3bSAndroid Build Coastguard Worker --*) 69*7eba2f3bSAndroid Build Coastguard Worker test_args+=( "$1" ) 70*7eba2f3bSAndroid Build Coastguard Worker shift 71*7eba2f3bSAndroid Build Coastguard Worker ;; 72*7eba2f3bSAndroid Build Coastguard Worker *) 73*7eba2f3bSAndroid Build Coastguard Worker tests+=( "$1" ) 74*7eba2f3bSAndroid Build Coastguard Worker shift 75*7eba2f3bSAndroid Build Coastguard Worker ;; 76*7eba2f3bSAndroid Build Coastguard Worker esac 77*7eba2f3bSAndroid Build Coastguard Workerdone 78*7eba2f3bSAndroid Build Coastguard Worker 79*7eba2f3bSAndroid Build Coastguard Workerif [ "${#tests[@]}" -eq 0 ]; then 80*7eba2f3bSAndroid Build Coastguard Worker tests+=( "${known_tests[@]}" ) 81*7eba2f3bSAndroid Build Coastguard Workerfi 82*7eba2f3bSAndroid Build Coastguard Worker 83*7eba2f3bSAndroid Build Coastguard Workeradb=( "adb" ) 84*7eba2f3bSAndroid Build Coastguard Workerif [ -n "${device}" ]; then 85*7eba2f3bSAndroid Build Coastguard Worker adb+=( "-s" "${device}" ) 86*7eba2f3bSAndroid Build Coastguard Workerfi 87*7eba2f3bSAndroid Build Coastguard Worker 88*7eba2f3bSAndroid Build Coastguard Workerfailed_tests=() 89*7eba2f3bSAndroid Build Coastguard Workerfor spec in "${tests[@]}" 90*7eba2f3bSAndroid Build Coastguard Workerdo 91*7eba2f3bSAndroid Build Coastguard Worker name="${spec%%.*}" 92*7eba2f3bSAndroid Build Coastguard Worker binary="/data/nativetest/${name}/${name}" 93*7eba2f3bSAndroid Build Coastguard Worker 94*7eba2f3bSAndroid Build Coastguard Worker push_command=( "${adb[@]}" push {"${ANDROID_PRODUCT_OUT}",}"${binary}" ) 95*7eba2f3bSAndroid Build Coastguard Worker test_command=( "${adb[@]}" shell "${binary}" ) 96*7eba2f3bSAndroid Build Coastguard Worker if [ "${name}" != "${spec}" ]; then 97*7eba2f3bSAndroid Build Coastguard Worker filter="${spec#*.}" 98*7eba2f3bSAndroid Build Coastguard Worker test_command+=( "--gtest_filter=${filter}" ) 99*7eba2f3bSAndroid Build Coastguard Worker fi 100*7eba2f3bSAndroid Build Coastguard Worker test_command+=( "${test_args[@]}" ) 101*7eba2f3bSAndroid Build Coastguard Worker 102*7eba2f3bSAndroid Build Coastguard Worker echo "--- ${name} ---" 103*7eba2f3bSAndroid Build Coastguard Worker echo "pushing..." 104*7eba2f3bSAndroid Build Coastguard Worker "${push_command[@]}" 105*7eba2f3bSAndroid Build Coastguard Worker echo "running..." 106*7eba2f3bSAndroid Build Coastguard Worker failed_count=0 107*7eba2f3bSAndroid Build Coastguard Worker for i in $(seq 1 ${iterations}) 108*7eba2f3bSAndroid Build Coastguard Worker do 109*7eba2f3bSAndroid Build Coastguard Worker "${test_command[@]}" || failed_count=$(( $failed_count + 1 )) 110*7eba2f3bSAndroid Build Coastguard Worker done 111*7eba2f3bSAndroid Build Coastguard Worker 112*7eba2f3bSAndroid Build Coastguard Worker if [ $failed_count != 0 ]; then 113*7eba2f3bSAndroid Build Coastguard Worker failed_tests+=( "${name} ${failed_count}/${iterations}" ) 114*7eba2f3bSAndroid Build Coastguard Worker fi 115*7eba2f3bSAndroid Build Coastguard Workerdone 116*7eba2f3bSAndroid Build Coastguard Worker 117*7eba2f3bSAndroid Build Coastguard Workerif [ "${#failed_tests[@]}" -ne 0 ]; then 118*7eba2f3bSAndroid Build Coastguard Worker for failed_test in "${failed_tests[@]}" 119*7eba2f3bSAndroid Build Coastguard Worker do 120*7eba2f3bSAndroid Build Coastguard Worker echo "!!! FAILED TEST: ${failed_test} !!!" 121*7eba2f3bSAndroid Build Coastguard Worker done 122*7eba2f3bSAndroid Build Coastguard Worker exit 1 123*7eba2f3bSAndroid Build Coastguard Workerfi 124*7eba2f3bSAndroid Build Coastguard Worker 125*7eba2f3bSAndroid Build Coastguard Workerexit 0 126