From: Marcin Siodelski Date: Wed, 12 Oct 2016 08:25:29 +0000 (+0200) Subject: [2280] Avoid overlapping pools in the alloc engine unit tests. X-Git-Tag: trac4631a_base~1^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=466d355fe31e871d93cdedd02af2e47d41bd30c0;p=thirdparty%2Fkea.git [2280] Avoid overlapping pools in the alloc engine unit tests. --- diff --git a/src/lib/dhcpsrv/tests/alloc_engine6_unittest.cc b/src/lib/dhcpsrv/tests/alloc_engine6_unittest.cc index 7cd707a4dc..e38c6b764d 100644 --- a/src/lib/dhcpsrv/tests/alloc_engine6_unittest.cc +++ b/src/lib/dhcpsrv/tests/alloc_engine6_unittest.cc @@ -143,9 +143,9 @@ TEST_F(AllocEngine6Test, allocWithUsedHint6) { // in pool, but is currently used, can succeed TEST_F(AllocEngine6Test, pdAllocWithUsedHint6) { allocWithUsedHintTest(Lease::TYPE_PD, - IOAddress("2001:db8:1::"), // allocate this prefix as used - IOAddress("2001:db8:1::"), // request this prefix - 64); + IOAddress("2001:db8:1:2::"), // allocate this prefix as used + IOAddress("2001:db8:1:2::"), // request this prefix + 80); } // This test checks if the allocation with a hint that is out the blue @@ -159,7 +159,7 @@ TEST_F(AllocEngine6Test, allocBogusHint6) { // can succeed. The invalid hint should be ignored completely. TEST_F(AllocEngine6Test, pdAllocBogusHint6) { - allocBogusHint6(Lease::TYPE_PD, IOAddress("3000::abc"), 64); + allocBogusHint6(Lease::TYPE_PD, IOAddress("3000::abc"), 80); } // This test checks that NULL values are handled properly @@ -1612,7 +1612,7 @@ TEST_F(AllocEngine6Test, largePDPool) { // Configure the PD pool with the prefix length of /64 and the delegated // length /96. - Pool6Ptr pool(new Pool6(Lease::TYPE_PD, IOAddress("2001:db8:1::"), 64, 96)); + Pool6Ptr pool(new Pool6(Lease::TYPE_PD, IOAddress("2001:db8:1:2::"), 80, 96)); subnet_->addPool(pool); // We should have got exactly one lease. @@ -1649,6 +1649,7 @@ TEST_F(AllocEngine6Test, largePoolOver32bits) { TEST_F(AllocEngine6Test, largeAllocationAttemptsOverride) { // Remove the default NA pools. subnet_->delPools(Lease::TYPE_NA); + subnet_->delPools(Lease::TYPE_PD); // Add exactly one pool with many addresses. Pool6Ptr pool(new Pool6(Lease::TYPE_NA, IOAddress("2001:db8:1::"), 56)); diff --git a/src/lib/dhcpsrv/tests/alloc_engine_utils.cc b/src/lib/dhcpsrv/tests/alloc_engine_utils.cc index 764ad60ee1..a38fb8970b 100644 --- a/src/lib/dhcpsrv/tests/alloc_engine_utils.cc +++ b/src/lib/dhcpsrv/tests/alloc_engine_utils.cc @@ -140,7 +140,9 @@ AllocEngine6Test::AllocEngine6Test() { // Initialize a subnet and short address pool. initSubnet(IOAddress("2001:db8:1::"), IOAddress("2001:db8:1::10"), - IOAddress("2001:db8:1::20")); + IOAddress("2001:db8:1::20"), + IOAddress("2001:db8:1:2::"), + 64, 80); initFqdn("", false, false); @@ -148,8 +150,11 @@ AllocEngine6Test::AllocEngine6Test() { void AllocEngine6Test::initSubnet(const asiolink::IOAddress& subnet, - const asiolink::IOAddress& pool_start, - const asiolink::IOAddress& pool_end) { + const asiolink::IOAddress& pool_start, + const asiolink::IOAddress& pool_end, + const asiolink::IOAddress& pd_pool_prefix, + const uint8_t pd_pool_length, + const uint8_t pd_delegated_length) { CfgMgr& cfg_mgr = CfgMgr::instance(); subnet_ = Subnet6Ptr(new Subnet6(subnet, 56, 100, 200, 300, 400)); @@ -157,7 +162,10 @@ AllocEngine6Test::initSubnet(const asiolink::IOAddress& subnet, subnet_->addPool(pool_); - pd_pool_ = Pool6Ptr(new Pool6(Lease::TYPE_PD, subnet, 56, 64)); + if (!pd_pool_prefix.isV6Zero()) { + pd_pool_ = Pool6Ptr(new Pool6(Lease::TYPE_PD, pd_pool_prefix, + pd_pool_length, pd_delegated_length)); + } subnet_->addPool(pd_pool_); cfg_mgr.getStagingCfg()->getCfgSubnets6()->add(subnet_); diff --git a/src/lib/dhcpsrv/tests/alloc_engine_utils.h b/src/lib/dhcpsrv/tests/alloc_engine_utils.h index b2473fe7e9..5bf68748e3 100644 --- a/src/lib/dhcpsrv/tests/alloc_engine_utils.h +++ b/src/lib/dhcpsrv/tests/alloc_engine_utils.h @@ -101,9 +101,18 @@ public: /// @param subnet Address of a subnet to be configured. /// @param pool_start First address in the address pool. /// @param pool_end Last address in the address pool. + /// @param pd_pool_prefix Prefix for the prefix delegation pool. It + /// defaults to 0 which means that PD pool is not specified. + /// @param pd_pool_length Length of the PD pool prefix. + /// @param pd_delegated_length Delegated prefix length. void initSubnet(const asiolink::IOAddress& subnet, const asiolink::IOAddress& pool_start, - const asiolink::IOAddress& pool_end); + const asiolink::IOAddress& pool_end, + const asiolink::IOAddress& pd_pool_prefix = + asiolink::IOAddress::IPV6_ZERO_ADDRESS(), + const uint8_t pd_pool_length = 0, + const uint8_t pd_delegated_length = 0); + /// @brief Initializes FQDN data for a test. ///