Add debug logging for process termination state.
diff --git a/test/cpp/qps/json_run_localhost.cc b/test/cpp/qps/json_run_localhost.cc
index 74e40fb..b36dbce 100644
--- a/test/cpp/qps/json_run_localhost.cc
+++ b/test/cpp/qps/json_run_localhost.cc
@@ -50,6 +50,18 @@
return out.str();
}
+static void LogStatus(int status) {
+ if (WIFEXITED(status)) {
+ gpr_log(GPR_INFO, "subprocess exited with status %d",
+ WEXITSTATUS(status));
+ } else if (WIFSIGNALED(status)) {
+ gpr_log(GPR_INFO, "subprocess terminated with signal %d",
+ WTERMSIG(status));
+ } else {
+ gpr_log(GPR_INFO, "unknown subprocess status: %d", status);
+ }
+}
+
int main(int argc, char** argv) {
typedef std::unique_ptr<SubProcess> SubProcessPtr;
std::vector<SubProcessPtr> jobs;
@@ -75,12 +87,21 @@
for (int i = 1; i < argc; i++) {
args.push_back(argv[i]);
}
- GPR_ASSERT(SubProcess(args).Join() == 0);
+gpr_log(GPR_INFO, "calling Join() on driver");
+ int status = SubProcess(args).Join();
+ if (status != 0) {
+ LogStatus(status);
+ GPR_ASSERT(status == 0);
+ }
for (auto it = jobs.begin(); it != jobs.end(); ++it) {
(*it)->Interrupt();
}
for (auto it = jobs.begin(); it != jobs.end(); ++it) {
- (*it)->Join();
+gpr_log(GPR_INFO, "calling Join() on job");
+ status = (*it)->Join();
+ if (status != 0) {
+ LogStatus(status);
+ }
}
}