src/lib/dhcpsrv/mysql_host_data_source.cc
MySqlHostDataSourceImpl::getVersion() - new function to
fetch version accessible to impl constructor
MySqlHostDataSourceImpl() - added schema validation after
connecting
MySqlHostDataSource::getVersion() - new uses impl method
src/lib/dhcpsrv/pgsql_host_data_source.cc
PgSqlHostDataSourceImpl()) - added schema validation after
connecting
PgSqlHostDataSourceImpl::getVersion() - no longer uses
pre-prepared statement
src/lib/dhcpsrv/mysql_lease_mgr.*
MySqlLeaseMgr::MySqlLeaseMgr() - now validates schema
after connecting
MySqlLeaseMgr::getVersion() - no longer relies on
pre-prepared statement or formal statement execution
error handling
src/lib/dhcpsrv/tests/generic_lease_mgr_unittest.cc
LeaseMgrDbLostCallbackTest::testDbLostCallback() - replaced
use of getVersion() with getLease4() for testing DB usability
src/share/database/scripts/mysql/dhcpdb_create.mysql
src/share/database/scripts/mysql/dhcpdb_drop.mysql
src/share/database/scripts/mysql/upgrade_5.2_to_6.0.sh.in
Added MySQL v4/6 stat tables and triggers
src/lib/dhcpsrv/memfile_lease_mgr.cc
Suppress output of of rows with count values of 0
src/lib/dhcpsrv/mysql_lease_mgr.*
Added v4/v6 lease stat SQL statements
MySqlLeaseStatsQuery
- Added ctor variants that accomodate selection criteria
- Modified start() to handle three variants of selection
MySqlLeaseMgr
- Added start***Query4/6 variants
src/lib/dhcpsrv/tests/mysql_lease_mgr_unittest.cc
Added tests:
- TEST_F(MySqlLeaseMgrTest, leaseStatsQuery4)
- TEST_F(MySqlLeaseMgrTest, leaseStatsQuery6)
src/lib/dhcpsrv/mysql_connection.h
MySqlConnection::checkError<>() - modified to invoke
db lost callback
src/lib/dhcpsrv/dhcpsrv_messages.mes
Updated log messages
src/lib/dhcpsrv/mysql_lease_mgr.cc
MySqlLeaseMgr::getVersion() - updated to use checkError()
src/lib/dhcpsrv/pgsql_connection.*
PgSqlResult::PgSqlResult(PGresult *result) - now supports
construction with null PGresult. This is to accomodate rare
cases when PQ* statements can return NULL.
src/lib/dhcpsrv/tests/generic_lease_mgr_unittest.*
class LeaseMgrDbLostCallbackTest - new test fixture for
testing LeaseMgr DBLostCallback behavior
src/lib/dhcpsrv/tests/host_mgr_unittest.cc
class HostMgrDbLostCallbackTest
class MySQLHostMgrDbLostCallbackTest
class PostgreSQLHostMgrDbLostCallbackTest
- new test fixtures for testing HostMgr DBLostCallback behavior
src/lib/dhcpsrv/tests/mysql_lease_mgr_unittest.cc
class MySQLLeaseMgrDbLostCallbackTest - new test fixture for
testing MySQL LeaseMgr DBLostCallback behavior
src/lib/dhcpsrv/tests/pgsql_lease_mgr_unittest.cc
class PgSqlLeaseMgrDbLostCallbackTest - new test fixture for
testing Postgresql LeaseMgr DBLostCallback behavior
src/lib/dhcpsrv/tests/test_utils.*
int findLastSocketFd() - new function used for finding what
should be the fd of the SQL client socket
doc/guide/dhcp4-srv.xml
doc/guide/dhcp6-srv.xml
Updated lease and host database parameter sections
src/lib/dhcpsrv/mysql_lease_mgr.h
src/lib/dhcpsrv/mysql_lease_mgr.cc
Replaced this class heirarchy:
AddressStatsQuery4 <-- MySqlAddressStatsQuery4
AddressStatsQuery6 <-- MySqlAddressStatsQuery6
With this one:
LeaseStatsQuery <-- MySqlLeaseStatsQuery
The only review item not addressed with this commit is the
implementation of unit test that operates on the read only
database, i.e. the database containing tables on which the
given user only has SELECT privileges.
src/lib/dhcpsrv/pgsql_lease_mgr.h
src/lib/dhcpsrv/pgsql_lease_mgr.cc
- Added TaggedStatement RECOUNT_LEASE6_STATS
- PgSqlAddressStatsQuery6 - new class PgSql derivation of the IPv6
statistical lease data query
- PgSqlLeaseMgr::startAddressStatsQuery6() - new virtual method which
creates and runs the IPv6 lease stats query
src/lib/dhcpsrv/tests/pgsql_lease_mgr_unittest.cc
TEST_F(PgSqlLeaseMgrTest, recountAddressStats6) - new test
src/lib/dhcpsrv/cfg_subnets6.cc
- CfgSubnets6::removeStatistics() - added removal of declined stats
- CfgSubnets6::updateStatistics() - added call to recountAddressStats6()
src/lib/dhcpsrv/mysql_lease_mgr.h
src/lib/dhcpsrv/mysql_lease_mgr.cc
- Added TaggedStatement RECOUNT_LEASE6_STATS
- MySqlAddressStatsQuery6 - new MySql derivation of AddressStatsQuery6
- MySqlLeaseMgr::startAddressStatsQuery6() - new virtual method which
creates and starts a MySqlAddressStatsQuery6
src/lib/dhcpsrv/tests/generic_lease_mgr_unittest.h
src/lib/dhcpsrv/tests/generic_lease_mgr_unittest.cc
- GenericLeaseMgrTest::checkAddressStats4 renamed to checkAddressStats as
it applies to either v4 or v6
- GenericLeaseMgrTest::makeLease6() - new method which creates a minimal
IPv6 lease and adds it to lease storage
- GenericLeaseMgrTest::testRecountAddressStats6() - new method which
checks IPv6 lease stats recounting
src/lib/dhcpsrv/tests/mysql_lease_mgr_unittest.cc
- TEST_F(MySqlLeaseMgrTest, recountAddressStats6) - new test
src/lib/dhcpsrv/cfg_subnets4.cc
CfgSubnets4::removeStatistics()
- added removal of all lease statistics per subnet, and global declined address
stats
CfgSubnets4::updateStatistics()
- added call to LeaseMgr::recountAddressStats4
src/lib/dhcpsrv/lease.cc
src/lib/dhcpsrv/lease.h
Replaces lease state constants with LeaseState enumeration.
src/lib/dhcpsrv/lease_mgr.cc
src/lib/dhcpsrv/lease_mgr.h
struct AddressStatsRow4 - contains the content of one row of the IPv4
lease statistical data result set
class AddressStatsQuery4 - base class for constructing the IPv4
lease statistical data result set for an IPv4 lease storage
LeaseMgr::recountAddressStats4() - new method which recalculates
per-subnet and global stats for IPv4 leases
LeaseMgr::startAddressStatsQuery4() - new virtual method that fetches
the IPv4 lease statistical data result set
src/lib/dhcpsrv/lease_mgr_factory.h
src/lib/dhcpsrv/lease_mgr_factory.cc
LeaseMgrFactory::haveInstance() - new static method which indicates
whether or not the lease manager singleton exists
src/lib/dhcpsrv/memfile_lease_mgr.h
src/lib/dhcpsrv/memfile_lease_mgr.cc
MemfileAddressStatsQuery4 - Derivation of AddressStatsQuery4, it constructs
the IPv4 lease statistical data by iterating over IPv4 lease storage
Memfile_LeaseMgr::startAddressStatsQuery4() - new virtual method which
creates, starts, and returns a MemfileAddressStatsQuery4
src/lib/dhcpsrv/memfile_lease_storage.h
Added an a per subnet_ID index to IPv4 storage
src/lib/dhcpsrv/mysql_lease_mgr.h
src/lib/dhcpsrv/mysql_lease_mgr.cc
- Added RECOUNT_LEASE4_STATS query
MySqlAddressStatsQuery4 Derivation of AddressStatsQuery4, it constructs
the IPv4 lease statistical data by executing RECOUNT_LEASE4_STATS
MySqlLeaseMgr::startAddressStatsQuery4() - new virtual method which
creates, starts, and returns a MySqlAddressStatsQuery4
src/lib/dhcpsrv/tests/alloc_engine_utils.cc
AllocEngine6Test::AllocEngine6Test()
AllocEngine4Test::AllocEngine4Test()
- moved lease mgr create up above configuration commit
src/lib/dhcpsrv/tests/cfg_db_access_unittest.cc
~CfgMySQLDbAccessTest() - added destruction of lease manager singleton,
otherwise subsequent tests can fail
src/lib/dhcpsrv/tests/generic_lease_mgr_unittest.h
src/lib/dhcpsrv/tests/generic_lease_mgr_unittest.cc
GenericLeaseMgrTest::checkStat() - new method for comparing a stat
GenericLeaseMgrTest::checkAddressStats4() - new method for comparing a list
of stats
GenericLeaseMgrTest::makeLease4() - new method for making a minimal lease
GenericLeaseMgrTest::testRecountAddressStats4() - new method which tests
a lease manager's ability to recalculate the IPv4 lease statistics
src/lib/dhcpsrv/tests/memfile_lease_mgr_unittest.cc
TEST_F(MemfileLeaseMgrTest, recountAddressStats4) - new test which tests
Memfile_LeaseMgr's ability to recalculate IPv4 lease statistics
src/lib/dhcpsrv/tests/mysql_lease_mgr_unittest.cc
TEST_F(MySqlLeaseMgrTest, recountAddressStats4) - new test which tests
MySqlLeaseMgr's ability to recalculate IPv4 lease statistics