GitHub Actions: Implement emulator boot timeout

pull/1456/head
Alinson S. Xavier 3 years ago
parent 68740b4043
commit 90de1f3723
No known key found for this signature in database
GPG Key ID: DCA0DAD4D2F58624

@ -53,11 +53,11 @@ jobs:
- name: Install Linux utils - name: Install Linux utils
run: | run: |
brew install util-linux
brew unlink parallel brew unlink parallel
brew install moreutils brew install util-linux moreutils coreutils
echo "/usr/local/opt/util-linux/bin" >> $GITHUB_PATH echo "/usr/local/opt/util-linux/bin" >> $GITHUB_PATH
echo "/usr/local/opt/moreutils/bin" >> $GITHUB_PATH echo "/usr/local/opt/moreutils/bin" >> $GITHUB_PATH
echo "/usr/local/opt/coreutils/libexec/gnubin" >> $GITHUB_PATH
- name: Run Android Tests - name: Run Android Tests
run: ./build.sh android-tests ${{ matrix.api }} run: ./build.sh android-tests ${{ matrix.api }}

@ -26,6 +26,7 @@ GRADLE="./gradlew --stacktrace --quiet"
PACKAGE_NAME=org.isoron.uhabits PACKAGE_NAME=org.isoron.uhabits
SDKMANAGER="${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager" SDKMANAGER="${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager"
VERSION=$(grep versionName uhabits-android/build.gradle.kts | sed -e 's/.*"\([^"]*\)".*/\1/g') VERSION=$(grep versionName uhabits-android/build.gradle.kts | sed -e 's/.*"\([^"]*\)".*/\1/g')
BOOT_TIMEOUT=360
if [ -z $VERSION ]; then if [ -z $VERSION ]; then
echo "Could not parse app version from: uhabits-android/build.gradle.kts" echo "Could not parse app version from: uhabits-android/build.gradle.kts"
@ -69,8 +70,7 @@ core_build() {
# Android # Android
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# shellcheck disable=SC2016 android_boot_attempt() {
android_test() {
API=$1 API=$1
AVDNAME=${AVD_PREFIX}${API} AVDNAME=${AVD_PREFIX}${API}
@ -99,17 +99,38 @@ android_test() {
log_info "Waiting for emulator to boot..." log_info "Waiting for emulator to boot..."
export ADB="$ADB -s emulator-6${API}0" export ADB="$ADB -s emulator-6${API}0"
$ADB wait-for-device shell 'while [[ -z "$(getprop sys.boot_completed)" ]]; do echo Waiting...; sleep 1; done; input keyevent 82' || return 1 timeout $BOOT_TIMEOUT $ADB wait-for-device shell 'while [[ -z "$(getprop sys.boot_completed)" ]]; do echo Waiting...; sleep 1; done; input keyevent 82'
$ADB root || return 1 if [ $? -ne 0 ]; then
sleep 5 log_error "Emulator failed to boot after $BOOT_TIMEOUT seconds."
return 1
fi
log_info "Disabling animations..." log_info "Disabling animations..."
$ADB root || return 1
sleep 5
$ADB shell settings put global window_animation_scale 0 || return 1 $ADB shell settings put global window_animation_scale 0 || return 1
$ADB shell settings put global transition_animation_scale 0 || return 1 $ADB shell settings put global transition_animation_scale 0 || return 1
$ADB shell settings put global animator_duration_scale 0 || return 1 $ADB shell settings put global animator_duration_scale 0 || return 1
log_info "Acquiring wake lock..." log_info "Acquiring wake lock..."
$ADB shell 'echo android-test > /sys/power/wake_lock' || return 1 $ADB shell 'echo android-test > /sys/power/wake_lock' || return 1
}
android_boot() {
for attempt in {1..5}; do
android_boot_attempt $1 && return 0
sleep 5
done
log_error "Too many failed attempts. Aborting."
return 1
}
# shellcheck disable=SC2016
android_test() {
API=$1
AVDNAME=${AVD_PREFIX}${API}
android_boot $API || return 1
if [ -n "$RELEASE" ]; then if [ -n "$RELEASE" ]; then
log_info "Installing release APK..." log_info "Installing release APK..."

Loading…
Cancel
Save