| | | separately, and is reset during a |
| | | reconfiguration event. |
+----------------------------------------------------+----------------+------------------------------------+
+ | assigned-addresses | integer | Number of assigned addresses. It |
+ | | | increases every time a new lease is|
+ | | | allocated (as a result of receiving|
+ | | | a DHCPREQUEST message) and |
+ | | | decreases every time a lease is |
+ | | | released (a DHCPRELEASE message is |
+ | | | received) or expires and is reset |
+ | | | during a reconfiguration event. |
+ +----------------------------------------------------+----------------+------------------------------------+
| cumulative-assigned-addresses | integer | Cumulative number of addresses |
| | | that have been assigned since |
| | | server startup. It is incremented |
| | | each time an address is assigned |
- | | | and is not reset when the server |
- | | | is reconfigured. |
+ | | | and is not reset during a |
+ | | | reconfiguration event. |
+----------------------------------------------------+----------------+------------------------------------+
| subnet[id].cumulative-assigned-addresses | integer | Cumulative number of assigned |
| | | addresses in a given subnet. It |
| | | to grow in most cases after a |
| | | ADDR-REG-INFORM is processed. |
| | | There are certain cases where |
- | | | there is n response. |
+ | | | there is no response. |
+---------------------------------------------------+----------------+------------------------------------+
| subnet[id].total-nas | big integer | Total number of NA addresses |
| | | available for DHCPv6 management |
| | | separately, and is reset during a |
| | | reconfiguration event. |
+---------------------------------------------------+----------------+------------------------------------+
+ | assigned-nas | integer | Number of NA addresses that are |
+ | | | assigned. It increases every time a|
+ | | | new lease is allocated (as a result|
+ | | | of receiving a REQUEST message) and|
+ | | | decreases every time a lease is |
+ | | | released (a RELEASE message is |
+ | | | received) or expires and is reset |
+ | | | during a reconfiguration event. |
+ +---------------------------------------------------+----------------+------------------------------------+
| cumulative-assigned-nas | integer | Cumulative number of NA addresses |
| | | that have been assigned since |
| | | server startup. It is incremented |
| | | increases every time a new lease |
| | | is allocated (as a result of |
| | | receiving a REQUEST message) and |
- | | | is decreased every time a lease is |
+ | | | decreases every time a lease is |
| | | released (a RELEASE message is |
| | | received) or expires. The *id* is |
| | | the subnet ID of a given subnet. |
| | | increases every time a new lease |
| | | is allocated (as a result of |
| | | receiving a REQUEST message) and |
- | | | is decreased every time a lease is |
+ | | | decreases every time a lease is |
| | | released (a RELEASE message is |
| | | received) or expires. The *id* is |
| | | the subnet ID of a given subnet. |
| | | separately, and is reset during a |
| | | reconfiguration event. |
+---------------------------------------------------+----------------+------------------------------------+
+ | assigned-pds | integer | Number of PD prefixes that are |
+ | | | assigned. It increases every time a|
+ | | | new lease is allocated (as a result|
+ | | | of receiving a REQUEST message) and|
+ | | | decreases every time a lease is |
+ | | | released (a RELEASE message is |
+ | | | received) or expires and is reset |
+ | | | during a reconfiguration event. |
+ +---------------------------------------------------+----------------+------------------------------------+
| cumulative-assigned-pds | integer | Cumulative number of PD prefixes |
| | | that have been assigned since |
| | | server startup. It is incremented |
| | | increases every time a new lease |
| | | is allocated (as a result of |
| | | receiving a REQUEST message) and |
- | | | is decreased every time a lease is |
+ | | | decreases every time a lease is |
| | | released (a RELEASE message is |
| | | received) or expires. The *id* is |
| | | the subnet ID of a given subnet. |
| | | It increases every time a new |
| | | lease is allocated (as a result of |
| | | receiving a REQUEST message) and |
- | | | is decreased every time a lease is |
+ | | | decreases every time a lease is |
| | | released (a RELEASE message is |
| | | received) or expires. The *id* is |
| | | the subnet ID of a given subnet. |
{
"command": "statistic-get-all",
"arguments": {
+ "assigned-addresses": [
+ [
+ 0,
+ "2023-06-13 20:42:46.836096"
+ ]
+ ],
"cumulative-assigned-addresses": [
[
0,
{
"command": "statistic-get-all",
"arguments": {
+ "assigned-nas": [
+ [
+ 0,
+ "2023-06-13 21:28:57.196757"
+ ]
+ ],
+ "assigned-pds": [
+ [
+ 0,
+ "2023-06-13 21:28:57.196757"
+ ]
+ ],
"cumulative-assigned-nas": [
[
0,
}
// Need to decrease statistic for assigned addresses.
+ StatsMgr::instance().addValue("assigned-addresses", static_cast<int64_t>(-1));
+
StatsMgr::instance().addValue(
StatsMgr::generateName("subnet", lease->subnet_id_, "assigned-addresses"),
static_cast<int64_t>(-1));
}
// Need to decrease statistic for assigned addresses.
+ StatsMgr::instance().addValue("assigned-nas", static_cast<int64_t>(-1));
+
StatsMgr::instance().addValue(
StatsMgr::generateName("subnet", lease->subnet_id_, "assigned-nas"),
static_cast<int64_t>(-1));
}
// Need to decrease statistic for assigned prefixes.
+ StatsMgr::instance().addValue("assigned-pds", static_cast<int64_t>(-1));
+
StatsMgr::instance().addValue(
StatsMgr::generateName("subnet", lease->subnet_id_, "assigned-pds"),
static_cast<int64_t>(-1));
EXPECT_EQ(1, countFile("DHCP6_HOOK_ADDR6_REGISTER_DROP"));
}
-// Check the statictics for the basic scenario.
+// Check the statistics for the basic scenario.
TEST_F(AddrRegTest, stats) {
IfaceMgrTestConfig test_config(true);
EXPECT_EQ(21, stat->getInteger().first);
}
-// Check the statictics for the renew scenario.
+// Check the statistics for the renew scenario.
TEST_F(AddrRegTest, statsRenew) {
IfaceMgrTestConfig test_config(true);
EXPECT_EQ(20, stat->getInteger().first);
}
-// Check the statictics for the another subnet scenario.
+// Check the statistics for the another subnet scenario.
TEST_F(AddrRegTest, statsAnotherSubnet) {
IfaceMgrTestConfig test_config(true);
ASSERT_TRUE(l);
// And prepopulate the stats counter
+ StatsMgr::instance().setValue(type == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds",
+ static_cast<int64_t>(1));
+
std::string name = StatsMgr::generateName("subnet", subnet_->getID(),
- type == Lease::TYPE_NA ? "assigned-nas" :
- "assigned-pds");
+ type == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds");
StatsMgr::instance().setValue(name, static_cast<int64_t>(1));
ObservationPtr stat = StatsMgr::instance().getObservation(name);
l = LeaseMgrFactory::instance().getLease6(type, *duid_, iaid,
subnet_->getID());
ASSERT_FALSE(l);
-
- // We should have decremented the address counter
- stat = StatsMgr::instance().getObservation(name);
- ASSERT_TRUE(stat);
- EXPECT_EQ(0, stat->getInteger().first);
} else {
l = LeaseMgrFactory::instance().getLease6(type, release_addr);
ASSERT_TRUE(l);
EXPECT_EQ(l->valid_lft_, 0);
EXPECT_EQ(l->preferred_lft_, 0);
EXPECT_EQ(Lease::STATE_RELEASED, l->state_);
-
- // We should have decremented the address counter
- stat = StatsMgr::instance().getObservation(name);
- ASSERT_TRUE(stat);
- EXPECT_EQ(0, stat->getInteger().first);
}
+
+ // We should have decremented the address counter
+ stat = StatsMgr::instance().getObservation(type == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds");
+ ASSERT_TRUE(stat);
+ EXPECT_EQ(0, stat->getInteger().first);
+
+ stat = StatsMgr::instance().getObservation(name);
+ ASSERT_TRUE(stat);
+ EXPECT_EQ(0, stat->getInteger().first);
}
void
// And prepopulate the stats counter
std::string name = StatsMgr::generateName("subnet", (*subnets->begin())->getID(),
- type == Lease::TYPE_NA ? "assigned-nas" :
- "assigned-pds");
+ type == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds");
// Perform 4-way exchange.
ASSERT_NO_THROW(client.doSARR());
- ObservationPtr stat = StatsMgr::instance().getObservation(name);
+ ObservationPtr stat = StatsMgr::instance().getObservation(type == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds");
+ ASSERT_TRUE(stat);
+ uint64_t global_before = stat->getInteger().first;
+
+ stat = StatsMgr::instance().getObservation(name);
ASSERT_TRUE(stat);
- uint64_t before = stat->getInteger().first;
+ uint64_t subnet_before = stat->getInteger().first;
// Make sure that the client has acquired NA lease.
std::vector<Lease6> leases = client.getLeasesByType(type);
EXPECT_EQ(l->preferred_lft_, 0);
EXPECT_EQ(Lease::STATE_RELEASED, l->state_);
+ stat = StatsMgr::instance().getObservation(type == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds");
+ ASSERT_TRUE(stat);
+ uint64_t global_after = stat->getInteger().first;
+ ASSERT_EQ(global_after, global_before - 1);
+
stat = StatsMgr::instance().getObservation(name);
ASSERT_TRUE(stat);
- uint64_t after = stat->getInteger().first;
- ASSERT_EQ(after, before - 1);
+ uint64_t subnet_after = stat->getInteger().first;
+ ASSERT_EQ(subnet_after, subnet_before - 1);
sleep(1);
client.getServer()->getIOService()->poll();
l = LeaseMgrFactory::instance().getLease6(type, leases[0].addr_);
- ASSERT_TRUE(l);
+ ASSERT_TRUE(l);
- EXPECT_EQ(l->valid_lft_, 0);
- EXPECT_EQ(l->preferred_lft_, 0);
+ EXPECT_EQ(l->valid_lft_, 0);
+ EXPECT_EQ(l->preferred_lft_, 0);
- EXPECT_EQ(Lease6::STATE_EXPIRED_RECLAIMED, l->state_);
+ EXPECT_EQ(Lease6::STATE_EXPIRED_RECLAIMED, l->state_);
// get lease by subnetid/duid/iaid combination
l = LeaseMgrFactory::instance().getLease6(type, *client.getDuid(), iaid,
EXPECT_EQ(l->preferred_lft_, 0);
EXPECT_EQ(Lease::STATE_EXPIRED_RECLAIMED, l->state_);
- stat = StatsMgr::instance().getObservation(name);
+ stat = StatsMgr::instance().getObservation(type == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds");
ASSERT_TRUE(stat);
uint64_t count = stat->getInteger().first;
- ASSERT_EQ(count, after);
+ ASSERT_EQ(count, global_after);
+
+ stat = StatsMgr::instance().getObservation(name);
+ ASSERT_TRUE(stat);
+ count = stat->getInteger().first;
+ ASSERT_EQ(count, subnet_after);
}
void
OptionPtr clientid = generateClientId();
// Pretend we have allocated 1 lease
+ StatsMgr::instance().setValue(type == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds",
+ static_cast<int64_t>(1));
+
std::string name = StatsMgr::generateName("subnet", subnet_->getID(),
- type == Lease::TYPE_NA ? "assigned-nas" :
- "assigned-pds");
+ type == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds");
StatsMgr::instance().setValue(name, static_cast<int64_t>(1));
// Check that the lease is NOT in the database
ASSERT_FALSE(l);
// Verify we didn't decrement the stats counter
- ObservationPtr stat = StatsMgr::instance().getObservation(name);
+ ObservationPtr stat = StatsMgr::instance().getObservation(type == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds");
+ ASSERT_TRUE(stat);
+ EXPECT_EQ(1, stat->getInteger().first);
+
+ stat = StatsMgr::instance().getObservation(name);
ASSERT_TRUE(stat);
EXPECT_EQ(1, stat->getInteger().first);
ASSERT_TRUE(l);
// Verify we didn't decrement the stats counter
+ stat = StatsMgr::instance().getObservation(type == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds");
+ ASSERT_TRUE(stat);
+ EXPECT_EQ(1, stat->getInteger().first);
+
+ stat = StatsMgr::instance().getObservation(name);
+ ASSERT_TRUE(stat);
EXPECT_EQ(1, stat->getInteger().first);
// CASE 3: Lease belongs to a client with different client-id
ASSERT_TRUE(l);
// Verify we didn't decrement the stats counter
+ stat = StatsMgr::instance().getObservation(type == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds");
+ ASSERT_TRUE(stat);
+ EXPECT_EQ(1, stat->getInteger().first);
+
+ stat = StatsMgr::instance().getObservation(name);
+ ASSERT_TRUE(stat);
EXPECT_EQ(1, stat->getInteger().first);
// Finally, let's cleanup the database
void
LeaseCmdsImpl::updateStatsOnAdd(const Lease4Ptr& lease) {
if (!lease->stateExpiredReclaimed()) {
+ StatsMgr::instance().addValue("assigned-addresses", static_cast<int64_t>(1));
+
StatsMgr::instance().addValue(
StatsMgr::generateName("subnet", lease->subnet_id_,
"assigned-addresses"),
StatsMgr::generateName("subnet", lease->subnet_id_, "registered-nas"),
static_cast<int64_t>(1));
} else if (!lease->stateExpiredReclaimed()) {
+ StatsMgr::instance().addValue(lease->type_ == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds",
+ static_cast<int64_t>(1));
+
StatsMgr::instance().addValue(
StatsMgr::generateName("subnet", lease->subnet_id_,
lease->type_ == Lease::TYPE_NA ?
// old lease is expired-reclaimed
if (!lease->stateExpiredReclaimed()) {
// new lease is non expired-reclaimed
+ StatsMgr::instance().addValue("assigned-addresses", static_cast<int64_t>(1));
+
StatsMgr::instance().addValue(
StatsMgr::generateName("subnet", lease->subnet_id_,
"assigned-addresses"),
// old lease is expired-reclaimed
if (!lease->stateExpiredReclaimed()) {
// new lease is non expired-reclaimed
+ StatsMgr::instance().addValue(lease->type_ == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds",
+ static_cast<int64_t>(1));
+
StatsMgr::instance().addValue(
StatsMgr::generateName("subnet", lease->subnet_id_,
lease->type_ == Lease::TYPE_NA ?
void
LeaseCmdsImpl::updateStatsOnDelete(const Lease4Ptr& lease) {
if (!lease->stateExpiredReclaimed()) {
+ StatsMgr::instance().addValue("assigned-addresses", static_cast<int64_t>(-1));
+
StatsMgr::instance().addValue(
StatsMgr::generateName("subnet", lease->subnet_id_,
"assigned-addresses"),
"registered-nas"),
static_cast<int64_t>(-1));
} else if (!lease->stateExpiredReclaimed()) {
+ StatsMgr::instance().addValue(lease->type_ == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds",
+ static_cast<int64_t>(-1));
+
StatsMgr::instance().addValue(
StatsMgr::generateName("subnet", lease->subnet_id_,
lease->type_ == Lease::TYPE_NA ?
num = LeaseMgrFactory::instance().wipeLeases4(id);
ids << " " << id;
- auto observation = StatsMgr::instance().getObservation(
+ auto assigned_observation = StatsMgr::instance().getObservation(
+ StatsMgr::generateName("subnet", id, "assigned-addresses"));
+
+ int64_t previous_assigned = 0;
+
+ if (assigned_observation) {
+ previous_assigned = assigned_observation->getInteger().first;
+ }
+
+ auto declined_observation = StatsMgr::instance().getObservation(
StatsMgr::generateName("subnet", id, "declined-addresses"));
int64_t previous_declined = 0;
- if (observation) {
- previous_declined = observation->getInteger().first;
+ if (declined_observation) {
+ previous_declined = declined_observation->getInteger().first;
}
StatsMgr::instance().setValue(
}
}
+ StatsMgr::instance().addValue("assigned-addresses", -previous_assigned);
+
StatsMgr::instance().addValue("declined-addresses", -previous_declined);
} else {
// Wipe them all!
}
}
+ StatsMgr::instance().setValue("assigned-addresses", static_cast<int64_t>(0));
+
StatsMgr::instance().setValue("declined-addresses", static_cast<int64_t>(0));
}
num = LeaseMgrFactory::instance().wipeLeases6(id);
ids << " " << id;
- auto observation = StatsMgr::instance().getObservation(
+ auto assigned_na_observation = StatsMgr::instance().getObservation(
+ StatsMgr::generateName("subnet", id, "assigned-nas"));
+
+ int64_t previous_assigned_na = 0;
+
+ if (assigned_na_observation) {
+ previous_assigned_na = assigned_na_observation->getInteger().first;
+ }
+
+ auto assigned_pd_observation = StatsMgr::instance().getObservation(
+ StatsMgr::generateName("subnet", id, "assigned-pds"));
+
+ int64_t previous_assigned_pd = 0;
+
+ if (assigned_pd_observation) {
+ previous_assigned_na = assigned_pd_observation->getInteger().first;
+ }
+
+ auto declined_observation = StatsMgr::instance().getObservation(
StatsMgr::generateName("subnet", id, "declined-addresses"));
int64_t previous_declined = 0;
- if (observation) {
- previous_declined = observation->getInteger().first;
+ if (declined_observation) {
+ previous_declined = declined_observation->getInteger().first;
}
StatsMgr::instance().setValue(
}
}
+ StatsMgr::instance().addValue("assigned-nas", -previous_assigned_na);
+
+ StatsMgr::instance().addValue("assigned-pds", -previous_assigned_pd);
+
StatsMgr::instance().addValue("declined-addresses", -previous_declined);
} else {
// Wipe them all!
}
}
+ StatsMgr::instance().setValue("assigned-nas", static_cast<int64_t>(0));
+
+ StatsMgr::instance().setValue("assigned-pds", static_cast<int64_t>(0));
+
StatsMgr::instance().setValue("declined-addresses", static_cast<int64_t>(0));
}
isc::stats::StatsMgr::instance().setValue(
isc::stats::StatsMgr::generateName("subnet", 99, "assigned-nas" ),
int64_t(2));
+ isc::stats::StatsMgr::instance().setValue("assigned-nas", int64_t(4));
} else {
lmptr_->addLease(createLease4("192.0.2.1", 44, 0x08, 0x42, declined));
lmptr_->addLease(createLease4("192.0.2.2", 44, 0x09, 0x56, declined, 5));
isc::stats::StatsMgr::instance().setValue(
isc::stats::StatsMgr::generateName("subnet", 88, "assigned-addresses"),
int64_t(2));
+ isc::stats::StatsMgr::instance().setValue("assigned-addresses", int64_t(4));
}
}
}
LeaseMgrFactory::instance().addLease(lease);
StatsMgr::instance().addValue(StatsMgr::generateName("subnet", lease->subnet_id_,
lease->getType() == Lease::TYPE_PD ?
- "assigned-pds" :
- "assigned-nas"),
+ "assigned-pds" : "assigned-nas"),
static_cast<int64_t>(1));
}
row->add(Element::create(static_cast<int64_t>(subnet_id)));
row->add(Element::create(getSubnetStat(subnet_id, "total-addresses")));
row->add(Element::create(getSubnetStat(subnet_id, "cumulative-assigned-addresses")));
- row->add(Element::create(assigned));
+ row->add(Element::create(assigned + declined));
row->add(Element::create(declined));
value_rows->add(row);
}
row->add(Element::create(static_cast<int64_t>(subnet_id)));
row->add(Element::create(getBigSubnetStat(subnet_id, "total-nas")));
row->add(Element::create(getSubnetStat(subnet_id, "cumulative-assigned-nas")));
- row->add(Element::create(assigned));
+ row->add(Element::create(assigned + declined));
row->add(Element::create(declined));
row->add(Element::create(getBigSubnetStat(subnet_id, "total-pds")));
row->add(Element::create(getSubnetStat(subnet_id, "cumulative-assigned-pds")));
queueNCR(CHG_REMOVE, candidate);
// Need to decrease statistic for assigned addresses.
+ StatsMgr::instance().addValue(ctx.currentIA().type_ == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds",
+ static_cast<int64_t>(-1));
+
StatsMgr::instance().addValue(
StatsMgr::generateName("subnet", candidate->subnet_id_,
ctx.currentIA().type_ == Lease::TYPE_NA ?
queueNCR(CHG_REMOVE, candidate);
// Need to decrease statistic for assigned addresses.
+ StatsMgr::instance().addValue(ctx.currentIA().type_ == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds",
+ static_cast<int64_t>(-1));
+
StatsMgr::instance().addValue(
StatsMgr::generateName("subnet", candidate->subnet_id_,
ctx.currentIA().type_ == Lease::TYPE_NA ?
queueNCR(CHG_REMOVE, *lease);
// Need to decrease statistic for assigned addresses.
+ StatsMgr::instance().addValue(ctx.currentIA().type_ == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds",
+ static_cast<int64_t>(-1));
+
StatsMgr::instance().addValue(
StatsMgr::generateName("subnet", (*lease)->subnet_id_,
ctx.currentIA().type_ == Lease::TYPE_NA ?
static_cast<int64_t>(1));
}
+ StatsMgr::instance().addValue(ctx.currentIA().type_ == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds",
+ static_cast<int64_t>(1));
+
StatsMgr::instance().addValue(ctx.currentIA().type_ == Lease::TYPE_NA ?
"cumulative-assigned-nas" : "cumulative-assigned-pds",
static_cast<int64_t>(1));
static_cast<int64_t>(1));
}
+ StatsMgr::instance().addValue(ctx.currentIA().type_ == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds",
+ static_cast<int64_t>(1));
+
StatsMgr::instance().addValue(ctx.currentIA().type_ == Lease::TYPE_NA ?
"cumulative-assigned-nas" : "cumulative-assigned-pds",
static_cast<int64_t>(1));
queueNCR(CHG_REMOVE, lease);
// Need to decrease statistic for assigned addresses.
+ StatsMgr::instance().addValue(ctx.currentIA().type_ == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds", static_cast<int64_t>(-1));
+
StatsMgr::instance().addValue(
StatsMgr::generateName("subnet", ctx.subnet_->getID(),
ctx.currentIA().type_ == Lease::TYPE_NA ?
static_cast<int64_t>(1));
}
+ StatsMgr::instance().addValue(ctx.currentIA().type_ == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds",
+ static_cast<int64_t>(1));
+
+
StatsMgr::instance().addValue(ctx.currentIA().type_ == Lease::TYPE_NA ?
"cumulative-assigned-nas" : "cumulative-assigned-pds",
static_cast<int64_t>(1));
static_cast<int64_t>(1));
}
+ StatsMgr::instance().addValue(ctx.currentIA().type_ == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds",
+ static_cast<int64_t>(1));
+
StatsMgr::instance().addValue(ctx.currentIA().type_ == Lease::TYPE_NA ?
"cumulative-assigned-nas" : "cumulative-assigned-pds",
static_cast<int64_t>(1));
// will not update DNS nor update the database.
bool skipped = false;
bool released = (lease->state_ == Lease::STATE_RELEASED);
+ bool registered = (lease->state_ == Lease::STATE_REGISTERED);
if (callout_handle) {
// Use the RAII wrapper to make sure that the callout handle state is
// Decrease number of registered or assigned leases.
- if (lease->state_ == Lease::STATE_REGISTERED) {
+ if (registered) {
StatsMgr::instance().addValue(StatsMgr::generateName("subnet",
lease->subnet_id_,
"registered-nas"),
static_cast<int64_t>(-1));
} else if (lease->type_ == Lease::TYPE_NA || lease->type_ == Lease::TYPE_PD) {
+ // Decrease number of assigned addresses.
+ StatsMgr::instance().addValue(lease->type_ == Lease::TYPE_NA ?
+ "assigned-nas" : "assigned-pds",
+ static_cast<int64_t>(-1));
+
StatsMgr::instance().addValue(StatsMgr::generateName("subnet",
lease->subnet_id_,
lease->type_ == Lease::TYPE_NA ?
}
// Decrease number of assigned addresses.
+ StatsMgr::instance().addValue("assigned-addresses", static_cast<int64_t>(-1));
+
StatsMgr::instance().addValue(StatsMgr::generateName("subnet",
lease->subnet_id_,
"assigned-addresses"),
// Note that we do not touch assigned-nas counters. Those are
// modified in whatever code calls this method.
-
return (true);
}
if (LeaseMgrFactory::instance().deleteLease(lease) &&
(lease->state_ != Lease4::STATE_RELEASED)) {
// Need to decrease statistic for assigned addresses.
+ StatsMgr::instance().addValue("assigned-addresses", static_cast<int64_t>(-1));
+
StatsMgr::instance().addValue(StatsMgr::generateName("subnet", lease->subnet_id_,
"assigned-addresses"),
static_cast<int64_t>(-1));
static_cast<int64_t>(1));
}
- StatsMgr::instance().addValue("cumulative-assigned-addresses",
- static_cast<int64_t>(1));
+
+ StatsMgr::instance().addValue("assigned-addresses", static_cast<int64_t>(1));
+
+ StatsMgr::instance().addValue("cumulative-assigned-addresses", static_cast<int64_t>(1));
return (lease);
} else {
static_cast<int64_t>(1));
}
- StatsMgr::instance().addValue("cumulative-assigned-addresses",
- static_cast<int64_t>(1));
+ StatsMgr::instance().addValue("assigned-addresses", static_cast<int64_t>(1));
+
+ StatsMgr::instance().addValue("cumulative-assigned-addresses", static_cast<int64_t>(1));
}
}
if (skip) {
static_cast<int64_t>(1));
}
- StatsMgr::instance().addValue("cumulative-assigned-addresses",
- static_cast<int64_t>(1));
+ StatsMgr::instance().addValue("assigned-addresses", static_cast<int64_t>(1));
+
+ StatsMgr::instance().addValue("cumulative-assigned-addresses", static_cast<int64_t>(1));
}
// We do nothing for SOLICIT. We'll just update database when
// Cumulative counters ("reclaimed-declined-addresses", "reclaimed-leases",
// "cumulative-assigned-addresses") never get zeroed.
int64_t zero = 0;
+
+ stats_mgr.setValue("assigned-addresses", zero);
+
stats_mgr.setValue("declined-addresses", zero);
// Create if it does not exit reclaimed declined leases global stats.
LeaseStatsRow row;
while (query->getNextRow(row)) {
if (row.lease_state_ == Lease::STATE_DEFAULT) {
+ // Add to the global value.
+ stats_mgr.addValue("assigned-addresses", row.state_count_);
+
// Add to subnet level value.
stats_mgr.addValue(StatsMgr::generateName("subnet", row.subnet_id_,
"assigned-addresses"),
"declined-addresses"),
row.state_count_);
+ // Add to the global value.
+ stats_mgr.addValue("assigned-addresses", row.state_count_);
+
// Add to the global value.
stats_mgr.addValue("declined-addresses", row.state_count_);
// "cumulative-assigned-nas", "cumulative-assigned-pds",
// "cumulative-registered-nas")) never get zeroed.
int64_t zero = 0;
+
+ stats_mgr.setValue("assigned-nas", zero);
+
+ stats_mgr.setValue("assigned-pds", zero);
+
stats_mgr.setValue("declined-addresses", zero);
if (!stats_mgr.getObservation("reclaimed-declined-addresses")) {
switch(row.lease_type_) {
case Lease::TYPE_NA:
if (row.lease_state_ == Lease::STATE_DEFAULT) {
+ // Add to the global value.
+ stats_mgr.addValue("assigned-nas", row.state_count_);
+
// Add to subnet level value.
stats_mgr.addValue(StatsMgr::generateName("subnet", row.subnet_id_,
"assigned-nas"),
"declined-addresses"),
row.state_count_);
+ // Add to the global value.
+ stats_mgr.addValue("assigned-nas", row.state_count_);
+
// Add to the global value.
stats_mgr.addValue("declined-addresses", row.state_count_);
case Lease::TYPE_PD:
if (row.lease_state_ == Lease::STATE_DEFAULT) {
+ // Add to the global value.
+ stats_mgr.addValue("assigned-pds", row.state_count_);
+
// Set subnet level value.
stats_mgr.setValue(StatsMgr::generateName("subnet", row.subnet_id_,
"assigned-pds"),
/// - assigned-addresses
/// - declined-addresses
/// global:
+ /// - assigned-addresses
/// - declined-addresses
///
/// It invokes the virtual method, startLeaseStatsQuery4(), which
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-addresses",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-addresses");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-addresses");
AllocEngine::ClientContext4 ctx(subnet_, clientid_, hwaddr_, IOAddress("0.0.0.0"),
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses",
cumulative, subnet_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-addresses", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses", glbl_cumulative));
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses",
cumulative, subnet_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-addresses", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses", glbl_cumulative));
}
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-addresses",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-addresses");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-addresses");
AllocEngine::ClientContext4 ctx(subnet_, clientid_, hwaddr_,
EXPECT_TRUE(testStatistics("assigned-addresses", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-addresses", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses", glbl_cumulative));
}
EXPECT_TRUE(testStatistics("assigned-addresses", 0, subnet_->getID()));
int64_t cumulative = getStatistics("cumulative-assigned-addresses",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-addresses");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-addresses");
AllocEngine::ClientContext4 ctx(subnet_, clientid_, hwaddr_, IOAddress("0.0.0.0"),
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses",
cumulative, subnet_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-addresses", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses", glbl_cumulative));
EXPECT_TRUE(testStatistics("assigned-addresses", 1, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-addresses", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses", glbl_cumulative));
}
EXPECT_TRUE(testStatistics("assigned-addresses", 0, subnet_->getID()));
int64_t cumulative = getStatistics("cumulative-assigned-addresses",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-addresses");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-addresses");
+
EXPECT_TRUE(testStatistics("reclaimed-leases", 0));
EXPECT_TRUE(testStatistics("reclaimed-leases", 0, subnet_->getID()));
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-addresses", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses", glbl_cumulative));
EXPECT_TRUE(testStatistics("reclaimed-leases", 1));
cfg_mgr.commit(); // so we will recalc stats
int64_t cumulative = getStatistics("cumulative-assigned-addresses",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-addresses");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-addresses");
// Now create a declined lease, decline it and rewind its cltt, so it
EXPECT_TRUE(testStatistics("assigned-addresses", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-addresses", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses", glbl_cumulative));
EXPECT_TRUE(testStatistics("declined-addresses", 0));
EXPECT_TRUE(testStatistics("reclaimed-declined-addresses", 0));
cfg_mgr.commit();
int64_t cumulative = getStatistics("cumulative-assigned-addresses",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-addresses");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-addresses");
// Now create a declined lease, decline it and rewind its cltt, so it
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-addresses", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses", glbl_cumulative));
EXPECT_TRUE(testStatistics("declined-addresses", -1));
EXPECT_TRUE(testStatistics("assigned-addresses", 0, subnet_->getID()));
int64_t cumulative = getStatistics("cumulative-assigned-addresses",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-addresses");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-addresses");
+
EXPECT_TRUE(testStatistics("reclaimed-leases", 0));
EXPECT_TRUE(testStatistics("reclaimed-leases", 0, subnet_->getID()));
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses",
cumulative, subnet_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-addresses", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses", glbl_cumulative));
EXPECT_TRUE(testStatistics("reclaimed-leases", 1));
StatsMgr::instance().addValue(name, static_cast<int64_t>(100));
int64_t cumulative = getStatistics("cumulative-assigned-addresses",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-addresses");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-addresses");
Lease4Ptr lease = engine->allocateLease4(ctx);
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses",
cumulative, subnet_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-addresses", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses", glbl_cumulative));
}
StatsMgr::instance().addValue(name, static_cast<int64_t>(100));
int64_t cumulative = getStatistics("cumulative-assigned-addresses",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-addresses");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-addresses");
Lease4Ptr lease = engine->allocateLease4(ctx);
EXPECT_EQ(100, stat->getInteger().first);
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-addresses", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses", glbl_cumulative));
}
StatsMgr::instance().addValue(name, static_cast<int64_t>(100));
int64_t cumulative = getStatistics("cumulative-assigned-addresses",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-addresses");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-addresses");
// Request allocation of the reserved address.
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-addresses", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-addresses", glbl_cumulative));
-
// Lets' double check that the actual allocation took place.
EXPECT_FALSE(ctx.fake_allocation_);
}
// not interfere with the allocation.
TEST_F(AllocEngine6Test, simpleAlloc6) {
// Assigned count should be zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
simpleAlloc6Test(pool_, IOAddress("::"), false);
- // We should have bumped the assigned counter by 1
+ // We should have bumped the assigned counter by 1.
EXPECT_TRUE(testStatistics("assigned-nas", 1, subnet_->getID()));
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
DuidPtr duid(new DUID(std::vector<uint8_t>(8, 0x84)));
simpleAlloc6Test(pool_, duid, IOAddress("::"), false);
- // We should have bumped the assigned counter by 2
+ // We should have bumped the assigned counter by 1
EXPECT_TRUE(testStatistics("assigned-nas", 2, subnet_->getID()));
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
}
// and the stats counter is properly bumped by 1
TEST_F(AllocEngine6Test, pdSimpleAlloc6) {
// Assigned count should be zero.
+ EXPECT_TRUE(testStatistics("assigned-pds", 0));
EXPECT_TRUE(testStatistics("assigned-pds", 0, subnet_->getID()));
// Get the cumulative count of assigned prefixes.
int64_t cumulative = getStatistics("cumulative-assigned-pds",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-pds");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-pds");
simpleAlloc6Test(pd_pool_, IOAddress("::"), false);
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-pds",
cumulative, subnet_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-pds", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-pds", glbl_cumulative));
}
// and the stats counter isn't bumped
TEST_F(AllocEngine6Test, fakeAlloc6) {
// Assigned count should be zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
simpleAlloc6Test(pool_, IOAddress("::"), true);
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
}
// and the stats counter isn't bumped
TEST_F(AllocEngine6Test, pdFakeAlloc6) {
// Assigned count should be zero.
+ EXPECT_TRUE(testStatistics("assigned-pds", 0));
EXPECT_TRUE(testStatistics("assigned-pds", 0, subnet_->getID()));
// Get the cumulative count of assigned prefixes.
int64_t cumulative = getStatistics("cumulative-assigned-pds",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-pds");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-pds");
simpleAlloc6Test(pd_pool_, IOAddress("::"), true);
EXPECT_TRUE(testStatistics("assigned-pds", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-pds",
cumulative, subnet_->getID()));
+
+ EXPECT_TRUE(testStatistics("assigned-pds", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-pds", glbl_cumulative));
}
initFqdn("myhost.example.com", true, true);
// Verify the all of relevant stats are zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("reclaimed-leases", 0));
EXPECT_TRUE(testStatistics("reclaimed-leases", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
// Just a different duid
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
EXPECT_TRUE(testStatistics("reclaimed-leases", 0));
EXPECT_TRUE(testStatistics("reclaimed-leases", 0, subnet_->getID()));
cfg_mgr.commit();
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
// Let's create an expired lease
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
EXPECT_TRUE(testStatistics("assigned-nas", -1, other_subnetid));
cfg_mgr.commit();
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
// Let's create a released lease
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
EXPECT_FALSE(testStatistics("cumulative-assigned-nas",
AllocEngine engine(100);
// Assigned count should be zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
Lease6Ptr lease = simpleAlloc6Test(pool_, IOAddress("::"), false);
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
}
AllocEngine engine(100);
// Assigned count should be zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
// Let's pretend the client sends hint 2001:db8:1::10.
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
}
AllocEngine engine(100);
// Assigned count should be zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
// Let's pretend the client sends hint 2001:db8:1::10.
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
}
AllocEngine engine(100);
// Assigned count should be zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
// Let's pretend the client sends hint 2001:db8:1::10.
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
}
AllocEngine engine(100);
// Assigned count should be zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
// Let's pretend the client sends hint 2001:db8:1::10.
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
}
AllocEngine engine(100);
// Assigned count should be zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
Lease6Ptr lease = simpleAlloc6Test(pool_, IOAddress("::"), true, false);
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
}
AllocEngine engine(100);
// Assigned count should be zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
Lease6Ptr lease = simpleAlloc6Test(pool_, IOAddress("::"), false, false);
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
}
AllocEngine engine(100);
// Assigned count should be zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
// Let's pretend the client sends hint 2001:db8:1::10.
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
}
AllocEngine engine(100);
// Assigned count should be zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
// Let's pretend the client sends hint 2001:db8:1::10.
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
}
AllocEngine engine(100);
// Assigned count should be zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
// Let's pretend the client sends hint 2001:db8:1::10.
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
}
AllocEngine engine(100);
// Assigned count should be zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
// Let's pretend the client sends hint 2001:db8:1::10.
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
}
AllocEngine engine(100);
// Assigned count should be zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
// Client gets an address
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
EXPECT_TRUE(testStatistics("assigned-nas", 1, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
// Now admin creates a reservation for this client. This is in-pool
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
}
AllocEngine engine(100);
// Assigned count should be zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
// Client gets an address
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
EXPECT_TRUE(testStatistics("assigned-nas", 1, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
// Now admin creates a reservation for this client. Let's use the
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
}
AllocEngine engine(100);
// Assigned count should zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
Lease6Collection leases;
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
EXPECT_TRUE(testStatistics("assigned-nas", 1, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
}
AllocEngine engine(100);
// Assigned count should zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
Lease6Collection leases;
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
EXPECT_TRUE(testStatistics("assigned-nas", 1, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
}
initSubnet(IOAddress("2001:db8:1::"), addr, addr);
// Stats should be zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("declined-addresses", 0));
EXPECT_TRUE(testStatistics("reclaimed-declined-addresses", 0));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
// Now create a declined lease, decline it and rewind its cltt, so it
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
EXPECT_TRUE(testStatistics("declined-addresses", 0));
EXPECT_TRUE(testStatistics("reclaimed-declined-addresses", 0));
initSubnet(IOAddress("2001:db8::"), addr, addr);
// Stats should be zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("declined-addresses", 0));
EXPECT_TRUE(testStatistics("reclaimed-declined-addresses", 0));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
// Now create a declined lease, decline it and rewind its cltt, so it
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
EXPECT_TRUE(testStatistics("declined-addresses", -1));
cfg_mgr.commit();
// Verify relevant stats are zero.
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
EXPECT_TRUE(testStatistics("assigned-nas", 0, subnet_->getID()));
EXPECT_TRUE(testStatistics("reclaimed-leases", 0));
EXPECT_TRUE(testStatistics("reclaimed-leases", 0, subnet_->getID()));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
// Let's create an expired lease
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
EXPECT_TRUE(testStatistics("reclaimed-leases", 0));
// Get the cumulative count of assigned addresses.
int64_t cumulative = getStatistics("cumulative-assigned-nas",
subnet2_->getID());
+
+ int64_t glbl_assigned = getStatistics("assigned-nas");
int64_t glbl_cumulative = getStatistics("cumulative-assigned-nas");
// Create a lease in subnet 2 for this client. The lease is in expired
cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas",
cumulative, subnet2_->getID()));
+ glbl_assigned += 1;
+ EXPECT_TRUE(testStatistics("assigned-nas", glbl_assigned));
glbl_cumulative += 1;
EXPECT_TRUE(testStatistics("cumulative-assigned-nas", glbl_cumulative));
leases_[lease_index]->valid_lft_;
leases_[lease_index]->state_ = Lease::STATE_EXPIRED_RECLAIMED;
ASSERT_NO_THROW(updateLease(lease_index));
+ StatsMgr& stats_mgr = StatsMgr::instance();
+ auto observation = stats_mgr.getObservation("assigned-addresses");
+ if (observation) {
+ stats_mgr.addValue("assigned-addresses", int64_t(-1));
+ }
+ observation = stats_mgr.getObservation("assigned-nas");
+ if (observation) {
+ stats_mgr.addValue("assigned-nas", int64_t(-1));
+ }
}
/// @brief Declines specified lease
// Update the stats.
StatsMgr& stats_mgr = StatsMgr::instance();
auto subnet_id = leases_[lease_index]->subnet_id_;
+ stats_mgr.addValue("assigned-nas", int64_t(-1));
stats_mgr.addValue(stats_mgr.generateName("subnet", subnet_id,
"assigned-nas"),
int64_t(-1));
// be used to easily detect whether a given stat was decreased or
// increased. They are sufficiently high compared to number of leases
// to avoid any chances of going into negative.
+ stats_mgr.setValue(stat_name, static_cast<int64_t>(3000));
+
stats_mgr.setValue("declined-addresses", static_cast<int64_t>(1000));
// Let's set global the counter for reclaimed declined addresses.
// in removal of all leases with even indexes.
ASSERT_NO_THROW(reclaimExpiredLeases(0, 0, true));
- // Declined-addresses should be decreased from its initial value (1000)
+ // The assigned-addresses should be decreased from its initial value (3000)
+ // for both recovered addresses from subnet1 and subnet2.
+ testStatistics(stat_name, 3000 - subnet1_cnt - subnet2_cnt);
+
+ // The declined-addresses should be decreased from its initial value (1000)
// for both recovered addresses from subnet1 and subnet2.
testStatistics("declined-addresses", 1000 - subnet1_cnt - subnet2_cnt);
StatsMgr& stats_mgr = StatsMgr::instance();
std::string stat_name =
lease->type_ == Lease::TYPE_NA ? "assigned-nas" : "assigned-pds";
+ stats_mgr.addValue(stat_name, int64_t(1));
stats_mgr.addValue(stats_mgr.generateName("subnet", lease->subnet_id_, stat_name),
int64_t(1));
}
StatsMgr& stats_mgr = StatsMgr::instance();
std::string stats_name = (lease_type == Lease::TYPE_NA ?
"assigned-nas" : "assigned-pds");
+ stats_mgr.addValue(stats_name, int64_t(1));
stats_mgr.addValue(stats_mgr.generateName("subnet",
leases_[lease_index]->subnet_id_,
stats_name),
int64_t(1));
stats_name = (leases_[lease_index]->type_ == Lease::TYPE_NA ?
"assigned-nas" : "assigned-pds");
+ stats_mgr.addValue(stats_name, int64_t(-1));
stats_mgr.addValue(stats_mgr.generateName("subnet",
leases_[lease_index]->subnet_id_,
stats_name),
EXPECT_TRUE(testStatistics("reclaimed-leases", i / 2, 1));
EXPECT_TRUE(testStatistics("reclaimed-leases", i / 2, 2));
// Number of assigned leases should decrease as we reclaim them.
- EXPECT_TRUE(testStatistics("assigned-nas",
- (TEST_LEASES_NUM - i) / 2, 1));
- EXPECT_TRUE(testStatistics("assigned-pds",
- (TEST_LEASES_NUM - i) / 2, 2));
+ EXPECT_TRUE(testStatistics("assigned-nas", (TEST_LEASES_NUM - i) / 2));
+ EXPECT_TRUE(testStatistics("assigned-pds", (TEST_LEASES_NUM - i) / 2));
+ EXPECT_TRUE(testStatistics("assigned-nas", (TEST_LEASES_NUM - i) / 2, 1));
+ EXPECT_TRUE(testStatistics("assigned-pds", (TEST_LEASES_NUM - i) / 2, 2));
}
}
// initially reclaimed.
if (use_reclaimed || (msg_type == DHCPV6_SOLICIT)) {
EXPECT_TRUE(testStatistics("reclaimed-leases", 0));
+ if (use_reclaimed && (msg_type == DHCPV6_SOLICIT)) {
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
+ } else {
+ EXPECT_TRUE(testStatistics("assigned-nas", TEST_LEASES_NUM));
+ }
} else {
EXPECT_TRUE(testStatistics("reclaimed-leases", TEST_LEASES_NUM));
+ EXPECT_TRUE(testStatistics("assigned-nas", TEST_LEASES_NUM));
EXPECT_TRUE(testStatistics("assigned-nas", TEST_LEASES_NUM, subnet->getID()));
// Leases should have been updated in the lease database and their
// state should not be 'expired-reclaimed' anymore.
EXPECT_TRUE(testLeases(&leaseNotReclaimed, &allLeaseIndexes));
}
-
}
void
ASSERT_NO_THROW(reclaimExpiredLeases(reclamation_group_size,
0, false));
+ EXPECT_TRUE(testStatistics("assigned-nas", 0));
// Number of reclaimed leases should increase as we loop.
EXPECT_TRUE(testStatistics("reclaimed-leases", i));
// Make sure that the number of reclaimed leases is also distributed
// Note in the statistics that this lease has been added.
StatsMgr& stats_mgr = StatsMgr::instance();
std::string stat_name = "assigned-addresses";
+ stats_mgr.addValue(stat_name, int64_t(1));
stats_mgr.addValue(stats_mgr.generateName("subnet", lease->subnet_id_, stat_name),
int64_t(1));
}
// Number of reclaimed leases should increase as we loop.
EXPECT_TRUE(testStatistics("reclaimed-leases", i));
+ EXPECT_TRUE(testStatistics("assigned-addresses", TEST_LEASES_NUM - i));
// Make sure that the number of reclaimed leases is also distributed
// across two subnets.
EXPECT_TRUE(testStatistics("reclaimed-leases", i / 2, 1));
EXPECT_TRUE(testStatistics("reclaimed-leases", i / 2, 2));
// Number of assigned leases should decrease as we reclaim them.
- EXPECT_TRUE(testStatistics("assigned-addresses",
- (TEST_LEASES_NUM - i) / 2, 1));
- EXPECT_TRUE(testStatistics("assigned-addresses",
- (TEST_LEASES_NUM - i) / 2, 2));
+ EXPECT_TRUE(testStatistics("assigned-addresses", (TEST_LEASES_NUM - i) / 2, 1));
+ EXPECT_TRUE(testStatistics("assigned-addresses", (TEST_LEASES_NUM - i) / 2, 2));
}
}
// 'expired-reclaimed' state.
if (use_reclaimed || (msg_type == DHCPDISCOVER)) {
EXPECT_TRUE(testStatistics("reclaimed-leases", 0));
-
+ if (use_reclaimed && msg_type == DHCPDISCOVER) {
+ EXPECT_TRUE(testStatistics("assigned-addresses", 0));
+ } else {
+ EXPECT_TRUE(testStatistics("assigned-addresses", TEST_LEASES_NUM));
+ }
} else if (msg_type == DHCPREQUEST) {
// Re-allocation of expired leases should result in reclamations.
EXPECT_TRUE(testStatistics("reclaimed-leases", TEST_LEASES_NUM));
+ EXPECT_TRUE(testStatistics("assigned-addresses", TEST_LEASES_NUM));
EXPECT_TRUE(testStatistics("assigned-addresses", TEST_LEASES_NUM, subnet->getID()));
// Leases should have been updated in the lease database and their
// state should not be 'expired-reclaimed' anymore.
// Add subnet.
cfg->add(subnet);
+ observation = StatsMgr::instance().getObservation(
+ "assigned-addresses");
+ ASSERT_FALSE(observation);
+
observation = StatsMgr::instance().getObservation(
"cumulative-assigned-addresses");
ASSERT_FALSE(observation);
cfg->updateStatistics();
+ observation = StatsMgr::instance().getObservation(
+ "assigned-addresses");
+ ASSERT_TRUE(observation);
+ ASSERT_EQ(0, observation->getInteger().first);
+
observation = StatsMgr::instance().getObservation(
"cumulative-assigned-addresses");
ASSERT_TRUE(observation);
// Add subnet.
cfg->add(subnet);
+ observation = StatsMgr::instance().getObservation(
+ "assigned-nas");
+ ASSERT_FALSE(observation);
+
observation = StatsMgr::instance().getObservation(
"cumulative-assigned-nas");
ASSERT_FALSE(observation);
+ observation = StatsMgr::instance().getObservation(
+ "assigned-pds");
+ ASSERT_FALSE(observation);
+
observation = StatsMgr::instance().getObservation(
"cumulative-assigned-pds");
ASSERT_FALSE(observation);
cfg->updateStatistics();
+ observation = StatsMgr::instance().getObservation(
+ "assigned-nas");
+ ASSERT_TRUE(observation);
+ ASSERT_EQ(0, observation->getInteger().first);
+
observation = StatsMgr::instance().getObservation(
"cumulative-assigned-nas");
ASSERT_TRUE(observation);
ASSERT_EQ(0, observation->getInteger().first);
+ observation = StatsMgr::instance().getObservation(
+ "assigned-pds");
+ ASSERT_TRUE(observation);
+ ASSERT_EQ(0, observation->getInteger().first);
+
observation = StatsMgr::instance().getObservation(
"cumulative-assigned-pds");
ASSERT_TRUE(observation);
// Make sure stats are as expected.
ASSERT_NO_FATAL_FAILURE(checkLeaseStats(expectedStats));
+ // Check that assigned global stats always exist.
+ EXPECT_TRUE(StatsMgr::instance().getObservation("assigned-addresses"));
+
// Check that cumulative global stats always exist.
EXPECT_TRUE(StatsMgr::instance().getObservation("cumulative-assigned-addresses"));
// Make sure stats are as expected.
ASSERT_NO_FATAL_FAILURE(checkLeaseStats(expectedStats));
+ // Check that global stats always exist.
+ EXPECT_TRUE(StatsMgr::instance().getObservation("assigned-nas"));
+ EXPECT_TRUE(StatsMgr::instance().getObservation("assigned-pds"));
+
// Check that cumulative global stats always exist.
EXPECT_TRUE(StatsMgr::instance().getObservation("cumulative-assigned-nas"));
EXPECT_TRUE(StatsMgr::instance().getObservation("cumulative-assigned-pds"));
"{",
" \"result\": 0,",
" \"arguments\": {",
+ " \"assigned-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.836096\"",
+ " ]",
+ " ],",
" \"cumulative-assigned-addresses\": [",
" [",
" 0,",
"{",
" \"result\": 0,",
" \"arguments\": {",
+ " \"assigned-nas\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196757\"",
+ " ]",
+ " ],",
+ " \"assigned-pds\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196757\"",
+ " ]",
+ " ],",
" \"cumulative-assigned-nas\": [",
" [",
" 0,",