You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.0 KiB
94 lines
3.0 KiB
4 months ago
|
# This defines a shell function called run_emma_calp() that rebuilds
|
||
|
# the Calendar provider with EMMA coverage, executes the Calendar CTS
|
||
|
# tests, and generates results into ~/emmaReport/. The previous emmaReport
|
||
|
# directory, if any, will be removed.
|
||
|
#
|
||
|
# This expects that ". build/envsetup.sh" and an appropriate "lunch"
|
||
|
# command have already been issued.
|
||
|
#
|
||
|
# Also, since we're doing this "the hard way", it's necessary to have
|
||
|
# /system/framework/emma.jar in BOOTCLASSPATH. Basic steps:
|
||
|
# - edit system/core/rootdir/init.rc
|
||
|
# - insert "/system/framework/emma.jar" right before framework.jar
|
||
|
# - mmm -j8 external/emma
|
||
|
# - make -j8
|
||
|
# - adb reboot-bootloader
|
||
|
# - fastboot flashall
|
||
|
#
|
||
|
# This also defines a no_emma_calp() function that rebuilds the provider
|
||
|
# without emma.
|
||
|
#
|
||
|
# NOTE: interrupting execution may leave you in a different directory
|
||
|
|
||
|
function run_emma_calp()
|
||
|
{
|
||
|
# rebuild provider with emma coverage
|
||
|
_build_install_calp true
|
||
|
if [ $? -ne 0 ]; then
|
||
|
echo Build failed.
|
||
|
return 1
|
||
|
fi
|
||
|
|
||
|
# run the CTS tests; note we can't get success/failure result in $?
|
||
|
adb shell am instrument -w -e coverage true \
|
||
|
-e class android.provider.cts.CalendarTest \
|
||
|
-w 'com.android.cts.provider/android.provider.cts.CalendarTest\$CalendarEmmaTestRunner'
|
||
|
|
||
|
# this path is hard-coded into the CalendarEmmaTestRunner
|
||
|
output=/sdcard/calendar-provider.ec
|
||
|
|
||
|
# extract and generate the report
|
||
|
rm -rf ~/emmaReport
|
||
|
mkdir ~/emmaReport
|
||
|
pushd ~/emmaReport
|
||
|
adb pull $output coverage.ec
|
||
|
adb shell rm $output
|
||
|
java -cp ${ANDROID_BUILD_TOP}/external/emma/lib/emma.jar \
|
||
|
emma report -r html -in coverage.ec \
|
||
|
-sp ${ANDROID_BUILD_TOP}/packages/providers/CalendarProvider/src \
|
||
|
-in ${ANDROID_BUILD_TOP}/out/target/common/obj/APPS/CalendarProvider_intermediates/coverage.em
|
||
|
popd
|
||
|
|
||
|
echo "Report is in $HOME/emmaReport"
|
||
|
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
function no_emma_calp()
|
||
|
{
|
||
|
# rebuild provider without emma coverage
|
||
|
_build_install_calp false
|
||
|
}
|
||
|
|
||
|
function _build_install_calp()
|
||
|
{
|
||
|
emma=$1
|
||
|
|
||
|
# switch to root on userdebug builds - this may take a second to finish
|
||
|
adb root
|
||
|
|
||
|
pushd $ANDROID_BUILD_TOP
|
||
|
|
||
|
# force rebuild
|
||
|
rm -rf out/target/common/obj/APPS/CalendarProvider_intermediates
|
||
|
##rm -rf out/target/common/obj/APPS/CalendarProviderTests_intermediates
|
||
|
rm -rf out/target/common/obj/APPS/CtsProviderTestCases_intermediates
|
||
|
EMMA_INSTRUMENT=$emma mmm -j4 packages/providers/CalendarProvider \
|
||
|
&& EMMA_INSTRUMENT=$emma mmm -j4 cts/tests/tests/provider
|
||
|
if [ $? -ne 0 ]; then
|
||
|
popd
|
||
|
return 1
|
||
|
fi
|
||
|
|
||
|
# copy the instrumented APKs to the device
|
||
|
adb remount
|
||
|
adb push ${ANDROID_PRODUCT_OUT}/system/app/CalendarProvider.apk /system/app/
|
||
|
##adb push ${ANDROID_PRODUCT_OUT}/data/app/CalendarProviderTests.apk /data/app/
|
||
|
adb push ${ANDROID_PRODUCT_OUT}/data/app/CtsProviderTestCases.apk /data/app/
|
||
|
popd
|
||
|
|
||
|
# give the device a couple of seconds to install the packages
|
||
|
sleep 2
|
||
|
}
|
||
|
|