aboutsummaryrefslogtreecommitdiff
path: root/binary_search_tool/android/test_setup.sh
diff options
context:
space:
mode:
Diffstat (limited to 'binary_search_tool/android/test_setup.sh')
-rwxr-xr-xbinary_search_tool/android/test_setup.sh130
1 files changed, 130 insertions, 0 deletions
diff --git a/binary_search_tool/android/test_setup.sh b/binary_search_tool/android/test_setup.sh
new file mode 100755
index 00000000..26f8ec22
--- /dev/null
+++ b/binary_search_tool/android/test_setup.sh
@@ -0,0 +1,130 @@
+#!/bin/bash
+#
+# Copyright 2016 Google Inc. All Rights Reserved.
+#
+# This is the test setup script for generating an Android image based off the
+# current working build tree. make is called to relink the object files and
+# generate the new Android image to be flashed. The device is then rebooted into
+# bootloader mode and fastboot is used to flash the new image. The device is
+# then rebooted so the user's test script can run.
+#
+# This script is intended to be used by binary_search_state.py, as
+# part of the binary search triage on the Android source tree. It should
+# return '0' if the setup succeeds; and '1' if the setup fails (the image
+# could not build or be flashed).
+#
+
+source android/common.sh
+
+manual_flash()
+{
+ echo
+ echo "Please manually flash the built image to your device."
+ echo "To do so follow these steps:"
+ echo " 1. Boot your device into fastboot mode."
+ echo " 2. cd to '${BISECT_ANDROID_SRC}'"
+ echo " 2. Run 'source build/envsetup.sh'"
+ echo " 3. Run 'lunch'"
+ echo " 4. Run '${ADB_DEVICE}fastboot flashall -w'"
+ echo "Or see the following link for more in depth steps:"
+ echo "https://source.android.com/source/running.html"
+ echo
+ while true; do
+ sleep 1
+ read -p "Was the flashing of the image successful? " choice
+ case $choice in
+ [Yy]*) return 0;;
+ [Nn]*) return 1;;
+ *) echo "Please answer y or n.";;
+ esac
+ done
+}
+
+auto_flash()
+{
+ echo
+ echo "Please ensure your Android device is on and in fastboot mode so"
+ echo "fastboot flash may run."
+ echo
+ sleep 1
+ read -p $'Press enter to continue and retry the flashing' notused
+
+ echo " ${ADB_DEVICE}fastboot flashall -w"
+ fastboot flashall -w
+}
+
+flash()
+{
+ echo
+ echo "FLASHING"
+ echo "Rebooting device into fastboot mode."
+ echo " ${ADB_DEVICE}adb reboot bootloader"
+ adb reboot bootloader
+
+ echo
+ echo "Waiting for device to reach fastboot mode."
+ echo "(will timeout after 60 seconds)"
+ # fastboot will block indefinitely until device comes online.
+ # Grab random variable to test if device is online.
+ # If takes >60s then we error out and ask the user for help.
+ timeout 60 fastboot getvar 0 2>/dev/null
+ fastboot_flash_status=$?
+
+ if [[ ${fastboot_flash_status} -eq 0 ]]; then
+ echo
+ echo "Flashing image."
+ echo " ${ADB_DEVICE}fastboot flashall -w"
+ fastboot flashall -w
+ fastboot_flash_status=$?
+ fi
+
+ while [[ ${fastboot_flash_status} -ne 0 ]] ; do
+ echo
+ echo "fastboot flash has failed! From here you can:"
+ echo "1. Debug and/or flash manually"
+ echo "2. Retry flashing automatically"
+ echo "3. Abort this installation and skip this image"
+ echo "4. Abort this installation and mark test as failed"
+ sleep 1
+ read -p "Which method would you like to do? " choice
+ case $choice in
+ 1) manual_flash && break;;
+ 2) auto_flash && break;;
+ 3) return 125;;
+ 4) return 1;;
+ *) echo "Please answer 1, 2, 3, or 4.";;
+ esac
+ done
+}
+
+# Number of jobs make will use. Can be customized and played with.
+MAKE_JOBS=${BISECT_NUM_JOBS}
+
+# Set ADB_DEVICE to "ANDROID_SERIAL=${ANDROID_SERIAL}" or "" if device id not
+# set. This is used for debugging info so users can confirm which device
+# commands are being sent to.
+ADB_DEVICE=${ANDROID_SERIAL:+"ANDROID_SERIAL=${ANDROID_SERIAL} "}
+
+echo
+echo "INSTALLATION BEGIN"
+echo
+
+cd ${BISECT_ANDROID_SRC}
+
+echo "BUILDING IMAGE"
+
+make -j ${MAKE_JOBS}
+make_status=$?
+
+exit_val=0
+if [[ ${make_status} -eq 0 ]]; then
+ flash
+ exit_val=$?
+else
+ echo "ERROR:"
+ echo "make returned a non-zero status: ${make_status}. Skipping image..."
+ exit_val=1
+fi
+
+
+exit ${exit_val}