Modifying after review comments.
diff --git a/tools/gce_setup/grpc_docker.sh b/tools/gce_setup/grpc_docker.sh
index 61a6afd..318bfc8 100755
--- a/tools/gce_setup/grpc_docker.sh
+++ b/tools/gce_setup/grpc_docker.sh
@@ -731,6 +731,44 @@
done
}
+# Runs a test command on a docker instance
+#
+# The test command is issued via gcloud compute
+#
+# There are 3 possible results:
+# 1. successful return code and finished within 60 seconds
+# 2. failure return code and finished within 60 seconds
+# 3. command does not return within 60 seconds, in which case it will be killed.
+test_runner() {
+ local project_opt="--project $grpc_project"
+ local zone_opt="--zone $grpc_zone"
+ local ssh_cmd="bash -l -c \"$cmd\""
+ echo "will run:"
+ echo " $ssh_cmd"
+ echo "on $host"
+ [[ $dry_run == 1 ]] && return 0 # don't run the command on a dry run
+ gcloud compute $project_opt ssh $zone_opt $host --command "$cmd" &
+ PID=$!
+ echo "pid is $PID"
+ for x in {0..5}
+ do
+ if ps -p $PID
+ then
+ # test command has not returned and 60 seconds timeout has not reached
+ sleep 10
+ else
+ # test command has returned, return the return code from the test command
+ wait $PID
+ local ret=$?
+ echo " test runner return $ret before timeout"
+ return $ret
+ fi
+ done
+ kill $PID
+ echo "test got killed by timeout return as failure"
+ return 1
+}
+
# Runs a test command on a docker instance.
#
# call-seq:
@@ -790,33 +828,7 @@
cmd=$($grpc_gen_test_cmd $flags)
[[ -n $cmd ]] || return 1
- local project_opt="--project $grpc_project"
- local zone_opt="--zone $grpc_zone"
- local ssh_cmd="bash -l -c \"$cmd\""
- echo "will run:"
- echo " $ssh_cmd"
- echo "on $host"
- [[ $dry_run == 1 ]] && return 0 # don't run the command on a dry run
- gcloud compute $project_opt ssh $zone_opt $host --command "$cmd" &
- PID=$!
- echo "pid is $PID"
- for x in {0..5}
- do
- if ps -p $PID
- then
- sleep 10
- else
- echo "normal return before timeout"
- # looks like the test is done
- wait $PID
- local ret=$?
- echo " return $ret"
- return $ret
- fi
- done
- kill $PID
- echo "got killed by timeout not normal"
- return 1
+ test_runner
}
# Runs a test command on a docker instance.
@@ -855,33 +867,7 @@
cmd=$($grpc_gen_test_cmd $test_case_flag)
[[ -n $cmd ]] || return 1
- local project_opt="--project $grpc_project"
- local zone_opt="--zone $grpc_zone"
- local ssh_cmd="bash -l -c \"$cmd\""
- echo "will run:"
- echo " $ssh_cmd"
- echo "on $host"
- [[ $dry_run == 1 ]] && return 0 # don't run the command on a dry run
- gcloud compute $project_opt ssh $zone_opt $host --command "$cmd" &
- PID=$!
- echo "pid is $PID"
- for x in {0..5}
- do
- if ps -p $PID
- then
- sleep 10
- else
- echo "normal return before timeout"
- # looks like the test is done
- wait $PID
- local ret=$?
- echo " return $ret"
- return $ret
- fi
- done
- kill $PID
- echo "got killed by timeout not normal"
- return 1
+ test_runner
}
# Runs a test command on a docker instance.
@@ -920,14 +906,7 @@
cmd=$($grpc_gen_test_cmd $test_case_flag)
[[ -n $cmd ]] || return 1
- local project_opt="--project $grpc_project"
- local zone_opt="--zone $grpc_zone"
- local ssh_cmd="bash -l -c \"$cmd\""
- echo "will run:"
- echo " $ssh_cmd"
- echo "on $host"
- [[ $dry_run == 1 ]] && return 0 # don't run the command on a dry run
- gcloud compute $project_opt ssh $zone_opt $host --command "$cmd"
+ test_runner
}
# constructs the full dockerized ruby interop test cmd.