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