#include <dhcpsrv/cfgmgr.h>
#include <dhcpsrv/host_mgr.h>
#include <process/daemon.h>
+#include <stats/stats_mgr.h>
#include <radius_log.h>
#include <radius_parsers.h>
#include <radius_access.h>
using namespace isc::hooks;
using namespace isc::process;
using namespace isc::radius;
+using namespace isc::stats;
using namespace isc::util;
using namespace std;
LOG_DEBUG(radius_logger, RADIUS_DBG_TRACE, RADIUS_ACCESS_CONFLICT)
.arg(query->getLabel())
.arg(text);
+ StatsMgr::instance().addValue("pkt4-queue-full",
+ static_cast<int64_t>(1));
+ StatsMgr::instance().addValue("pkt4-receive-drop",
+ static_cast<int64_t>(1));
handle.setStatus(CalloutHandle::NEXT_STEP_DROP);
return (handler);
}
RADIUS_ACCESS_MAX_PENDING_REQUESTS)
.arg(query->getLabel())
.arg(text);
+ StatsMgr::instance().addValue("pkt4-queue-full",
+ static_cast<int64_t>(1));
+ StatsMgr::instance().addValue("pkt4-receive-drop",
+ static_cast<int64_t>(1));
handle.setStatus(CalloutHandle::NEXT_STEP_DROP);
return (handler);
}
LOG_DEBUG(radius_logger, RADIUS_DBG_TRACE, RADIUS_ACCESS_CONFLICT)
.arg(query->getLabel())
.arg(text);
+ StatsMgr::instance().addValue("pkt6-queue-full",
+ static_cast<int64_t>(1));
+ StatsMgr::instance().addValue("pkt6-receive-drop",
+ static_cast<int64_t>(1));
handle.setStatus(CalloutHandle::NEXT_STEP_DROP);
return (handler);
}
RADIUS_ACCESS_MAX_PENDING_REQUESTS)
.arg(query->getLabel())
.arg(text);
+ StatsMgr::instance().addValue("pkt6-queue-full",
+ static_cast<int64_t>(1));
+ StatsMgr::instance().addValue("pkt6-receive-drop",
+ static_cast<int64_t>(1));
handle.setStatus(CalloutHandle::NEXT_STEP_DROP);
return (handler);
}
#include <hooks/callout_handle.h>
#include <hooks/callout_manager.h>
#include <hooks/hooks_manager.h>
+#include <stats/stats_mgr.h>
#include <testutils/gtest_utils.h>
#include <testutils/multi_threading_utils.h>
using namespace isc::dhcp::test;
using namespace isc::hooks;
using namespace isc::radius;
+using namespace isc::stats;
using namespace isc::test;
using namespace isc::util;
Subnet4Ptr subnet(new Subnet4(IOAddress("192.0.2.0"), 24, 1, 2, 3, 1));
CfgMgr::instance().getCurrentCfg()->getCfgSubnets4()->add(subnet);
+ // Initialize stats.
+ StatsMgr::instance().setValue("pkt4-queue-full",
+ static_cast<int64_t>(0));
+ StatsMgr::instance().setValue("pkt4-receive-drop",
+ static_cast<int64_t>(0));
+
// Start not servicing server.
thread_.reset(new thread(bind(&AccessTest::dummyServer, this)));
system_clock::time_point start(system_clock::now());
this_thread::sleep_for(1ms);
}
EXPECT_TRUE(finished_);
+
+ // Check stats.
+ ObservationPtr qf_stat =
+ StatsMgr::instance().getObservation("pkt4-queue-full");
+ ObservationPtr rd_stat =
+ StatsMgr::instance().getObservation("pkt4-receive-drop");
+ ASSERT_TRUE(qf_stat);
+ ASSERT_TRUE(rd_stat);
+ EXPECT_EQ(1, qf_stat->getInteger().first);
+ EXPECT_EQ(1, rd_stat->getInteger().first);
}
TEST_F(AccessTest, twoQueries6) {
Subnet6Ptr subnet(new Subnet6(IOAddress("2001:db8::"), 64, 1, 2, 3, 4, 1));
CfgMgr::instance().getCurrentCfg()->getCfgSubnets6()->add(subnet);
+ // Initialize stats.
+ StatsMgr::instance().setValue("pkt6-queue-full",
+ static_cast<int64_t>(0));
+ StatsMgr::instance().setValue("pkt6-receive-drop",
+ static_cast<int64_t>(0));
+
// Start not servicing server.
thread_.reset(new thread(bind(&AccessTest::dummyServer, this)));
system_clock::time_point start(system_clock::now());
this_thread::sleep_for(1ms);
}
EXPECT_TRUE(finished_);
+
+ // Check stats.
+ ObservationPtr qf_stat =
+ StatsMgr::instance().getObservation("pkt6-queue-full");
+ ObservationPtr rd_stat =
+ StatsMgr::instance().getObservation("pkt6-receive-drop");
+ ASSERT_TRUE(qf_stat);
+ ASSERT_TRUE(rd_stat);
+ EXPECT_EQ(1, qf_stat->getInteger().first);
+ EXPECT_EQ(1, rd_stat->getInteger().first);
}
TEST_F(AccessTest, maxPendingRequest4) {
Subnet4Ptr subnet(new Subnet4(IOAddress("192.0.2.0"), 24, 1, 2, 3, 1));
CfgMgr::instance().getCurrentCfg()->getCfgSubnets4()->add(subnet);
+ // Initialize stats.
+ StatsMgr::instance().setValue("pkt4-queue-full",
+ static_cast<int64_t>(0));
+ StatsMgr::instance().setValue("pkt4-receive-drop",
+ static_cast<int64_t>(0));
+
// Start not servicing server.
thread_.reset(new thread(bind(&AccessTest::dummyServer, this)));
system_clock::time_point start(system_clock::now());
this_thread::sleep_for(1ms);
}
EXPECT_TRUE(finished_);
+
+ // Check stats.
+ ObservationPtr qf_stat =
+ StatsMgr::instance().getObservation("pkt4-queue-full");
+ ObservationPtr rd_stat =
+ StatsMgr::instance().getObservation("pkt4-receive-drop");
+ ASSERT_TRUE(qf_stat);
+ ASSERT_TRUE(rd_stat);
+ EXPECT_EQ(1, qf_stat->getInteger().first);
+ EXPECT_EQ(1, rd_stat->getInteger().first);
}
TEST_F(AccessTest, maxPendingRequest6) {
Subnet6Ptr subnet(new Subnet6(IOAddress("2001:db8::"), 64, 1, 2, 3, 4, 1));
CfgMgr::instance().getCurrentCfg()->getCfgSubnets6()->add(subnet);
+ // Initialize stats.
+ StatsMgr::instance().setValue("pkt6-queue-full",
+ static_cast<int64_t>(0));
+ StatsMgr::instance().setValue("pkt6-receive-drop",
+ static_cast<int64_t>(0));
+
// Start not servicing server.
thread_.reset(new thread(bind(&AccessTest::dummyServer, this)));
system_clock::time_point start(system_clock::now());
this_thread::sleep_for(1ms);
}
EXPECT_TRUE(finished_);
+
+ // Check stats.
+ ObservationPtr qf_stat =
+ StatsMgr::instance().getObservation("pkt6-queue-full");
+ ObservationPtr rd_stat =
+ StatsMgr::instance().getObservation("pkt6-receive-drop");
+ ASSERT_TRUE(qf_stat);
+ ASSERT_TRUE(rd_stat);
+ EXPECT_EQ(1, qf_stat->getInteger().first);
+ EXPECT_EQ(1, rd_stat->getInteger().first);
}
TEST_F(AccessTest, noHost4) {