blob: 8041afcf91aced40f2c5321d7ae959a94e3f3d13 [file] [log] [blame]
Scott James Remnant0f61cf72015-11-19 14:58:42 -08001#!/bin/sh
Andre Eisenbach7ab59092015-11-10 14:17:20 -08002
Zach Johnsonf73a2072014-12-24 21:07:38 -08003known_tests=(
Cheney Niaef115f2018-11-07 08:41:55 +08004 audio_bluetooth_hw_test
Cheney Niad05f3e2018-11-08 16:41:02 +08005 bluetooth-test-audio-hal-interface
Jack Hec27d2572018-07-25 12:02:22 -07006 bluetooth_test_common
Scott James Remnant092cf9e2015-11-11 12:41:08 -08007 bluetoothtbd_test
Pavlin Radoslavov304ceeb2017-04-05 16:18:26 -07008 net_test_audio_a2dp_hw
Ajay Panicker2c822c92018-02-21 21:04:24 -08009 net_test_avrcp
Scott James Remnant092cf9e2015-11-11 12:41:08 -080010 net_test_bluetooth
Zach Johnsonf73a2072014-12-24 21:07:38 -080011 net_test_btcore
Jakub Pawlowskie5c78952016-08-10 09:07:44 -070012 net_test_bta
Ajay Panickerfa717c02015-12-07 14:18:16 -080013 net_test_btif
Jack Hed3668072017-09-14 17:13:19 -070014 net_test_btif_profile_queue
Zach Johnson22349292014-11-04 21:43:33 -080015 net_test_device
Zach Johnsonf73a2072014-12-24 21:07:38 -080016 net_test_hci
Pavlin Radoslavov7e586262016-08-28 16:59:51 -070017 net_test_stack
Jakub Pawlowskie47b7692016-09-28 07:36:54 -070018 net_test_stack_multi_adv
Jakub Pawlowski103b2c42017-04-28 14:59:46 -070019 net_test_stack_ad_parser
Jack He2ec87462016-12-15 02:48:33 -080020 net_test_stack_smp
Jakub Pawlowskib707f442017-07-03 15:39:36 -070021 net_test_types
Ajay Panicker2b7e9052017-03-01 10:00:30 -080022 net_test_btu_message_loop
Zach Johnsonf73a2072014-12-24 21:07:38 -080023 net_test_osi
Jack He297cca42017-10-19 14:25:26 -070024 net_test_performance
Jack He9b423ec2018-04-20 22:04:21 -070025 net_test_stack_rfcomm
Jakub Pawlowskie85bc522018-11-09 14:41:01 +010026 net_test_gatt_conn_multiplexing
Zach Johnsonf73a2072014-12-24 21:07:38 -080027)
28
Ajay Panickerfa717c02015-12-07 14:18:16 -080029known_remote_tests=(
Jack He9b423ec2018-04-20 22:04:21 -070030 net_test_rfcomm_suite
Ajay Panickerfa717c02015-12-07 14:18:16 -080031)
32
33
Zach Johnsonf73a2072014-12-24 21:07:38 -080034usage() {
Scott James Remnant0f61cf72015-11-19 14:58:42 -080035 binary="$(basename "$0")"
36 echo "Usage: ${binary} --help"
37 echo " ${binary} [-i <iterations>] [-s <specific device>] [--all] [<test name>[.<filter>] ...] [--<arg> ...]"
Scott James Remnant6babef02015-11-18 11:18:02 -080038 echo
39 echo "Unknown long arguments are passed to the test."
40 echo
Zach Johnsonf73a2072014-12-24 21:07:38 -080041 echo "Known test names:"
42
Scott James Remnant0f61cf72015-11-19 14:58:42 -080043 for name in "${known_tests[@]}"
Zach Johnsonf73a2072014-12-24 21:07:38 -080044 do
Scott James Remnant0f61cf72015-11-19 14:58:42 -080045 echo " ${name}"
Zach Johnsonf73a2072014-12-24 21:07:38 -080046 done
Ajay Panickerfa717c02015-12-07 14:18:16 -080047
48 echo
49 echo "Known tests that need a remote device:"
50 for name in "${known_remote_tests[@]}"
51 do
52 echo " ${name}"
53 done
Zach Johnsonf73a2072014-12-24 21:07:38 -080054}
55
Scott James Remnanta05d9362015-11-19 14:04:15 -080056iterations=1
Scott James Remnant707fc0c2015-11-19 14:03:27 -080057device=
Scott James Remnant03e8be82015-11-17 15:09:43 -080058tests=()
Scott James Remnant6babef02015-11-18 11:18:02 -080059test_args=()
Scott James Remnant0f61cf72015-11-19 14:58:42 -080060while [ $# -gt 0 ]
61do
Scott James Remnant03e8be82015-11-17 15:09:43 -080062 case "$1" in
63 -h|--help)
64 usage
65 exit 0
66 ;;
Scott James Remnanta05d9362015-11-19 14:04:15 -080067 -i)
68 shift
69 if [ $# -eq 0 ]; then
70 echo "error: number of iterations expected" 1>&2
71 usage
Scott James Remnant0f61cf72015-11-19 14:58:42 -080072 exit 2
Scott James Remnanta05d9362015-11-19 14:04:15 -080073 fi
74 iterations=$(( $1 ))
75 shift
76 ;;
Scott James Remnant03e8be82015-11-17 15:09:43 -080077 -s)
78 shift
79 if [ $# -eq 0 ]; then
80 echo "error: no device specified" 1>&2
81 usage
Scott James Remnant0f61cf72015-11-19 14:58:42 -080082 exit 2
Scott James Remnant03e8be82015-11-17 15:09:43 -080083 fi
84 device="$1"
85 shift
86 ;;
87 --all)
Scott James Remnant0f61cf72015-11-19 14:58:42 -080088 tests+=( "${known_tests[@]}" )
Scott James Remnant03e8be82015-11-17 15:09:43 -080089 shift
90 ;;
Scott James Remnant6babef02015-11-18 11:18:02 -080091 --*)
92 test_args+=( "$1" )
93 shift
94 ;;
Scott James Remnant03e8be82015-11-17 15:09:43 -080095 *)
Scott James Remnant0f61cf72015-11-19 14:58:42 -080096 tests+=( "$1" )
Scott James Remnant03e8be82015-11-17 15:09:43 -080097 shift
98 ;;
99 esac
100done
Zach Johnsonf73a2072014-12-24 21:07:38 -0800101
Scott James Remnant0f61cf72015-11-19 14:58:42 -0800102if [ "${#tests[@]}" -eq 0 ]; then
103 tests+=( "${known_tests[@]}" )
Scott James Remnant03e8be82015-11-17 15:09:43 -0800104fi
Scott James Remnant6babef02015-11-18 11:18:02 -0800105
Scott James Remnant0f61cf72015-11-19 14:58:42 -0800106adb=( "adb" )
107if [ -n "${device}" ]; then
108 adb+=( "-s" "${device}" )
109fi
Scott James Remnant707fc0c2015-11-19 14:03:27 -0800110
Pavlin Radoslavove07f3d02018-01-09 05:58:53 -0800111source ${ANDROID_BUILD_TOP}/build/envsetup.sh
112target_arch=$(gettargetarch)
113
Scott James Remnant0f61cf72015-11-19 14:58:42 -0800114failed_tests=()
115for spec in "${tests[@]}"
Scott James Remnant707fc0c2015-11-19 14:03:27 -0800116do
117 name="${spec%%.*}"
Pavlin Radoslavove07f3d02018-01-09 05:58:53 -0800118 if [[ $target_arch == *"64"* ]]; then
119 binary="/data/nativetest64/${name}/${name}"
120 else
121 binary="/data/nativetest/${name}/${name}"
122 fi
Scott James Remnant0f61cf72015-11-19 14:58:42 -0800123
124 push_command=( "${adb[@]}" push {"${ANDROID_PRODUCT_OUT}",}"${binary}" )
Jakub Pawlowski50e1ada2017-10-20 00:34:13 -0700125 test_command=( "${adb[@]}" shell "${binary}" )
Scott James Remnant707fc0c2015-11-19 14:03:27 -0800126 if [ "${name}" != "${spec}" ]; then
127 filter="${spec#*.}"
Scott James Remnant0f61cf72015-11-19 14:58:42 -0800128 test_command+=( "--gtest_filter=${filter}" )
Scott James Remnant707fc0c2015-11-19 14:03:27 -0800129 fi
Scott James Remnant0f61cf72015-11-19 14:58:42 -0800130 test_command+=( "${test_args[@]}" )
131
132 echo "--- ${name} ---"
Scott James Remnant707fc0c2015-11-19 14:03:27 -0800133 echo "pushing..."
Scott James Remnant0f61cf72015-11-19 14:58:42 -0800134 "${push_command[@]}"
Scott James Remnant707fc0c2015-11-19 14:03:27 -0800135 echo "running..."
Scott James Remnanta05d9362015-11-19 14:04:15 -0800136 failed_count=0
137 for i in $(seq 1 ${iterations})
138 do
Scott James Remnant0f61cf72015-11-19 14:58:42 -0800139 "${test_command[@]}" || failed_count=$(( $failed_count + 1 ))
Scott James Remnanta05d9362015-11-19 14:04:15 -0800140 done
141
142 if [ $failed_count != 0 ]; then
Scott James Remnant0f61cf72015-11-19 14:58:42 -0800143 failed_tests+=( "${name} ${failed_count}/${iterations}" )
Scott James Remnant707fc0c2015-11-19 14:03:27 -0800144 fi
145done
146
Scott James Remnant0f61cf72015-11-19 14:58:42 -0800147if [ "${#failed_tests[@]}" -ne 0 ]; then
148 for failed_test in "${failed_tests[@]}"
149 do
150 echo "!!! FAILED TEST: ${failed_test} !!!"
151 done
Scott James Remnant707fc0c2015-11-19 14:03:27 -0800152 exit 1
153fi
154
155exit 0