// Add the first free lease. The pool should now have one free lease
// that is always offered.
+ EXPECT_FALSE(state->isFreeLease(IOAddress("192.0.2.1")));
state->addFreeLease(IOAddress("192.0.2.1"));
EXPECT_FALSE(state->exhausted());
EXPECT_EQ(1, state->getFreeLeaseCount());
+ EXPECT_TRUE(state->isFreeLease(IOAddress("192.0.2.1")));
// The same lease is always offered.
EXPECT_EQ("192.0.2.1", state->offerFreeLease().toText());
EXPECT_EQ("192.0.2.1", state->offerFreeLease().toText());
+ EXPECT_TRUE(state->isFreeLease(IOAddress("192.0.2.1")));
// Add another free lease. We should now have two free leases.
state->addFreeLease(IOAddress("192.0.2.3"));
EXPECT_EQ("192.0.2.1", state->offerFreeLease().toText());
// Now, the second lease should be offered.
EXPECT_EQ("192.0.2.3", state->offerFreeLease().toText());
+ EXPECT_TRUE(state->isFreeLease(IOAddress("192.0.2.1")));
+ EXPECT_TRUE(state->isFreeLease(IOAddress("192.0.2.3")));
// Try to delete a non-existing lease. It should not affect the
// existing leases.
+ EXPECT_FALSE(state->isFreeLease(IOAddress("192.0.2.2")));
state->deleteFreeLease(IOAddress("192.0.2.2"));
EXPECT_FALSE(state->exhausted());
EXPECT_EQ(2, state->getFreeLeaseCount());
// Add the first free lease. The pool should now have one free lease
// that is always offered.
+ EXPECT_FALSE(state->isFreeLease(IOAddress("2001:db8:1::1")));
state->addFreeLease(IOAddress("2001:db8:1::1"));
EXPECT_FALSE(state->exhausted());
EXPECT_EQ(1, state->getFreeLeaseCount());
+ EXPECT_TRUE(state->isFreeLease(IOAddress("2001:db8:1::1")));
// The same lease is always offered.
EXPECT_EQ("2001:db8:1::1", state->offerFreeLease().toText());
EXPECT_EQ("2001:db8:1::1", state->offerFreeLease().toText());
+ EXPECT_TRUE(state->isFreeLease(IOAddress("2001:db8:1::1")));
// Add another free lease. We should now have two free leases.
state->addFreeLease(IOAddress("2001:db8:1::3"));
EXPECT_EQ("2001:db8:1::1", state->offerFreeLease().toText());
// Now, the second lease should be offered.
EXPECT_EQ("2001:db8:1::3", state->offerFreeLease().toText());
+ EXPECT_TRUE(state->isFreeLease(IOAddress("2001:db8:1::1")));
+ EXPECT_TRUE(state->isFreeLease(IOAddress("2001:db8:1::3")));
// Try to delete a non-existing lease. It should not affect the
// existing leases.
+ EXPECT_FALSE(state->isFreeLease(IOAddress("2001:db8:1::2")));
state->deleteFreeLease(IOAddress("2001:db8:1::2"));
EXPECT_FALSE(state->exhausted());
EXPECT_EQ(2, state->getFreeLeaseCount());
// Add the first free lease. The pool should now have one free lease
// that is always offered.
+ EXPECT_FALSE(state->isFreeLease(IOAddress("3000::5600")));
state->addFreeLease(IOAddress("3000::5600"));
EXPECT_FALSE(state->exhausted());
EXPECT_EQ(1, state->getFreeLeaseCount());
+ EXPECT_TRUE(state->isFreeLease(IOAddress("3000::5600")));
// The same lease is always offered.
EXPECT_EQ("3000::5600", state->offerFreeLease().toText());
+ EXPECT_EQ("3000::5600", state->offerFreeLease().toText());
+ EXPECT_TRUE(state->isFreeLease(IOAddress("3000::5600")));
// Add another free lease. We should now have two free leases.
state->addFreeLease(IOAddress("3000::7800"));
EXPECT_EQ("3000::5600", state->offerFreeLease().toText());
// Now, the second lease should be offered.
EXPECT_EQ("3000::7800", state->offerFreeLease().toText());
+ EXPECT_TRUE(state->isFreeLease(IOAddress("3000::5600")));
+ EXPECT_TRUE(state->isFreeLease(IOAddress("3000::7800")));
// Try to delete a non-existing lease. It should not affect the
// existing leases.
+ EXPECT_FALSE(state->isFreeLease(IOAddress("3000::6400")));
state->deleteFreeLease(IOAddress("3000::6400"));
EXPECT_FALSE(state->exhausted());
EXPECT_EQ(2, state->getFreeLeaseCount());
EXPECT_TRUE(state->exhausted());
}
-
} // end of anonymous namespace
ASSERT_TRUE(pool_state);
EXPECT_FALSE(pool_state->exhausted());
- double r = alloc.getOccupancyRate(IOAddress("192.0.2.101"), cc_, false);
- EXPECT_EQ(.5, r);
- r = alloc.getOccupancyRate(IOAddress("192.0.2.101"), cc_, true);
+ double r = alloc.getOccupancyRate(IOAddress("192.0.2.101"), cc_);
EXPECT_EQ(.6, r);
- r = alloc.getOccupancyRate(IOAddress("192.0.2.1"), cc_, false);
+ r = alloc.getOccupancyRate(IOAddress("192.0.2.1"), cc_);
EXPECT_EQ(0., r);
std::set<IOAddress> addresses;
IOAddress candidate = alloc.pickAddress(cc_, clientid_, IOAddress("0.0.0.0"));
EXPECT_TRUE(candidate.isV4Zero());
- double r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_, false);
+ double r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_);
EXPECT_EQ(1., r);
auto i = 0;
++i;
}
- r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_, false);
+ r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_);
EXPECT_EQ(.5, r);
for (auto j = 0; j < 5; ++j) {
candidate = alloc.pickAddress(cc_, clientid_, IOAddress("0.0.0.0"));
EXPECT_TRUE(candidate.isV4Zero());
- r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_, false);
+ r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_);
EXPECT_EQ(1., r);
}
IOAddress candidate = alloc.pickAddress(cc_, clientid_, IOAddress("0.0.0.0"));
EXPECT_TRUE(candidate.isV4Zero());
- double r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_, false);
+ double r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_);
EXPECT_EQ(1., r);
auto i = 0;
}
++i;
}
- r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_, false);
+ r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_);
EXPECT_EQ(.5, r);
for (auto j = 0; j < 5; ++j) {
candidate = alloc.pickAddress(cc_, clientid_, IOAddress("0.0.0.0"));
EXPECT_TRUE(candidate.isV4Zero());
- r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_, false);
+ r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_);
EXPECT_EQ(1., r);
}
auto& lease_mgr = LeaseMgrFactory::instance();
- double r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_, false);
- EXPECT_EQ(0., r);
+ double r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_);
+ // 1/100
+ EXPECT_EQ(.01, r);
std::set<IOAddress> addresses_set;
std::vector<IOAddress> addresses_vector;
// Make sure that unique addresses have been returned.
EXPECT_EQ(total, addresses_set.size());
- r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_, false);
+ r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_);
EXPECT_EQ(1., r);
// Verify that the addresses are returned in the random order.
EXPECT_TRUE(candidate.isV4Zero());
// rate is 0. because of the address can't be found, not from 0./0....
- double r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_, false);
+ double r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_);
EXPECT_EQ(0., r);
}
// Simulate client's request belonging to the class bar.
cc_.insert("bar");
- double r = alloc.getOccupancyRate(IOAddress("192.0.2.120"), cc_, false);
- EXPECT_EQ(0., r);
+ double r = alloc.getOccupancyRate(IOAddress("192.0.2.120"), cc_);
+ // 1/20
+ EXPECT_EQ(.05, r);
for (auto i = 0; i < 20; ++i) {
// Allocate random addresses and make sure they belong to the
// pools associated with the class bar.
}
EXPECT_EQ(20, addresses_set.size());
- r = alloc.getOccupancyRate(IOAddress("192.0.2.120"), cc_, false);
+ r = alloc.getOccupancyRate(IOAddress("192.0.2.120"), cc_);
EXPECT_EQ(1., r);
addresses_set.clear();
// Simulate the case that the client also belongs to the class foo.
// All pools should now be available.
cc_.insert("foo");
- r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_, false);
- EXPECT_EQ(.5, r);
+ r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_);
+ // 21/40
+ EXPECT_EQ(.525, r);
for (auto i = 0; i < 20; ++i) {
IOAddress candidate = alloc.pickAddress(cc_, clientid_, IOAddress("0.0.0.0"));
addresses_set.insert(candidate);
EXPECT_TRUE(subnet_->inRange(candidate));
}
EXPECT_EQ(20, addresses_set.size());
- r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_, false);
+ r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_);
EXPECT_EQ(1., r);
// When the client does not belong to any client class the allocator
cc_.clear();
IOAddress candidate = alloc.pickAddress(cc_, clientid_, IOAddress("0.0.0.0"));
EXPECT_TRUE(candidate.isV4Zero());
- r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_, false);
+ r = alloc.getOccupancyRate(IOAddress("192.0.2.100"), cc_);
EXPECT_EQ(0., r);
}
EXPECT_NO_THROW(alloc.initAfterConfigure());
// Address getOccupancyRate is for IPv4 only.
- double r = alloc.getOccupancyRate(IOAddress("2001:db8:1::10"), cc_, false);
+ double r = alloc.getOccupancyRate(IOAddress("2001:db8:1::10"), cc_);
EXPECT_EQ(0., r);
auto pool_state = boost::dynamic_pointer_cast<PoolFreeLeaseQueueAllocationState>(pool_->getAllocationState());
ASSERT_TRUE(pool_state);
EXPECT_FALSE(pool_state->exhausted());
- double r = alloc.getOccupancyRate(IOAddress("2001:db8:2::"),
- 128, cc_, false);
+ double r = alloc.getOccupancyRate(IOAddress("2001:db8:2::"), 128, cc_);
EXPECT_EQ(5. / 256., r);
std::set<IOAddress> addresses;
// The pool comprises 65536 prefixes. All should be returned.
EXPECT_EQ(65536, prefixes.size());
- double r = alloc.getOccupancyRate(IOAddress("2001:db8:1:2::"),
- 128, cc_, false);
+ double r = alloc.getOccupancyRate(IOAddress("2001:db8:1:2::"), 128, cc_);
EXPECT_EQ(1., r);
}
IOAddress candidate = alloc.pickPrefix(cc_, pool, duid_, Allocator::PREFIX_LEN_HIGHER, IOAddress("::"), 0);
EXPECT_TRUE(candidate.isV6Zero());
- double r = alloc.getOccupancyRate(IOAddress("3000::"), 128, cc_, false);
+ double r = alloc.getOccupancyRate(IOAddress("3000::"), 128, cc_);
EXPECT_EQ(1., r);
auto i = 0;
}
++i;
}
- r = alloc.getOccupancyRate(IOAddress("3000::"), 128, cc_, false);
+ r = alloc.getOccupancyRate(IOAddress("3000::"), 128, cc_);
EXPECT_EQ(.5, r);
- r = alloc.getOccupancyRate(IOAddress("3000::"), 128, cc_, true);
- EXPECT_EQ(129. / 256., r);
for (auto j = 0; j < 128; ++j) {
candidate = alloc.pickPrefix(cc_, pool, duid_, Allocator::PREFIX_LEN_HIGHER, IOAddress("::"), 0);
candidate = alloc.pickPrefix(cc_, pool, duid_, Allocator::PREFIX_LEN_HIGHER, IOAddress("::"), 0);
EXPECT_TRUE(candidate.isV6Zero());
- r = alloc.getOccupancyRate(IOAddress("3000::"), 128, cc_, false);
+ r = alloc.getOccupancyRate(IOAddress("3000::"), 128, cc_);
EXPECT_EQ(1., r);
}
IOAddress candidate = alloc.pickPrefix(cc_, pool, duid_, Allocator::PREFIX_LEN_HIGHER, IOAddress("::"), 0);
EXPECT_TRUE(candidate.isV6Zero());
- double r = alloc.getOccupancyRate(IOAddress("3000::"), 128, cc_, false);
+ double r = alloc.getOccupancyRate(IOAddress("3000::"), 128, cc_);
EXPECT_EQ(1., r);
auto i = 0;
}
++i;
}
- r = alloc.getOccupancyRate(IOAddress("3000::"), 128, cc_, false);
+ r = alloc.getOccupancyRate(IOAddress("3000::"), 128, cc_);
EXPECT_EQ(.5, r);
for (auto j = 0; j < 128; ++j) {
candidate = alloc.pickPrefix(cc_, pool, duid_, Allocator::PREFIX_LEN_HIGHER, IOAddress("::"), 0);
EXPECT_TRUE(candidate.isV6Zero());
- r = alloc.getOccupancyRate(IOAddress("3000::"), 128, cc_, false);
+ r = alloc.getOccupancyRate(IOAddress("3000::"), 128, cc_);
EXPECT_EQ(1., r);
}
// Make sure that unique prefixes have been returned.
EXPECT_EQ(total, prefixes.size());
- double r = alloc.getOccupancyRate(IOAddress("3001::"), 128, cc_, false);
+ double r = alloc.getOccupancyRate(IOAddress("3001::"), 128, cc_);
EXPECT_EQ(1., r);
}
// Make sure that unique prefixes have been returned.
EXPECT_EQ(total, prefixes.size());
- double r = alloc.getOccupancyRate(IOAddress("2001:db8:1:2::"),
- 120, cc_, false);
+ double r = alloc.getOccupancyRate(IOAddress("2001:db8:1:2::"), 120, cc_);
EXPECT_EQ(1., r);
- r = alloc.getOccupancyRate(IOAddress("2001:db8:1:2::"), 128, cc_, false);
+ r = alloc.getOccupancyRate(IOAddress("2001:db8:1:2::"), 128, cc_);
EXPECT_EQ(65536. / 68096., r);
- r = alloc.getOccupancyRate(IOAddress("2001:db8:1:2::"), 64, cc_, false);
+ r = alloc.getOccupancyRate(IOAddress("2001:db8:1:2::"), 64, cc_);
EXPECT_EQ(0., r);
}
}
// Make sure that unique prefixes have been returned.
EXPECT_EQ(total, prefixes.size());
- double r = alloc.getOccupancyRate(IOAddress("3001::"), 128, cc_, false);
+ double r = alloc.getOccupancyRate(IOAddress("3001::"), 128, cc_);
EXPECT_EQ(2560. / 68096., r);
}
}
// Make sure that unique prefixes have been returned.
EXPECT_EQ(total, prefixes.size());
- double r = alloc.getOccupancyRate(IOAddress("3001::"), 128, cc_, false);
+ double r = alloc.getOccupancyRate(IOAddress("3001::"), 128, cc_);
EXPECT_EQ(2560. / 68096., r);
}
candidate = alloc.pickPrefix(cc_, pool, duid_, Allocator::PREFIX_LEN_HIGHER, IOAddress("::"), 64);
EXPECT_TRUE(candidate.isV6Zero());
- double r = alloc.getOccupancyRate(IOAddress("3000:1::"), 128, cc_, false);
+ double r = alloc.getOccupancyRate(IOAddress("3000:1::"), 128, cc_);
EXPECT_EQ(1., r);
cc_.insert("foo");
- r = alloc.getOccupancyRate(IOAddress("3000:1::"), 128, cc_, false);
+ r = alloc.getOccupancyRate(IOAddress("3000:1::"), 128, cc_);
EXPECT_EQ(256. / 65792., r);
cc_.clear();
- r = alloc.getOccupancyRate(IOAddress("3000:1::"), 128, cc_, false);
+ r = alloc.getOccupancyRate(IOAddress("3000:1::"), 128, cc_);
EXPECT_EQ(0., r);
}