#!/bin/bash

set -e

if [[ ! -f $1 ]]; then
  echo "File $1 not found."
  exit -1
fi

GIT_REVISION=${2:-$(git rev-parse HEAD)}
BUILD_ID=${3:-$CIRRUS_BUILD_ID}

if [[ ! -z $GCLOUD_FIREBASE_TESTLAB_KEY ]]; then
  # New contributors will not have permissions to run this test - they won't be
  # able to access the service account information. We should just mark the test
  # as passed - it will run fine on post submit, where it will still catch
  # failures.
  # We can also still make sure that building a release app bundle still works.
  if [[ $GCLOUD_FIREBASE_TESTLAB_KEY == ENCRYPTED* ]]; then
    echo "This user does not have permission to run this test."
    exit 0
  fi

  echo $GCLOUD_FIREBASE_TESTLAB_KEY > ${HOME}/gcloud-service-key.json
  gcloud auth activate-service-account --key-file=${HOME}/gcloud-service-key.json
fi

# Run the test.
# game-loop tests are meant for OpenGL apps.
# This type of test will give the application a handle to a file, and
# we'll write the timeline JSON to that file.
# See https://firebase.google.com/docs/test-lab/android/game-loop
gcloud --project flutter-infra firebase test android run \
  --type game-loop \
  --app $1 \
  --timeout 2m \
  --results-bucket=gs://flutter_firebase_testlab \
  --results-dir=engine_scenario_test/$GIT_REVISION/$BUILD_ID