23#include <dhcpsrv/testutils/mysql_schema.h>
40 void SetUp(::benchmark::State
const&)
override {
41 destroyMySQLSchema(
false);
42 createMySQLSchema(
false);
44 HostDataSourceFactory::destroy();
45 HostDataSourceFactory::create(validMySQLConnectionString());
47 cerr <<
"ERROR: unable to open database" << endl;
50 hdsptr_ = HostDataSourceFactory::getHostDataSourcePtr();
54 void TearDown(::benchmark::State
const&)
override {
58 cerr <<
"WARNING: rollback has failed, this is expected if database"
59 " is opened in read-only mode, continuing..."
62 HostDataSourceFactory::destroy();
63 destroyMySQLSchema(
false);
69BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, insertHosts)(benchmark::State& state) {
70 const size_t host_count = state.range(0);
71 while (state.KeepRunning()) {
72 setUp(state, host_count);
79BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, updateHosts)(benchmark::State& state) {
80 const size_t host_count = state.range(0);
81 while (state.KeepRunning()) {
82 setUpWithInserts(state, host_count);
89BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, getAllByHWAddrDuid)(benchmark::State& state) {
90 const size_t host_count = state.range(0);
91 while (state.KeepRunning()) {
92 setUpWithInserts(state, host_count);
93 benchGetAllByHWAddrDuid();
99BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, getAll)(benchmark::State& state) {
100 const size_t host_count = state.range(0);
101 while (state.KeepRunning()) {
102 setUpWithInserts(state, host_count);
109BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, getAllv4Resv)(benchmark::State& state) {
110 const size_t host_count = state.range(0);
111 while (state.KeepRunning()) {
112 setUpWithInserts(state, host_count);
119BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, get4BySubnetHWAddrDuid)(benchmark::State& state) {
120 const size_t host_count = state.range(0);
121 while (state.KeepRunning()) {
122 setUpWithInserts(state, host_count);
123 benchGet4BySubnetHWAddrDuid();
129BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, get4IdentifierSubnetId)(benchmark::State& state) {
130 const size_t host_count = state.range(0);
131 while (state.KeepRunning()) {
132 setUpWithInserts(state, host_count);
133 benchGet4IdentifierSubnetId();
139BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, get4SubnetIdv4Resrv)(benchmark::State& state) {
140 const size_t host_count = state.range(0);
141 while (state.KeepRunning()) {
142 setUpWithInserts(state, host_count);
143 benchGet4SubnetIdv4Resrv();
149BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, get6SubnetIdDuidHWAddr)(benchmark::State& state) {
150 const size_t host_count = state.range(0);
151 while (state.KeepRunning()) {
152 setUpWithInserts(state, host_count);
153 benchGet6SubnetIdDuidHWAddr();
159BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, get6IdentifierSubnetId)(benchmark::State& state) {
160 const size_t host_count = state.range(0);
161 while (state.KeepRunning()) {
162 setUpWithInserts(state, host_count);
163 benchGet6IdentifierSubnetId();
169BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, get6SubnetIdAddr)(benchmark::State& state) {
170 const size_t host_count = state.range(0);
171 while (state.KeepRunning()) {
172 setUpWithInserts(state, host_count);
173 benchGet6SubnetIdAddr();
179BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, get6Prefix)(benchmark::State& state) {
180 const size_t host_count = state.range(0);
181 while (state.KeepRunning()) {
182 setUpWithInserts(state, host_count);
189BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, insertHosts)
194BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, updateHosts)
199BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, getAllByHWAddrDuid)
204BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, getAll)
209BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, getAllv4Resv)
214BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, get4BySubnetHWAddrDuid)
219BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, get4IdentifierSubnetId)
224BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, get4SubnetIdv4Resrv)
229BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, get6SubnetIdDuidHWAddr)
234BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, get6IdentifierSubnetId)
239BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, get6SubnetIdAddr)
244BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, get6Prefix)
Base fixture class for benchmarking host backends.
constexpr size_t MIN_HOST_COUNT
A minimum number of leases used in a benchmark.
constexpr benchmark::TimeUnit UNIT
A time unit used - all results to be expressed in us (microseconds)
constexpr size_t MAX_HOST_COUNT
A maximum number of leases used in a benchmark.