#include <dhcpsrv/cfgmgr.h>
#include <cc/command_interpreter.h>
#include <cc/data.h>
+#include <stats/stats_mgr.h>
#include <testutils/user_context_utils.h>
+
#include <gtest/gtest.h>
+
#include <errno.h>
#include <set>
using namespace isc::dhcp;
using namespace isc::dhcp_ddns;
using namespace isc::asiolink;
+using namespace isc::stats;
using namespace isc::test;
namespace {
LeaseMgrFactory::destroy();
enableD2();
lmptr_ = 0;
+ StatsMgr::instance().removeAll();
}
/// @brief Destructor
disableD2();
unloadLibs();
lmptr_ = 0;
+ StatsMgr::instance().removeAll();
}
/// @brief Initializes lease manager (and optionally populates it with a lease)
///
/// @param v6 true = v6, false = v4
/// @param insert_lease governs whether a lease should be pre-inserted
- void initLeaseMgr(bool v6, bool insert_lease) {
+ /// @param expired governs whether a lease should be expired
+ void initLeaseMgr(bool v6, bool insert_lease, bool expired = false) {
LeaseMgrFactory::destroy();
std::ostringstream s;
if (insert_lease) {
if (v6) {
- lmptr_->addLease(createLease6("2001:db8:1::1", 66, 0x42));
- lmptr_->addLease(createLease6("2001:db8:1::2", 66, 0x56));
- lmptr_->addLease(createLease6("2001:db8:2::1", 99, 0x42));
- lmptr_->addLease(createLease6("2001:db8:2::2", 99, 0x56));
+ lmptr_->addLease(createLease6("2001:db8:1::1", 66, 0x42, expired));
+ lmptr_->addLease(createLease6("2001:db8:1::2", 66, 0x56, expired));
+ lmptr_->addLease(createLease6("2001:db8:2::1", 99, 0x42, expired));
+ lmptr_->addLease(createLease6("2001:db8:2::2", 99, 0x56, expired));
+ StatsMgr::instance().setValue(
+ StatsMgr::generateName("subnet", 66, "assigned-nas" ),
+ int64_t(2));
+ StatsMgr::instance().setValue(
+ StatsMgr::generateName("subnet", 99, "assigned-nas" ),
+ int64_t(2));
} else {
- lmptr_->addLease(createLease4("192.0.2.1", 44, 0x08, 0x42));
- lmptr_->addLease(createLease4("192.0.2.2", 44, 0x09, 0x56));
- lmptr_->addLease(createLease4("192.0.3.1", 88, 0x08, 0x42));
- lmptr_->addLease(createLease4("192.0.3.2", 88, 0x09, 0x56));
+ lmptr_->addLease(createLease4("192.0.2.1", 44, 0x08, 0x42, expired));
+ lmptr_->addLease(createLease4("192.0.2.2", 44, 0x09, 0x56, expired));
+ lmptr_->addLease(createLease4("192.0.3.1", 88, 0x08, 0x42, expired));
+ lmptr_->addLease(createLease4("192.0.3.2", 88, 0x09, 0x56, expired));
+ StatsMgr::instance().setValue(
+ StatsMgr::generateName("subnet", 44, "assigned-addresses"),
+ int64_t(2));
+ StatsMgr::instance().setValue(
+ StatsMgr::generateName("subnet", 88, "assigned-addresses"),
+ int64_t(2));
}
}
}
/// it 6 times.
/// @param client_id_pattern value to be used for generating client identifier by
/// repeating it 8 times.
+ /// @param expired controls weather the lease should be expired.
/// @return Returns the lease created
- Lease4Ptr createLease4(const std::string& ip_address, const SubnetID& subnet_id,
+ Lease4Ptr createLease4(const std::string& ip_address,
+ const SubnetID& subnet_id,
const uint8_t hw_address_pattern,
- const uint8_t client_id_pattern) {
+ const uint8_t client_id_pattern,
+ bool expired = false) {
Lease4Ptr lease(new Lease4());
lease->addr_ = IOAddress(ip_address);
lease->client_id_ = ClientIdPtr(new ClientId(vector<uint8_t>(8, client_id_pattern)));
// Purposely using high cltt and valid lifetime to test that
// expiration time is cast properly.
- lease->valid_lft_ = HIGH_VALID_LIFETIME; // Very high valid lifetime
- lease->cltt_ = DEC_2030_TIME; // December 11th 2030
+ if (expired) {
+ lease->cltt_ = 0;
+ lease->valid_lft_ = 60;
+ } else {
+ lease->cltt_ = DEC_2030_TIME; // December 11th 2030
+ lease->valid_lft_ = HIGH_VALID_LIFETIME; // Very high valid lifetime
+ }
lease->subnet_id_ = subnet_id;
lease->fqdn_fwd_ = false;
lease->fqdn_rev_ = true;
/// @param subnet_id subnet identifier
/// @param duid_address_pattern value to be used for generating DUID by
/// repeating it 8 times
+ /// @param expired controls weather the lease should be expired.
/// @return Returns the lease created
- Lease6Ptr createLease6(const std::string& ip_address, const SubnetID& subnet_id,
- const uint8_t duid_pattern) {
+ Lease6Ptr createLease6(const std::string& ip_address,
+ const SubnetID& subnet_id,
+ const uint8_t duid_pattern,
+ bool expired = false) {
Lease6Ptr lease(new Lease6());
lease->addr_ = IOAddress(ip_address);
lease->preferred_lft_ = 1800;
// Purposely using high cltt and valid lifetime to test that
// expiration time is cast properly.
- lease->valid_lft_ = HIGH_VALID_LIFETIME; // Very high valid lifetime
- lease->cltt_ = DEC_2030_TIME; // December 11th 2030
+ if (expired) {
+ lease->cltt_ = 0;
+ lease->valid_lft_ = 60;
+ } else {
+ lease->cltt_ = DEC_2030_TIME; // December 11th 2030
+ lease->valid_lft_ = HIGH_VALID_LIFETIME; // Very high valid lifetime
+ }
lease->subnet_id_ = subnet_id;
lease->fqdn_fwd_ = false;
lease->fqdn_rev_ = true;
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
string exp_rsp = "Lease for address 192.0.2.202, subnet-id 44 added.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Now check that the lease is really there.
Lease4Ptr l = lmptr_->getLease4(IOAddress("192.0.2.202"));
ASSERT_TRUE(l);
// by one is ok.
EXPECT_LE(abs(l->cltt_ - time(NULL)), 1);
EXPECT_EQ(0, l->state_);
-
}
// Check that a lease4 is not added when it already exists.
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Now send the command.
string txt =
"{\n"
"}";
string exp_rsp = "IPv4 lease already exists.";
testCommand(txt, CONTROL_RESULT_ERROR, exp_rsp);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
}
// Check that subnet-id is optional. If not specified, Kea should select
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Now send the command without subnet-id. Kea should select
// the subnet id on its own.
string txt =
string exp_rsp = "Lease for address 192.0.2.202, subnet-id 44 added.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Now check that the lease is really there.
Lease4Ptr l = lmptr_->getLease4(IOAddress("192.0.2.202"));
ASSERT_TRUE(l);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Now send the command without subnet-id. Kea should select
// the subnet id on its own.
string txt =
"address 192.0.55.1";
testCommand(txt, CONTROL_RESULT_ERROR, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Now check that the lease was not added.
Lease4Ptr l = lmptr_->getLease4(IOAddress("192.0.55.1"));
ASSERT_FALSE(l);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Add a lease with negative expiration time.
string txt =
"{\n"
string exp_rsp = "expiration time must be positive for address 192.0.2.202";
testCommand(txt, CONTROL_RESULT_ERROR, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Now check that the lease was not added.
Lease4Ptr l = lmptr_->getLease4(IOAddress("192.0.2.202"));
ASSERT_FALSE(l);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Add a lease with negative cltt (expiration time - valid lifetime)
string txt =
"{\n"
"address 192.0.2.202";
testCommand(txt, CONTROL_RESULT_ERROR, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Now check that the lease was not added.
Lease4Ptr l = lmptr_->getLease4(IOAddress("192.0.2.202"));
ASSERT_FALSE(l);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
string exp_rsp = "Lease for address 192.0.2.202, subnet-id 44 added.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Now check that the lease is really there.
Lease4Ptr l = lmptr_->getLease4(IOAddress("192.0.2.202"));
ASSERT_TRUE(l);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
string exp_rsp = "Lease for address 192.0.2.202, subnet-id 44 added.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Now check that the lease is really there.
Lease4Ptr l = lmptr_->getLease4(IOAddress("192.0.2.202"));
ASSERT_TRUE(l);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
string exp_rsp = "Lease for address 2001:db8:1::3, subnet-id 66 added.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now check that the lease is really there.
Lease6Ptr l = lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::3"));
ASSERT_TRUE(l);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
"}";
string exp_rsp = "IPv6 lease already exists.";
testCommand(txt, CONTROL_RESULT_ERROR, exp_rsp);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
}
// Check that subnet-id is optional. If not specified, Kea should select
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command (without subnet-id)
string txt =
"{\n"
string exp_rsp = "Lease for address 2001:db8:1::3, subnet-id 66 added.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now check that the lease is really there and has correct subnet-id.
Lease6Ptr l = lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::3"));
ASSERT_TRUE(l);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command (without subnet-id)
string txt =
"{\n"
"address 2001:ffff::1";
testCommand(txt, CONTROL_RESULT_ERROR, exp_rsp);
- // Now check that the lease is really there and has correct subnet-id.
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
+ // Now check that the lease was not added.
Lease6Ptr l = lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:ffff::1"));
ASSERT_FALSE(l);
}
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
string exp_rsp = "Lease for prefix 2001:db8:abcd::/48, subnet-id 66 added.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now check that the lease is really there.
Lease6Ptr l = lmptr_->getLease6(Lease::TYPE_PD, IOAddress("2001:db8:abcd::"));
ASSERT_TRUE(l);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
string exp_rsp = "Lease for address 2001:db8:1::3, subnet-id 66 added.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now check that the lease is really there.
Lease6Ptr l = lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::3"));
ASSERT_TRUE(l);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
string exp_rsp = "Lease for address 2001:db8:1::3, subnet-id 66 added.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now check that the lease is really there.
Lease6Ptr l = lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::3"));
ASSERT_TRUE(l);
// Checks that lease4-get sanitizes its input.
TEST_F(LeaseCmdsTest, Lease4GetByAddrBadParam) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Invalid family
string cmd =
"{\n"
// valid, but the lease is not there.
TEST_F(LeaseCmdsTest, Lease4GetByAddrNotFound) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Invalid
string cmd =
"{\n"
// Checks that lease4-get can return a lease by address.
TEST_F(LeaseCmdsTest, Lease4GetByAddr) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for valid, existing lease.
string cmd =
"{\n"
// well formed, but the lease is not there.
TEST_F(LeaseCmdsTest, Lease4GetByHWAddrNotFound) {
- // Initialize lease manager (false = v4, false = don't add a lease)
+ // Initialize lease manager (false = v4, false = don't add leases)
initLeaseMgr(false, false);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// No such lease.
string cmd =
"{\n"
// Checks that lease4-get can find a lease by hardware address.
TEST_F(LeaseCmdsTest, Lease4GetByHWAddr) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Invalid
string cmd =
"{\n"
// the query is correctly formed, but the lease is not there.
TEST_F(LeaseCmdsTest, Lease6GetByAddr6NotFound) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Now send the command.
string cmd =
"{\n"
// well formed, but the lease is not there.
TEST_F(LeaseCmdsTest, Lease4GetByClientIdNotFound) {
- // Initialize lease manager (false = v4, false = don't add a lease)
+ // Initialize lease manager (false = v4, false = don't add leases)
initLeaseMgr(false, false);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// No such lease.
string cmd =
"{\n"
// Check that lease4-get can find a lease by client identifier.
TEST_F(LeaseCmdsTest, Lease4GetByClientId) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
string cmd =
"{\n"
" \"command\": \"lease4-get\",\n"
// Checks that lease6-get rejects queries by client-id.
TEST_F(LeaseCmdsTest, Lease6GetByClientIdInvalidType) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// client-id query is allowed in v4 only.
string cmd =
"{\n"
// Checks that lease6-get(subnet-id, addr) can handle a situation when
// the query is correctly formed, but the lease is not there.
TEST_F(LeaseCmdsTest, Lease6GetByDuidNotFound) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Now send the command.
string cmd =
"{\n"
initLeaseMgr(true, true); // (true = v6, true = create a lease)
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Now send the command.
string cmd =
"{\n"
// Checks that lease6-get sanitizes its input.
TEST_F(LeaseCmdsTest, Lease6GetByAddrBadParam) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Invalid family
string cmd =
"{\n"
// We need to get a prefix lease. We need to create it by hand.
initLeaseMgr(true, false); // (true = v6, true = create a lease)
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Let's start with regular address lease and make it a prefix lease.
Lease6Ptr l = createLease6("2001:db8:1::1", 66, 0x77);
l->addr_ = IOAddress("2001:db8:1234:ab::");
initLeaseMgr(true, true); // (true = v6, true = create a lease)
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Now send the command.
string cmd =
"{\n"
// Checks that lease4-get-all returns all leases.
TEST_F(LeaseCmdsTest, Lease4GetAll) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for all leases.
string cmd =
"{\n"
// Initialize lease manager (false = v4, false = do not add leasesxs)
initLeaseMgr(false, false);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for all leases.
string cmd =
"{\n"
EXPECT_EQ(0, leases->size());
}
-
// Checks that lease4-get-all returns all leases for a subnet.
TEST_F(LeaseCmdsTest, Lease4GetAllBySubnetId) {
// Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for leases from subnet 44. Subnet 127 will be ignored because
// it doesn't contain any leases.
string cmd =
// Checks that lease4-get-all returns empty set when no leases are found.
TEST_F(LeaseCmdsTest, Lease4GetAllBySubnetIdNoLeases) {
- // Initialize lease manager (false = v4, true = do not add leases)
+ // Initialize lease manager (false = v4, false = don't add leases)
initLeaseMgr(false, false);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for leases from subnet 44. Subnet 127 will be ignored because
// it doesn't contain any leases.
string cmd =
// Checks that lease4-get-all returns leases from multiple subnets.
TEST_F(LeaseCmdsTest, Lease4GetAllByMultipleSubnetIds) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for leases from subnet 44 and 88.
string cmd =
"{\n"
// Checks that lease4-get-all checks its input arguments.
TEST_F(LeaseCmdsTest, Lease4GetBySubnetIdInvalidArguments) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Subnets not specified in arguments.
string cmd =
"{\n"
// Checks that multiple calls to lease4-get-pages return all leases.
TEST_F(LeaseCmdsTest, Lease4GetPaged) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Gather all returned addresses to verify that all were returned.
std::set<std::string> lease_addresses;
// zero IPv4 address.
TEST_F(LeaseCmdsTest, Lease4GetPagedZeroAddress) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for a page of leases.
string cmd =
"{\n"
// Verifies that IPv6 address as a start address is rejected.
TEST_F(LeaseCmdsTest, Lease4GetPagedIPv4Address) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for a page of leases.
string cmd =
"{\n"
// Checks that lease6-get-all returns all leases.
TEST_F(LeaseCmdsTest, Lease6GetAll) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for all leases.
string cmd =
"{\n"
// Initialize lease manager (true = v6, false = do not add leasesxs)
initLeaseMgr(true, false);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for all leases.
string cmd =
"{\n"
EXPECT_EQ(0, leases->size());
}
-
// Checks that lease6-get-all returns all leases for a subnet.
TEST_F(LeaseCmdsTest, Lease6GetAllBySubnetId) {
// Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for leases from subnet 66. Subnet 127 will be ignored because
// it doesn't contain any leases.
string cmd =
// Checks that lease6-get-all returns empty set when no leases are found.
TEST_F(LeaseCmdsTest, Lease6GetAllBySubnetIdNoLeases) {
- // Initialize lease manager (true = v6, true = do not add leases)
+ // Initialize lease manager (true = v6, false = don't add leases)
initLeaseMgr(true, false);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for leases from subnet 66. Subnet 127 will be ignored because
// it doesn't contain any leases.
string cmd =
// Checks that lease6-get-all returns leases from multiple subnets.
TEST_F(LeaseCmdsTest, Lease6GetAllByMultipleSubnetIds) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for leases from subnet 66 and 99.
string cmd =
"{\n"
// Checks that lease6-get-all checks its input arguments.
TEST_F(LeaseCmdsTest, Lease6GetBySubnetIdInvalidArguments) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Subnets not specified in arguments.
string cmd =
"{\n"
// Checks that multiple calls to lease6-get-page return all leases.
TEST_F(LeaseCmdsTest, Lease6GetPaged) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Gather all returned addresses to verify that all were returned.
std::set<std::string> lease_addresses;
// zero IPv6 address.
TEST_F(LeaseCmdsTest, Lease6GetPagedZeroAddress) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for a page of leases.
string cmd =
"{\n"
// Verifies that IPv4 address as a start address is rejected.
TEST_F(LeaseCmdsTest, Lease6GetPagedIPv4Address) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for a page of leases.
string cmd =
"{\n"
// address is rejected.
TEST_F(LeaseCmdsTest, Lease6GetPagedInvalidFrom) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for a page of leases.
string cmd =
"{\n"
// Verifies that limit is mandatory.
TEST_F(LeaseCmdsTest, Lease6GetPagedNoLimit) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for a page of leases.
string cmd =
"{\n"
// Verifies that the limit must be a number.
TEST_F(LeaseCmdsTest, Lease6GetPagedLimitNotNumber) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for a page of leases.
string cmd =
"{\n"
// Verifies that the limit of 0 is rejected.
TEST_F(LeaseCmdsTest, Lease6GetPagedLimitIsZero) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Query for a page of leases.
string cmd =
"{\n"
// Checks that lease4-get-by-hw-address works as expected (find no lease).
TEST_F(LeaseCmdsTest, LeaseGetByHwAddressFind0) {
- // Initialize lease manager (false = v4, false = don't add a lease)
+ // Initialize lease manager (false = v4, false = don't add leases)
initLeaseMgr(false, false);
- // No such leasea.
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ // No such lease.
string cmd =
"{\n"
" \"command\": \"lease4-get-by-hw-address\",\n"
// Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Get the lease.
string cmd =
"{\n"
// Checks that lease4-get-by-client-id works as expected (find no lease).
TEST_F(LeaseCmdsTest, LeaseGetByClientIdFind0) {
- // Initialize lease manager (false = v4, false = don't add a lease)
+ // Initialize lease manager (false = v4, false = don't add leases)
initLeaseMgr(false, false);
- // No such leasea.
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ // No such lease.
string cmd =
"{\n"
" \"command\": \"lease4-get-by-client-id\",\n"
// Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Get the lease.
string cmd =
"{\n"
// Checks that lease6-get-by-duid works as expected (find no lease).
TEST_F(LeaseCmdsTest, LeaseGetByDuidFind0) {
- // Initialize lease manager (true = v6, false = don't add a lease)
+ // Initialize lease manager (true = v6, false = don't add leases)
initLeaseMgr(true, false);
- // No such leasea.
- string cmd =
- "{\n"
- " \"command\": \"lease6-get-by-duid\",\n"
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ // No such lease.
+ string cmd =
+ "{\n"
+ " \"command\": \"lease6-get-by-duid\",\n"
" \"arguments\": {"
" \"duid\": \"00:01:02:03:04:05:06:07\"\n"
" }\n"
// Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Get the lease.
string cmd =
"{\n"
// Checks that lease4-get-by-hostname works as expected (find no lease).
TEST_F(LeaseCmdsTest, Lease4GetByHostnameFind0) {
- // Initialize lease manager (false = v4, false = don't add a lease)
+ // Initialize lease manager (false = v4, false = don't add leases)
initLeaseMgr(false, false);
- // No such leasea.
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ // No such lease.
string cmd =
"{\n"
" \"command\": \"lease4-get-by-hostname\",\n"
// Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Get the lease.
string cmd =
"{\n"
// Checks that lease6-get-by-hostname works as expected (find no lease).
TEST_F(LeaseCmdsTest, Lease6GetByHostnameFind0) {
- // Initialize lease manager (true = v6, false = don't add a lease)
+ // Initialize lease manager (true = v6, false = don't add leases)
initLeaseMgr(true, false);
- // No such leasea.
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ // No such lease.
string cmd =
"{\n"
" \"command\": \"lease6-get-by-hostname\",\n"
// Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Get the lease.
string cmd =
"{\n"
// Test checks if lease4-update handler refuses calls with missing parameters.
TEST_F(LeaseCmdsTest, Lease4UpdateMissingParams) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
// Check that the lease manager pointer is there.
// have incorrect values.
TEST_F(LeaseCmdsTest, Lease4UpdateBadParams) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
// Check that the lease manager pointer is there.
// no lease to be updated.
TEST_F(LeaseCmdsTest, Lease4UpdateNoLease) {
- // Initialize lease manager (false = v4, false = don't add any lease)
+ // Initialize lease manager (false = v4, false = don't add leases)
initLeaseMgr(false, false);
// Check that the lease manager pointer is there.
// and a hostname.
TEST_F(LeaseCmdsTest, Lease4Update) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Now send the command.
string txt =
"{\n"
string exp_rsp = "IPv4 lease updated.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
+ // Now check that the lease is still there.
+ Lease4Ptr l = lmptr_->getLease4(IOAddress("192.0.2.1"));
+ ASSERT_TRUE(l);
+
+ // Make sure it's been updated.
+ ASSERT_TRUE(l->hwaddr_);
+ EXPECT_EQ("1a:1b:1c:1d:1e:1f", l->hwaddr_->toText(false));
+ EXPECT_EQ("newhostname.example.org", l->hostname_);
+ EXPECT_FALSE(l->getContext());
+}
+
+// Check that a lease4 can be updated. We're changing hw-address
+// and a hostname.
+TEST_F(LeaseCmdsTest, Lease4UpdateWithStats) {
+
+ // Initialize lease manager (false = v4, true = add leases)
+ initLeaseMgr(false, true, true);
+
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
+ // Now send the command.
+ string txt =
+ "{\n"
+ " \"command\": \"lease4-update\",\n"
+ " \"arguments\": {"
+ " \"subnet-id\": 44,\n"
+ " \"ip-address\": \"192.0.2.1\",\n"
+ " \"hw-address\": \"1a:1b:1c:1d:1e:1f\",\n"
+ " \"hostname\": \"newhostname.example.org\""
+ " }\n"
+ "}";
+ string exp_rsp = "IPv4 lease updated.";
+ testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 3);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Now check that the lease is still there.
Lease4Ptr l = lmptr_->getLease4(IOAddress("192.0.2.1"));
ASSERT_TRUE(l);
// and a hostname. The subnet-id is not specified.
TEST_F(LeaseCmdsTest, Lease4UpdateNoSubnetId) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Now send the command.
string txt =
"{\n"
string exp_rsp = "IPv4 lease updated.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
+ // Now check that the lease is still there.
+ Lease4Ptr l = lmptr_->getLease4(IOAddress("192.0.2.1"));
+ ASSERT_TRUE(l);
+
+ // Make sure it's been updated.
+ ASSERT_TRUE(l->hwaddr_);
+ EXPECT_EQ("1a:1b:1c:1d:1e:1f", l->hwaddr_->toText(false));
+ EXPECT_EQ("newhostname.example.org", l->hostname_);
+ EXPECT_FALSE(l->getContext());
+}
+
+// Check that a lease4 can be updated. We're changing hw-address
+// and a hostname. The subnet-id is not specified.
+TEST_F(LeaseCmdsTest, Lease4UpdateNoSubnetIdWithStats) {
+
+ // Initialize lease manager (false = v4, true = add leases)
+ initLeaseMgr(false, true, true);
+
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
+ // Now send the command.
+ string txt =
+ "{\n"
+ " \"command\": \"lease4-update\",\n"
+ " \"arguments\": {"
+ " \"ip-address\": \"192.0.2.1\",\n"
+ " \"hw-address\": \"1a:1b:1c:1d:1e:1f\",\n"
+ " \"hostname\": \"newhostname.example.org\""
+ " }\n"
+ "}";
+ string exp_rsp = "IPv4 lease updated.";
+ testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 3);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Now check that the lease is still there.
Lease4Ptr l = lmptr_->getLease4(IOAddress("192.0.2.1"));
ASSERT_TRUE(l);
// To trigger this behavior 'force-create' boolean parameter must be
// included in the command.
TEST_F(LeaseCmdsTest, Lease4UpdateForceCreate) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, false);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
string exp_rsp = "IPv4 lease added.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Now check that the lease is still there.
Lease4Ptr l = lmptr_->getLease4(IOAddress("192.0.2.1"));
ASSERT_TRUE(l);
// included in the command. The subnet-id is not specified, Kea will
// figure it out.
TEST_F(LeaseCmdsTest, Lease4UpdateForceCreateNoSubnetId) {
- // Initialize lease manager (false = v4, false = don't add any lease)
+ // Initialize lease manager (false = v4, false = don't add leases)
initLeaseMgr(false, false);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
string exp_rsp = "IPv4 lease added.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Now check that the lease is still there.
Lease4Ptr l = lmptr_->getLease4(IOAddress("192.0.2.1"));
ASSERT_TRUE(l);
// parameter is explicitly set to false.
TEST_F(LeaseCmdsTest, Lease4UpdateDoNotForceCreate) {
- // Initialize lease manager (false = v4, false = don't add any lease)
+ // Initialize lease manager (false = v4, false = don't add leases)
initLeaseMgr(false, false);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
"}";
string exp_rsp = "failed to update the lease with address 192.0.2.1 - no such lease";
testCommand(txt, CONTROL_RESULT_ERROR, exp_rsp);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
}
// Check that a lease4 can be updated. We're adding a comment and an user
// context.
TEST_F(LeaseCmdsTest, Lease4UpdateComment) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Now send the command.
string txt =
"{\n"
string exp_rsp = "IPv4 lease updated.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Now check that the lease is still there.
Lease4Ptr l = lmptr_->getLease4(IOAddress("192.0.2.1"));
ASSERT_TRUE(l);
// Test checks if lease6-update handler refuses calls with missing parameters.
TEST_F(LeaseCmdsTest, Lease6UpdateMissingParams) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
// Check that the lease manager pointer is there.
// have incorrect values.
TEST_F(LeaseCmdsTest, Lease6UpdateBadParams) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
// Check that the lease manager pointer is there.
// and a hostname.
TEST_F(LeaseCmdsTest, Lease6Update) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
+ // Now send the command.
+ string txt =
+ "{\n"
+ " \"command\": \"lease6-update\",\n"
+ " \"arguments\": {"
+ " \"subnet-id\": 66,\n"
+ " \"ip-address\": \"2001:db8:1::1\",\n"
+ " \"iaid\": 7654321,\n"
+ " \"duid\": \"88:88:88:88:88:88:88:88\",\n"
+ " \"hostname\": \"newhostname.example.org\""
+ " }\n"
+ "}";
+ string exp_rsp = "IPv6 lease updated.";
+ testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
+ // Now check that the lease is really there.
+ Lease6Ptr l = lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::1"));
+ ASSERT_TRUE(l);
+
+ // Make sure the lease has been updated.
+ ASSERT_TRUE(l->duid_);
+ EXPECT_EQ("88:88:88:88:88:88:88:88", l->duid_->toText());
+ EXPECT_EQ("newhostname.example.org", l->hostname_);
+ EXPECT_EQ(7654321, l->iaid_);
+ EXPECT_FALSE(l->getContext());
+}
+
+// Check that a lease6 can be updated. We're changing hw-address
+// and a hostname.
+TEST_F(LeaseCmdsTest, Lease6UpdateWithStats) {
+
+ // Initialize lease manager (true = v6, true = add leases)
+ initLeaseMgr(true, true, true);
+
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
string exp_rsp = "IPv6 lease updated.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 3);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now check that the lease is really there.
Lease6Ptr l = lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::1"));
ASSERT_TRUE(l);
// and a hostname. The subnet-id is not specified.
TEST_F(LeaseCmdsTest, Lease6UpdateNoSubnetId) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
string exp_rsp = "IPv6 lease updated.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now check that the lease is really there.
Lease6Ptr l = lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::1"));
ASSERT_TRUE(l);
EXPECT_FALSE(l->getContext());
}
+// Check that a lease6 can be updated. We're changing hw-address
+// and a hostname. The subnet-id is not specified.
+TEST_F(LeaseCmdsTest, Lease6UpdateNoSubnetIdWithStats) {
+
+ // Initialize lease manager (true = v6, true = add leases)
+ initLeaseMgr(true, true, true);
+
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
+ // Now send the command.
+ string txt =
+ "{\n"
+ " \"command\": \"lease6-update\",\n"
+ " \"arguments\": {"
+ " \"ip-address\": \"2001:db8:1::1\",\n"
+ " \"iaid\": 7654321,\n"
+ " \"duid\": \"88:88:88:88:88:88:88:88\",\n"
+ " \"hostname\": \"newhostname.example.org\""
+ " }\n"
+ "}";
+ string exp_rsp = "IPv6 lease updated.";
+ testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 3);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
+ // Now check that the lease is really there.
+ Lease6Ptr l = lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::1"));
+ ASSERT_TRUE(l);
+
+ // Make sure the subnet-id is correct.
+ EXPECT_EQ(66, l->subnet_id_);
+
+ // Make sure the lease has been updated.
+ ASSERT_TRUE(l->duid_);
+ EXPECT_EQ("88:88:88:88:88:88:88:88", l->duid_->toText());
+ EXPECT_EQ("newhostname.example.org", l->hostname_);
+ EXPECT_EQ(7654321, l->iaid_);
+ EXPECT_FALSE(l->getContext());
+}
// Check that a lease6 can be updated. We're adding a comment and an user
// context.
TEST_F(LeaseCmdsTest, Lease6UpdateComment) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
string exp_rsp = "IPv6 lease updated.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now check that the lease is really there.
Lease6Ptr l = lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::1"));
ASSERT_TRUE(l);
EXPECT_EQ("true", ctx->get("foobar")->str());
}
-
// Check that lease6-update correctly handles case when there is
// no lease to be updated.
TEST_F(LeaseCmdsTest, Lease6UpdateNoLease) {
- // Initialize lease manager (true = v6, false = don't add any lease)
+ // Initialize lease manager (true = v6, false = don't add leases)
initLeaseMgr(true, false);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
"}";
string exp_rsp = "failed to update the lease with address 2001:db8:1::1 - no such lease";
testCommand(txt, CONTROL_RESULT_ERROR, exp_rsp);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
}
// Check that a lease6 is created if it doesn't exist during the update.
// included in the command.
TEST_F(LeaseCmdsTest, Lease6UpdateForceCreate) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, false);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
string exp_rsp = "IPv6 lease added.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now check that the lease is really there.
Lease6Ptr l = lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::1"));
ASSERT_TRUE(l);
// figure it out.
TEST_F(LeaseCmdsTest, Lease6UpdateForceCreateNoSubnetId) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, false);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
string exp_rsp = "IPv6 lease added.";
testCommand(txt, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now check that the lease is really there.
Lease6Ptr l = lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::1"));
ASSERT_TRUE(l);
// parameter is explicitly set to false.
TEST_F(LeaseCmdsTest, Lease6UpdateDoNotForceCreate) {
- // Initialize lease manager (true = v6, false = don't add any lease)
+ // Initialize lease manager (true = v6, false = don't add leases)
initLeaseMgr(true, false);
// Check that the lease manager pointer is there.
ASSERT_TRUE(lmptr_);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string txt =
"{\n"
"}";
string exp_rsp = "failed to update the lease with address 2001:db8:1::1 - no such lease";
testCommand(txt, CONTROL_RESULT_ERROR, exp_rsp);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
}
// Checks that lease6-del can handle a situation when the query is
// valid, but the lease is not there.
TEST_F(LeaseCmdsTest, Lease4DelByAddrNotFound) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Invalid
string cmd =
"{\n"
"}";
string exp_rsp = "IPv4 lease not found.";
ConstElementPtr rsp = testCommand(cmd, CONTROL_RESULT_EMPTY, exp_rsp);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
}
// Checks that lease4-del can return a lease by address.
TEST_F(LeaseCmdsTest, Lease4DelByAddr) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Query for valid, existing lease.
string cmd =
"{\n"
string exp_rsp = "IPv4 lease deleted.";
testCommand(cmd, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Make sure the lease is really gone.
EXPECT_FALSE(lmptr_->getLease4(IOAddress("192.0.2.1")));
}
// Checks that lease4-del sanitizes its input.
TEST_F(LeaseCmdsTest, Lease4DelByAddrBadParam) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Invalid family
string cmd =
"{\n"
string exp_rsp = "Invalid IPv4 address specified: 2001:db8:1::1";
testCommand(cmd, CONTROL_RESULT_ERROR, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// This is way off
cmd =
"{\n"
// well formed, but the lease is not there.
TEST_F(LeaseCmdsTest, Lease4DelByHWAddrNotFound) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// No such lease.
string cmd =
"{\n"
string exp_rsp = "IPv4 lease not found.";
ConstElementPtr rsp = testCommand(cmd, CONTROL_RESULT_EMPTY, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Make sure the lease is still there.
EXPECT_TRUE(lmptr_->getLease4(IOAddress("192.0.2.1")));
}
// Checks that lease4-del can find a lease by hardware address.
TEST_F(LeaseCmdsTest, Lease4DelByHWAddr) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Invalid
string cmd =
"{\n"
string exp_rsp = "IPv4 lease deleted.";
ConstElementPtr rsp = testCommand(cmd, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Make sure the lease is really gone.
EXPECT_FALSE(lmptr_->getLease4(IOAddress("192.0.2.1")));
}
// well formed, but the lease is not there.
TEST_F(LeaseCmdsTest, Lease4DelByClientIdNotFound) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// No such lease.
string cmd =
"{\n"
string exp_rsp = "IPv4 lease not found.";
ConstElementPtr rsp = testCommand(cmd, CONTROL_RESULT_EMPTY, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Make sure the lease is still there.
EXPECT_TRUE(lmptr_->getLease4(IOAddress("192.0.2.1")));
}
// Checks that lease4-del can find and delete a lease by client identifier.
TEST_F(LeaseCmdsTest, Lease4DelByClientId) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Invalid
string cmd =
"{\n"
string exp_rsp = "IPv4 lease deleted.";
ConstElementPtr rsp = testCommand(cmd, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Make sure the lease is really gone.
EXPECT_FALSE(lmptr_->getLease4(IOAddress("192.0.2.1")));
}
// the query is correctly formed, but the lease is not there.
TEST_F(LeaseCmdsTest, Lease6DelByAddr6NotFound) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string cmd =
"{\n"
// Note the status expected is empty. The query completed correctly,
// just didn't found the lease.
testCommand(cmd, CONTROL_RESULT_EMPTY, exp_rsp);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
}
// Checks that lease6-del(subnet-id, addr) can handle a situation when
// the query is correctly formed, but the lease is not there.
TEST_F(LeaseCmdsTest, Lease6DelByDuidNotFound) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string cmd =
"{\n"
// just didn't found the lease.
testCommand(cmd, CONTROL_RESULT_EMPTY, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Make sure the lease is still there.
EXPECT_TRUE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::1")));
}
initLeaseMgr(true, true); // (true = v6, true = create a lease)
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string cmd =
"{\n"
// The status expected is success. The lease should be deleted.
testCommand(cmd, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Make sure the lease is really gone.
EXPECT_FALSE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::1")));
}
// Checks that lease6-del sanitizes its input.
TEST_F(LeaseCmdsTest, Lease6DelByAddrBadParam) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Invalid family
string cmd =
"{\n"
// the query is correctly formed and the lease is deleted.
TEST_F(LeaseCmdsTest, Lease6DelByAddrPrefix) {
- initLeaseMgr(true, false); // (true = v6, false = don't add any leases)
+ initLeaseMgr(true, false); // (true = v6, false = don't add leases)
+
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
// Let's start with regular address lease and make it a prefix lease.
Lease6Ptr l = createLease6("2001:db8:1::1", 66, 0x77);
l->prefixlen_ = 56;
lmptr_->addLease(l);
+ StatsMgr::instance().setValue(StatsMgr::generateName("subnet", 66,
+ "assigned-pds" ),
+ int64_t(1));
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string cmd =
"{\n"
// The status expected is success. The lease should be deleted.
testCommand(cmd, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Make sure the lease is really gone.
EXPECT_FALSE(lmptr_->getLease6(Lease::TYPE_PD, IOAddress("2001:db8:1234:ab::")));
}
initLeaseMgr(true, true); // (true = v6, true = create a lease)
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string cmd =
"{\n"
// The status expected is success. The lease should be deleted.
testCommand(cmd, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Make sure the lease is really gone.
EXPECT_FALSE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::1")));
}
// Checks that lease4-wipe can remove leases.
TEST_F(LeaseCmdsTest, Lease4Wipe) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Query for valid, existing lease.
string cmd =
"{\n"
string exp_rsp = "Deleted 2 IPv4 lease(s) from subnet(s) 44";
testCommand(cmd, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Make sure the leases in subnet 44 are really gone.
EXPECT_FALSE(lmptr_->getLease4(IOAddress("192.0.2.1")));
EXPECT_FALSE(lmptr_->getLease4(IOAddress("192.0.2.2")));
// at once.
TEST_F(LeaseCmdsTest, Lease4WipeAll) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Query for valid, existing lease.
string cmd =
"{\n"
string exp_rsp = "Deleted 4 IPv4 lease(s) from subnet(s) 44 88";
testCommand(cmd, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Make sure the leases in subnet 44 are really gone.
EXPECT_FALSE(lmptr_->getLease4(IOAddress("192.0.2.1")));
EXPECT_FALSE(lmptr_->getLease4(IOAddress("192.0.2.2")));
// at once (when no parameters are specifed).
TEST_F(LeaseCmdsTest, Lease4WipeAllNoArgs) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 2);
+
// Query for valid, existing lease.
string cmd =
"{\n"
string exp_rsp = "Deleted 4 IPv4 lease(s) from subnet(s) 44 88";
testCommand(cmd, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Make sure the leases in subnet 44 are really gone.
EXPECT_FALSE(lmptr_->getLease4(IOAddress("192.0.2.1")));
EXPECT_FALSE(lmptr_->getLease4(IOAddress("192.0.2.2")));
// Checks that lease4-wipe properly reports when no leases were deleted.
TEST_F(LeaseCmdsTest, Lease4WipeNoLeases) {
- // Initialize lease manager (false = v4, false = no leases)
+ // Initialize lease manager (false = v4, false = don't add leases)
initLeaseMgr(false, false);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Query for valid, existing lease.
string cmd =
"{\n"
"}";
string exp_rsp = "Deleted 0 IPv4 lease(s) from subnet(s) 44";
testCommand(cmd, CONTROL_RESULT_EMPTY, exp_rsp);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
}
// Checks that lease4-wipe properly reports when no leases were deleted.
TEST_F(LeaseCmdsTest, Lease4WipeNoLeasesAll) {
- // Initialize lease manager (false = v4, false = no leases)
+ // Initialize lease manager (false = v4, false = don't add leases)
initLeaseMgr(false, false);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
+
// Query for valid, existing lease.
string cmd =
"{\n"
"}";
string exp_rsp = "Deleted 0 IPv4 lease(s) from subnet(s) 44 88";
testCommand(cmd, CONTROL_RESULT_EMPTY, exp_rsp);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 44, "assigned-addresses"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 88, "assigned-addresses"))->getInteger().first, 0);
}
// Checks that lease4-wipe can remove leases.
initLeaseMgr(true, true); // (true = v6, true = create a lease)
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string cmd =
"{\n"
// The status expected is success. The lease should be deleted.
testCommand(cmd, CONTROL_RESULT_SUCCESS, exp_rsp);
- // Make sure the leases in subnet 44 are really gone.
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
+ // Make sure the leases in subnet 66 are really gone.
EXPECT_FALSE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::1")));
EXPECT_FALSE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::2")));
- // The leases in subnet 88 are supposed to be still there.
+ // Make sure the leases from subnet 99 are still there.
EXPECT_TRUE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:2::1")));
EXPECT_TRUE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:2::2")));
}
initLeaseMgr(true, true); // (true = v6, true = create a lease)
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string cmd =
"{\n"
// The status expected is success. The lease should be deleted.
testCommand(cmd, CONTROL_RESULT_SUCCESS, exp_rsp);
- // Make sure the leases in subnet 44 are really gone.
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
+ // Make sure the leases in subnet 66 are really gone.
EXPECT_FALSE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::1")));
EXPECT_FALSE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::2")));
- // The leases in subnet 88 are supposed to be still there.
+ // Make sure the leases from subnet 99 are gone, too.
EXPECT_FALSE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:2::1")));
EXPECT_FALSE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:2::2")));
}
initLeaseMgr(true, true); // (true = v6, true = create a lease)
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string cmd =
"{\n"
// The status expected is success. The lease should be deleted.
testCommand(cmd, CONTROL_RESULT_SUCCESS, exp_rsp);
- // Make sure the leases in subnet 44 are really gone.
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
+ // Make sure the leases in subnet 66 are really gone.
EXPECT_FALSE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::1")));
EXPECT_FALSE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::2")));
- // The leases in subnet 88 are supposed to be still there.
+ // Make sure the leases from subnet 99 are gone, too.
EXPECT_FALSE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:2::1")));
EXPECT_FALSE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:2::2")));
}
// Checks that lease4-wipe properly reports when no leases were deleted.
TEST_F(LeaseCmdsTest, Lease6WipeNoLeases) {
- // Initialize lease manager (false = v4, false = no leases)
+ // Initialize lease manager (false = v4, false = don't add leases)
initLeaseMgr(true, false);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Query for valid, existing lease.
string cmd =
"{\n"
"}";
string exp_rsp = "Deleted 0 IPv6 lease(s) from subnet(s) 66";
testCommand(cmd, CONTROL_RESULT_EMPTY, exp_rsp);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
}
// Checks that lease4-wipe properly reports when no leases were deleted.
TEST_F(LeaseCmdsTest, Lease6WipeNoLeasesAll) {
- // Initialize lease manager (false = v4, false = no leases)
+ // Initialize lease manager (false = v4, false = don't add leases)
initLeaseMgr(true, false);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Query for valid, existing lease.
string cmd =
"{\n"
"}";
string exp_rsp = "Deleted 0 IPv6 lease(s) from subnet(s) 66 99";
testCommand(cmd, CONTROL_RESULT_EMPTY, exp_rsp);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
}
// Checks that an attempt to update a lease (set incorrect subnet-id)
// Initialize lease manager (false = v4, false = don't add leases)
initLeaseMgr(false, false);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Set the sanity checks level.
CfgMgr::instance().getCurrentCfg()->getConsistency()
->setLeaseSanityCheck(CfgConsistency::LEASE_CHECK_FIX);
- // Check that the lease manager pointer is there.
- ASSERT_TRUE(lmptr_);
-
// Now send the command.
string txt =
"{\n"
initLeaseMgr(true, true); // (true = v6, true = create leases)
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string cmd =
"{\n"
// The status expected is success.
testCommand(cmd, CONTROL_RESULT_SUCCESS, exp_rsp);
- // Check that the leases we inserted are stored.
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 3);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
+ // Check that the leases we inserted are stored.
EXPECT_TRUE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::123")));
EXPECT_TRUE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:2::123")));
initLeaseMgr(true, false); // (true = v6, true = create leases)
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string cmd =
"{\n"
// The status expected is success.
testCommand(cmd, CONTROL_RESULT_SUCCESS, exp_rsp);
- // Check that the leases we inserted are stored.
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 1);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
+ // Check that the leases we inserted are stored.
EXPECT_TRUE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::123")));
EXPECT_TRUE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:2::123")));
}
initLeaseMgr(true, true); // (true = v6, true = create leases)
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string cmd =
"{\n"
// The status expected is success.
testCommand(cmd, CONTROL_RESULT_SUCCESS, exp_rsp);
- // Check that the leases we inserted are stored.
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
+ // Check that the leases we inserted are stored.
Lease6Ptr lease1 = lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::1"));
Lease6Ptr lease2 = lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::2"));
ASSERT_TRUE(lease1);
initLeaseMgr(true, true); // (true = v6, true = create leases)
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string cmd =
"{\n"
// The status expected is success.
testCommand(cmd, CONTROL_RESULT_SUCCESS, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Check that the leases we deleted are gone,
EXPECT_FALSE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::1")));
EXPECT_FALSE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::2")));
initLeaseMgr(true, true); // (true = v6, true = create leases)
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string cmd =
"{\n"
ASSERT_TRUE(resp);
ASSERT_EQ(Element::map, resp->getType());
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
auto args = resp->get("arguments");
ASSERT_TRUE(args);
ASSERT_EQ(Element::map, args->getType());
initLeaseMgr(true, true); // (true = v6, true = create leases)
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
// Now send the command.
string cmd =
"{\n"
// The status expected is success.
testCommand(cmd, CONTROL_RESULT_ERROR, exp_rsp);
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 66, "assigned-pds"))->getInteger().first, 0);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-nas"))->getInteger().first, 2);
+
+ ASSERT_EQ(StatsMgr::instance().getObservation(StatsMgr::generateName("subnet",
+ 99, "assigned-pds"))->getInteger().first, 0);
+
EXPECT_FALSE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::123")));
EXPECT_FALSE(lmptr_->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:2::123")));
// Checks that lease4-resend-ddns sanitizes its input.
TEST_F(LeaseCmdsTest, Lease4ResendDdnsBadParam) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Missing address parameter.
string cmd =
"{\n"
// Checks that lease4-resend-ddns does not generate an NCR for given lease
// when DDNS updating is disabled.
TEST_F(LeaseCmdsTest, lease4ResendDdnsDisabled) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
disableD2();
// Query for valid, existing lease.
EXPECT_EQ(ncrQueueSize(), -1);
}
-
// Checks that lease4-resend-ddns does not generate an NCR for
// when there is no matching lease.
TEST_F(LeaseCmdsTest, lease4ResendDdnsNoLease) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Invalid
string cmd =
"{\n"
// Checks that lease4-resend-ddns does not generate an NCR for given lease
// when updates are enabled but Lease::hostname_ is blank.
TEST_F(LeaseCmdsTest, lease4ResendNoHostname) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// NCR sender queue should be empty.
ASSERT_EQ(ncrQueueSize(), 0);
// when updates are enabled, Lease::hostname_ is not blank, but both
// Lease::fqdn_fwd_ and fdqn_rev_ are false.
TEST_F(LeaseCmdsTest, lease4ResendNoDirectionsEnabled) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// NCR sender queue should be empty.
ASSERT_EQ(ncrQueueSize(), 0);
// when updates are enabled, Lease::hostname_ is not blank, and at least
// one of Lease::fqdn_fwd_ or fdqn_rev_ are true.
TEST_F(LeaseCmdsTest, lease4ResendDdnsEnabled) {
- // Initialize lease manager (false = v4, true = add a lease)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Structure detailing a test scenario.
struct Scenario {
std::string description_;
// Checks that lease6-resend-ddns sanitizes its input.
TEST_F(LeaseCmdsTest, Lease6ResendDdnsBadParam) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Missing address parameter.
string cmd =
"{\n"
// Checks that lease6-resend-ddns does not generate an NCR for given lease
// when DDNS updating is disabled.
TEST_F(LeaseCmdsTest, lease6ResendDdnsDisabled) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Disable DDNS updating.
disableD2();
// Checks that lease6-resend-ddns does not generate an NCR for
// when there is no matching lease.
TEST_F(LeaseCmdsTest, lease6ResendDdnsNoLease) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Invalid
string cmd =
"{\n"
ConstElementPtr rsp = testCommand(cmd, CONTROL_RESULT_EMPTY, exp_rsp);
}
-
// Checks that lease6-resend-ddns does not generate an NCR for given lease
// when updates are enabled but Lease::hostname_ is blank.
TEST_F(LeaseCmdsTest, lease6ResendNoHostname) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// NCR sender queue should be empty.
ASSERT_EQ(ncrQueueSize(), 0);
// when updates are enabled, Lease::hostname_ is not blank, but both
// Lease::fqdn_fwd_ and fdqn_rev_ are false.
TEST_F(LeaseCmdsTest, lease6ResendNoDirectionsEnabled) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// NCR sender queue should be empty.
ASSERT_EQ(ncrQueueSize(), 0);
// when updates are enabled, Lease::hostname_ is not blank, and at least
// one of Lease::fqdn_fwd_ or fdqn_rev_ are true.
TEST_F(LeaseCmdsTest, lease6ResendDdnsEnabled) {
- // Initialize lease manager (true = v6, true = add a lease)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Structure detailing a test scenario.
struct Scenario {
std::string description_;
// Checks that lease4-del does (or does not) generate an NCR to remove
// DNS for a given lease based on lease content when DDNS updates are enabled.
TEST_F(LeaseCmdsTest, lease4DnsRemoveD2Enabled) {
- // Initialize lease manager (false = v4, true = leases)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(false, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Structure detailing a test scenario.
struct Scenario {
std::string description_;
// DNS for a given lease based on lease content when DDNS
// updates are disabled.
TEST_F(LeaseCmdsTest, lease4DnsRemoveD2Disabled) {
- // Initialize lease manager (false = v4, true = leases)
+ // Initialize lease manager (false = v4, true = add leases)
initLeaseMgr(true, true);
+
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
disableD2();
// Delete for valid, existing lease.
// Checks that lease6-del does (or does not) generate an NCR to remove
// DNS for a given lease based on lease content when DDNS updates are enabled.
TEST_F(LeaseCmdsTest, lease6DnsRemoveD2Enabled) {
- // Initialize lease manager (true = v6, false = no leases)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
// Structure detailing a test scenario.
struct Scenario {
std::string description_;
// DNS for a given lease based on lease content when DDNS
// updates are disabled.
TEST_F(LeaseCmdsTest, lease6DnsRemoveD2Disabled) {
- // Initialize lease manager (true = v6, true = leases)
+ // Initialize lease manager (true = v6, true = add leases)
initLeaseMgr(true, true);
+
+ // Check that the lease manager pointer is there.
+ ASSERT_TRUE(lmptr_);
+
disableD2();
// Delete for valid, existing lease.