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