Chromium Code Reviews| Index: src/scripts/run_remote_tests.sh |
| diff --git a/src/scripts/run_remote_tests.sh b/src/scripts/run_remote_tests.sh |
| index a323b89f77f98b151d54dc90375275be997988ef..2fb07a503f2a4afac3126db15f16cb323aaab706 100755 |
| --- a/src/scripts/run_remote_tests.sh |
| +++ b/src/scripts/run_remote_tests.sh |
| @@ -13,6 +13,7 @@ |
| . "$(dirname $0)/autotest_lib.sh" |
| . "$(dirname $0)/remote_access.sh" |
| +DEFINE_boolean build ${FLAGS_FALSE} "Build tests as well as running them" b |
| DEFINE_string chroot "${DEFAULT_CHROOT_DIR}" "alternate chroot location" c |
| DEFINE_boolean cleanup ${FLAGS_FALSE} "Clean up temp directory" |
| DEFINE_integer iterations 1 "Iterations to run every top level test" i |
| @@ -20,6 +21,8 @@ DEFINE_string prepackaged_autotest "" "Use this prepackaged autotest dir" |
| DEFINE_string results_dir_root "" "alternate root results directory" |
| DEFINE_boolean verbose ${FLAGS_FALSE} "Show verbose autoserv output" v |
| +RAN_ANY_TESTS=${FLAGS_FALSE} |
| + |
| # Check if our stdout is a tty |
| function is_a_tty() { |
| local stdout=$(readlink /proc/$$/fd/1) |
| @@ -48,7 +51,8 @@ function echo_color() { |
| } |
| function cleanup() { |
| - if [[ $FLAGS_cleanup -eq ${FLAGS_TRUE} ]]; then |
| + if [[ $FLAGS_cleanup -eq ${FLAGS_TRUE} ]] || \ |
| + [[ ${RAN_ANY_TESTS} -eq ${FLAGS_FALSE} ]]; then |
| rm -rf "${TMP}" |
| else |
| echo ">>> Details stored under ${TMP}" |
| @@ -119,6 +123,27 @@ function learn_board() { |
| } |
| +# Determine if a control is for a client or server test. Echos |
| +# either "server" or "client". |
| +# Arguments: |
| +# $1 - control file path |
| +function read_test_type() { |
| + local control_file=$1 |
| + # Assume a line starts with TEST_TYPE = |
| + local type=$(egrep '^[[:space:]]*TEST_TYPE[[:space:]]*=' "${control_file}" \ |
|
petkov
2010/03/29 21:37:38
You could use egrep -m1 instead of piping through
|
| + | head -1) |
| + if [[ -z "${type}" ]]; then |
| + echo_color "red" ">>> Unable to find TEST_TYPE line in ${control_file}" |
| + exit 1 |
| + fi |
| + type=$(python -c "${type}; print TEST_TYPE.lower()") |
| + if [[ "${type}" != "client" ]] && [[ "${type}" != "server" ]]; then |
| + echo_color "red" ">>> Unknown type of test (${type}) in ${control_file}" |
|
petkov
2010/03/29 21:37:38
Consider using die, warn, etc. from common.sh inst
|
| + exit 1 |
| + fi |
| + echo ${type} |
| +} |
| + |
| function main() { |
| cd $(dirname "$0") |
| @@ -167,7 +192,6 @@ function main() { |
| -name control \) | egrep -v "~$" | egrep "${test_request}") |
| if [[ -z "${finds}" ]]; then |
| echo_color "red" ">>> Cannot find match for \"${test_request}\"" |
| - FLAGS_cleanup=${FLAGS_TRUE} |
| exit 1 |
| fi |
| local matches=$(echo "${finds}" | wc -l) |
| @@ -181,7 +205,6 @@ function main() { |
| echo "" |
| echo ">>> Disambiguate by copy-and-pasting the whole path above" \ |
| "instead of passing \"${test_request}\"." |
| - FLAGS_cleanup=${FLAGS_TRUE} |
| exit 1 |
| fi |
| for i in $(seq 1 $FLAGS_iterations); do |
| @@ -190,6 +213,12 @@ function main() { |
| done |
| echo "" |
| + |
| + if [[ -z "${control_files_to_run}" ]]; then |
| + echo_color "red" ">>> Found no control files" |
| + exit 1 |
| + fi |
| + |
| echo_color "yellow" ">>> Running the following control files:" |
| for CONTROL_FILE in ${control_files_to_run}; do |
| echo_color "yellow" " * " "${CONTROL_FILE}" |
| @@ -201,20 +230,47 @@ function main() { |
| mkdir -p "${FLAGS_results_dir_root}" |
| + if [[ ${FLAGS_build} -eq ${FLAGS_TRUE} ]]; then |
| + # Create a list of files to build based on all the client tests |
| + # the user has specified. If they have specified at least one |
| + # that is a server test, offer to build all client tests since |
| + # it's quite hard to know what client tests a server test might |
| + # use. |
| + local build_param="" |
| + for control_file in ${control_files_to_run}; do |
| + control_file=$(remove_quotes "${control_file}") |
| + local type=$(read_test_type "${control_file}") |
| + if [[ "${type}" == "server" ]]; then |
| + build_param="" |
| + break |
| + fi |
| + if [[ -n "${build_param}" ]]; then |
| + build_param="${build_param}," |
| + fi |
| + local simple_path=$(basename $(dirname $control_file)) |
| + build_param="${build_param}${simple_path}" |
|
ericli
2010/03/29 21:33:22
I think it needs to be seperated by comma, if ther
|
| + done |
| + local enter_chroot="" |
| + if [[ ${INSIDE_CHROOT} -eq 0 ]]; then |
| + enter_chroot="./enter_chroot.sh --" |
| + fi |
| + if [[ -n "${build_param}" ]]; then |
| + build_param="--build=${build_param}" |
| + fi |
| + echo "" |
| + echo_color "yellow" ">>> Building autotest: " \ |
| + "./build_autotest.sh --board=${FLAGS_board} ${build_param}" |
| + ${enter_chroot} ./build_autotest.sh --board=${FLAGS_board} ${build_param} |
| + fi |
| + |
| for control_file in ${control_files_to_run}; do |
| # Assume a line starts with TEST_TYPE = |
| control_file=$(remove_quotes "${control_file}") |
| - local type=$(egrep '^[[:space:]]*TEST_TYPE[[:space:]]*=' "${control_file}" \ |
| - | head -1) |
| - if [[ -z "${type}" ]]; then |
| - echo_color "red" ">>> Unable to find TEST_TYPE line in ${control_file}" |
| - exit 1 |
| - fi |
| - type=$(python -c "${type}; print TEST_TYPE.lower()") |
| + local type=$(read_test_type "${control_file}") |
| local option |
| - if [ "${type}" == "client" ]; then |
| + if [[ "${type}" == "client" ]]; then |
| option="-c" |
| - elif [ "${type}" == "server" ]; then |
| + elif [[ "${type}" == "server" ]]; then |
| option="-s" |
| else |
| echo_color "red" ">>> Unknown type of test (${type}) in ${control_file}" |
| @@ -231,6 +287,7 @@ function main() { |
| verbose="--verbose" |
| fi |
| + RAN_ANY_TESTS=${FLAGS_TRUE} |
| ${autoserv} -m "${FLAGS_remote}" "${option}" "${control_file}" \ |
| -r "${results_dir}" ${verbose} |
| local test_status="${results_dir}/status.log" |