mirror of
https://github.com/flatcar/scripts.git
synced 2025-11-28 22:12:10 +01:00
This reverts commit 519a6560e4dcd393d9ec3a959c4b2c894338fd1d. BUG=For AU harness failures. TEST=TBR Review URL: http://codereview.chromium.org/6579014 Change-Id: I6001bf4c52951e4d9698985285538b162ae6b6f6
111 lines
3.3 KiB
Bash
Executable File
111 lines
3.3 KiB
Bash
Executable File
#!/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.
|
|
|
|
# --- BEGIN COMMON.SH BOILERPLATE ---
|
|
# Load common CrOS utilities. Inside the chroot this file is installed in
|
|
# /usr/lib/crosutils. Outside the chroot we find it relative to the script's
|
|
# location.
|
|
find_common_sh() {
|
|
local common_paths=(/usr/lib/crosutils "$(dirname "$(readlink -f "$0")")/..")
|
|
local path
|
|
|
|
SCRIPT_ROOT=
|
|
for path in "${common_paths[@]}"; do
|
|
if [ -r "${path}/common.sh" ]; then
|
|
SCRIPT_ROOT=${path}
|
|
break
|
|
fi
|
|
done
|
|
}
|
|
|
|
find_common_sh
|
|
. "${SCRIPT_ROOT}/common.sh" || (echo "Unable to load common.sh" && exit 1)
|
|
# --- END COMMON.SH BOILERPLATE ---
|
|
|
|
. "${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_string verify_chrome_version "" \
|
|
"Verify that this chrome version matches that on vm."
|
|
|
|
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="$(${SCRIPTS_DIR}/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
|
|
|
|
if [ -n "${FLAGS_verify_chrome_version}" ]; then
|
|
info "Verifying version of Chrome matches what we expect."
|
|
if chrome_version_is_valid "${FLAGS_verify_chrome_version}"; then
|
|
chrome_version_on_vm=$("${SCRIPTS_DIR}/bin/cros_get_chrome_version" \
|
|
--remote=127.0.0.1 \
|
|
--ssh_port=${FLAGS_ssh_port})
|
|
[[ ${chrome_version_on_vm} == ${FLAGS_verify_chrome_version} ]] || \
|
|
warn "CHROME_VERSION is no longer set.This check will be removed"
|
|
else
|
|
warn "${FLAGS_verify_chrome_version} is not a valid Chrome version"
|
|
fi
|
|
fi
|
|
|
|
"${SCRIPTS_DIR}/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[@]}"
|