#!/bin/bash export LEGACY_USE_JAVA7=true # We do not use a tmpfs out/target/product in this test NO_TMPFS_TARGET_PRODUCT=y . $PWD/setup-android.sh [[ $JENKINS_MODE ]] && sudo chmod 1777 /tmp TEST_ART_COMMAND="test-art-target" TEST_ART_OUTPUT_DIR=$WORKSPACE/$TEST_ART_COMMAND/ export GTEST_OUTPUT=xml:$TEST_ART_OUTPUT_DIR MAKE_TARGETS=$TEST_ART_COMMAND mkdir -p $WORKSPACE/$TEST_ART_COMMAND/ if [[ ! -e ./art/tools/buildbot-build.sh ]]; then wget https://android-git.linaro.org/gitweb/platform/art.git/blob_plain/refs/heads/master:/tools/buildbot-build.sh -O ./art/tools/buildbot-build.sh sed -i "s/build-art-target-tests/build-art-target/g" ./art/tools/buildbot-build.sh chmod a+x ./art/tools/buildbot-build.sh fi MAKE_START=$(date +%s.%N) source build/envsetup.sh lunch armv8-eng export ANDROID_COMPILE_WITH_JACK=true export CUSTOM_TARGET_LINKER=/data/local/tmp/system/bin/linker64 export ANDROID_PRODUCT_OUT=$PWD/out/target/product/armv8/ export TARGET_PRODUCT=armv8 ./art/tools/buildbot-build.sh -j12 --target if [[ $? -ne 0 ]]; then echo "Error: *** buildbot-build setup failed. Exiting the build" exit 1 fi # Build servers do not necessarily have up to date udev rules, start adb-server # as root to avoid the issue [[ $JENKINS_MODE ]] && sudo out/host/linux-x86/bin/adb start-server [[ $JENKINS_MODE ]] && adb root if [[ $? -ne 0 ]]; then echo "Error: *** Device is not accessible. Please check the setup" exit 1 fi [[ $JENKINS_MODE ]] && echo "Building on: " `hostname` >> $WORKSPACE/device_log.txt [[ $JENKINS_MODE ]] && echo "***********************************************" >> $WORKSPACE/device_log.txt [[ $JENKINS_MODE ]] && echo "****** Battery level before 64bit tests ********" >> $WORKSPACE/device_log.txt [[ $JENKINS_MODE ]] && adb shell dumpsys battery >> $WORKSPACE/device_log.txt [[ $JENKINS_MODE ]] && sudo dmesg -C adb shell rm -rf /data/local/tmp /data/art-test /data/nativetest ./art/tools/setup-buildbot-device.sh export ART_BUILD_HOST_DEBUG=false export ART_TEST_ANDROID_ROOT="/data/local/tmp/system" export ART_TEST_FULL=false export ART_TEST_INTERPRETER=true export ART_TEST_KEEP_GOING=true export ART_TEST_OPTIMIZING=true export ART_TEST_RUN_TEST_2ND_ARCH=false export ART_TEST_RUN_TEST_DEBUG=false export ART_TEST_RUN_TEST_NDEBUG=true export ART_USE_OPTIMIZING_COMPILER=true failed=0 actually_failed=0 make -j12 test-art-target-sync export ART_TEST_NO_SYNC=true make -j2 test-art-target-gtest64 > $WORKSPACE/build-logs-gtest-64.txt 2>&1 if [[ $? -ne 0 ]]; then echo "Error: *** Error test-art-target-gtest64 failed" cat $WORKSPACE/build-logs-gtest-64.txt failed=1 fi make -j2 test-art-target-run-test-default >> $WORKSPACE/build-logs-run-test-default-64.txt 2>&1 if [[ $? -ne 0 ]]; then echo "Error: *** Error test-art-target-run-test-default failed" cat $WORKSPACE/build-logs-run-test-default-64.txt failed=1 fi make -j2 test-art-target-run-test-interpreter >> $WORKSPACE/build-logs-run-test-interpreter-64.txt 2>&1 if [[ $? -ne 0 ]]; then echo "Error: *** Error test-art-target-run-test-interpreter failed" cat $WORKSPACE/build-logs-run-test-interpreter-64.txt failed=1 fi export ART_TEST_RUN_TEST_DEBUGGABLE=true make -j2 test-art-target-run-test-optimizing >> $WORKSPACE/build-logs-run-test-optimizing-64.txt 2>&1 if [[ $? -ne 0 ]]; then echo "Error: *** Error test-art-target-run-test-optimizing failed" cat $WORKSPACE/build-logs-run-test-optimizing-64.txt failed=1 fi cat $WORKSPACE/build-logs-gtest-64.txt > $WORKSPACE/build-logs-64.txt cat $WORKSPACE/build-logs-run-test-default-64.txt >> $WORKSPACE/build-logs-64.txt cat $WORKSPACE/build-logs-run-test-interpreter-64.txt >> $WORKSPACE/build-logs-64.txt cat $WORKSPACE/build-logs-run-test-optimizing-64.txt >> $WORKSPACE/build-logs-64.txt echo "YVALUE=`grep "2mPASSED" $WORKSPACE/build-logs-64.txt | grep "gtest" | wc -l`" > $WORKSPACE/gtest-pass_count-64.txt echo "YVALUE=`grep "1mFAILED" $WORKSPACE/build-logs-64.txt | grep "gtest" | wc -l`" > $WORKSPACE/gtest-fail_count-64.txt echo "YVALUE=`grep "3mSKIPPING" $WORKSPACE/build-logs-64.txt | grep "gtest" | wc -l`" > $WORKSPACE/gtest-skip_count-64.txt echo "YVALUE=`grep "2mPASSED" $WORKSPACE/build-logs-64.txt | grep "run-test" | wc -l`" > $WORKSPACE/run-test-pass_count-64.txt echo "YVALUE=`grep "1mFAILED" $WORKSPACE/build-logs-64.txt | grep "run-test" | wc -l`" > $WORKSPACE/run-test-fail_count-64.txt echo "YVALUE=`grep "3mSKIPPING" $WORKSPACE/build-logs-64.txt | grep "run-test" | wc -l`" > $WORKSPACE/run-test-skip_count-64.txt #grep -rni "1mFAILED" $WORKSPACE/build-logs-64.txt | sed "s/.*://g" | sed "s/ .*//g" > $WORKSPACE/failing-tests-64.txt #grep -rni "3mSKIPPING" $WORKSPACE/build-logs-64.txt | sed "s/.*://g" | sed "s/ .*//g" > $WORKSPACE/skipped-tests-64.txt [[ $JENKINS_MODE ]] && echo "***********************************************" >> $WORKSPACE/device_log.txt [[ $JENKINS_MODE ]] && echo "****** Battery level after 64bit tests ********" >> $WORKSPACE/device_log.txt [[ $JENKINS_MODE ]] && adb shell dumpsys battery >> $WORKSPACE/device_log.txt rm -rf out/target/product/armv8* adb shell rm -rf /data/local/tmp /data/art-test /data/nativetest source build/envsetup.sh lunch flounder32-eng export CUSTOM_TARGET_LINKER=/data/local/tmp/system/bin/linker export ANDROID_PRODUCT_OUT=$PWD/out/target/product/flounder32/ export TARGET_PRODUCT=flounder32 export ANDROID_COMPILE_WITH_JACK=true time ./art/tools/buildbot-build.sh -j12 --target ./art/tools/setup-buildbot-device.sh export ART_TEST_RUN_TEST_DEBUGGABLE=false export ART_BUILD_HOST_DEBUG=false export ART_TEST_ANDROID_ROOT="/data/local/tmp/system" export ART_TEST_FULL=false export ART_TEST_INTERPRETER=true export ART_TEST_KEEP_GOING=true export ART_TEST_OPTIMIZING=true export ART_TEST_RUN_TEST_2ND_ARCH=false export ART_TEST_RUN_TEST_DEBUG=false export ART_TEST_RUN_TEST_NDEBUG=true export ART_TEST_RUN_TEST_DEBUGGABLE=false export ART_USE_OPTIMIZING_COMPILER=true export ART_TEST_NO_SYNC=false make -j12 test-art-target-sync export ART_TEST_NO_SYNC=true make -j2 test-art-target-gtest32 > $WORKSPACE/build-logs-gtest-32.txt 2>&1 if [[ $? -ne 0 ]]; then echo "Error: *** Error test-art-target-gtest64 failed" cat $WORKSPACE/build-logs-gtest-32.txt failed=1 fi make -j2 test-art-target-run-test-default >> $WORKSPACE/build-logs-run-test-default-32.txt 2>&1 if [[ $? -ne 0 ]]; then echo "Error: *** Error test-art-target-run-test-default failed" cat $WORKSPACE/build-logs-run-test-default-32.txt failed=1 fi make -j2 test-art-target-run-test-interpreter >> $WORKSPACE/build-logs-run-test-interpreter-32.txt 2>&1 if [[ $? -ne 0 ]]; then echo "Error: *** Error test-art-target-run-test-interpreter failed" cat $WORKSPACE/build-logs-run-test-interpreter-32.txt failed=1 fi export ART_TEST_RUN_TEST_DEBUGGABLE=true make -j2 test-art-target-run-test-optimizing >> $WORKSPACE/build-logs-run-test-optimizing-32.txt 2>&1 if [[ $? -ne 0 ]]; then echo "Error: *** Error test-art-target-run-test-optimizing failed" cat $WORKSPACE/build-logs-run-test-optimizing-32.txt failed=1 fi cat $WORKSPACE/build-logs-gtest-32.txt > $WORKSPACE/build-logs-32.txt cat $WORKSPACE/build-logs-run-test-default-32.txt >> $WORKSPACE/build-logs-32.txt cat $WORKSPACE/build-logs-run-test-interpreter-32.txt >> $WORKSPACE/build-logs-32.txt cat $WORKSPACE/build-logs-run-test-optimizing-32.txt >> $WORKSPACE/build-logs-32.txt echo "YVALUE=`grep "2mPASSED" $WORKSPACE/build-logs-32.txt | grep "gtest" | wc -l`" > $WORKSPACE/gtest-pass_count-32.txt echo "YVALUE=`grep "1mFAILED" $WORKSPACE/build-logs-32.txt | grep "gtest" | wc -l`" > $WORKSPACE/gtest-fail_count-32.txt echo "YVALUE=`grep "3mSKIPPING" $WORKSPACE/build-logs-32.txt | grep "gtest" | wc -l`" > $WORKSPACE/gtest-skip_count-32.txt echo "YVALUE=`grep "2mPASSED" $WORKSPACE/build-logs-32.txt | grep "run-test" | wc -l`" > $WORKSPACE/run-test-pass_count-32.txt echo "YVALUE=`grep "1mFAILED" $WORKSPACE/build-logs-32.txt | grep "run-test" | wc -l`" > $WORKSPACE/run-test-fail_count-32.txt echo "YVALUE=`grep "3mSKIPPING" $WORKSPACE/build-logs-32.txt | grep "run-test" | wc -l`" > $WORKSPACE/run-test-skip_count-32.txt #grep -rni "1mFAILED" $WORKSPACE/build-logs-32.txt | sed "s/.*://g" | sed "s/ .*//g" > $WORKSPACE/failing-tests-32.txt #grep -rni "3mSKIPPING" $WORKSPACE/build-logs-32.txt | sed "s/.*://g" | sed "s/ .*//g" > $WORKSPACE/skipped-tests-32.txt MAKE_END=$(date +%s.%N) MAKE_TIME=$(echo "$MAKE_END - $MAKE_START" | bc) echo "YVALUE=$MAKE_TIME" > $WORKSPACE/make_time.txt echo "YVALUE=$REPO_TIME" > $WORKSPACE/repo_time.txt ccache -s [[ $JENKINS_MODE ]] && echo "***********************************************" >> $WORKSPACE/device_log.txt [[ $JENKINS_MODE ]] && echo "****** Dumping list of files on the device ****" >> $WORKSPACE/device_log.txt adb shell ls -lR / > $WORKSPACE/device_log.txt [[ $JENKINS_MODE ]] && echo "***********************************************" >> $WORKSPACE/device_log.txt [[ $JENKINS_MODE ]] && echo "****** Battery level after 32bit tests ********" >> $WORKSPACE/device_log.txt [[ $JENKINS_MODE ]] && adb shell dumpsys battery >> $WORKSPACE/device_log.txt [[ $JENKINS_MODE ]] && echo "*********** Dumping dmesg output *************" >> $WORKSPACE/device_log.txt [[ $JENKINS_MODE ]] && dmesg >> $WORKSPACE/device_log.txt if [[ $failed -ne 0 ]]; then cat $WORKSPACE/build-logs-32.txt | grep -i "FAILED!" > $WORKSPACE/failed-test.txt cat $WORKSPACE/build-logs-64.txt | grep -i "FAILED!" >> $WORKSPACE/failed-test.txt grep " FAILED" $WORKSPACE/build-logs-32.txt | grep "^test" | sed -e "s/ FAILED//g" | grep gtest >> $WORKSPACE/failed-test.txt grep " FAILED" $WORKSPACE/build-logs-64.txt | grep "^test" | sed -e "s/ FAILED//g" | grep gtest >> $WORKSPACE/failed-test.txt grep "\[91mFAILED" $WORKSPACE/build-logs-32.txt | grep "^test" | sed -e "s/ .*//g" | grep gtest >>$WORKSPACE/failed-test.txt grep "\[91mFAILED" $WORKSPACE/build-logs-64.txt | grep "^test" | sed -e "s/ .*//g" | grep gtest >>$WORKSPACE/failed-test.txt sed -i "s/.*test\///g" $WORKSPACE/failed-test.txt sed -i "s/: FAILED\!//g" $WORKSPACE/failed-test.txt IFS=';' read -r -a ignored_tests <<< $CURRENT_FAILING_ART_TESTS for test in ${ignored_tests[@]} do echo $test >> $WORKSPACE/ignored_tests.txt done while read p; do if ! grep -i $p $WORKSPACE/ignored_tests.txt; then actually_failed=1 export failing_tests="$failing_tests $p" fi done < $WORKSPACE/failed-test.txt echo "*********** Dumping dmesg output *************" dmesg echo "*********** Battery LEVEL *****************" out/host/linux-x86/bin/adb shell dumpsys battery if [[ $actually_failed -ne 0 ]]; then set +x echo "$failing_tests tests have failed" exit 1 fi exit 0 fi