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