)
AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([#include <sysrepo-cpp/Session.h>],
- [Connection("conn-name");])],
+ [AC_LANG_PROGRAM([#include <sysrepo-cpp/Session.hpp>],
+ [sysrepo::Connection("conn-name");])],
[AC_MSG_RESULT([checking for Sysrepo C++ bindings headers and library... yes])],
[AC_MSG_RESULT([checking for Sysrepo C++ bindings headers and library... no])
AC_MSG_ERROR([Needs Sysrepo C++ bindings (unable to find Sysrepo-ccp library. To get it, you need to compile sysrepo with -DGEN_CPP_BINDINGS=ON.])]
#include <config.h>
+#include <cql/testutils/cql_schema.h>
+
#include <dhcpsrv/benchmarks/generic_host_data_source_benchmark.h>
#include <dhcpsrv/benchmarks/parameters.h>
#include <dhcpsrv/host_data_source_factory.h>
-#include <dhcpsrv/testutils/cql_schema.h>
+#include <dhcpsrv/host_mgr.h>
+
#include <iostream>
-using namespace isc::dhcp::bench;
-using namespace isc::dhcp::test;
+using namespace isc::db::test;
using namespace isc::dhcp;
+using namespace isc::dhcp::bench;
using namespace std;
namespace {
/// @brief This is a fixture class used for benchmarking Cassandra host backend
-class CqlHostDataSourceBenchmark : public GenericHostDataSourceBenchmark {
-public:
-
+struct CqlHostDataSourceBenchmark : public GenericHostDataSourceBenchmark {
/// @brief Setup routine.
///
/// It cleans up schema and recreates tables, then instantiates HostMgr
destroyCqlSchema(false, true);
createCqlSchema(false, true);
try {
- HostDataSourceFactory::destroy();
- HostDataSourceFactory::create(validCqlConnectionString());
+ HostMgr::delBackend("cql");
+ HostMgr::addBackend(validCqlConnectionString());
} catch (...) {
cerr << "ERROR: unable to open database" << endl;
throw;
}
- hdsptr_ = HostDataSourceFactory::getHostDataSourcePtr();
+ hdsptr_ = HostMgr::instance().getHostDataSource();
+ }
+
+ void SetUp(::benchmark::State& s) override {
+ ::benchmark::State const& cs = s;
+ SetUp(cs);
}
/// @brief Cleans up after the test.
" is opened in read-only mode, continuing..."
<< endl;
}
- HostDataSourceFactory::destroy();
+ HostMgr::delBackend("cql");
destroyCqlSchema(false, true);
}
+
+ void TearDown(::benchmark::State& s) override {
+ ::benchmark::State const& cs = s;
+ TearDown(cs);
+ }
};
/// Defines steps necessary for conducting a benchmark that measures
}
}
-/// Defines steps necessary for conducting a benchmark that measures
-/// hosts retrieval by getAll(hw-addr, duid) call.
-BENCHMARK_DEFINE_F(CqlHostDataSourceBenchmark, getAllByHWAddrDuid)(benchmark::State& state) {
- const size_t host_count = state.range(0);
- while (state.KeepRunning()) {
- setUpWithInserts(state, host_count);
- benchGetAllByHWAddrDuid();
- }
-}
-
/// Defines steps necessary for conducting a benchmark that measures
/// hosts retrieval by getAll4(hw-addr, duid) call.
BENCHMARK_DEFINE_F(CqlHostDataSourceBenchmark, getAll)(benchmark::State& state) {
}
}
-/// Defines steps necessary for conducting a benchmark that measures
-/// hosts retrieval by get4(subnet-id, hw-addr, duid) call.
-BENCHMARK_DEFINE_F(CqlHostDataSourceBenchmark, get4BySubnetHWAddrDuid)(benchmark::State& state) {
- const size_t host_count = state.range(0);
- while (state.KeepRunning()) {
- setUpWithInserts(state, host_count);
- benchGet4BySubnetHWAddrDuid();
- }
-}
-
/// Defines steps necessary for conducting a benchmark that measures
/// hosts retrieval by get4(identifier-type, identifier, subnet-id) call.
BENCHMARK_DEFINE_F(CqlHostDataSourceBenchmark, get4IdentifierSubnetId)(benchmark::State& state) {
}
}
-/// Defines steps necessary for conducting a benchmark that measures
-/// hosts retrieval by get6(subnet-id, duid, hw-addr) call.
-BENCHMARK_DEFINE_F(CqlHostDataSourceBenchmark, get6SubnetIdDuidHWAddr)(benchmark::State& state) {
- const size_t host_count = state.range(0);
- while (state.KeepRunning()) {
- setUpWithInserts(state, host_count);
- benchGet6SubnetIdDuidHWAddr();
- }
-}
-
/// Defines steps necessary for conducting a benchmark that measures
/// hosts retrieval by get6(subnet-id, identifier-type, identifier) call.
BENCHMARK_DEFINE_F(CqlHostDataSourceBenchmark, get6IdentifierSubnetId)(benchmark::State& state) {
/// Defines parameters necessary for running a benchmark that measures
/// hosts insertion.
BENCHMARK_REGISTER_F(CqlHostDataSourceBenchmark, insertHosts)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts update.
BENCHMARK_REGISTER_F(CqlHostDataSourceBenchmark, updateHosts)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
-
-/// Defines parameters necessary for running a benchmark that measures
-/// hosts retrieval by getAll(hw-addr, duid) call.
-BENCHMARK_REGISTER_F(CqlHostDataSourceBenchmark, getAllByHWAddrDuid)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by getAll4(hw-addr, duid) call.
BENCHMARK_REGISTER_F(CqlHostDataSourceBenchmark, getAll)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by getAll(v4-reservation) call.
BENCHMARK_REGISTER_F(CqlHostDataSourceBenchmark, getAllv4Resv)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
-
-/// Defines parameters necessary for running a benchmark that measures
-/// hosts retrieval by get4(subnet-id, hw-addr, duid) call.
-BENCHMARK_REGISTER_F(CqlHostDataSourceBenchmark, get4BySubnetHWAddrDuid)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by get4(identifier-type, identifier, subnet-id) call.
BENCHMARK_REGISTER_F(CqlHostDataSourceBenchmark, get4IdentifierSubnetId)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by get4(subnet-id, v4-reservation) call.
BENCHMARK_REGISTER_F(CqlHostDataSourceBenchmark, get4SubnetIdv4Resrv)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
-
-/// Defines parameters necessary for running a benchmark that measures
-/// hosts retrieval by get6(subnet-id, duid, hw-addr) call.
-BENCHMARK_REGISTER_F(CqlHostDataSourceBenchmark, get6SubnetIdDuidHWAddr)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by get6(subnet-id, identifier-type, identifier) call.
BENCHMARK_REGISTER_F(CqlHostDataSourceBenchmark, get6IdentifierSubnetId)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by get6(subnet-id, ip-address) call.
BENCHMARK_REGISTER_F(CqlHostDataSourceBenchmark, get6SubnetIdAddr)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by get6(ip-prefix, prefix-len) call.
BENCHMARK_REGISTER_F(CqlHostDataSourceBenchmark, get6Prefix)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
} // namespace
#include <config.h>
+#include <cql/testutils/cql_schema.h>
+
#include <dhcpsrv/benchmarks/generic_lease_mgr_benchmark.h>
#include <dhcpsrv/benchmarks/parameters.h>
#include <dhcpsrv/lease_mgr_factory.h>
-#include <dhcpsrv/testutils/cql_schema.h>
+using namespace isc::db::test;
using namespace isc::dhcp::bench;
-using namespace isc::dhcp::test;
using namespace isc::dhcp;
using namespace std;
namespace {
/// @brief This is a fixture class used for benchmarking Cassandra lease backend
-class CqlLeaseMgrBenchmark : public GenericLeaseMgrBenchmark {
-public:
+struct CqlLeaseMgrBenchmark : public GenericLeaseMgrBenchmark {
/// @brief Setup routine.
///
/// It cleans up schema and recreates tables, then instantiates LeaseMgr
lmptr_ = &(LeaseMgrFactory::instance());
}
+ void SetUp(::benchmark::State& s) override {
+ ::benchmark::State const& cs = s;
+ SetUp(cs);
+ }
+
/// @brief Cleans up after the test.
void TearDown(::benchmark::State const&) override {
try {
LeaseMgrFactory::destroy();
destroyCqlSchema(false, true);
}
+
+ void TearDown(::benchmark::State& s) override {
+ ::benchmark::State const& cs = s;
+ TearDown(cs);
+ }
+
+
};
// Defines a benchmark that measures IPv4 leases insertion.
// Defines a benchmark that measures IPv6 leases retrieval by lease type, duid, iaid
// and subnet-id.
BENCHMARK_DEFINE_F(CqlLeaseMgrBenchmark, getLease6_type_duid_iaid_subnetid)
- (benchmark::State& state) {
+(benchmark::State& state) {
const size_t lease_count = state.range(0);
while (state.KeepRunning()) {
setUpWithInserts6(state, lease_count);
}
}
-
/// The following macros define run parameters for previously defined
/// Cassandra benchmarks.
/// A benchmark that measures IPv4 leases insertion.
BENCHMARK_REGISTER_F(CqlLeaseMgrBenchmark, insertLeases4)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 leases update.
BENCHMARK_REGISTER_F(CqlLeaseMgrBenchmark, updateLeases4)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by IP address.
BENCHMARK_REGISTER_F(CqlLeaseMgrBenchmark, getLease4_address)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by hardware address.
BENCHMARK_REGISTER_F(CqlLeaseMgrBenchmark, getLease4_hwaddr)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by hardware address and a
/// subnet-id.
BENCHMARK_REGISTER_F(CqlLeaseMgrBenchmark, getLease4_hwaddr_subnetid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by client-id.
BENCHMARK_REGISTER_F(CqlLeaseMgrBenchmark, getLease4_clientid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by client-id and subnet-id.
BENCHMARK_REGISTER_F(CqlLeaseMgrBenchmark, getLease4_clientid_subnetid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures expired IPv4 leases retrieval.
BENCHMARK_REGISTER_F(CqlLeaseMgrBenchmark, getExpiredLeases4)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 leases insertion.
BENCHMARK_REGISTER_F(CqlLeaseMgrBenchmark, insertLeases6)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 leases update.
BENCHMARK_REGISTER_F(CqlLeaseMgrBenchmark, updateLeases6)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 lease retrieval by lease type and IP address.
BENCHMARK_REGISTER_F(CqlLeaseMgrBenchmark, getLease6_type_address)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 lease retrieval by lease type, duid and iaid.
BENCHMARK_REGISTER_F(CqlLeaseMgrBenchmark, getLease6_type_duid_iaid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 lease retrieval by lease type, duid, iaid and
/// subnet-id.
BENCHMARK_REGISTER_F(CqlLeaseMgrBenchmark, getLease6_type_duid_iaid_subnetid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures expired IPv6 leases retrieval.
BENCHMARK_REGISTER_F(CqlLeaseMgrBenchmark, getExpiredLeases6)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
} // namespace
}
}
-void
-GenericHostDataSourceBenchmark::benchGetAllByHWAddrDuid() {
- for (HostPtr host : hosts_) {
- ConstHostCollection from_hds =
- hdsptr_->getAll(host->getHWAddress(), host->getDuid());
- }
-}
-
void
GenericHostDataSourceBenchmark::benchGetAll() {
for (HostPtr host : hosts_) {
}
}
-void
-GenericHostDataSourceBenchmark::benchGet4BySubnetHWAddrDuid() {
- for (HostPtr host : hosts_) {
- std::vector<uint8_t> hwaddr = host->getIdentifier();
- hdsptr_->get4(host->getIPv4SubnetID(), HWAddrPtr(new HWAddr(hwaddr,
- host->getIdentifierType())), host->getDuid());
- }
-}
-
void
GenericHostDataSourceBenchmark::benchGet4IdentifierSubnetId() {
for (HostPtr host : hosts_) {
}
}
-void
-GenericHostDataSourceBenchmark::benchGet6SubnetIdDuidHWAddr() {
- for (HostPtr host : hosts_) {
- hdsptr_->get6(host->getIPv6SubnetID(), host->getDuid(),
- host->getHWAddress());
- }
-}
-
void
GenericHostDataSourceBenchmark::benchGet6IdentifierSubnetId() {
for (HostPtr host : hosts_) {
/// @brief Updates all hosts stored in hosts_ in the benchmarked host backend
void updateHosts();
- void benchGetAllByHWAddrDuid();
-
/// @brief Essential steps required to benchmark the
/// getAll(identifier-type, identifier) call.
void benchGetAll();
/// using getAll(ipv4-reservation) call.
void getAllv4Resv();
- /// @brief Essential steps requires to benchmark host reservation retrieval
- /// using getAll(hw-addr, duid) call.
- void benchGet4BySubnetHWAddrDuid();
-
/// @brief Essential steps requires to benchmark host reservation retrieval
/// using getAll(identifier-type, identifier, subnet-id) call.
void benchGet4IdentifierSubnetId();
/// using getAll(v4-reservation) call.
void benchGet4SubnetIdv4Resrv();
- /// @brief Essential steps requires to benchmark host reservation retrieval
- /// using get6(subnet-id, duid, hw-addr) call.
- void benchGet6SubnetIdDuidHWAddr();
-
/// @brief Essential steps requires to benchmark host reservation retrieval
/// using get6(identifier-type, identifier, subnet-id) call.
void benchGet6IdentifierSubnetId();
#include <dhcpsrv/benchmarks/generic_lease_mgr_benchmark.h>
#include <dhcpsrv/benchmarks/parameters.h>
-#include <dhcpsrv/memfile_lease_mgr.h>
#include <dhcpsrv/lease_mgr_factory.h>
+#include <dhcpsrv/memfile_lease_mgr.h>
#include <dhcpsrv/testutils/lease_file_io.h>
using namespace isc::dhcp::bench;
namespace {
/// @brief This is a fixture class used for benchmarking Memfile lease backend
-class MemfileLeaseMgrBenchmark : public GenericLeaseMgrBenchmark {
-public:
-
+struct MemfileLeaseMgrBenchmark : public GenericLeaseMgrBenchmark {
/// @brief Constructor
///
/// Sets the files used for writing lease files.
- MemfileLeaseMgrBenchmark()
- : io4_(""), io6_("") {
+ MemfileLeaseMgrBenchmark() : io4_(""), io6_("") {
}
/// @brief Setup routine.
lmptr_ = &(LeaseMgrFactory::instance());
}
+ void SetUp(::benchmark::State& s) override {
+ ::benchmark::State const& cs = s;
+ SetUp(cs);
+ }
+
/// @brief Creates instance of the backend.
///
/// @param u Universe (v4 or V6).
LeaseMgrFactory::create(getConfigString(u));
} catch (...) {
std::cerr << "*** ERROR: unable to create instance of the Memfile\n"
- " lease database backend.\n";
+ " lease database backend.\n";
throw;
}
lmptr_ = &(LeaseMgrFactory::instance());
/// @return Configuration string for @c LeaseMgrFactory.
static std::string getConfigString(Universe u) {
std::ostringstream s;
- s << "type=memfile " << (u == V4 ? "universe=4 " : "universe=6 ") << "name="
- << getLeaseFilePath(u == V4 ? "leasefile4_0.csv" : "leasefile6_0.csv")
+ s << "type=memfile " << (u == V4 ? "universe=4 " : "universe=6 ")
+ << "name=" << getLeaseFilePath(u == V4 ? "leasefile4_0.csv" : "leasefile6_0.csv")
<< " lfc-interval=0";
return (s.str());
}
lmptr_->rollback();
} catch (...) {
std::cerr << "WARNING: rollback has failed. This is surprising as "
- "memfile doesn't support rollback." << std::endl;
+ "memfile doesn't support rollback."
+ << std::endl;
}
LeaseMgrFactory::destroy();
removeFiles(getLeaseFilePath("leasefile6_0.csv"));
}
+ void TearDown(::benchmark::State& s) override {
+ ::benchmark::State const& cs = s;
+ TearDown(cs);
+ }
+
/// @brief Object providing access to v4 lease IO.
LeaseFileIO io4_;
// Defines a benchmark that measures IPv6 leases retrieval by lease type, duid, iaid
// and subnet-id.
BENCHMARK_DEFINE_F(MemfileLeaseMgrBenchmark, getLease6_type_duid_iaid_subnetid)
- (benchmark::State& state) {
+(benchmark::State& state) {
const size_t lease_count = state.range(0);
while (state.KeepRunning()) {
setUpWithInserts6(state, lease_count);
}
}
-
/// The following macros define run parameters for previously defined
/// memfile benchmarks.
/// A benchmark that measures IPv4 leases insertion.
BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, insertLeases4)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 leases update.
BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, updateLeases4)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by IP address.
BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getLease4_address)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by hardware address.
BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getLease4_hwaddr)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by hardware address and a
/// subnet-id.
BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getLease4_hwaddr_subnetid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by client-id.
BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getLease4_clientid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by client-id and subnet-id.
BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getLease4_clientid_subnetid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures expired IPv4 leases retrieval.
BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getExpiredLeases4)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 leases insertion.
BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, insertLeases6)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 leases update.
BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, updateLeases6)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 lease retrieval by lease type and IP address.
BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getLease6_type_address)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 lease retrieval by lease type, duid and iaid.
BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getLease6_type_duid_iaid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 lease retrieval by lease type, duid, iaid and
/// subnet-id.
BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getLease6_type_duid_iaid_subnetid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures expired IPv6 leases retrieval.
BENCHMARK_REGISTER_F(MemfileLeaseMgrBenchmark, getExpiredLeases6)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
} // namespace
#include <config.h>
+#include <mysql/testutils/mysql_schema.h>
+
#include <dhcpsrv/benchmarks/generic_host_data_source_benchmark.h>
#include <dhcpsrv/benchmarks/parameters.h>
#include <dhcpsrv/host_data_source_factory.h>
-#include <dhcpsrv/testutils/mysql_schema.h>
+#include <dhcpsrv/host_mgr.h>
+
#include <iostream>
-using namespace isc::dhcp::bench;
-using namespace isc::dhcp::test;
+using namespace isc::db::test;
using namespace isc::dhcp;
+using namespace isc::dhcp::bench;
using namespace std;
namespace {
/// @brief This is a fixture class used for benchmarking MySQL host backend
-class MySqlHostDataSourceBenchmark : public GenericHostDataSourceBenchmark {
-public:
-
+struct MySqlHostDataSourceBenchmark : public GenericHostDataSourceBenchmark {
/// @brief Setup routine.
///
/// It cleans up schema and recreates tables, then instantiates HostMgr
void SetUp(::benchmark::State const&) override {
- destroyMySQLSchema(false);
- createMySQLSchema(false);
+ destroyMySQLSchema();
+ createMySQLSchema();
try {
- HostDataSourceFactory::destroy();
- HostDataSourceFactory::create(validMySQLConnectionString());
+ HostMgr::delBackend("mysql");
+ HostMgr::addBackend(validMySQLConnectionString());
} catch (...) {
cerr << "ERROR: unable to open database" << endl;
throw;
}
- hdsptr_ = HostDataSourceFactory::getHostDataSourcePtr();
+ hdsptr_ = HostMgr::instance().getHostDataSource();
+ }
+
+ void SetUp(::benchmark::State& s) override {
+ ::benchmark::State const& cs = s;
+ SetUp(cs);
}
/// @brief Cleans up after the test.
" is opened in read-only mode, continuing..."
<< endl;
}
- HostDataSourceFactory::destroy();
- destroyMySQLSchema(false);
+ HostMgr::delBackend("mysql");
+ destroyMySQLSchema();
+ }
+
+ void TearDown(::benchmark::State& s) override {
+ ::benchmark::State const& cs = s;
+ TearDown(cs);
}
};
}
}
-/// Defines steps necessary for conducting a benchmark that measures
-/// hosts retrieval by getAll(hw-addr, duid) call.
-BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, getAllByHWAddrDuid)(benchmark::State& state) {
- const size_t host_count = state.range(0);
- while (state.KeepRunning()) {
- setUpWithInserts(state, host_count);
- benchGetAllByHWAddrDuid();
- }
-}
-
/// Defines steps necessary for conducting a benchmark that measures
/// hosts retrieval by getAll4(hw-addr, duid) call.
BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, getAll)(benchmark::State& state) {
}
}
-/// Defines steps necessary for conducting a benchmark that measures
-/// hosts retrieval by get4(subnet-id, hw-addr, duid) call.
-BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, get4BySubnetHWAddrDuid)(benchmark::State& state) {
- const size_t host_count = state.range(0);
- while (state.KeepRunning()) {
- setUpWithInserts(state, host_count);
- benchGet4BySubnetHWAddrDuid();
- }
-}
-
/// Defines steps necessary for conducting a benchmark that measures
/// hosts retrieval by get4(identifier-type, identifier, subnet-id) call.
BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, get4IdentifierSubnetId)(benchmark::State& state) {
}
}
-/// Defines steps necessary for conducting a benchmark that measures
-/// hosts retrieval by get6(subnet-id, duid, hw-addr) call.
-BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, get6SubnetIdDuidHWAddr)(benchmark::State& state) {
- const size_t host_count = state.range(0);
- while (state.KeepRunning()) {
- setUpWithInserts(state, host_count);
- benchGet6SubnetIdDuidHWAddr();
- }
-}
-
/// Defines steps necessary for conducting a benchmark that measures
/// hosts retrieval by get6(subnet-id, identifier-type, identifier) call.
BENCHMARK_DEFINE_F(MySqlHostDataSourceBenchmark, get6IdentifierSubnetId)(benchmark::State& state) {
/// Defines parameters necessary for running a benchmark that measures
/// hosts insertion.
BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, insertHosts)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts update.
BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, updateHosts)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
-
-/// Defines parameters necessary for running a benchmark that measures
-/// hosts retrieval by getAll(hw-addr, duid) call.
-BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, getAllByHWAddrDuid)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by getAll4(hw-addr, duid) call.
BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, getAll)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by getAll(v4-reservation) call.
BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, getAllv4Resv)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
-
-/// Defines parameters necessary for running a benchmark that measures
-/// hosts retrieval by get4(subnet-id, hw-addr, duid) call.
-BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, get4BySubnetHWAddrDuid)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by get4(identifier-type, identifier, subnet-id) call.
BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, get4IdentifierSubnetId)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by get4(subnet-id, v4-reservation) call.
BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, get4SubnetIdv4Resrv)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
-
-/// Defines parameters necessary for running a benchmark that measures
-/// hosts retrieval by get6(subnet-id, duid, hw-addr) call.
-BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, get6SubnetIdDuidHWAddr)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by get6(subnet-id, identifier-type, identifier) call.
BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, get6IdentifierSubnetId)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by get6(subnet-id, ip-address) call.
BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, get6SubnetIdAddr)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by get6(ip-prefix, prefix-len) call.
BENCHMARK_REGISTER_F(MySqlHostDataSourceBenchmark, get6Prefix)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
} // namespace
#include <dhcpsrv/benchmarks/generic_lease_mgr_benchmark.h>
#include <dhcpsrv/benchmarks/parameters.h>
#include <dhcpsrv/lease_mgr_factory.h>
-#include <dhcpsrv/testutils/mysql_schema.h>
-using namespace isc::dhcp::bench;
-using namespace isc::dhcp::test;
+#include <mysql/testutils/mysql_schema.h>
+
+using namespace isc::db::test;
using namespace isc::dhcp;
+using namespace isc::dhcp::bench;
using namespace std;
namespace {
/// @brief This is a fixture class used for benchmarking MySQL lease backend
-class MySqlLeaseMgrBenchmark : public GenericLeaseMgrBenchmark {
-public:
+struct MySqlLeaseMgrBenchmark : public GenericLeaseMgrBenchmark {
/// @brief Setup routine.
///
/// It cleans up schema and recreates tables, then instantiates LeaseMgr
void SetUp(::benchmark::State const&) override {
- destroyMySQLSchema(false);
- createMySQLSchema(false);
+ destroyMySQLSchema();
+ createMySQLSchema();
try {
LeaseMgrFactory::destroy();
LeaseMgrFactory::create(validMySQLConnectionString());
lmptr_ = &(LeaseMgrFactory::instance());
}
+ void SetUp(::benchmark::State& s) override {
+ ::benchmark::State const& cs = s;
+ SetUp(cs);
+ }
+
/// @brief Cleans up after the test.
void TearDown(::benchmark::State const&) override {
try {
<< endl;
}
LeaseMgrFactory::destroy();
- destroyMySQLSchema(false);
+ destroyMySQLSchema();
+ }
+
+ void TearDown(::benchmark::State& s) override {
+ ::benchmark::State const& cs = s;
+ TearDown(cs);
}
};
// Defines a benchmark that measures IPv6 leases retrieval by lease type, duid, iaid
// and subnet-id.
BENCHMARK_DEFINE_F(MySqlLeaseMgrBenchmark, getLease6_type_duid_iaid_subnetid)
- (benchmark::State& state) {
+(benchmark::State& state) {
const size_t lease_count = state.range(0);
while (state.KeepRunning()) {
setUpWithInserts6(state, lease_count);
}
}
-
/// The following macros define run parameters for previously defined
/// MySQL benchmarks.
/// A benchmark that measures IPv4 leases insertion.
BENCHMARK_REGISTER_F(MySqlLeaseMgrBenchmark, insertLeases4)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 leases update.
BENCHMARK_REGISTER_F(MySqlLeaseMgrBenchmark, updateLeases4)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by IP address.
BENCHMARK_REGISTER_F(MySqlLeaseMgrBenchmark, getLease4_address)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by hardware address.
BENCHMARK_REGISTER_F(MySqlLeaseMgrBenchmark, getLease4_hwaddr)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by hardware address and a
/// subnet-id.
BENCHMARK_REGISTER_F(MySqlLeaseMgrBenchmark, getLease4_hwaddr_subnetid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by client-id.
BENCHMARK_REGISTER_F(MySqlLeaseMgrBenchmark, getLease4_clientid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by client-id and subnet-id.
BENCHMARK_REGISTER_F(MySqlLeaseMgrBenchmark, getLease4_clientid_subnetid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures expired IPv4 leases retrieval.
BENCHMARK_REGISTER_F(MySqlLeaseMgrBenchmark, getExpiredLeases4)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 leases insertion.
BENCHMARK_REGISTER_F(MySqlLeaseMgrBenchmark, insertLeases6)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 leases update.
BENCHMARK_REGISTER_F(MySqlLeaseMgrBenchmark, updateLeases6)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 lease retrieval by lease type and IP address.
BENCHMARK_REGISTER_F(MySqlLeaseMgrBenchmark, getLease6_type_address)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 lease retrieval by lease type, duid and iaid.
BENCHMARK_REGISTER_F(MySqlLeaseMgrBenchmark, getLease6_type_duid_iaid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 lease retrieval by lease type, duid, iaid and
/// subnet-id.
BENCHMARK_REGISTER_F(MySqlLeaseMgrBenchmark, getLease6_type_duid_iaid_subnetid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures expired IPv6 leases retrieval.
BENCHMARK_REGISTER_F(MySqlLeaseMgrBenchmark, getExpiredLeases6)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
} // namespace
/// @brief A maximum number of leases used in a benchmark
constexpr size_t MAX_LEASE_COUNT = 0xfffd;
- /// @brief A minimum number of leases used in a benchmark
+/// @brief A minimum number of leases used in a benchmark
constexpr size_t MIN_HOST_COUNT = 512;
/// @brief A maximum number of leases used in a benchmark
constexpr size_t MAX_HOST_COUNT = 0xfffd;
/// @}
-}
-}
-}
+} // namespace bench
+} // namespace dhcp
+} // namespace isc
#endif
#include <dhcpsrv/benchmarks/generic_host_data_source_benchmark.h>
#include <dhcpsrv/benchmarks/parameters.h>
#include <dhcpsrv/host_data_source_factory.h>
-#include <dhcpsrv/testutils/pgsql_schema.h>
+#include <dhcpsrv/host_mgr.h>
+
+#include <pgsql/testutils/pgsql_schema.h>
+
#include <iostream>
+using namespace isc::db::test;
using namespace isc::dhcp::bench;
-using namespace isc::dhcp::test;
using namespace isc::dhcp;
using namespace std;
namespace {
/// @brief This is a fixture class used for benchmarking PostgreSQL host backend
-class PgSqlHostDataSourceBenchmark : public GenericHostDataSourceBenchmark {
-public:
-
+struct PgSqlHostDataSourceBenchmark : public GenericHostDataSourceBenchmark {
/// @brief Setup routine.
///
/// It cleans up schema and recreates tables, then instantiates HostMgr
void SetUp(::benchmark::State const&) override {
- destroyPgSQLSchema(false);
- createPgSQLSchema(false);
+ destroyPgSQLSchema();
+ createPgSQLSchema();
try {
- HostDataSourceFactory::destroy();
- HostDataSourceFactory::create(validPgSQLConnectionString());
+ HostMgr::delBackend("postgresql");
+ HostMgr::addBackend(validPgSQLConnectionString());
} catch (...) {
cerr << "ERROR: unable to open database" << endl;
throw;
}
- hdsptr_ = HostDataSourceFactory::getHostDataSourcePtr();
+ hdsptr_ = HostMgr::instance().getHostDataSource();
+ }
+
+ void SetUp(::benchmark::State& s) override {
+ ::benchmark::State const& cs = s;
+ SetUp(cs);
}
/// @brief Cleans up after the test.
" is opened in read-only mode, continuing..."
<< endl;
}
- HostDataSourceFactory::destroy();
- destroyPgSQLSchema(false);
+ HostMgr::delBackend("postgresql");
+ destroyPgSQLSchema();
+ }
+
+ void TearDown(::benchmark::State& s) override {
+ ::benchmark::State const& cs = s;
+ TearDown(cs);
}
};
}
}
-/// Defines steps necessary for conducting a benchmark that measures
-/// hosts retrieval by getAll(hw-addr, duid) call.
-BENCHMARK_DEFINE_F(PgSqlHostDataSourceBenchmark, getAllByHWAddrDuid)(benchmark::State& state) {
- const size_t host_count = state.range(0);
- while (state.KeepRunning()) {
- setUpWithInserts(state, host_count);
- benchGetAllByHWAddrDuid();
- }
-}
-
/// Defines steps necessary for conducting a benchmark that measures
/// hosts retrieval by getAll4(hw-addr, duid) call.
BENCHMARK_DEFINE_F(PgSqlHostDataSourceBenchmark, getAll)(benchmark::State& state) {
}
}
-/// Defines steps necessary for conducting a benchmark that measures
-/// hosts retrieval by get4(subnet-id, hw-addr, duid) call.
-BENCHMARK_DEFINE_F(PgSqlHostDataSourceBenchmark, get4BySubnetHWAddrDuid)(benchmark::State& state) {
- const size_t host_count = state.range(0);
- while (state.KeepRunning()) {
- setUpWithInserts(state, host_count);
- benchGet4BySubnetHWAddrDuid();
- }
-}
-
/// Defines steps necessary for conducting a benchmark that measures
/// hosts retrieval by get4(identifier-type, identifier, subnet-id) call.
BENCHMARK_DEFINE_F(PgSqlHostDataSourceBenchmark, get4IdentifierSubnetId)(benchmark::State& state) {
}
}
-/// Defines steps necessary for conducting a benchmark that measures
-/// hosts retrieval by get6(subnet-id, duid, hw-addr) call.
-BENCHMARK_DEFINE_F(PgSqlHostDataSourceBenchmark, get6SubnetIdDuidHWAddr)(benchmark::State& state) {
- const size_t host_count = state.range(0);
- while (state.KeepRunning()) {
- setUpWithInserts(state, host_count);
- benchGet6SubnetIdDuidHWAddr();
- }
-}
-
/// Defines steps necessary for conducting a benchmark that measures
/// hosts retrieval by get6(subnet-id, identifier-type, identifier) call.
BENCHMARK_DEFINE_F(PgSqlHostDataSourceBenchmark, get6IdentifierSubnetId)(benchmark::State& state) {
/// Defines parameters necessary for running a benchmark that measures
/// hosts insertion.
BENCHMARK_REGISTER_F(PgSqlHostDataSourceBenchmark, insertHosts)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts update.
BENCHMARK_REGISTER_F(PgSqlHostDataSourceBenchmark, updateHosts)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
-
-/// Defines parameters necessary for running a benchmark that measures
-/// hosts retrieval by getAll(hw-addr, duid) call.
-BENCHMARK_REGISTER_F(PgSqlHostDataSourceBenchmark, getAllByHWAddrDuid)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by getAll4(hw-addr, duid) call.
BENCHMARK_REGISTER_F(PgSqlHostDataSourceBenchmark, getAll)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by getAll(v4-reservation) call.
BENCHMARK_REGISTER_F(PgSqlHostDataSourceBenchmark, getAllv4Resv)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
-
-/// Defines parameters necessary for running a benchmark that measures
-/// hosts retrieval by get4(subnet-id, hw-addr, duid) call.
-BENCHMARK_REGISTER_F(PgSqlHostDataSourceBenchmark, get4BySubnetHWAddrDuid)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by get4(identifier-type, identifier, subnet-id) call.
BENCHMARK_REGISTER_F(PgSqlHostDataSourceBenchmark, get4IdentifierSubnetId)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by get4(subnet-id, v4-reservation) call.
BENCHMARK_REGISTER_F(PgSqlHostDataSourceBenchmark, get4SubnetIdv4Resrv)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
-
-/// Defines parameters necessary for running a benchmark that measures
-/// hosts retrieval by get6(subnet-id, duid, hw-addr) call.
-BENCHMARK_REGISTER_F(PgSqlHostDataSourceBenchmark, get6SubnetIdDuidHWAddr)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by get6(subnet-id, identifier-type, identifier) call.
BENCHMARK_REGISTER_F(PgSqlHostDataSourceBenchmark, get6IdentifierSubnetId)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by get6(subnet-id, ip-address) call.
BENCHMARK_REGISTER_F(PgSqlHostDataSourceBenchmark, get6SubnetIdAddr)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
/// Defines parameters necessary for running a benchmark that measures
/// hosts retrieval by get6(ip-prefix, prefix-len) call.
BENCHMARK_REGISTER_F(PgSqlHostDataSourceBenchmark, get6Prefix)
- ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)->Unit(UNIT);
+ ->Range(MIN_HOST_COUNT, MAX_HOST_COUNT)
+ ->Unit(UNIT);
} // namespace
#include <dhcpsrv/benchmarks/generic_lease_mgr_benchmark.h>
#include <dhcpsrv/benchmarks/parameters.h>
#include <dhcpsrv/lease_mgr_factory.h>
-#include <dhcpsrv/testutils/pgsql_schema.h>
-using namespace isc::dhcp::bench;
-using namespace isc::dhcp::test;
+#include <pgsql/testutils/pgsql_schema.h>
+
+using namespace isc::db::test;
using namespace isc::dhcp;
+using namespace isc::dhcp::bench;
using namespace std;
namespace {
/// @brief This is a fixture class used for benchmarking PostgreSQL lease backend
-class PgSqlLeaseMgrBenchmark : public GenericLeaseMgrBenchmark {
-public:
+struct PgSqlLeaseMgrBenchmark : public GenericLeaseMgrBenchmark {
/// @brief Setup routine.
///
/// It cleans up schema and recreates tables, then instantiates LeaseMgr
void SetUp(::benchmark::State const&) override {
- destroyPgSQLSchema(false);
- createPgSQLSchema(false);
+ destroyPgSQLSchema();
+ createPgSQLSchema();
try {
LeaseMgrFactory::destroy();
LeaseMgrFactory::create(validPgSQLConnectionString());
lmptr_ = &(LeaseMgrFactory::instance());
}
+ void SetUp(::benchmark::State& s) override {
+ ::benchmark::State const& cs = s;
+ SetUp(cs);
+ }
+
/// @brief Cleans up after the test.
void TearDown(::benchmark::State const&) override {
try {
<< endl;
}
LeaseMgrFactory::destroy();
- destroyPgSQLSchema(false);
+ destroyPgSQLSchema();
+ }
+
+ void TearDown(::benchmark::State& s) override {
+ ::benchmark::State const& cs = s;
+ TearDown(cs);
}
};
// Defines a benchmark that measures IPv6 leases retrieval by lease type, duid, iaid
// and subnet-id.
BENCHMARK_DEFINE_F(PgSqlLeaseMgrBenchmark, getLease6_type_duid_iaid_subnetid)
- (benchmark::State& state) {
+(benchmark::State& state) {
const size_t lease_count = state.range(0);
while (state.KeepRunning()) {
setUpWithInserts6(state, lease_count);
}
}
-
/// The following macros define run parameters for previously defined
/// PostgreSQL benchmarks.
/// A benchmark that measures IPv4 leases insertion.
BENCHMARK_REGISTER_F(PgSqlLeaseMgrBenchmark, insertLeases4)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 leases update.
BENCHMARK_REGISTER_F(PgSqlLeaseMgrBenchmark, updateLeases4)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by IP address.
BENCHMARK_REGISTER_F(PgSqlLeaseMgrBenchmark, getLease4_address)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by hardware address.
BENCHMARK_REGISTER_F(PgSqlLeaseMgrBenchmark, getLease4_hwaddr)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by hardware address and a
/// subnet-id.
BENCHMARK_REGISTER_F(PgSqlLeaseMgrBenchmark, getLease4_hwaddr_subnetid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by client-id.
BENCHMARK_REGISTER_F(PgSqlLeaseMgrBenchmark, getLease4_clientid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv4 lease retrieval by client-id and subnet-id.
BENCHMARK_REGISTER_F(PgSqlLeaseMgrBenchmark, getLease4_clientid_subnetid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures expired IPv4 leases retrieval.
BENCHMARK_REGISTER_F(PgSqlLeaseMgrBenchmark, getExpiredLeases4)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 leases insertion.
BENCHMARK_REGISTER_F(PgSqlLeaseMgrBenchmark, insertLeases6)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 leases update.
BENCHMARK_REGISTER_F(PgSqlLeaseMgrBenchmark, updateLeases6)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 lease retrieval by lease type and IP address.
BENCHMARK_REGISTER_F(PgSqlLeaseMgrBenchmark, getLease6_type_address)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 lease retrieval by lease type, duid and iaid.
BENCHMARK_REGISTER_F(PgSqlLeaseMgrBenchmark, getLease6_type_duid_iaid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures IPv6 lease retrieval by lease type, duid, iaid and
/// subnet-id.
BENCHMARK_REGISTER_F(PgSqlLeaseMgrBenchmark, getLease6_type_duid_iaid_subnetid)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
/// A benchmark that measures expired IPv6 leases retrieval.
BENCHMARK_REGISTER_F(PgSqlLeaseMgrBenchmark, getExpiredLeases6)
- ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)->Unit(UNIT);
+ ->Range(MIN_LEASE_COUNT, MAX_LEASE_COUNT)
+ ->Unit(UNIT);
} // namespace
#include <log/logger_support.h>
/// @brief A simple class that initializes logging.
-class Initializer {
-public:
+struct Initializer {
Initializer() {
isc::log::initLogger();
}
Initializer initializer;
-BENCHMARK_MAIN()
-
+BENCHMARK_MAIN();
echo " get version"
echo "libraries:"
echo " libsysrepo"
+ echo " libSysrepo-cpp"
exit 0
else if [ $# -ne 2 ]
then
echo "run: \`$0 --help\` for more help"
exit 0
- else if [ $2 != "libsysrepo" ]
+ else if [ $2 != "libsysrepo" ] && [ $2 != "libSysrepo-cpp" ]
then
echo "library $2 not supported"
echo "run: \`$0 --help\` for more help"
fi
if [ $1 == "--cflags-only-I" ]
then
- echo "-I${SYSREPO_PATH}/inc/"
+ echo "-I${SYSREPO_PATH}/include/"
exit 0
fi
if [ $1 == "--libs" ]
then
- echo "-L${SYSREPO_PATH}/build/src -L${SYSREPO_PATH}/build/swig -L$YANG_LIBRARY_PATH -l:${sysrepo_lib}.a -lSysrepo-cpp -lyang -pthread -lpcre -lev -lprotobuf -lavl -lprotobuf-c"
+ echo "-L${SYSREPO_PATH}/lib/ -L${YANG_LIBRARY_PATH} -lsysrepo -lSysrepo-cpp -lyang -pthread -lpcre -lev -lprotobuf -lavl -lprotobuf-c"
exit 0
fi
if [ $1 == "--modversion" ]