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

Unified Diff: remote_access.sh

Issue 6287001: Put wait around remote_reboot core code itself rather than around the ping. (Closed) Base URL: http://git.chromium.org/git/crosutils.git@master
Patch Set: readd comment Created 9 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remote_access.sh
diff --git a/remote_access.sh b/remote_access.sh
index 8b8abf7a4e2ecf790663b6431039684dc32fd263..45531f15526aa4f08327e5732f08b3bb0e0b1155 100644
--- a/remote_access.sh
+++ b/remote_access.sh
@@ -34,37 +34,8 @@ function remote_sh() {
return ${PIPESTATUS[0]}
}
-# Checks to see if pid $1 is running.
-function is_pid_running() {
- ps -p ${1} 2>&1 > /dev/null
-}
-
-# Wait function given an additional timeout argument.
-# $1 - pid to wait on.
-# $2 - timeout to wait for.
-function wait_with_timeout() {
- local pid=$1
- local timeout=$2
- local -r TIMEOUT_INC=1
- local current_timeout=0
- while is_pid_running ${pid} && [ ${current_timeout} -lt ${timeout} ]; do
- sleep ${TIMEOUT_INC}
- current_timeout=$((current_timeout + TIMEOUT_INC))
- done
- is_pid_running ${pid}
-}
-
-# Robust ping that will monitor ssh and not hang even if ssh hangs.
-function ping_ssh() {
- remote_sh "true" &
- local pid=$!
- wait_with_timeout ${pid} 5
- ! kill -9 ${pid} 2> /dev/null
-}
-
function remote_sh_allow_changed_host_key() {
rm -f $TMP_KNOWN_HOSTS
- ping_ssh
remote_sh "$@"
}
@@ -97,12 +68,29 @@ function learn_board() {
info "Target reports board is ${FLAGS_board}"
}
-function remote_reboot {
- info "Rebooting."
- remote_sh "touch /tmp/awaiting_reboot; reboot"
- local output_file
- output_file="${TMP}/output"
+# Checks to see if pid $1 is running.
+function is_pid_running() {
+ ps -p ${1} 2>&1 > /dev/null
+}
+# Wait function given an additional timeout argument.
+# $1 - pid to wait on.
+# $2 - timeout to wait for.
+function wait_with_timeout() {
+ local pid=$1
+ local timeout=$2
+ local -r TIMEOUT_INC=1
+ local current_timeout=0
+ while is_pid_running ${pid} && [ ${current_timeout} -lt ${timeout} ]; do
+ sleep ${TIMEOUT_INC}
+ current_timeout=$((current_timeout + TIMEOUT_INC))
+ done
+ ! is_pid_running ${pid}
+}
+
+# Checks to see if a machine has rebooted using the presence of a tmp file.
+function check_if_rebooted() {
+ local output_file="${TMP}/output"
while true; do
REMOTE_OUT=""
# This may fail while the machine is down so generate output and a
@@ -113,12 +101,23 @@ function remote_reboot {
if grep -q "0" "${output_file}"; then
if grep -q "1" "${output_file}"; then
info "Not yet rebooted"
+ sleep .5
else
info "Rebooted and responding"
break
fi
fi
- sleep .5
+ done
+}
+
+function remote_reboot() {
+ info "Rebooting."
+ remote_sh "touch /tmp/awaiting_reboot; reboot"
+ while true; do
+ check_if_rebooted &
+ local pid=$!
+ wait_with_timeout ${pid} 30 && break
+ ! kill -9 ${pid} 2> /dev/null
done
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698