src/lib/dhcpsrv/tests/memfile_lease_mgr_unittest.cc
Added two new unit tests to verify lease file upgrade
via automatic LFC invocation:
TEST_F(MemfileLeaseMgrTest, leaseUpgrade4)
TEST_F(MemfileLeaseMgrTest, leaseUpgrade6)
Memfile_LeaseMgr loads the lease files during instantiation. If it detects
that any of the files loaded are out of date, it will invoke LFC directly,
whether or not LFC is enabled.
src/lib/dhcpsrv/dhcpsrv_messages.mes
added two new log messages:
DHCPRSV_MEMFILE_UPGRADING_LEASE_FILES
DHCPSRV_MEMFILE_NEEDS_UPGRADING
src/lib/dhcpsrv/lease_file_loader.h
LeaseFileLoader::load() - emits DHCPSRV_MEMFILE_NEEDS_UPGRADING log
when an out of date file is detected
src/lib/dhcpsrv/memfile_lease_mgr.cc
LFCSetup::setup() - added run_once_now parameter, which causes the
method to invoke the LFC callback immediately, regardless of the value
of LFC interval.
Memfile_LeaseMgr::Memfile_LeaseMgr() - added logic to track if
files loaded need upgrading and pass that into lfcSetup()
Memfile_LeaseMgr::loadLeasesFromFiles() - change to return a boolean
true if any of the files loaded need upgrading.
Memfile_LeaseMgr::lfcSetup() - added upgrade_needed parameter, which
is passed through to LFCSetup::setup() as "run_once_now"
src/lib/util/csv_file.h
Made recreate() virtual
src/lib/util/versioned_csv_file.h
src/lib/util/versioned_csv_file.cc
Added several methods to VersionedCSVFile:
getValidColumnCount() - returns number of valid columns in header
recreate() - wraps base class method, ensuring valid column
count gets set to number of defined columns for new files
needsUpgrading() - returns bool true if file schema is out of date
getInputSchemaVersion() - returns schema version found in file
getSchemaVersion() - returns current schema version
getVersionedColumn() - returns the column definition for a given index
src/lib/util/tests/versioned_csv_file_unittest.cc
Added checks for new methods to existing tests
src/lib/dhcpsrv/csv_lease_file4.h
src/lib/dhcpsrv/csv_lease_file4.cc
- CSVLeaseFile4 now derives from VersionedCSVFile
- initializes schema metadata not just column names
- uses VersionedCSVFile methods rather than CSVFile methods
src/lib/dhcpsrv/csv_lease_file6.h
src/lib/dhcpsrv/csv_lease_file6.cc
- CSVLeaseFile6 now derives from VersionedCSVFile
- initializes schema metadata not just column names
- uses VersionedCSVFile methods rather than CSVFile methods
src/lib/dhcpsrv/tests/csv_lease_file4_unittest.cc
- Added new unit tests:
TEST_F(CSVLeaseFile4Test, mixedSchemaload)
TEST_F(CSVLeaseFile4Test, tooFewHeaderColumns)
TEST_F(CSVLeaseFile4Test, invalidHeaderColumn)
TEST_F(CSVLeaseFile4Test, tooManyHeaderColumns)
src/lib/dhcpsrv/tests/csv_lease_file6_unittest.cc
- Added new unit tests:
TEST_F(CSVLeaseFile6Test, mixedSchemaLoad)
TEST_F(CSVLeaseFile6Test, tooFewHeaderColumns)
TEST_F(CSVLeaseFile6Test, invalidHeaderColumn)
TEST_F(CSVLeaseFile6Test, tooManyHeaderColumns)
src/lib/util/versioned_csv_file.h
src/lib/util/versioned_csv_file.cc
New files which implement VersionedCSVFile, CSV file which can
support mulitple schema versions
src/lib/util/tests/versioned_csv_file_unittest.h
src/lib/util/tests/versioned_csv_file_unittest.cc
new files for Unit tests for VersionedCSVFile
src/lib/util/Makefile.am
added new files
src/lib/util/csv_file.cc
includes read error message if header fails to validate
src/lib/util/csv_file.h
removed @todo for 3626, no longer applicable
src/lib/util/tests/Makefile.am
added versioned_csv_file_unittest.cc