for (int i = 0; i < 30; i++) {
AllocEngine::ClientContext6 ctx(subnet_, clients[i], iaid_, IOAddress("::"),
Lease::TYPE_NA, false, false, "", false);
+ findReservation(engine, ctx);
Lease6Collection leases = engine.allocateLeases6(ctx);
if (leases.empty()) {
failure++;
// address reserved, will get it (despite the pool being depleted).
AllocEngine::ClientContext6 ctx(subnet_, duid_, iaid_, IOAddress("::"),
Lease::TYPE_NA, false, false, "", false);
+ findReservation(engine, ctx);
Lease6Collection leases = engine.allocateLeases6(ctx);
ASSERT_EQ(1, leases.size());
EXPECT_EQ("2001:db8:1::12", leases[0]->addr_.toText());
AllocEngine::ClientContext6 ctx1(subnet_, duid_, iaid_, IOAddress("::"),
pool_->getType(), false, false, "", true);
Lease6Collection leases1;
+ findReservation(engine, ctx1);
EXPECT_NO_THROW(leases1 = engine.allocateLeases6(ctx1));
ASSERT_EQ(1, leases1.size());
EXPECT_EQ("2001:db8:1::babe", leases1[0]->addr_.toText());
AllocEngine::ClientContext6 ctx2(subnet_, duid_, iaid_, IOAddress("::"),
pool_->getType(), false, false, "", true);
Lease6Collection leases2;
+ findReservation(engine, ctx2);
EXPECT_NO_THROW(leases2 = engine.allocateLeases6(ctx2));
EXPECT_EQ(1, leases2.size());
EXPECT_EQ("2001:db8:1::babe", leases2[0]->addr_.toText());
AllocEngine::ClientContext6 ctx3(subnet_, duid_, iaid_ + 1, IOAddress("::"),
pool_->getType(), false, false, "", true);
Lease6Collection leases3;
+ findReservation(engine, ctx3);
EXPECT_NO_THROW(leases3 = engine.allocateLeases6(ctx3));
ASSERT_EQ(1, leases3.size());
EXPECT_EQ("2001:db8:1::cafe", leases3[0]->addr_.toText());
AllocEngine::ClientContext6 ctx1(subnet_, duid_, iaid_, IOAddress("::"),
pool_->getType(), false, false, "", false);
Lease6Collection leases1;
+ findReservation(engine, ctx1);
EXPECT_NO_THROW(leases1 = engine.allocateLeases6(ctx1));
ASSERT_EQ(1, leases1.size());
EXPECT_EQ("2001:db8:1::babe", leases1[0]->addr_.toText());
AllocEngine::ClientContext6 ctx2(subnet_, duid_, iaid_, IOAddress("::"),
pool_->getType(), false, false, "", false);
Lease6Collection leases2;
+ findReservation(engine, ctx2);
EXPECT_NO_THROW(leases2 = engine.allocateLeases6(ctx2));
EXPECT_EQ(1, leases2.size());
EXPECT_EQ("2001:db8:1::babe", leases2[0]->addr_.toText());
AllocEngine::ClientContext6 ctx3(subnet_, duid_, iaid_ + 1, IOAddress("::"),
pool_->getType(), false, false, "", false);
Lease6Collection leases3;
+ findReservation(engine, ctx3);
EXPECT_NO_THROW(leases3 = engine.allocateLeases6(ctx3));
ASSERT_EQ(1, leases3.size());
EXPECT_EQ("2001:db8:1::cafe", leases3[0]->addr_.toText());
cfg_mgr.commit();
}
+void
+AllocEngine6Test::findReservation(AllocEngine& engine,
+ AllocEngine::ClientContext6& ctx) {
+ engine.findReservation(ctx);
+ // Let's check whether there's a hostname specified in the reservation
+ if (ctx.host_) {
+ std::string hostname = ctx.host_->getHostname();
+ // If there is, let's use it
+ if (!hostname.empty()) {
+ ctx.hostname_ = hostname;
+ }
+ }
+}
+
HostPtr
AllocEngine6Test::createHost6HWAddr(bool add_to_host_mgr, IPv6Resrv::Type type,
HWAddrPtr& hwaddr, const asiolink::IOAddress& addr,
false, false, "", fake);
Lease6Collection leases;
+
+ findReservation(engine, ctx);
EXPECT_NO_THROW(leases = engine.allocateLeases6(ctx));
for (Lease6Collection::iterator it = leases.begin(); it != leases.end(); ++it) {
AllocEngine::ClientContext6 ctx(subnet_, duid_, iaid_, hint, type,
false, false, "", fake);
ctx.hwaddr_ = hwaddr_;
-
+ findReservation(*engine, ctx);
EXPECT_NO_THROW(lease = expectOneLease(engine->allocateLeases6(ctx)));
// Check that we got a lease