1a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills#!/usr/bin/env bash
2a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills
3a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsif [[ ! ( ($# == 1) || ($# == 2 && ($2 == "HTML" || $2 == "XML" || $2 == "CSV"))) ]]; then
4a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills  echo "$0: usage: coverage.sh OUTPUT_DIR [REPORT_TYPE]"
5a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills  echo "REPORT_TYPE [HTML | XML | CSV] : the type of the report (default is HTML)"
6a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills  exit 1
7a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsfi
8a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills
9a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsif [ -z $ANDROID_BUILD_TOP ]; then
10a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills  echo "You need to source and lunch before you can use this script"
11a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills  exit 1
12a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsfi
13a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills
14a54db13528fa8b586d58b42aff46df40466ea950Mitchell WillsREPORTER_JAR=$ANDROID_BUILD_TOP/prebuilts/sdk/tools/jack-jacoco-reporter.jar
15a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills
16a54db13528fa8b586d58b42aff46df40466ea950Mitchell WillsOUTPUT_DIR=$1
17a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsif [[ $# == 2 ]]; then
18a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills  REPORT_TYPE=$2
19a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willselse
20a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills  REPORT_TYPE="HTML"
21a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsfi
22a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills
23a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsecho "Running tests and generating coverage report"
24a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsecho "Output dir: $OUTPUT_DIR"
25a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsecho "Report type: $REPORT_TYPE"
26a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills
27a54db13528fa8b586d58b42aff46df40466ea950Mitchell WillsREMOTE_COVERAGE_OUTPUT_FILE=/data/data/com.android.server.wifi.test/files/coverage.ec
28a54db13528fa8b586d58b42aff46df40466ea950Mitchell WillsCOVERAGE_OUTPUT_FILE=$OUTPUT_DIR/wifi_coverage.ec
29a54db13528fa8b586d58b42aff46df40466ea950Mitchell WillsCOVERAGE_METADATA_FILE=$ANDROID_BUILD_TOP/out/target/common/obj/APPS/FrameworksWifiTests_intermediates/coverage.em
30a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills
31a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsset -e # fail early
32a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills
33a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsecho "+ EMMA_INSTRUMENT_STATIC=true mmma -j32 $ANDROID_BUILD_TOP/frameworks/opt/net/wifi/tests"
34a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills# NOTE Don't actually run the command above since this shell doesn't inherit functions from the
35a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills#      caller.
36a54db13528fa8b586d58b42aff46df40466ea950Mitchell WillsEMMA_INSTRUMENT_STATIC=true make -j32 -C $ANDROID_BUILD_TOP -f build/core/main.mk MODULES-IN-frameworks-opt-net-wifi-tests
37a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills
38a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsset -x # print commands
39a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills
400855f2c5d14fa420eeb3a8a97c142671c9943329Mitchell Willsadb root
410855f2c5d14fa420eeb3a8a97c142671c9943329Mitchell Willsadb wait-for-device
420855f2c5d14fa420eeb3a8a97c142671c9943329Mitchell Wills
43a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsadb shell rm -f $REMOTE_COVERAGE_OUTPUT_FILE
44a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills
45a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsadb install -r -g "$OUT/data/app/FrameworksWifiTests/FrameworksWifiTests.apk"
46a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills
47a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsadb shell am instrument -e coverage true -w 'com.android.server.wifi.test/android.support.test.runner.AndroidJUnitRunner'
48a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills
49a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsmkdir -p $OUTPUT_DIR
50a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills
51a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsadb pull $REMOTE_COVERAGE_OUTPUT_FILE $COVERAGE_OUTPUT_FILE
52a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills
53a54db13528fa8b586d58b42aff46df40466ea950Mitchell Willsjava -jar $REPORTER_JAR \
54a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills  --report-dir $OUTPUT_DIR \
55a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills  --metadata-file $COVERAGE_METADATA_FILE \
56a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills  --coverage-file $COVERAGE_OUTPUT_FILE \
57a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills  --report-type $REPORT_TYPE \
58a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills  --source-dir $ANDROID_BUILD_TOP/frameworks/opt/net/wifi/tests/wifitests/src \
59a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills  --source-dir $ANDROID_BUILD_TOP/frameworks/opt/net/wifi/service/java \
60a54db13528fa8b586d58b42aff46df40466ea950Mitchell Wills  --source-dir $ANDROID_BUILD_TOP/frameworks/base/wifi/java
61