| #!/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" |
| |
| 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 |
| |
| "${SCRIPT_ROOT}/enter_chroot.sh" -- 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} \ |
| "${tests[@]}" |