aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/cpp/microbenchmarks/fullstack_fixtures.h
diff options
context:
space:
mode:
authorGravatar Jan Tattermusch <jtattermusch@google.com>2018-01-31 22:35:17 +0100
committerGravatar Jan Tattermusch <jtattermusch@google.com>2018-01-31 22:35:17 +0100
commit18f27376c531e857d8fb946d758c81880023ed42 (patch)
treee79ac5445c57a4c6bd36497435c4c236c46b9b41 /test/cpp/microbenchmarks/fullstack_fixtures.h
parent382374eb6f373cb07b9b11371d6dda43138f0c26 (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.h25
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;
}
};