OLD | NEW |
1 #!/bin/bash | 1 #!/bin/bash |
2 | 2 |
3 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. | 3 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 # Script to run client or server tests on a live remote image. | 7 # Script to run client or server tests on a live remote image. |
8 | 8 |
9 # Load common constants. This should be the first executable line. | 9 # Load common constants. This should be the first executable line. |
10 # The path to common.sh should be relative to your script's location. | 10 # The path to common.sh should be relative to your script's location. |
(...skipping 11 matching lines...) Expand all Loading... |
22 DEFINE_string chroot "${DEFAULT_CHROOT_DIR}" "alternate chroot location" c | 22 DEFINE_string chroot "${DEFAULT_CHROOT_DIR}" "alternate chroot location" c |
23 DEFINE_boolean cleanup ${FLAGS_FALSE} "Clean up temp directory" | 23 DEFINE_boolean cleanup ${FLAGS_FALSE} "Clean up temp directory" |
24 DEFINE_integer iterations 1 "Iterations to run every top level test" i | 24 DEFINE_integer iterations 1 "Iterations to run every top level test" i |
25 DEFINE_string results_dir_root "" "alternate root results directory" | 25 DEFINE_string results_dir_root "" "alternate root results directory" |
26 DEFINE_boolean verbose ${FLAGS_FALSE} "Show verbose autoserv output" v | 26 DEFINE_boolean verbose ${FLAGS_FALSE} "Show verbose autoserv output" v |
27 DEFINE_boolean use_emerged ${FLAGS_FALSE} \ | 27 DEFINE_boolean use_emerged ${FLAGS_FALSE} \ |
28 "Force use of emerged autotest packages" | 28 "Force use of emerged autotest packages" |
29 | 29 |
30 RAN_ANY_TESTS=${FLAGS_FALSE} | 30 RAN_ANY_TESTS=${FLAGS_FALSE} |
31 | 31 |
| 32 function stop_ssh_agent() { |
| 33 # Call this function from the exit trap of the main script. |
| 34 # Iff we started ssh-agent, be nice and clean it up. |
| 35 # Note, only works if called from the main script - no subshells. |
| 36 if [[ 1 -eq ${OWN_SSH_AGENT} ]] |
| 37 then |
| 38 kill ${SSH_AGENT_PID} 2>/dev/null |
| 39 unset OWN_SSH_AGENT SSH_AGENT_PID SSH_AUTH_SOCK |
| 40 fi |
| 41 } |
| 42 |
| 43 function start_ssh_agent() { |
| 44 local tmp_private_key=$TMP/autotest_key |
| 45 if [ -z "$SSH_AGENT_PID" ]; then |
| 46 eval $(ssh-agent) |
| 47 OWN_SSH_AGENT=1 |
| 48 else |
| 49 OWN_SSH_AGENT=0 |
| 50 fi |
| 51 cp $FLAGS_private_key $tmp_private_key |
| 52 chmod 0400 $tmp_private_key |
| 53 ssh-add $tmp_private_key |
| 54 } |
| 55 |
32 function cleanup() { | 56 function cleanup() { |
33 # Always remove the build path in case it was used. | 57 # Always remove the build path in case it was used. |
34 [[ -n "${BUILD_DIR}" ]] && sudo rm -rf "${BUILD_DIR}" | 58 [[ -n "${BUILD_DIR}" ]] && sudo rm -rf "${BUILD_DIR}" |
35 if [[ $FLAGS_cleanup -eq ${FLAGS_TRUE} ]] || \ | 59 if [[ $FLAGS_cleanup -eq ${FLAGS_TRUE} ]] || \ |
36 [[ ${RAN_ANY_TESTS} -eq ${FLAGS_FALSE} ]]; then | 60 [[ ${RAN_ANY_TESTS} -eq ${FLAGS_FALSE} ]]; then |
37 rm -rf "${TMP}" | 61 rm -rf "${TMP}" |
38 else | 62 else |
39 echo ">>> Details stored under ${TMP}" | 63 echo ">>> Details stored under ${TMP}" |
40 fi | 64 fi |
| 65 stop_ssh_agent |
41 cleanup_remote_access | 66 cleanup_remote_access |
42 } | 67 } |
43 | 68 |
44 # Determine if a control is for a client or server test. Echos | 69 # Determine if a control is for a client or server test. Echos |
45 # either "server" or "client". | 70 # either "server" or "client". |
46 # Arguments: | 71 # Arguments: |
47 # $1 - control file path | 72 # $1 - control file path |
48 function read_test_type() { | 73 function read_test_type() { |
49 local control_file=$1 | 74 local control_file=$1 |
50 # Assume a line starts with TEST_TYPE = | 75 # Assume a line starts with TEST_TYPE = |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 fi | 187 fi |
163 fi | 188 fi |
164 | 189 |
165 set -e | 190 set -e |
166 | 191 |
167 create_tmp | 192 create_tmp |
168 | 193 |
169 trap cleanup EXIT | 194 trap cleanup EXIT |
170 | 195 |
171 remote_access_init | 196 remote_access_init |
| 197 # autotest requires that an ssh-agent already be running |
| 198 start_ssh_agent |
172 | 199 |
173 learn_board | 200 learn_board |
174 autodetect_build | 201 autodetect_build |
175 | 202 |
176 local control_files_to_run="" | 203 local control_files_to_run="" |
177 local chrome_autotests="${CHROME_ROOT}/src/chrome/test/chromeos/autotest/files
" | 204 local chrome_autotests="${CHROME_ROOT}/src/chrome/test/chromeos/autotest/files
" |
178 # Now search for tests which unambiguously include the given identifier | 205 # Now search for tests which unambiguously include the given identifier |
179 local search_path=$(echo {client,server}/{tests,site_tests}) | 206 local search_path=$(echo {client,server}/{tests,site_tests}) |
180 # Include chrome autotest in the search path | 207 # Include chrome autotest in the search path |
181 if [ -n "${CHROME_ROOT}" ]; then | 208 if [ -n "${CHROME_ROOT}" ]; then |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 | 313 |
287 echo "" | 314 echo "" |
288 info "Test results:" | 315 info "Test results:" |
289 ./generate_test_report "${TMP}" --strip="${TMP}/" | 316 ./generate_test_report "${TMP}" --strip="${TMP}/" |
290 | 317 |
291 print_time_elapsed | 318 print_time_elapsed |
292 } | 319 } |
293 | 320 |
294 restart_in_chroot_if_needed "$@" | 321 restart_in_chroot_if_needed "$@" |
295 main "$@" | 322 main "$@" |
OLD | NEW |