# Android Emulator helpers
# Copied from https://github.com/microsoft/onnxruntime/blob/main/tools/ci_build/github/azure-pipelines/templates/use-android-emulator.yml
parameters:
- name: create
  type: boolean
  default: false

- name: start
  type: boolean
  default: false

- name: stop
  type: boolean
  default: false

steps:
- ${{ if eq(parameters.create, true) }}:
  - script: |
      set -e -x
      python3 tools/android/run_android_emulator.py \
        --android-sdk-root $(ANDROID_SDK_ROOT) \
        --create-avd --system-image "system-images;android-31;default;x86_64"
    displayName: Create Android Emulator

- ${{ if eq(parameters.start, true) }}:
  - script: |
      if test -f $(Build.BinariesDirectory)/emulator.pid; then
        echo "Emulator PID file was not expected to exist but does and has pid:" \
          `cat $(Build.BinariesDirectory)/emulator.pid`
        exit 1
      fi
    displayName: Check emulator.pid does not exist

  # Add -verbose to --emulator-extra-args to enable additional logging.
  - script: |
      set -e -x
      python3 tools/android/run_android_emulator.py \
        --android-sdk-root $(ANDROID_SDK_ROOT) \
        --start --emulator-extra-args="-partition-size 2047" \
        --emulator-pid-file $(Build.BinariesDirectory)/emulator.pid
      echo "Emulator PID:"`cat $(Build.BinariesDirectory)/emulator.pid`
    displayName: Start Android Emulator

- ${{ if eq(parameters.stop, true) }}:
  - script: |
      set -e -x
      python3 -m pip install psutil
    displayName: Install psutil for emulator shutdown by run_android_emulator.py
    condition: always()

  - script: |
      set -e -x
      if test -f $(Build.BinariesDirectory)/emulator.pid; then
        echo "Emulator PID:"`cat $(Build.BinariesDirectory)/emulator.pid`
        python3 tools/android/run_android_emulator.py \
          --android-sdk-root $(ANDROID_SDK_ROOT) \
          --stop \
          --emulator-pid-file $(Build.BinariesDirectory)/emulator.pid
        rm $(Build.BinariesDirectory)/emulator.pid
      else
        echo "Emulator PID file was expected to exist but does not."
      fi
    displayName: Stop Android Emulator
    condition: always()
