Commit 20419496 authored by Tomek Mrugalski's avatar Tomek Mrugalski 🛰
Browse files

[2320] Additional tests implemented.

parent 6d3fb27d
......@@ -90,4 +90,14 @@ TEST(HWAddrTest, operators) {
EXPECT_TRUE(*hw4 != *hw5);
}
TEST(HWAddrTest, toText) {
uint8_t data[] = {0, 1, 2, 3, 4, 5}; // last digit different
uint8_t htype = 15;
HWAddrPtr hw(new HWAddr(data, sizeof(data), htype));
EXPECT_EQ("hwtype=15 00:01:02:03:04:05", hw->toText());
}
} // end of anonymous namespace
......@@ -16,6 +16,7 @@
#include <config.h>
#include <dhcpsrv/addr_utilities.h>
#include <exceptions/exceptions.h>
#include <gtest/gtest.h>
......@@ -28,6 +29,8 @@ using namespace std;
using namespace isc::dhcp;
using namespace isc::asiolink;
namespace {
// This test verifies that lastAddrInPrefix is able to handle IPv4 operations.
TEST(AddrUtilitiesTest, lastAddrInPrefix4) {
IOAddress addr1("192.0.2.1");
......@@ -154,3 +157,47 @@ TEST(AddrUtilitiesTest, firstAddrInPrefix6) {
EXPECT_EQ("2001::ff80", firstAddrInPrefix(addr2, 121).toText());
EXPECT_EQ("2001::ff00", firstAddrInPrefix(addr2, 120).toText());
}
// Checks if IPv4 netmask is generated properly
TEST(AddrUtilitiesTest, getNetmask4) {
EXPECT_EQ("0.0.0.0", getNetmask4(0).toText());
EXPECT_EQ("128.0.0.0", getNetmask4(1).toText());
EXPECT_EQ("192.0.0.0", getNetmask4(2).toText());
EXPECT_EQ("224.0.0.0", getNetmask4(3).toText());
EXPECT_EQ("240.0.0.0", getNetmask4(4).toText());
EXPECT_EQ("248.0.0.0", getNetmask4(5).toText());
EXPECT_EQ("252.0.0.0", getNetmask4(6).toText());
EXPECT_EQ("254.0.0.0", getNetmask4(7).toText());
EXPECT_EQ("255.0.0.0", getNetmask4(8).toText());
EXPECT_EQ("255.128.0.0", getNetmask4(9).toText());
EXPECT_EQ("255.192.0.0", getNetmask4(10).toText());
EXPECT_EQ("255.224.0.0", getNetmask4(11).toText());
EXPECT_EQ("255.240.0.0", getNetmask4(12).toText());
EXPECT_EQ("255.248.0.0", getNetmask4(13).toText());
EXPECT_EQ("255.252.0.0", getNetmask4(14).toText());
EXPECT_EQ("255.254.0.0", getNetmask4(15).toText());
EXPECT_EQ("255.255.0.0", getNetmask4(16).toText());
EXPECT_EQ("255.255.128.0", getNetmask4(17).toText());
EXPECT_EQ("255.255.192.0", getNetmask4(18).toText());
EXPECT_EQ("255.255.224.0", getNetmask4(19).toText());
EXPECT_EQ("255.255.240.0", getNetmask4(20).toText());
EXPECT_EQ("255.255.248.0", getNetmask4(21).toText());
EXPECT_EQ("255.255.252.0", getNetmask4(22).toText());
EXPECT_EQ("255.255.254.0", getNetmask4(23).toText());
EXPECT_EQ("255.255.255.0", getNetmask4(24).toText());
EXPECT_EQ("255.255.255.128", getNetmask4(25).toText());
EXPECT_EQ("255.255.255.192", getNetmask4(26).toText());
EXPECT_EQ("255.255.255.224", getNetmask4(27).toText());
EXPECT_EQ("255.255.255.240", getNetmask4(28).toText());
EXPECT_EQ("255.255.255.248", getNetmask4(29).toText());
EXPECT_EQ("255.255.255.252", getNetmask4(30).toText());
EXPECT_EQ("255.255.255.254", getNetmask4(31).toText());
EXPECT_EQ("255.255.255.255", getNetmask4(32).toText());
EXPECT_THROW(getNetmask4(33), isc::BadValue);
}
}; // end of anonymous namespace
......@@ -895,4 +895,44 @@ TEST_F(AllocEngine4Test, requestReuseExpiredLease4) {
detailCompareLease(lease, from_mgr);
}
// This test checks if a lease is really renewed when renewLease4 method is
// called
TEST_F(AllocEngine4Test, renewLease4) {
boost::scoped_ptr<AllocEngine> engine;
ASSERT_NO_THROW(engine.reset(new AllocEngine(AllocEngine::ALLOC_ITERATIVE, 100)));
ASSERT_TRUE(engine);
IOAddress addr("192.0.2.102");
const uint32_t old_lifetime = 100;
const uint32_t old_t1 = 50;
const uint32_t old_t2 = 75;
const time_t old_timestamp = time(NULL) - 45; // Allocated 45 seconds ago
// Just a different hw/client-id for the second client
const uint8_t hwaddr2[] = { 0, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe};
const uint8_t clientid2[] = { 8, 7, 6, 5, 4, 3, 2, 1 };
Lease4Ptr lease(new Lease4(addr, clientid2, sizeof(clientid2), hwaddr2,
sizeof(hwaddr2), old_lifetime, old_t1, old_t2,
old_timestamp, subnet_->getID()));
ASSERT_TRUE(LeaseMgrFactory::instance().addLease(lease));
// lease was assigned 45 seconds ago and is valid for 100 seconds. Let's
// renew it.
ASSERT_FALSE(lease->expired());
lease = engine->renewLease4(subnet_, clientid_, hwaddr_, lease, false);
// Check that he got that single lease
ASSERT_TRUE(lease);
EXPECT_EQ(addr.toText(), lease->addr_.toText());
// Check that the lease matches subnet_, hwaddr_,clientid_ parameters
checkLease4(lease);
// Check that the lease is indeed updated in LeaseMgr
Lease4Ptr from_mgr = LeaseMgrFactory::instance().getLease4(addr);
ASSERT_TRUE(from_mgr);
// Now check that the lease in LeaseMgr has the same parameters
detailCompareLease(lease, from_mgr);
}
}; // end of anonymous namespace
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment