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 23 matching lines...) Expand all Loading... |
34 | 34 |
35 get_default_board | 35 get_default_board |
36 | 36 |
37 DEFINE_string args "" \ | 37 DEFINE_string args "" \ |
38 "Command line arguments for test. Quoted and space separated if multiple." a | 38 "Command line arguments for test. Quoted and space separated if multiple." a |
39 DEFINE_string board "$DEFAULT_BOARD" \ | 39 DEFINE_string board "$DEFAULT_BOARD" \ |
40 "The board for which you are building autotest" | 40 "The board for which you are building autotest" |
41 DEFINE_boolean build ${FLAGS_FALSE} "Build tests while running" b | 41 DEFINE_boolean build ${FLAGS_FALSE} "Build tests while running" b |
42 DEFINE_string chroot "${DEFAULT_CHROOT_DIR}" "alternate chroot location" c | 42 DEFINE_string chroot "${DEFAULT_CHROOT_DIR}" "alternate chroot location" c |
43 DEFINE_boolean cleanup ${FLAGS_FALSE} "Clean up temp directory" | 43 DEFINE_boolean cleanup ${FLAGS_FALSE} "Clean up temp directory" |
44 DEFINE_boolean hide_info ${FLAGS_FALSE} "Hide most test logs on success" | |
45 DEFINE_integer iterations 1 "Iterations to run every top level test" i | 44 DEFINE_integer iterations 1 "Iterations to run every top level test" i |
46 DEFINE_string results_dir_root "" "alternate root results directory" | 45 DEFINE_string results_dir_root "" "alternate root results directory" |
47 DEFINE_boolean verbose ${FLAGS_FALSE} "Show verbose autoserv output" v | 46 DEFINE_boolean verbose ${FLAGS_FALSE} "Show verbose autoserv output" v |
48 DEFINE_boolean use_emerged ${FLAGS_FALSE} \ | 47 DEFINE_boolean use_emerged ${FLAGS_FALSE} \ |
49 "Force use of emerged autotest packages" | 48 "Force use of emerged autotest packages" |
50 | 49 |
51 RAN_ANY_TESTS=${FLAGS_FALSE} | 50 RAN_ANY_TESTS=${FLAGS_FALSE} |
52 | 51 |
53 function stop_ssh_agent() { | 52 function stop_ssh_agent() { |
54 # Call this function from the exit trap of the main script. | 53 # Call this function from the exit trap of the main script. |
55 # Iff we started ssh-agent, be nice and clean it up. | 54 # Iff we started ssh-agent, be nice and clean it up. |
56 # Note, only works if called from the main script - no subshells. | 55 # Note, only works if called from the main script - no subshells. |
57 if [[ 1 -eq ${OWN_SSH_AGENT} ]]; then | 56 if [[ 1 -eq ${OWN_SSH_AGENT} ]]; then |
58 kill ${SSH_AGENT_PID} 2>/dev/null | 57 kill ${SSH_AGENT_PID} 2>/dev/null |
59 unset OWN_SSH_AGENT SSH_AGENT_PID SSH_AUTH_SOCK | 58 unset OWN_SSH_AGENT SSH_AGENT_PID SSH_AUTH_SOCK |
60 fi | 59 fi |
61 } | 60 } |
62 | 61 |
63 function start_ssh_agent() { | 62 function start_ssh_agent() { |
64 local tmp_private_key=$TMP/autotest_key | 63 local tmp_private_key=$TMP/autotest_key |
65 if [ -z "$SSH_AGENT_PID" ]; then | 64 if [ -z "$SSH_AGENT_PID" ]; then |
66 eval $(ssh-agent) | 65 eval $(ssh-agent) |
67 OWN_SSH_AGENT=1 | 66 OWN_SSH_AGENT=1 |
68 else | 67 else |
69 OWN_SSH_AGENT=0 | 68 OWN_SSH_AGENT=0 |
70 fi | 69 fi |
71 cp $FLAGS_private_key $tmp_private_key | 70 cp $FLAGS_private_key $tmp_private_key |
72 chmod 0400 $tmp_private_key | 71 chmod 0400 $tmp_private_key |
73 | 72 ssh-add $tmp_private_key |
74 # Run this way to capture normal stderr output but only display it | |
75 # on failure. | |
76 result="$(ssh-add $tmp_private_key 2>&1)" || die "$result" | |
77 } | 73 } |
78 | 74 |
79 function cleanup() { | 75 function cleanup() { |
80 # Always remove the build path in case it was used. | 76 # Always remove the build path in case it was used. |
81 [[ -n "${BUILD_DIR}" ]] && sudo rm -rf "${BUILD_DIR}" | 77 [[ -n "${BUILD_DIR}" ]] && sudo rm -rf "${BUILD_DIR}" |
82 if [[ $FLAGS_cleanup -eq ${FLAGS_TRUE} ]] || \ | 78 if [[ $FLAGS_cleanup -eq ${FLAGS_TRUE} ]] || \ |
83 [[ ${RAN_ANY_TESTS} -eq ${FLAGS_FALSE} ]]; then | 79 [[ ${RAN_ANY_TESTS} -eq ${FLAGS_FALSE} ]]; then |
84 rm -rf "${TMP}" | 80 rm -rf "${TMP}" |
85 else | 81 else |
86 echo ">>> Details stored under ${TMP}" | 82 echo ">>> Details stored under ${TMP}" |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 fi | 312 fi |
317 | 313 |
318 local autoserv_args="-m ${FLAGS_remote} --ssh-port ${FLAGS_ssh_port} \ | 314 local autoserv_args="-m ${FLAGS_remote} --ssh-port ${FLAGS_ssh_port} \ |
319 ${option} ${control_file} -r ${results_dir} ${verbose}" | 315 ${option} ${control_file} -r ${results_dir} ${verbose}" |
320 if [ -n "${FLAGS_args}" ]; then | 316 if [ -n "${FLAGS_args}" ]; then |
321 autoserv_args="${autoserv_args} --args=${FLAGS_args}" | 317 autoserv_args="${autoserv_args} --args=${FLAGS_args}" |
322 fi | 318 fi |
323 | 319 |
324 sudo chmod a+w ./server/{tests,site_tests} | 320 sudo chmod a+w ./server/{tests,site_tests} |
325 echo ./server/autoserv ${autoserv_args} | 321 echo ./server/autoserv ${autoserv_args} |
326 | 322 |
327 # run autoserv in subshell, capture it's output, and only display output | |
328 # on error. | |
329 code=0 | |
330 if [ ${FLAGS_build} -eq ${FLAGS_TRUE} ]; then | 323 if [ ${FLAGS_build} -eq ${FLAGS_TRUE} ]; then |
331 result="$(. ${BUILD_ENV} && tc-export CC CXX PKG_CONFIG && | 324 # run autoserv in subshell |
332 ./server/autoserv ${autoserv_args} 2>&1)" || code=1 | 325 (. ${BUILD_ENV} && tc-export CC CXX PKG_CONFIG && |
| 326 ./server/autoserv ${autoserv_args}) |
333 else | 327 else |
334 result="$(./server/autoserv ${autoserv_args} 2>&1)" || code=1 | 328 ./server/autoserv ${autoserv_args} |
335 fi | |
336 | |
337 if [ $code -ne 0 -o ${FLAGS_hide_info} -eq ${FLAGS_FALSE} ]; then | |
338 echo | |
339 echo "${result}" | |
340 exit $code | |
341 fi | 329 fi |
342 done | 330 done |
343 popd > /dev/null | 331 popd > /dev/null |
344 | 332 |
345 echo "" | 333 echo "" |
346 info "Test results:" | 334 info "Test results:" |
347 ./generate_test_report "${TMP}" --strip="${TMP}/" | 335 ./generate_test_report "${TMP}" --strip="${TMP}/" |
348 | 336 |
349 print_time_elapsed | 337 print_time_elapsed |
350 } | 338 } |
351 | 339 |
352 restart_in_chroot_if_needed "$@" | 340 restart_in_chroot_if_needed "$@" |
353 main "$@" | 341 main "$@" |
OLD | NEW |