#!/bin/bash

# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Runs a given test case under a VM.

# This can only run outside the chroot.
. $(dirname "$(readlink -f "$0")")/outside_chroot_common.sh || exit 1
. "${SCRIPT_ROOT}/common.sh" || exit 1
. "${SCRIPT_ROOT}/lib/cros_vm_lib.sh" || die "Unable to load cros_vm_lib.sh"
. "${SCRIPT_ROOT}/lib/cros_vm_constants.sh" ||
  die "Unable to load cros_vm_constants.sh"

get_default_board

DEFINE_string board "$DEFAULT_BOARD" \
    "The board for which you built autotest." b
DEFINE_string image_path "" "Full path of the VM image"
DEFINE_string results_dir_root "" "alternate root results directory"
DEFINE_string test_case "" "Name of the test case to run"
DEFINE_boolean use_emerged ${FLAGS_FALSE} \
    "Force use of emerged autotest packages"
DEFINE_integer verbose 1 "{0,1,2} Max verbosity shows autoserv debug output." v

set -e

# Returns normally if the given $1 is a valid chrome version.
chrome_version_is_valid() {
  local chrome_version="$1"
  echo ${chrome_version} | egrep '^[0-9]+.[0-9]+.[0-9]+.[0-9]+$' &> /dev/null
}

# Parse command line.
FLAGS "$@" || exit 1

# Use latest if not specified.
if [ -z "${FLAGS_image_path}" ]; then
  LATEST_IMAGE="$("${SCRIPT_ROOT}/get_latest_image.sh" \
      --board=${FLAGS_board})/${DEFAULT_QEMU_IMAGE}"
  info "Using latest vm image ${LATEST_IMAGE}"
  FLAGS_image_path=${LATEST_IMAGE}
fi

[ -e "${FLAGS_image_path}" ] || die "Image ${FLAGS_image_path} does not exist."

if [ -n "${FLAGS_test_case}" ]; then
  warn "Use of --test_case=<test> is being deprecated.  Just pass test names \
as separate command line arguments."
fi

if [ -z "${FLAGS_test_case}" ] && [ -z "${FLAGS_ARGV}" ]; then
  die "You must specify a test case."
fi

USE_EMERGED=
if [[ ${FLAGS_use_emerged} -eq ${FLAGS_TRUE} ]]; then
  USE_EMERGED="--use_emerged"
fi

tests=( )
[ -n "${FLAGS_test_case}" ] && tests=( "${FLAGS_test_case}" )
for test in ${FLAGS_ARGV}; do
  tests=( "${tests[@]}" "$(remove_quotes "${test}")" )
done

trap stop_kvm EXIT
start_kvm "${FLAGS_image_path}"
retry_until_ssh

${GCLIENT_ROOT}/chromite/bin/cros_sdk -- run_remote_tests.sh \
    --board=${FLAGS_board} \
    --ssh_port=${FLAGS_ssh_port} \
    --remote=127.0.0.1 \
    --results_dir_root="${FLAGS_results_dir_root}" \
    ${USE_EMERGED} \
    --verbose=${FLAGS_verbose} \
    "${tests[@]}"
