Commit bfeaf289 authored by Tomek Mrugalski's avatar Tomek Mrugalski 🛰

[3555] Version number check in Memfile.

parent fd96a357
...@@ -71,6 +71,23 @@ namespace dhcp { ...@@ -71,6 +71,23 @@ namespace dhcp {
class Memfile_LeaseMgr : public LeaseMgr { class Memfile_LeaseMgr : public LeaseMgr {
public: public:
/// @defgroup versions Specified memfile backend version.
///
/// @brief Defines major version of the memfile backend.
///
/// Version history:
/// 1.0 - initial version (released in Kea 0.9)
/// 2.0 - hwaddr column added (to be released in Kea 0.9.1)
///
/// @{
static const int MAJOR_VERSION = 2;
/// Defines minor version of the memfile backend.
static const int MINOR_VERSION = 0;
/// @}
/// @brief Specifies universe (V4, V6) /// @brief Specifies universe (V4, V6)
/// ///
/// This enumeration is used by various functions in Memfile Lease Manager, /// This enumeration is used by various functions in Memfile Lease Manager,
...@@ -274,12 +291,8 @@ public: ...@@ -274,12 +291,8 @@ public:
/// ///
/// @return Version number as a pair of unsigned integers. "first" is the /// @return Version number as a pair of unsigned integers. "first" is the
/// major version number, "second" the minor number. /// major version number, "second" the minor number.
///
/// Numbering history:
/// 1.0 - initial version (released as 0.9)
/// 2.0 - hwaddr (hardware address/MAC) column added
virtual std::pair<uint32_t, uint32_t> getVersion() const { virtual std::pair<uint32_t, uint32_t> getVersion() const {
return (std::make_pair(2, 0)); return (std::make_pair(MAJOR_VERSION, MINOR_VERSION));
} }
/// @brief Commit Transactions /// @brief Commit Transactions
......
...@@ -1602,6 +1602,12 @@ GenericLeaseMgrTest::testNullDuid() { ...@@ -1602,6 +1602,12 @@ GenericLeaseMgrTest::testNullDuid() {
ASSERT_THROW(lmptr_->addLease(leases[1]), DbOperationError); ASSERT_THROW(lmptr_->addLease(leases[1]), DbOperationError);
} }
void
GenericLeaseMgrTest::testVersion(int major, int minor) {
EXPECT_EQ(major, lmptr_->getVersion().first);
EXPECT_EQ(minor, lmptr_->getVersion().second);
}
}; // namespace test }; // namespace test
}; // namespace dhcp }; // namespace dhcp
......
...@@ -257,6 +257,11 @@ public: ...@@ -257,6 +257,11 @@ public:
/// @brief Verifies that a null DUID is not allowed. /// @brief Verifies that a null DUID is not allowed.
void testNullDuid(); void testNullDuid();
/// @brief Verifies that the backend reports expected version numbers.
/// @param major Expected major version to be reported.
/// @param minor Expected minor version to be reported.
void testVersion(int major, int minor);
/// @brief String forms of IPv4 addresses /// @brief String forms of IPv4 addresses
std::vector<std::string> straddress4_; std::vector<std::string> straddress4_;
......
...@@ -465,4 +465,20 @@ TEST_F(MemfileLeaseMgrTest, testUpgrade0_9_0_to_0_9_1) { ...@@ -465,4 +465,20 @@ TEST_F(MemfileLeaseMgrTest, testUpgrade0_9_0_to_0_9_1) {
EXPECT_FALSE(stored3->hwaddr_); EXPECT_FALSE(stored3->hwaddr_);
} }
// Check that memfile reports version correctly.
TEST_F(MemfileLeaseMgrTest, versionCheck) {
// Check that V4 backend reports versions correctly.
startBackend(V4);
testVersion(Memfile_LeaseMgr::MAJOR_VERSION,
Memfile_LeaseMgr::MINOR_VERSION);
LeaseMgrFactory::destroy();
// Check that V6 backends reports them ok, too.
startBackend(V6);
testVersion(Memfile_LeaseMgr::MAJOR_VERSION,
Memfile_LeaseMgr::MINOR_VERSION);
LeaseMgrFactory::destroy();
}
}; // end of anonymous namespace }; // end of anonymous namespace
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment