aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2017-04-18 13:16:41 -0700
committerGravatar Craig Tiller <ctiller@google.com>2017-04-18 13:16:41 -0700
commite5e569540d72e3a84f418d78a97d4c9e9acfd021 (patch)
tree184bdda0d81007939ff538638da3ff54ff7b1456 /test
parentbe30e3f6d255f6ee293db0957dcbd3070820e125 (diff)
parent9354720625ee2193e3ea22546e13756204365cdd (diff)
Merge branch 'infinite_stream' into epex4
Diffstat (limited to 'test')
-rw-r--r--test/cpp/qps/client_sync.cc24
1 files changed, 16 insertions, 8 deletions
diff --git a/test/cpp/qps/client_sync.cc b/test/cpp/qps/client_sync.cc
index a020adde51..da17f6bf7b 100644
--- a/test/cpp/qps/client_sync.cc
+++ b/test/cpp/qps/client_sync.cc
@@ -153,16 +153,22 @@ class SynchronousStreamingClient final : public SynchronousClient {
StartThreads(num_threads_);
}
~SynchronousStreamingClient() {
+ std::vector<std::thread> cleanup_threads;
for (size_t i = 0; i < num_threads_; i++) {
- auto stream = &stream_[i];
- if (*stream) {
- (*stream)->WritesDone();
- Status s = (*stream)->Finish();
- if (!s.ok()) {
- gpr_log(GPR_ERROR, "Stream %" PRIuPTR " received an error %s", i,
- s.error_message().c_str());
+ cleanup_threads.emplace_back([this, i]() {
+ auto stream = &stream_[i];
+ if (*stream) {
+ (*stream)->WritesDone();
+ Status s = (*stream)->Finish();
+ if (!s.ok()) {
+ gpr_log(GPR_ERROR, "Stream %" PRIuPTR " received an error %s", i,
+ s.error_message().c_str());
+ }
}
- }
+ });
+ }
+ for (size_t i=0; i<num_threads_; i++) {
+ cleanup_threads[i].join();
}
}
@@ -179,6 +185,8 @@ class SynchronousStreamingClient final : public SynchronousClient {
if ((messages_per_stream_ != 0) &&
(++messages_issued_[thread_idx] < messages_per_stream_)) {
return true;
+ } else if (messages_per_stream_ == 0) {
+ return true;
} else {
// Fall through to the below resetting code after finish
}