| # 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 |
| } |
| |