Commit 53aca9bc by Mohamed Amin JABRI

Pass const State to Fixture::TearDown. Fix memory leak in fixture_test

parent c5b80ff1
......@@ -491,11 +491,11 @@ public:
virtual void Run(State& st) {
this->SetUp(st);
this->BenchmarkCase(st);
this->TearDown();
this->TearDown(st);
}
virtual void SetUp(const State&) {}
virtual void TearDown() {}
virtual void TearDown(const State&) {}
protected:
virtual void BenchmarkCase(State&) = 0;
......
......@@ -6,14 +6,18 @@
class MyFixture : public ::benchmark::Fixture {
public:
void SetUp(const ::benchmark::State&) {
assert(data.get() == nullptr);
data.reset(new int(42));
void SetUp(const ::benchmark::State& state) {
if (state.thread_index == 0) {
assert(data.get() == nullptr);
data.reset(new int(42));
}
}
void TearDown() {
assert(data.get() != nullptr);
data.release();
void TearDown(const ::benchmark::State& state) {
if (state.thread_index == 0) {
assert(data.get() != nullptr);
data.reset();
}
}
~MyFixture() {
......@@ -32,10 +36,17 @@ BENCHMARK_F(MyFixture, Foo)(benchmark::State& st) {
}
BENCHMARK_DEFINE_F(MyFixture, Bar)(benchmark::State& st) {
if (st.thread_index == 0) {
assert(data.get() != nullptr);
assert(*data == 42);
}
while (st.KeepRunning()) {
assert(data.get() != nullptr);
assert(*data == 42);
}
st.SetItemsProcessed(st.range_x());
}
BENCHMARK_REGISTER_F(MyFixture, Bar)->Arg(42);
BENCHMARK_REGISTER_F(MyFixture, Bar)->Arg(42)->ThreadPerCpu();
BENCHMARK_MAIN()
......@@ -36,7 +36,7 @@ class MapFixture : public ::benchmark::Fixture {
m = ConstructRandomMap(st.range_x());
}
void TearDown() {
void TearDown(const ::benchmark::State&) {
m.clear();
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment