1lite_test_telecom() {
2  usage="
3  Usage: lite_test_telecom [-c CLASSNAME] [-d] [-a | -i] [-e], where
4
5  -c CLASSNAME          Run tests only for the specified class/method. CLASSNAME
6                          should be of the form SomeClassTest or SomeClassTest#testMethod.
7  -d                    Waits for a debugger to attach before starting to run tests.
8  -i                    Rebuild and reinstall the test apk before running tests (mmm).
9  -a                    Rebuild all dependencies and reinstall the test apk before/
10                          running tests (mmma).
11  -e                    Run code coverage. Coverage will be output into the coverage/
12                          directory in the repo root.
13  -h                    This help message.
14  "
15
16  OPTIND=1
17  class=
18  install=false
19  installwdep=false
20  debug=false
21  coverage=false
22
23  while getopts "c:hadie" opt; do
24    case "$opt" in
25      h)
26        echo "$usage"
27        return 0;;
28      \?)
29        echo "$usage"
30        return 0;;
31      c)
32        class=$OPTARG;;
33      d)
34        debug=true;;
35      i)
36        install=true;;
37      a)
38        install=true
39        installwdep=true;;
40      e)
41        coverage=true;;
42    esac
43  done
44
45  T=$(gettop)
46
47  if [ $install = true ] ; then
48    olddir=$(pwd)
49    cd $T
50    if [ $coverage = true ] ; then
51      emma_opt="EMMA_INSTRUMENT_STATIC=true"
52    else
53      emma_opt="EMMA_INSTRUMENT_STATIC=false"
54    fi
55    # Build and exit script early if build fails
56    if [ $installwdep = true ] ; then
57      mmma -j40 "packages/services/Telecomm/tests" ${emma_opt}
58    else
59      mmm "packages/services/Telecomm/tests" ${emma_opt}
60    fi
61    if [ $? -ne 0 ] ; then
62      echo "Make failed! try using -a instead of -i if building with coverage"
63      return
64    fi
65
66    adb install -r -t "out/target/product/$TARGET_PRODUCT/data/app/TelecomUnitTests/TelecomUnitTests.apk"
67    if [ $? -ne 0 ] ; then
68      cd "$olddir"
69      return $?
70    fi
71    cd "$olddir"
72  fi
73
74  e_options=""
75  if [ -n "$class" ] ; then
76    e_options="${e_options} -e class com.android.server.telecom.tests.${class}"
77  fi
78  if [ $debug = true ] ; then
79    e_options="${e_options} -e debug 'true'"
80  fi
81  if [ $coverage = true ] ; then
82    e_options="${e_options} -e coverage 'true'"
83  fi
84  adb shell am instrument ${e_options} -w com.android.server.telecom.tests/android.test.InstrumentationTestRunner
85
86  if [ $coverage = true ] ; then
87    adb root
88    adb wait-for-device
89    adb pull /data/user/0/com.android.server.telecom.tests/files/coverage.ec /tmp/
90    if [ ! -d "$T/coverage" ] ; then
91      mkdir -p "$T/coverage"
92    fi
93    java -jar "$T/prebuilts/sdk/tools/jack-jacoco-reporter.jar" \
94      --report-dir "$T/coverage/" \
95      --metadata-file "$T/out/target/common/obj/APPS/TelecomUnitTests_intermediates/coverage.em" \
96      --coverage-file "/tmp/coverage.ec" \
97      --source-dir "$T/packages/services/Telecomm/src/"
98  fi
99}
100