|
@@ -254,78 +254,74 @@ public:
|
|
if (address == straddress4_[0]) {
|
|
if (address == straddress4_[0]) {
|
|
lease->hwaddr_ = vector<uint8_t>(6, 0x08);
|
|
lease->hwaddr_ = vector<uint8_t>(6, 0x08);
|
|
lease->client_id_ = boost::shared_ptr<ClientId>(
|
|
lease->client_id_ = boost::shared_ptr<ClientId>(
|
|
- new ClientId(vector<uint8_t>(8, 0x77)));
|
|
|
|
- lease->valid_lft_ = 8677; // Actual lifetime
|
|
|
|
- lease->cltt_ = 168256; // Current time of day
|
|
|
|
- lease->subnet_id_ = 23; // Arbitrary number
|
|
|
|
|
|
+ new ClientId(vector<uint8_t>(8, 0x42)));
|
|
|
|
+ lease->valid_lft_ = 8677;
|
|
|
|
+ lease->cltt_ = 168256;
|
|
|
|
+ lease->subnet_id_ = 23;
|
|
|
|
|
|
} else if (address == straddress4_[1]) {
|
|
} else if (address == straddress4_[1]) {
|
|
lease->hwaddr_ = vector<uint8_t>(6, 0x19);
|
|
lease->hwaddr_ = vector<uint8_t>(6, 0x19);
|
|
lease->client_id_ = boost::shared_ptr<ClientId>(
|
|
lease->client_id_ = boost::shared_ptr<ClientId>(
|
|
- new ClientId(vector<uint8_t>(8, 0x42)));
|
|
|
|
- lease->valid_lft_ = 3677; // Actual lifetime
|
|
|
|
- lease->cltt_ = 123456; // Current time of day
|
|
|
|
- lease->subnet_id_ = 73; // Arbitrary number
|
|
|
|
|
|
+ new ClientId(vector<uint8_t>(8, 0x53)));
|
|
|
|
+ lease->valid_lft_ = 3677;
|
|
|
|
+ lease->cltt_ = 123456;
|
|
|
|
+ lease->subnet_id_ = 73;
|
|
|
|
|
|
} else if (address == straddress4_[2]) {
|
|
} else if (address == straddress4_[2]) {
|
|
lease->hwaddr_ = vector<uint8_t>(6, 0x2a);
|
|
lease->hwaddr_ = vector<uint8_t>(6, 0x2a);
|
|
lease->client_id_ = boost::shared_ptr<ClientId>(
|
|
lease->client_id_ = boost::shared_ptr<ClientId>(
|
|
- new ClientId(vector<uint8_t>(8, 0x3a)));
|
|
|
|
- lease->valid_lft_ = 5412; // Actual lifetime
|
|
|
|
- lease->cltt_ = 234567; // Current time of day
|
|
|
|
- lease->subnet_id_ = 73; // Same as for straddress4_1
|
|
|
|
|
|
+ new ClientId(vector<uint8_t>(8, 0x64)));
|
|
|
|
+ lease->valid_lft_ = 5412;
|
|
|
|
+ lease->cltt_ = 234567;
|
|
|
|
+ lease->subnet_id_ = 73; // Same as lease 1
|
|
|
|
|
|
} else if (address == straddress4_[3]) {
|
|
} else if (address == straddress4_[3]) {
|
|
- lease->hwaddr_ = vector<uint8_t>(6, 0x19); // Same as lease 1
|
|
|
|
- vector<uint8_t> clientid;
|
|
|
|
- for (uint8_t i = 31; i < 126; ++i) {
|
|
|
|
- clientid.push_back(i);
|
|
|
|
- }
|
|
|
|
- lease->client_id_ = boost::shared_ptr<ClientId>
|
|
|
|
- (new ClientId(clientid));
|
|
|
|
|
|
+ lease->hwaddr_ = vector<uint8_t>(6, 0x19); // Same as lease 1
|
|
|
|
+ lease->client_id_ = boost::shared_ptr<ClientId>(
|
|
|
|
+ new ClientId(vector<uint8_t>(8, 0x75)));
|
|
|
|
|
|
// The times used in the next tests are deliberately restricted - we
|
|
// The times used in the next tests are deliberately restricted - we
|
|
// should be able to cope with valid lifetimes up to 0xffffffff.
|
|
// should be able to cope with valid lifetimes up to 0xffffffff.
|
|
// However, this will lead to overflows.
|
|
// However, this will lead to overflows.
|
|
// @TODO: test overflow conditions when code has been fixed
|
|
// @TODO: test overflow conditions when code has been fixed
|
|
- lease->valid_lft_ = 7000; // Actual lifetime
|
|
|
|
- lease->cltt_ = 234567; // Current time of day
|
|
|
|
- lease->subnet_id_ = 37; // Different from L1 and L2
|
|
|
|
|
|
+ lease->valid_lft_ = 7000;
|
|
|
|
+ lease->cltt_ = 234567;
|
|
|
|
+ lease->subnet_id_ = 37;
|
|
|
|
|
|
} else if (address == straddress4_[4]) {
|
|
} else if (address == straddress4_[4]) {
|
|
lease->hwaddr_ = vector<uint8_t>(6, 0x4c);
|
|
lease->hwaddr_ = vector<uint8_t>(6, 0x4c);
|
|
// Same ClientId as straddr4_[1]
|
|
// Same ClientId as straddr4_[1]
|
|
lease->client_id_ = boost::shared_ptr<ClientId>(
|
|
lease->client_id_ = boost::shared_ptr<ClientId>(
|
|
- new ClientId(vector<uint8_t>(8, 0x42)));
|
|
|
|
- lease->valid_lft_ = 7736; // Actual lifetime
|
|
|
|
- lease->cltt_ = 222456; // Current time of day
|
|
|
|
- lease->subnet_id_ = 85; // Arbitrary number
|
|
|
|
|
|
+ new ClientId(vector<uint8_t>(8, 0x53))); // Same as lease 1
|
|
|
|
+ lease->valid_lft_ = 7736;
|
|
|
|
+ lease->cltt_ = 222456;
|
|
|
|
+ lease->subnet_id_ = 85;
|
|
|
|
|
|
} else if (address == straddress4_[5]) {
|
|
} else if (address == straddress4_[5]) {
|
|
- lease->hwaddr_ = vector<uint8_t>(6, 0x19); // Same as lease 1
|
|
|
|
|
|
+ lease->hwaddr_ = vector<uint8_t>(6, 0x19); // Same as lease 1
|
|
// Same ClientId and IAID as straddress4_1
|
|
// Same ClientId and IAID as straddress4_1
|
|
lease->client_id_ = boost::shared_ptr<ClientId>(
|
|
lease->client_id_ = boost::shared_ptr<ClientId>(
|
|
- new ClientId(vector<uint8_t>(8, 0x42)));
|
|
|
|
- lease->valid_lft_ = 7832; // Actual lifetime
|
|
|
|
- lease->cltt_ = 227476; // Current time of day
|
|
|
|
- lease->subnet_id_ = 175; // Arbitrary number
|
|
|
|
|
|
+ new ClientId(vector<uint8_t>(8, 0x53))); // Same as lease 1
|
|
|
|
+ lease->valid_lft_ = 7832;
|
|
|
|
+ lease->cltt_ = 227476;
|
|
|
|
+ lease->subnet_id_ = 175;
|
|
|
|
|
|
} else if (address == straddress4_[6]) {
|
|
} else if (address == straddress4_[6]) {
|
|
lease->hwaddr_ = vector<uint8_t>(6, 0x6e);
|
|
lease->hwaddr_ = vector<uint8_t>(6, 0x6e);
|
|
// Same ClientId as straddress4_1
|
|
// Same ClientId as straddress4_1
|
|
lease->client_id_ = boost::shared_ptr<ClientId>(
|
|
lease->client_id_ = boost::shared_ptr<ClientId>(
|
|
- new ClientId(vector<uint8_t>(8, 0x42)));
|
|
|
|
- lease->valid_lft_ = 1832; // Actual lifetime
|
|
|
|
- lease->cltt_ = 627476; // Current time of day
|
|
|
|
- lease->subnet_id_ = 112; // Arbitrary number
|
|
|
|
|
|
+ new ClientId(vector<uint8_t>(8, 0x53))); // Same as lease 1
|
|
|
|
+ lease->valid_lft_ = 1832;
|
|
|
|
+ lease->cltt_ = 627476;
|
|
|
|
+ lease->subnet_id_ = 112;
|
|
|
|
|
|
} else if (address == straddress4_[7]) {
|
|
} else if (address == straddress4_[7]) {
|
|
- lease->hwaddr_ = vector<uint8_t>(); // Deliberately empty
|
|
|
|
|
|
+ lease->hwaddr_ = vector<uint8_t>(); // Empty
|
|
lease->client_id_ = boost::shared_ptr<ClientId>(
|
|
lease->client_id_ = boost::shared_ptr<ClientId>(
|
|
- new ClientId(vector<uint8_t>())); // Deliberately empty
|
|
|
|
- lease->valid_lft_ = 7975; // Actual lifetime
|
|
|
|
- lease->cltt_ = 213876; // Current time of day
|
|
|
|
- lease->subnet_id_ = 19; // Arbitrary number
|
|
|
|
|
|
+ new ClientId(vector<uint8_t>())); // Empty
|
|
|
|
+ lease->valid_lft_ = 7975;
|
|
|
|
+ lease->cltt_ = 213876;
|
|
|
|
+ lease->subnet_id_ = 19;
|
|
|
|
|
|
} else {
|
|
} else {
|
|
// Unknown address, return an empty pointer.
|
|
// Unknown address, return an empty pointer.
|
|
@@ -839,6 +835,58 @@ TEST_F(MySqlLeaseMgrTest, getLease4AddressSubnetId) {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+// @brief Check GetLease4 methods - Access by Hardware Address
|
|
|
|
+//
|
|
|
|
+// Adds leases to the database and checks that they can be accessed via
|
|
|
|
+// a combination of DIUID and IAID.
|
|
|
|
+TEST_F(MySqlLeaseMgrTest, getLease4Hwaddr) {
|
|
|
|
+ // Get the leases to be used for the test and add to the database
|
|
|
|
+ vector<Lease4Ptr> leases = createLeases4();
|
|
|
|
+ for (int i = 0; i < leases.size(); ++i) {
|
|
|
|
+ EXPECT_TRUE(lmptr_->addLease(leases[i]));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // Get the leases matching the hardware address of lease 1
|
|
|
|
+ Lease4Collection returned = lmptr_->getLease4(leases[1]->hwaddr_);
|
|
|
|
+
|
|
|
|
+ // Should be three leases, matching leases[1], [3] and [5].
|
|
|
|
+ ASSERT_EQ(3, returned.size());
|
|
|
|
+
|
|
|
|
+ // Easiest way to check is to look at the addresses.
|
|
|
|
+ vector<string> addresses;
|
|
|
|
+ for (Lease4Collection::const_iterator i = returned.begin();
|
|
|
|
+ i != returned.end(); ++i) {
|
|
|
|
+ addresses.push_back((*i)->addr_.toText());
|
|
|
|
+ }
|
|
|
|
+ sort(addresses.begin(), addresses.end());
|
|
|
|
+ EXPECT_EQ(straddress4_[1], addresses[0]);
|
|
|
|
+ EXPECT_EQ(straddress4_[3], addresses[1]);
|
|
|
|
+ EXPECT_EQ(straddress4_[5], addresses[2]);
|
|
|
|
+
|
|
|
|
+ // Repeat test with just one expected match
|
|
|
|
+ returned = lmptr_->getLease4(leases[2]->hwaddr_);
|
|
|
|
+ EXPECT_EQ(1, returned.size());
|
|
|
|
+ detailCompareLease(leases[2], *returned.begin());
|
|
|
|
+
|
|
|
|
+ // Check that an empty vector is valid
|
|
|
|
+ EXPECT_TRUE(leases[7]->hwaddr_.empty());
|
|
|
|
+ returned = lmptr_->getLease4(leases[7]->hwaddr_);
|
|
|
|
+ EXPECT_EQ(1, returned.size());
|
|
|
|
+ detailCompareLease(leases[7], *returned.begin());
|
|
|
|
+
|
|
|
|
+ // Try to get something with invalid hardware address
|
|
|
|
+ vector<uint8_t> invalid(6, 0);
|
|
|
|
+ returned = lmptr_->getLease4(invalid);
|
|
|
|
+ EXPECT_EQ(0, returned.size());
|
|
|
|
+
|
|
|
|
+ // And check that size of the vector matters
|
|
|
|
+ invalid = leases[4]->hwaddr_;
|
|
|
|
+ invalid.push_back(0);
|
|
|
|
+ returned = lmptr_->getLease4(invalid);
|
|
|
|
+ EXPECT_EQ(0, returned.size());
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
|
|
// @brief Check GetLease4 methods - Access by Hardware Address & Subnet ID
|
|
// @brief Check GetLease4 methods - Access by Hardware Address & Subnet ID
|
|
//
|
|
//
|
|
@@ -880,22 +928,22 @@ TEST_F(MySqlLeaseMgrTest, getLease4HwaddrSubnetId) {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-// @brief Check GetLease4 methods - Access by Hardware Address
|
|
|
|
|
|
+// @brief Check GetLease4 methods - Access by Client ID
|
|
//
|
|
//
|
|
// Adds leases to the database and checks that they can be accessed via
|
|
// Adds leases to the database and checks that they can be accessed via
|
|
-// a combination of DIUID and IAID.
|
|
|
|
-TEST_F(MySqlLeaseMgrTest, getLease4Hwaddr) {
|
|
|
|
|
|
+// the Client ID
|
|
|
|
+TEST_F(MySqlLeaseMgrTest, getLease4ClientId) {
|
|
// Get the leases to be used for the test and add to the database
|
|
// Get the leases to be used for the test and add to the database
|
|
vector<Lease4Ptr> leases = createLeases4();
|
|
vector<Lease4Ptr> leases = createLeases4();
|
|
for (int i = 0; i < leases.size(); ++i) {
|
|
for (int i = 0; i < leases.size(); ++i) {
|
|
EXPECT_TRUE(lmptr_->addLease(leases[i]));
|
|
EXPECT_TRUE(lmptr_->addLease(leases[i]));
|
|
}
|
|
}
|
|
|
|
|
|
- // Get the leases matching the hardware address of lease 1
|
|
|
|
- Lease4Collection returned = lmptr_->getLease4(leases[1]->hwaddr_);
|
|
|
|
|
|
+ // Get the leases matching the Client ID address of lease 1
|
|
|
|
+ Lease4Collection returned = lmptr_->getLease4(*leases[1]->client_id_);
|
|
|
|
|
|
- // Should be three leases, matching leases[1], [3] and [5].
|
|
|
|
- ASSERT_EQ(3, returned.size());
|
|
|
|
|
|
+ // Should be four leases, matching leases[1], [4], [5] and [6].
|
|
|
|
+ ASSERT_EQ(4, returned.size());
|
|
|
|
|
|
// Easiest way to check is to look at the addresses.
|
|
// Easiest way to check is to look at the addresses.
|
|
vector<string> addresses;
|
|
vector<string> addresses;
|
|
@@ -905,28 +953,24 @@ TEST_F(MySqlLeaseMgrTest, getLease4Hwaddr) {
|
|
}
|
|
}
|
|
sort(addresses.begin(), addresses.end());
|
|
sort(addresses.begin(), addresses.end());
|
|
EXPECT_EQ(straddress4_[1], addresses[0]);
|
|
EXPECT_EQ(straddress4_[1], addresses[0]);
|
|
- EXPECT_EQ(straddress4_[3], addresses[1]);
|
|
|
|
|
|
+ EXPECT_EQ(straddress4_[4], addresses[1]);
|
|
EXPECT_EQ(straddress4_[5], addresses[2]);
|
|
EXPECT_EQ(straddress4_[5], addresses[2]);
|
|
|
|
+ EXPECT_EQ(straddress4_[6], addresses[3]);
|
|
|
|
|
|
// Repeat test with just one expected match
|
|
// Repeat test with just one expected match
|
|
- returned = lmptr_->getLease4(leases[2]->hwaddr_);
|
|
|
|
|
|
+ returned = lmptr_->getLease4(*leases[3]->client_id_);
|
|
EXPECT_EQ(1, returned.size());
|
|
EXPECT_EQ(1, returned.size());
|
|
- detailCompareLease(leases[2], *returned.begin());
|
|
|
|
|
|
+ detailCompareLease(leases[3], *returned.begin());
|
|
|
|
|
|
// Check that an empty vector is valid
|
|
// Check that an empty vector is valid
|
|
- EXPECT_TRUE(leases[7]->hwaddr_.empty());
|
|
|
|
|
|
+ EXPECT_TRUE(leases[7]->client_id_->getClientId().empty());
|
|
returned = lmptr_->getLease4(leases[7]->hwaddr_);
|
|
returned = lmptr_->getLease4(leases[7]->hwaddr_);
|
|
EXPECT_EQ(1, returned.size());
|
|
EXPECT_EQ(1, returned.size());
|
|
detailCompareLease(leases[7], *returned.begin());
|
|
detailCompareLease(leases[7], *returned.begin());
|
|
|
|
|
|
- // Try to get something with invalid hardware address
|
|
|
|
- vector<uint8_t> invalid(6, 0);
|
|
|
|
- returned = lmptr_->getLease4(invalid);
|
|
|
|
- EXPECT_EQ(0, returned.size());
|
|
|
|
-
|
|
|
|
- // And check that size of the vector matters
|
|
|
|
- invalid = leases[4]->hwaddr_;
|
|
|
|
- invalid.push_back(0);
|
|
|
|
|
|
+ // Try to get something with invalid client ID
|
|
|
|
+ const uint8_t invalid_data[] = {0, 0, 0};
|
|
|
|
+ ClientId invalid(invalid_data, sizeof(invalid_data));
|
|
returned = lmptr_->getLease4(invalid);
|
|
returned = lmptr_->getLease4(invalid);
|
|
EXPECT_EQ(0, returned.size());
|
|
EXPECT_EQ(0, returned.size());
|
|
}
|
|
}
|