#include <ping_check_log.h>
#include <dhcpsrv/cfgmgr.h>
#include <hooks/hooks_manager.h>
+#include <stats/stats_mgr.h>
#include <util/multi_threading_mgr.h>
#include <util/chrono_time_utils.h>
using namespace isc::dhcp;
using namespace isc::data;
using namespace isc::hooks;
+using namespace isc::stats;
using namespace isc::util;
using namespace std;
using namespace std::chrono;
PING_CHECK_DUPLICATE_CHECK)
.arg(lease->addr_)
.arg(query->getLabel());
+ // Duplicates are a trivial instance of queue full.
+ StatsMgr::instance().addValue("pkt4-queue-full",
+ static_cast<int64_t>(1));
+ StatsMgr::instance().addValue("pkt4-receive-drop",
+ static_cast<int64_t>(1));
return (CalloutHandle::CalloutNextStep::NEXT_STEP_DROP);
}
#include <dhcpsrv/cfgmgr.h>
#include <dhcpsrv/lease.h>
#include <hooks/hooks_manager.h>
+#include <stats/stats_mgr.h>
#include <util/chrono_time_utils.h>
#include <testutils/gtest_utils.h>
#include <testutils/multi_threading_utils.h>
auto lqp2 = makeLeaseQueryPair(IOAddress("127.0.0.2"), 333);
lqp2.lease_->client_id_ = old_lease->client_id_;
+ // Initialize statistics.
+ using namespace isc::stats;
+ StatsMgr& stats_mgr = StatsMgr::instance();
+ stats_mgr.setValue("pkt4-queue-full", static_cast<int64_t>(0));
+ stats_mgr.setValue("pkt4-receive-drop", static_cast<int64_t>(0));
+
// Trying to start a ping for an address already being checked should return DROP.
ASSERT_NO_THROW_LOG(status = mgr_->shouldPing(lqp2.lease_, lqp2.query_, empty_lease, empty_host, config));
EXPECT_EQ(status, CalloutHandle::NEXT_STEP_DROP);
+ // The pkt4-queue-full and pkt4-receive-drop stats was bumped by one.
+ ObservationPtr stat_qf = stats_mgr.getObservation("pkt4-queue-full");
+ ObservationPtr stat_rd = stats_mgr.getObservation("pkt4-receive-drop");
+ ASSERT_TRUE(stat_qf);
+ ASSERT_TRUE(stat_rd);
+ EXPECT_EQ(1, stat_qf->getInteger().first);
+ EXPECT_EQ(1, stat_rd->getInteger().first);
+
// Stop the mgr.
ASSERT_NO_THROW(mgr_->stop());