| #!/bin/bash | 
 | set -eux | 
 |  | 
 | PYTORCH_DIR="$(cd $(dirname $0)/..; pwd -P)" | 
 | PYTORCH_ANDROID_DIR=$PYTORCH_DIR/android | 
 |  | 
 | source "$PYTORCH_ANDROID_DIR/common.sh" | 
 |  | 
 | check_android_sdk | 
 | check_gradle | 
 |  | 
 | # Run android instrumented tests on x86 emulator | 
 |  | 
 | ADB_PATH=$ANDROID_HOME/platform-tools/adb | 
 |  | 
 | echo "Expecting running emulator" | 
 | $ADB_PATH devices | 
 |  | 
 | DEVICES_COUNT=$($ADB_PATH devices | awk 'NF' | wc -l) | 
 | echo "DEVICES_COUNT:$DEVICES_COUNT" | 
 |  | 
 | if [ "$DEVICES_COUNT" -eq 1 ]; then | 
 |   echo "Unable to found connected android emulators" | 
 | cat <<- EOF | 
 |   To start android emulator: | 
 |   1. Install android sdkmanager packages | 
 |   $ANDROID_HOME/tools/bin/sdkmanager "system-images;android-25;google_apis;x86" | 
 |  | 
 |   to specify proxy add params: --proxy=http --proxy_host=fwdproxy --proxy_port=8080 | 
 |  | 
 |   2. Create android virtual device | 
 |   $ANDROID_HOME/tools/bin/avdmanager create avd --name "x86_android25" --package "system-images;android-25;google_apis;x86" | 
 |  | 
 |   3. Start emulator in headless mode without audio | 
 |   $ANDROID_HOME/tools/emulator -avd x86_android25 -no-audio -no-window | 
 |  | 
 |   4. Check that emulator is running | 
 |   $ANDROID_HOME/platform-tools/adb devices | 
 |  | 
 |   If everything is ok the output will be: | 
 |  | 
 |   List of devices attached | 
 |   emulator-5554   device | 
 | EOF | 
 |   exit 1 | 
 | fi | 
 |  | 
 | echo "Waiting for emulator boot completed" | 
 | $ADB_PATH wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;' | 
 |  | 
 | { | 
 |   # The test currently takes about 10 minutes | 
 |   retry $GRADLE_PATH -PABI_FILTERS=x86 -p $PYTORCH_ANDROID_DIR connectedAndroidTest | 
 | } || { | 
 |   echo "::error::Check https://github.com/pytorch/pytorch/tree/master/test/mobile/model_test to see how to fix the failed mobile test" | 
 |   exit 1 | 
 | } |