aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Mark D. Roth <roth@google.com>2016-11-29 09:53:02 -0800
committerGravatar GitHub <noreply@github.com>2016-11-29 09:53:02 -0800
commit0d8c9cf1d54e8983e99bf2c1276e85b799f5fda2 (patch)
tree518e3f66a2a559017dd14b6134052096ea42c3ae /test
parent54c607dcc121e9974ffb9bf90848fb4a75c21dcf (diff)
parentc56d3ebd7eadca14322230d97fdddedd9579f41a (diff)
Merge pull request #8868 from markdroth/fixit_qps
Improve subproccess cleanup in json_run_localhost.
Diffstat (limited to 'test')
-rw-r--r--test/cpp/qps/json_run_localhost.cc22
1 files changed, 20 insertions, 2 deletions
diff --git a/test/cpp/qps/json_run_localhost.cc b/test/cpp/qps/json_run_localhost.cc
index 74e40fbf1a..106509ab83 100644
--- a/test/cpp/qps/json_run_localhost.cc
+++ b/test/cpp/qps/json_run_localhost.cc
@@ -50,6 +50,18 @@ std::string as_string(const T& val) {
return out.str();
}
+static void LogStatus(int status, const char* label) {
+ if (WIFEXITED(status)) {
+ gpr_log(GPR_INFO, "%s: subprocess exited with status %d", label,
+ WEXITSTATUS(status));
+ } else if (WIFSIGNALED(status)) {
+ gpr_log(GPR_INFO, "%s: subprocess terminated with signal %d", label,
+ WTERMSIG(status));
+ } else {
+ gpr_log(GPR_INFO, "%s: unknown subprocess status: %d", label, status);
+ }
+}
+
int main(int argc, char** argv) {
typedef std::unique_ptr<SubProcess> SubProcessPtr;
std::vector<SubProcessPtr> jobs;
@@ -75,12 +87,18 @@ int main(int argc, char** argv) {
for (int i = 1; i < argc; i++) {
args.push_back(argv[i]);
}
- GPR_ASSERT(SubProcess(args).Join() == 0);
+ int status = SubProcess(args).Join();
+ if (status != 0) {
+ LogStatus(status, "driver");
+ }
for (auto it = jobs.begin(); it != jobs.end(); ++it) {
(*it)->Interrupt();
}
for (auto it = jobs.begin(); it != jobs.end(); ++it) {
- (*it)->Join();
+ status = (*it)->Join();
+ if (status != 0) {
+ LogStatus(status, "worker");
+ }
}
}