mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-09-05 00:15:17 +00:00
[3978] Added unit tests
This commit is contained in:
@@ -14,9 +14,12 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <asiolink/io_address.h>
|
||||
#include <cc/command_interpreter.h>
|
||||
#include <config/command_mgr.h>
|
||||
#include <dhcpsrv/cfgmgr.h>
|
||||
#include <dhcpsrv/lease.h>
|
||||
#include <dhcpsrv/lease_mgr_factory.h>
|
||||
#include <dhcp6/ctrl_dhcp6_srv.h>
|
||||
#include <hooks/hooks_manager.h>
|
||||
#include <testutils/unix_control_client.h>
|
||||
@@ -32,6 +35,7 @@
|
||||
#include <cstdlib>
|
||||
|
||||
using namespace std;
|
||||
using namespace isc::asiolink;
|
||||
using namespace isc::config;
|
||||
using namespace isc::data;
|
||||
using namespace isc::dhcp;
|
||||
@@ -118,6 +122,11 @@ public:
|
||||
" \"interfaces-config\": {"
|
||||
" \"interfaces\": [ \"*\" ]"
|
||||
" },"
|
||||
" \"expired-leases-processing\": {"
|
||||
" \"reclaim-timer-wait-time\": 60,"
|
||||
" \"hold-reclaimed-time\": 500,"
|
||||
" \"flush-reclaimed-timer-wait-time\": 60"
|
||||
" },"
|
||||
" \"rebind-timer\": 2000, "
|
||||
" \"renew-timer\": 1000, "
|
||||
" \"subnet6\": [ ],"
|
||||
@@ -452,4 +461,36 @@ TEST_F(CtrlChannelDhcpv6SrvTest, controlChannelStats) {
|
||||
response);
|
||||
}
|
||||
|
||||
// Thist test verifies that the DHCP server immediately reclaims expired
|
||||
// leases on leases-reclaim command
|
||||
// @todo currently must be last as it changes statistics.
|
||||
TEST_F(CtrlChannelDhcpv6SrvTest, controlLeasesReclaim) {
|
||||
createUnixChannelServer();
|
||||
|
||||
// Create an expired lease. The lease is expired by 40 seconds ago
|
||||
// (valid lifetime = 60, cltt = now - 100).
|
||||
DuidPtr duid_expired(new DUID(DUID::fromText("00:01:02:03:04:05:06").getDuid()));
|
||||
Lease6Ptr lease_expired(new Lease6(Lease::TYPE_NA, IOAddress("3000::1"),
|
||||
duid_expired, 1, 50, 60, 10, 20, SubnetID(1)));
|
||||
lease_expired->cltt_ = time(NULL) - 100;
|
||||
|
||||
// Add lease to the database.
|
||||
LeaseMgr& lease_mgr = LeaseMgrFactory().instance();
|
||||
ASSERT_NO_THROW(lease_mgr.addLease(lease_expired));
|
||||
|
||||
// Make sure it has been added.
|
||||
ASSERT_TRUE(lease_mgr.getLease6(Lease::TYPE_NA, IOAddress("3000::1")));
|
||||
|
||||
// Send the command.
|
||||
std::string response;
|
||||
sendUnixCommand("{ \"command\": \"leases-reclaim\" }", response);
|
||||
EXPECT_EQ("{ \"result\": 0, \"text\": \"Leases successfully reclaimed.\" }", response);
|
||||
|
||||
// Verify that the lease in the database has been processed as expected.
|
||||
ASSERT_NO_THROW(
|
||||
lease_expired = lease_mgr.getLease6(Lease::TYPE_NA, IOAddress("3000::1"))
|
||||
);
|
||||
EXPECT_FALSE(lease_expired);
|
||||
}
|
||||
|
||||
} // End of anonymous namespace
|
||||
|
Reference in New Issue
Block a user