13 #include <dhcpsrv/testutils/lease_file_io.h>
29 MemfileLeaseMgrBenchmark()
30 : io4_(
""), io6_(
"") {
38 void SetUp(::benchmark::State
const&)
override {
40 io4_ = LeaseFileIO(getLeaseFilePath(
"leasefile4_0.csv"));
41 io6_ = LeaseFileIO(getLeaseFilePath(
"leasefile6_0.csv"));
44 removeFiles(getLeaseFilePath(
"leasefile4_0.csv"));
45 removeFiles(getLeaseFilePath(
"leasefile6_0.csv"));
51 std::cerr <<
"ERROR: unable to start memfile backend." << std::endl;
60 void startBackend(Universe u) {
64 std::cerr <<
"*** ERROR: unable to create instance of the Memfile\n"
65 " lease database backend.\n";
81 static std::string getConfigString(Universe u) {
83 s <<
"type=memfile " << (u == V4 ?
"universe=4 " :
"universe=6 ") <<
"name="
84 << getLeaseFilePath(u == V4 ?
"leasefile4_0.csv" :
"leasefile6_0.csv")
95 static std::string getLeaseFilePath(
const std::string& filename) {
97 s << TEST_DATA_BUILDDIR <<
"/" << filename;
106 void removeFiles(
const std::string& base_name)
const {
123 void TearDown(::benchmark::State
const&)
override {
127 std::cerr <<
"WARNING: rollback has failed. This is surprising as "
128 "memfile doesn't support rollback." << std::endl;
134 removeFiles(getLeaseFilePath(
"leasefile4_0.csv"));
135 removeFiles(getLeaseFilePath(
"leasefile6_0.csv"));
146 BENCHMARK_DEFINE_F(MemfileLeaseMgrBenchmark, insertLeases4)(benchmark::State& state) {
147 const size_t lease_count = state.range(0);
148 while (state.KeepRunning()) {
149 setUp4(state, lease_count);
150 benchInsertLeases4();
155 BENCHMARK_DEFINE_F(MemfileLeaseMgrBenchmark, updateLeases4)(benchmark::State& state) {
156 const size_t lease_count = state.range(0);
157 while (state.KeepRunning()) {
158 setUpWithInserts4(state, lease_count);
159 benchUpdateLeases4();
164 BENCHMARK_DEFINE_F(MemfileLeaseMgrBenchmark, getLease4_address)(benchmark::State& state) {
165 const size_t lease_count = state.range(0);
166 while (state.KeepRunning()) {
167 setUpWithInserts4(state, lease_count);
168 benchGetLease4_address();
173 BENCHMARK_DEFINE_F(MemfileLeaseMgrBenchmark, getLease4_hwaddr)(benchmark::State& state) {
174 const size_t lease_count = state.range(0);
175 while (state.KeepRunning()) {
176 setUpWithInserts4(state, lease_count);
177 benchGetLease4_hwaddr();
183 BENCHMARK_DEFINE_F(MemfileLeaseMgrBenchmark, getLease4_hwaddr_subnetid)(benchmark::State& state) {
184 const size_t lease_count = state.range(0);
185 while (state.KeepRunning()) {
186 setUpWithInserts4(state, lease_count);
187 benchGetLease4_hwaddr_subnetid();
192 BENCHMARK_DEFINE_F(MemfileLeaseMgrBenchmark, getLease4_clientid)(benchmark::State& state) {
193 const size_t lease_count = state.range(0);
194 while (state.KeepRunning()) {
195 setUpWithInserts4(state, lease_count);
196 benchGetLease4_clientid();
202 BENCHMARK_DEFINE_F(MemfileLeaseMgrBenchmark, getLease4_clientid_subnetid)(benchmark::State& state) {
203 const size_t lease_count = state.range(0);
204 while (state.KeepRunning()) {
205 setUpWithInserts4(state, lease_count);
206 benchGetLease4_clientid_subnetid();
211 BENCHMARK_DEFINE_F(MemfileLeaseMgrBenchmark, getExpiredLeases4)(benchmark::State& state) {
212 const size_t lease_count = state.range(0);
213 while (state.KeepRunning()) {
214 setUpWithInserts4(state, lease_count);
215 benchGetExpiredLeases4();
220 BENCHMARK_DEFINE_F(MemfileLeaseMgrBenchmark, insertLeases6)(benchmark::State& state) {
221 const size_t lease_count = state.range(0);
222 while (state.KeepRunning()) {
223 setUp6(state, lease_count);
224 benchInsertLeases6();
229 BENCHMARK_DEFINE_F(MemfileLeaseMgrBenchmark, updateLeases6)(benchmark::State& state) {
230 const size_t lease_count = state.range(0);
231 while (state.KeepRunning()) {
232 setUpWithInserts6(state, lease_count);
233 benchUpdateLeases6();
238 BENCHMARK_DEFINE_F(MemfileLeaseMgrBenchmark, getLease6_type_address)(benchmark::State& state) {
239 const size_t lease_count = state.range(0);
240 while (state.KeepRunning()) {
241 setUpWithInserts6(state, lease_count);
242 benchGetLease6_type_address();
247 BENCHMARK_DEFINE_F(MemfileLeaseMgrBenchmark, getLease6_type_duid_iaid)(benchmark::State& state) {
248 const size_t lease_count = state.range(0);
249 while (state.KeepRunning()) {
250 setUpWithInserts6(state, lease_count);
251 benchGetLease6_type_duid_iaid();
257 BENCHMARK_DEFINE_F(MemfileLeaseMgrBenchmark, getLease6_type_duid_iaid_subnetid)
258 (benchmark::State& state) {
259 const size_t lease_count = state.range(0);
260 while (state.KeepRunning()) {
261 setUpWithInserts6(state, lease_count);
262 benchGetLease6_type_duid_iaid_subnetid();
267 BENCHMARK_DEFINE_F(MemfileLeaseMgrBenchmark, getExpiredLeases6)(benchmark::State& state) {
268 const size_t lease_count = state.range(0);
269 while (state.KeepRunning()) {
270 setUpWithInserts6(state, lease_count);
271 benchGetExpiredLeases6();
280 BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, insertLeases4)
284 BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, updateLeases4)
288 BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getLease4_address)
292 BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getLease4_hwaddr)
297 BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getLease4_hwaddr_subnetid)
301 BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getLease4_clientid)
305 BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getLease4_clientid_subnetid)
309 BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getExpiredLeases4)
313 BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, insertLeases6)
317 BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, updateLeases6)
321 BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getLease6_type_address)
325 BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getLease6_type_duid_iaid)
330 BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getLease6_type_duid_iaid_subnetid)
334 BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getExpiredLeases6)