diff options
author | Jan Tattermusch <jtattermusch@google.com> | 2018-01-31 22:35:17 +0100 |
---|---|---|
committer | Jan Tattermusch <jtattermusch@google.com> | 2018-01-31 22:35:17 +0100 |
commit | 18f27376c531e857d8fb946d758c81880023ed42 (patch) | |
tree | e79ac5445c57a4c6bd36497435c4c236c46b9b41 /test/cpp/microbenchmarks/fullstack_fixtures.h | |
parent | 382374eb6f373cb07b9b11371d6dda43138f0c26 (diff) |
avoid touching stats_ instance field before base constructor
Diffstat (limited to 'test/cpp/microbenchmarks/fullstack_fixtures.h')
-rw-r--r-- | test/cpp/microbenchmarks/fullstack_fixtures.h | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/test/cpp/microbenchmarks/fullstack_fixtures.h b/test/cpp/microbenchmarks/fullstack_fixtures.h index 7e93cbd74d..00ec72deee 100644 --- a/test/cpp/microbenchmarks/fullstack_fixtures.h +++ b/test/cpp/microbenchmarks/fullstack_fixtures.h @@ -249,10 +249,18 @@ class InProcessCHTTP2 : public EndpointPairFixture { public: InProcessCHTTP2(Service* service, const FixtureConfiguration& fixture_configuration = - FixtureConfiguration()) - : EndpointPairFixture(service, MakeEndpoints(), fixture_configuration) {} - - virtual ~InProcessCHTTP2() { grpc_passthru_endpoint_stats_destroy(stats_); } + FixtureConfiguration(), + grpc_passthru_endpoint_stats* stats = + grpc_passthru_endpoint_stats_create()) + : EndpointPairFixture(service, MakeEndpoints(stats), + fixture_configuration), + stats_(stats) {} + + virtual ~InProcessCHTTP2() { + if (stats_ != nullptr) { + grpc_passthru_endpoint_stats_destroy(stats_); + } + } void AddToLabel(std::ostream& out, benchmark::State& state) { EndpointPairFixture::AddToLabel(out, state); @@ -264,15 +272,10 @@ class InProcessCHTTP2 : public EndpointPairFixture { private: grpc_passthru_endpoint_stats* stats_; - grpc_endpoint_pair MakeEndpoints() { - stats_ = grpc_passthru_endpoint_stats_create(); // is there a better way to - // initialize stats_ and - // pass MakeEndpoints's - // return value to base - // constructor? + static grpc_endpoint_pair MakeEndpoints(grpc_passthru_endpoint_stats* stats) { grpc_endpoint_pair p; grpc_passthru_endpoint_create(&p.client, &p.server, Library::get().rq(), - stats_); + stats); return p; } }; |