Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: src/scripts/run_remote_tests.sh

Issue 1603004: remove build_autotest.sh and change run_remote_tests.sh to use new autotest script. (Closed)
Patch Set: patch Created 10 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/scripts/build_autotest.sh ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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.
11 11
12 . "$(dirname $0)/common.sh" 12 . "$(dirname $0)/common.sh"
13 . "$(dirname $0)/autotest_lib.sh"
14 . "$(dirname $0)/remote_access.sh" 13 . "$(dirname $0)/remote_access.sh"
15 14
16 DEFINE_boolean build ${FLAGS_FALSE} "Build tests as well as running them" b 15 get_default_board
16
17 DEFINE_string board "$DEFAULT_BOARD" \
18 "The board for which you are building autotest"
17 DEFINE_string chroot "${DEFAULT_CHROOT_DIR}" "alternate chroot location" c 19 DEFINE_string chroot "${DEFAULT_CHROOT_DIR}" "alternate chroot location" c
18 DEFINE_boolean cleanup ${FLAGS_FALSE} "Clean up temp directory" 20 DEFINE_boolean cleanup ${FLAGS_FALSE} "Clean up temp directory"
19 DEFINE_integer iterations 1 "Iterations to run every top level test" i 21 DEFINE_integer iterations 1 "Iterations to run every top level test" i
20 DEFINE_string prepackaged_autotest "" "Use this prepackaged autotest dir" 22 DEFINE_string prepackaged_autotest "" "Use this prepackaged autotest dir"
21 DEFINE_string results_dir_root "" "alternate root results directory" 23 DEFINE_string results_dir_root "" "alternate root results directory"
22 DEFINE_boolean verbose ${FLAGS_FALSE} "Show verbose autoserv output" v 24 DEFINE_boolean verbose ${FLAGS_FALSE} "Show verbose autoserv output" v
23 25
24 RAN_ANY_TESTS=${FLAGS_FALSE} 26 RAN_ANY_TESTS=${FLAGS_FALSE}
25 27
26 # Check if our stdout is a tty 28 # Check if our stdout is a tty
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 144
143 if [[ -z "${FLAGS_ARGV}" ]]; then 145 if [[ -z "${FLAGS_ARGV}" ]]; then
144 echo "Please specify tests to run. For example:" 146 echo "Please specify tests to run. For example:"
145 echo " $0 --remote=MyMachine BootPerfServer" 147 echo " $0 --remote=MyMachine BootPerfServer"
146 exit 1 148 exit 1
147 fi 149 fi
148 150
149 set -e 151 set -e
150 152
151 # Set global TMP for remote_access.sh's sake 153 # Set global TMP for remote_access.sh's sake
152 TMP=$(mktemp -d /tmp/run_remote_tests.XXXX) 154 if [[ ${INSIDE_CHROOT} -eq 0 ]]
155 then
156 TMP=$(mktemp -d ${FLAGS_chroot}/tmp/run_remote_tests.XXXX)
157 TMP_INSIDE_CHROOT=$(echo ${TMP#${FLAGS_chroot}})
158 else
159 TMP=$(mktemp -d /tmp/run_remote_tests.XXXX)
160 TMP_INSIDE_CHROOT=${TMP}
161 fi
153 162
154 trap cleanup EXIT 163 trap cleanup EXIT
155 164
156 remote_access_init 165 remote_access_init
157 166
158 local autotest_dir="" 167 local autotest_dir=""
159 if [[ -z "${FLAGS_prepackaged_autotest}" ]]; then 168 if [[ -z "${FLAGS_prepackaged_autotest}" ]]; then
160 learn_board 169 learn_board
161 # Always copy into installed autotest directory. This way if a user 170 autotest_dir="${GCLIENT_ROOT}/src/third_party/autotest/files"
162 # is just modifying scripts, they take effect without having to wait
163 # for the laborious build_autotest.sh command.
164 local original="${GCLIENT_ROOT}/src/third_party/autotest/files"
165 autotest_dir="/build/${FLAGS_board}/usr/local/autotest"
166 if [[ ${INSIDE_CHROOT} -eq 0 ]]; then
167 autotest_dir="${FLAGS_chroot}/${autotest_dir}"
168 fi
169 update_chroot_autotest "${original}" "${autotest_dir}"
170 else 171 else
171 autotest_dir="${FLAGS_prepackaged_autotest}" 172 autotest_dir="${FLAGS_prepackaged_autotest}"
172 fi 173 fi
173 174
174 local autoserv="${autotest_dir}/server/autoserv"
175
176 local control_files_to_run="" 175 local control_files_to_run=""
177 176
178 # Now search for tests which unambiguously include the given identifier 177 # Now search for tests which unambiguously include the given identifier
179 local search_path=$(echo ${autotest_dir}/{client,server}/{tests,site_tests}) 178 local search_path=$(echo {client,server}/{tests,site_tests})
179 pushd ${autotest_dir} > /dev/null
180 for test_request in $FLAGS_ARGV; do 180 for test_request in $FLAGS_ARGV; do
181 test_request=$(remove_quotes "${test_request}") 181 test_request=$(remove_quotes "${test_request}")
182 ! finds=$(find ${search_path} -maxdepth 2 -type f \( -name control.\* -or \ 182 ! finds=$(find ${search_path} -maxdepth 2 -type f \( -name control.\* -or \
183 -name control \) | egrep -v "~$" | egrep "${test_request}") 183 -name control \) | egrep -v "~$" | egrep "${test_request}")
184 if [[ -z "${finds}" ]]; then 184 if [[ -z "${finds}" ]]; then
185 echo_color "red" ">>> Cannot find match for \"${test_request}\"" 185 echo_color "red" ">>> Cannot find match for \"${test_request}\""
186 exit 1 186 exit 1
187 fi 187 fi
188 local matches=$(echo "${finds}" | wc -l) 188 local matches=$(echo "${finds}" | wc -l)
189 if [[ ${matches} -gt 1 ]]; then 189 if [[ ${matches} -gt 1 ]]; then
190 echo "" 190 echo ""
191 echo_color "red" \ 191 echo_color "red" \
192 ">>> \"${test_request}\" is ambiguous. These control file paths match:" 192 ">>> \"${test_request}\" is ambiguous. These control file paths match:"
193 for FIND in ${finds}; do 193 for FIND in ${finds}; do
194 echo_color "red" " * " "${FIND}" 194 echo_color "red" " * " "${FIND}"
195 done 195 done
196 echo "" 196 echo ""
197 echo ">>> Disambiguate by copy-and-pasting the whole path above" \ 197 echo ">>> Disambiguate by copy-and-pasting the whole path above" \
198 "instead of passing \"${test_request}\"." 198 "instead of passing \"${test_request}\"."
199 exit 1 199 exit 1
200 fi 200 fi
201 for i in $(seq 1 $FLAGS_iterations); do 201 for i in $(seq 1 $FLAGS_iterations); do
202 control_files_to_run="${control_files_to_run} '${finds}'" 202 control_files_to_run="${control_files_to_run} '${finds}'"
203 done 203 done
204 done 204 done
205 popd > /dev/null
205 206
206 echo "" 207 echo ""
207 208
208 if [[ -z "${control_files_to_run}" ]]; then 209 if [[ -z "${control_files_to_run}" ]]; then
209 echo_color "red" ">>> Found no control files" 210 echo_color "red" ">>> Found no control files"
210 exit 1 211 exit 1
211 fi 212 fi
212 213
213 echo_color "yellow" ">>> Running the following control files:" 214 echo_color "yellow" ">>> Running the following control files:"
214 for CONTROL_FILE in ${control_files_to_run}; do 215 for CONTROL_FILE in ${control_files_to_run}; do
215 echo_color "yellow" " * " "${CONTROL_FILE}" 216 echo_color "yellow" " * " "${CONTROL_FILE}"
216 done 217 done
217 218
218 if [[ -z "${FLAGS_results_dir_root}" ]]; then 219 if [[ -z "${FLAGS_results_dir_root}" ]]; then
219 FLAGS_results_dir_root="${TMP}" 220 FLAGS_results_dir_root="${TMP_INSIDE_CHROOT}"
220 fi 221 fi
221 222
222 mkdir -p "${FLAGS_results_dir_root}" 223 mkdir -p "${FLAGS_results_dir_root}"
223 224
224 if [[ ${FLAGS_build} -eq ${FLAGS_TRUE} ]]; then
225 # Create a list of files to build based on all the client tests
226 # the user has specified. If they have specified at least one
227 # that is a server test, offer to build all client tests since
228 # it's quite hard to know what client tests a server test might
229 # use.
230 local build_param=""
231 for control_file in ${control_files_to_run}; do
232 control_file=$(remove_quotes "${control_file}")
233 local type=$(read_test_type "${control_file}")
234 if [[ "${type}" == "server" ]]; then
235 build_param=""
236 break
237 fi
238 if [[ -n "${build_param}" ]]; then
239 build_param="${build_param},"
240 fi
241 local simple_path=$(basename $(dirname $control_file))
242 build_param="${build_param}${simple_path}"
243 done
244 local enter_chroot=""
245 if [[ ${INSIDE_CHROOT} -eq 0 ]]; then
246 enter_chroot="./enter_chroot.sh --"
247 fi
248 if [[ -n "${build_param}" ]]; then
249 build_param="--build=${build_param}"
250 fi
251 echo ""
252 echo_color "yellow" ">>> Building " \
253 "./build_autotest.sh --board=${FLAGS_board} ${build_param}"
254 ${enter_chroot} ./build_autotest.sh --board=${FLAGS_board} ${build_param}
255 fi
256
257 for control_file in ${control_files_to_run}; do 225 for control_file in ${control_files_to_run}; do
258 # Assume a line starts with TEST_TYPE = 226 # Assume a line starts with TEST_TYPE =
259 control_file=$(remove_quotes "${control_file}") 227 control_file=$(remove_quotes "${control_file}")
260 local type=$(read_test_type "${control_file}") 228 local type=$(read_test_type "${autotest_dir}/${control_file}")
261 local option 229 local option
262 if [[ "${type}" == "client" ]]; then 230 if [[ "${type}" == "client" ]]; then
263 option="-c" 231 option="-c"
264 else 232 else
265 option="-s" 233 option="-s"
266 fi 234 fi
267 echo "" 235 echo ""
268 echo_color "yellow" ">>> Running ${type} test " ${control_file} 236 echo_color "yellow" ">>> Running ${type} test " ${control_file}
269 local short_name=$(basename $(dirname "${control_file}")) 237 local short_name=$(basename $(dirname "${control_file}"))
270 local results_dir_name="${short_name}" 238 local results_dir_name="${short_name}"
271 local results_dir="${FLAGS_results_dir_root}/${results_dir_name}" 239 local results_dir="${TMP_INSIDE_CHROOT}/${results_dir_name}"
272 rm -rf "${results_dir}" 240 rm -rf "${results_dir}"
273 local verbose="" 241 local verbose=""
274 if [[ ${FLAGS_verbose} -eq $FLAGS_TRUE ]]; then 242 if [[ ${FLAGS_verbose} -eq $FLAGS_TRUE ]]; then
275 verbose="--verbose" 243 verbose="--verbose"
276 fi 244 fi
277 245
278 RAN_ANY_TESTS=${FLAGS_TRUE} 246 RAN_ANY_TESTS=${FLAGS_TRUE}
279 ${autoserv} -m "${FLAGS_remote}" "${option}" "${control_file}" \ 247
280 -r "${results_dir}" ${verbose} 248 local enter_chroot=""
249 local autotest="${GCLIENT_ROOT}/src/scripts/autotest"
250 if [[ ${INSIDE_CHROOT} -eq 0 ]]; then
251 enter_chroot="./enter_chroot.sh --"
252 autotest="./autotest"
253 fi
254
255 ${enter_chroot} ${autotest} --board "${FLAGS_board}" -m "${FLAGS_remote}" \
256 "${option}" "${control_file}" -r "${results_dir}" ${verbose}
257
258 results_dir="${TMP}/${results_dir_name}"
281 local test_status="${results_dir}/status.log" 259 local test_status="${results_dir}/status.log"
282 local test_result_dir="${results_dir}/${short_name}" 260 local test_result_dir="${results_dir}/${short_name}"
283 local keyval_file="${test_result_dir}/results/keyval" 261 local keyval_file="${test_result_dir}/results/keyval"
284 echo "" 262 echo ""
285 if is_successful_test "${test_status}"; then 263 if is_successful_test "${test_status}"; then
286 echo_color "green" ">>> SUCCESS: ${control_file}" 264 echo_color "green" ">>> SUCCESS: ${control_file}"
287 if [[ -f "${keyval_file}" ]]; then 265 if [[ -f "${keyval_file}" ]]; then
288 echo ">>> Keyval was:" 266 echo ">>> Keyval was:"
289 cat "${keyval_file}" 267 cat "${keyval_file}"
290 fi 268 fi
291 else 269 else
292 echo_color "red" ">>> FAILED: ${control_file}" 270 echo_color "red" ">>> FAILED: ${control_file}"
293 cat "${test_status}" 271 cat "${test_status}"
294 fi 272 fi
295 local end_time=$(date '+%s') 273 local end_time=$(date '+%s')
296 done 274 done
297 } 275 }
298 276
299 main $@ 277 main $@
OLDNEW
« no previous file with comments | « src/scripts/build_autotest.sh ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698