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: ...@@ -491,11 +491,11 @@ public:
virtual void Run(State& st) { virtual void Run(State& st) {
this->SetUp(st); this->SetUp(st);
this->BenchmarkCase(st); this->BenchmarkCase(st);
this->TearDown(); this->TearDown(st);
} }
virtual void SetUp(const State&) {} virtual void SetUp(const State&) {}
virtual void TearDown() {} virtual void TearDown(const State&) {}
protected: protected:
virtual void BenchmarkCase(State&) = 0; virtual void BenchmarkCase(State&) = 0;
......
...@@ -6,14 +6,18 @@ ...@@ -6,14 +6,18 @@
class MyFixture : public ::benchmark::Fixture { class MyFixture : public ::benchmark::Fixture {
public: public:
void SetUp(const ::benchmark::State&) { void SetUp(const ::benchmark::State& state) {
if (state.thread_index == 0) {
assert(data.get() == nullptr); assert(data.get() == nullptr);
data.reset(new int(42)); data.reset(new int(42));
} }
}
void TearDown() { void TearDown(const ::benchmark::State& state) {
if (state.thread_index == 0) {
assert(data.get() != nullptr); assert(data.get() != nullptr);
data.release(); data.reset();
}
} }
~MyFixture() { ~MyFixture() {
...@@ -32,10 +36,17 @@ BENCHMARK_F(MyFixture, Foo)(benchmark::State& st) { ...@@ -32,10 +36,17 @@ BENCHMARK_F(MyFixture, Foo)(benchmark::State& st) {
} }
BENCHMARK_DEFINE_F(MyFixture, Bar)(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()) { while (st.KeepRunning()) {
assert(data.get() != nullptr);
assert(*data == 42);
} }
st.SetItemsProcessed(st.range_x()); st.SetItemsProcessed(st.range_x());
} }
BENCHMARK_REGISTER_F(MyFixture, Bar)->Arg(42); BENCHMARK_REGISTER_F(MyFixture, Bar)->Arg(42);
BENCHMARK_REGISTER_F(MyFixture, Bar)->Arg(42)->ThreadPerCpu();
BENCHMARK_MAIN() BENCHMARK_MAIN()
...@@ -36,7 +36,7 @@ class MapFixture : public ::benchmark::Fixture { ...@@ -36,7 +36,7 @@ class MapFixture : public ::benchmark::Fixture {
m = ConstructRandomMap(st.range_x()); m = ConstructRandomMap(st.range_x());
} }
void TearDown() { void TearDown(const ::benchmark::State&) {
m.clear(); 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