Index: src/scripts/setup_autotest.sh |
diff --git a/src/scripts/setup_autotest.sh b/src/scripts/setup_autotest.sh |
new file mode 100755 |
index 0000000000000000000000000000000000000000..165830957b9485494926d2799bb59e3dbaa9607f |
--- /dev/null |
+++ b/src/scripts/setup_autotest.sh |
@@ -0,0 +1,102 @@ |
+#!/bin/bash |
+ |
+# Copyright (c) 2009 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. |
+ |
+# Script to install and launch autotest. |
+ |
+. "$(dirname "$0")/common.sh" |
+ |
+# Script must be run inside the chroot |
+assert_inside_chroot |
+ |
+DEFINE_string client_control "" "client test case to execute" "c" |
+DEFINE_boolean force false "force reinstallation of autotest" "f" |
+DEFINE_string machine "" "if present, execute autotest on this host." "m" |
+DEFINE_string test_key "${GCLIENT_ROOT}/src/platform/testing/testing_rsa" \ |
+"rsa key to use for autoserv" "k" |
+ |
+# More useful help |
+FLAGS_HELP="usage: $0 [flags]" |
+ |
+# parse the command-line |
+FLAGS "$@" || exit 1 |
+eval set -- "${FLAGS_ARGV}" |
+set -e |
+ |
+AUTOTEST_CHROOT_DEST="/usr/local/autotest" |
+AUTOTEST_SRC="${GCLIENT_ROOT}/src/third_party/autotest/files" |
+echo $AUTOTEST_SRC |
+ |
+CHROOT_AUTHSOCK_PREFIX="/tmp/chromiumos_test_agent" |
+ |
+function cleanup { |
+ if [ "${TEST_AUTH_SOCKET:0:26}" == ${CHROOT_AUTHSOCK_PREFIX} ] |
+ then |
+ echo "cleaning up chrooted ssh-agent." |
+ kill ${SSH_AGENT_PID} |
+ fi |
+} |
+ |
+trap cleanup EXIT |
+ |
+# Copy a local "installation" of autotest into the chroot, to avoid |
+# polluting the src dir with tmp files, results, etc. |
+# TODO: use rsync to ensure we don't get stuck with an old install. |
+if [ 1 != ${FLAGS_force} ] || [ ! -f "${AUTOTEST_CHROOT_DEST}/server/autosrv" ] |
+ then |
+ echo -n "Installing Autotest... " |
+ sudo mkdir -p "${AUTOTEST_CHROOT_DEST}" |
+ sudo cp -rp ${AUTOTEST_SRC}/* ${AUTOTEST_CHROOT_DEST} |
+ echo "done." |
+ else |
+ echo "Autotest found in chroot, skipping copy." |
+fi |
+ |
+# Add all third_party and system tests to site_tests. |
+for type in client server |
+do |
+ echo -n "Adding ${type}_tests into autotest's ${type}/site_tests... " |
+ sudo cp -rp ${GCLIENT_ROOT}/src/platform/testing/${type}_tests/* \ |
+ ${AUTOTEST_CHROOT_DEST}/${type}/site_tests/ |
+done |
+ |
+# If ssh-agent isn't already running, start one (possibly inside the chroot) |
+if [ ! -n "${SSH_AGENT_PID}" ] |
+then |
+ echo "Setting up ssh-agent in chroot for testing." |
+ TEST_AUTH_SOCKET=$(mktemp -u ${CHROOT_AUTHSOCK_PREFIX}.XXXX) |
+ eval $(/usr/bin/ssh-agent -a ${TEST_AUTH_SOCKET}) |
+fi |
+ |
+# Install authkey for testing |
+ |
+chmod 400 $FLAGS_test_key |
+/usr/bin/ssh-add $FLAGS_test_key 2> /dev/null |
+ |
+if [ -n "${FLAGS_machine}" ] |
+then |
+ CLIENT_CONTROL_FILE=${FLAGS_client_control} |
+ # run only a specific test/suite if requested |
+ if [ ! -n "${CLIENT_CONTROL_FILE}" ] |
+ then |
+ # Generate meta-control file to run all existing site tests. |
+ CLIENT_CONTROL_FILE=\ |
+ "${AUTOTEST_CHROOT_DEST}/client/site_tests/AllTests/control" |
+ echo "No control file specified. Running all tests." |
+ fi |
+ # Kick off autosrv for specified test |
+ autoserv_cmd="${AUTOTEST_CHROOT_DEST}/server/autoserv \ |
+ -m ${FLAGS_machine} \ |
+ -c ${CLIENT_CONTROL_FILE}" |
+ echo "running autoserv: " ${autoserv_cmd} |
+ ${autoserv_cmd} |
+else |
+ echo "To execute autotest manually: |
+ eval \$(ssh-agent) # start ssh-agent |
+ ssh-add $FLAGS_test_key # add test key to agent |
+ # Then execute autoserv: |
+ $autoserv_cmd" |
+fi |
+ |