#!/bin/bash
# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

#### CATEGORY=Test
### run e2e tests
## Usage: fx run-e2e-tests
##
## Thin wrapper around `fx run-host-tests` which sets up the environment to run
## an end to end test against the current hardware target.
##
## Hint:
## Use fx --dir flag to change the selected build directory and/or fx -t to
## change the target device.

set -o errexit
set -o pipefail

source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/../lib/vars.sh
fx-config-read

export FUCHSIA_DEVICE_ADDR="$(get-fuchsia-device-addr)"
if [[ -z "$FUCHSIA_DEVICE_ADDR" ]]; then
  fx-error "Cannot determine IP address of Fuchsia target"
  exit 1
fi

if [[ "$FUCHSIA_DEVICE_ADDR" == "::1" ]]; then
  # Device addr is localhost, assume that means that ports were forwarded with
  # fx serve-remote from a remote workstation/laptop with a device attached.
  export SL4F_HTTP_PORT=9080
fi

# For legacy code.
export FUCHSIA_IPV4_ADDR="${FUCHSIA_DEVICE_ADDR}"

port="$(get-fuchsia-device-port)"
if [[ -n "${port}" ]]; then
  export FUCHSIA_SSH_PORT="${port}"
fi

export FUCHSIA_SSH_KEY="$(get-ssh-privkey)" || exit $?
export FUCHSIA_TEST_OUTDIR="${FUCHSIA_OUT_DIR}/test_out/$(date +'%F-%H:%M:%S')"
mkdir -p "${FUCHSIA_TEST_OUTDIR}"

fx-command-run run-host-tests "$@"
