diff options
author | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2020-12-09 19:15:51 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2020-12-11 13:17:19 +0000 |
commit | 591da3980542163fc7b0bce2665787296a87d776 (patch) | |
tree | 3e5deac6ba513801b73a3013fdae3d22097b6c72 /util/android | |
parent | 5bfc0e1843687053ad3656700906e9304e8434fa (diff) |
Android: restart emulator if it gets stuck during testing
Task-number: QTQAINFRA-4052
Change-Id: Ie1a0d1c6b6c5cd0425b7ccf195ac57408142f3c3
Reviewed-by: Simo Fält <simo.falt@qt.io>
(cherry picked from commit 86a655387c26cd25dde69cebd18b5ff9379fbe3e)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'util/android')
-rwxr-xr-x | util/android/android_emulator_launcher.sh | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/util/android/android_emulator_launcher.sh b/util/android/android_emulator_launcher.sh new file mode 100755 index 0000000000..841ac0ca06 --- /dev/null +++ b/util/android/android_emulator_launcher.sh @@ -0,0 +1,70 @@ +#!/bin/sh +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the plugins of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# +# This util launches the Android emulator and ensures it doesn't stuck/freeze +# by detecting that and restarting it + +set -ex + +EMULATOR_TIMEOUT=30 +EMULATOR_MAX_RETRIES=5 +EMULATOR_EXEC="$ANDROID_SDK_HOME/tools/emulator" +ADB_EXEC="$ANDROID_SDK_HOME/platform-tools/adb" +EMULATOR_NAME="@x86emulator" +RESULT=0 + +for counter in `seq 1 ${EMULATOR_MAX_RETRIES}`; do + $ADB_EXEC start-server + echo "Starting emulator, try ${counter}/${EMULATOR_MAX_RETRIES}" + $EMULATOR_EXEC $EMULATOR_NAME -no-audio -partition-size 4096 -cores 4 -memory 3500 -no-snapshot-load -no-snapshot-save &>/dev/null & + emulator_pid=$! + + # Give emulator time to start + sleep $EMULATOR_TIMEOUT + + emulator_status=`$ADB_EXEC devices | tail -n -2 | awk '{print $2}'` + + # If emulator status is still offline after timeout period, + # we can assume it's stuck, and we must restart it + if [[ $emulator_status == 'online' || $emulator_status == 'device' ]]; then + echo "Emulator started successfully" + break + else + if [ $counter -lt $EMULATOR_MAX_RETRIES ]; then + echo "Emulator failed to start, forcefully killing current instance" + kill $emulator_pid || true + sleep 5 + elif [ $counter -eq $EMULATOR_MAX_RETRIES ]; then + echo "Emulator failed to start, reached maximum number of retries" + RESULT=-1 + break + fi + fi +done + +exit $RESULT |