From: Francis Dupont Date: Sat, 17 Oct 2015 09:19:55 +0000 (+0200) Subject: [3978] Cleaned up code X-Git-Tag: fdfb_base~5^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=448015b06a100d81085d5bd63efdfd2c6c2b60c3;p=thirdparty%2Fkea.git [3978] Cleaned up code --- diff --git a/src/bin/dhcp4/ctrl_dhcp4_srv.cc b/src/bin/dhcp4/ctrl_dhcp4_srv.cc index f0081ccb90..1fb22746fd 100644 --- a/src/bin/dhcp4/ctrl_dhcp4_srv.cc +++ b/src/bin/dhcp4/ctrl_dhcp4_srv.cc @@ -106,6 +106,8 @@ ControlledDhcpv4Srv::processCommand(const string& command, } else if (command == "config-reload") { return (srv->commandConfigReloadHandler(command, args)); + } else if (command == "leases-reclaim") { + return (srv->commandLeasesReclaimHandler(command, args)); } ConstElementPtr answer = isc::config::createAnswer(1, "Unrecognized command:" + command); diff --git a/src/bin/dhcp4/ctrl_dhcp4_srv.h b/src/bin/dhcp4/ctrl_dhcp4_srv.h index 338dbfe2f8..6bfcdc1da2 100644 --- a/src/bin/dhcp4/ctrl_dhcp4_srv.h +++ b/src/bin/dhcp4/ctrl_dhcp4_srv.h @@ -70,6 +70,7 @@ public: /// - shutdown /// - libreload /// - config-reload + /// - leases-reclaim /// /// @note It never throws. /// diff --git a/src/bin/dhcp4/kea_controller.cc b/src/bin/dhcp4/kea_controller.cc index 92503d5cf0..d77bb37756 100644 --- a/src/bin/dhcp4/kea_controller.cc +++ b/src/bin/dhcp4/kea_controller.cc @@ -69,11 +69,11 @@ void configure(const std::string& file_name) { // works only for map. if (json->getType() != isc::data::Element::map) { isc_throw(isc::BadValue, "Configuration file is expected to be " - "a map, i.e., start with { and end with } and contain " - "at least an entry called 'Dhcp4' that itself is a map. " - << file_name + "a map, i.e., start with { and end with } and contain " + "at least an entry called 'Dhcp4' that itself is a map. " + << file_name << " is a valid JSON, but its top element is not a map." - " Did you forget to add { } around your configuration?"); + " Did you forget to add { } around your configuration?"); } // If there's no logging element, we'll just pass NULL pointer, diff --git a/src/bin/dhcp4/tests/ctrl_dhcp4_srv_unittest.cc b/src/bin/dhcp4/tests/ctrl_dhcp4_srv_unittest.cc index cb6c7de0a4..89c9e93dae 100644 --- a/src/bin/dhcp4/tests/ctrl_dhcp4_srv_unittest.cc +++ b/src/bin/dhcp4/tests/ctrl_dhcp4_srv_unittest.cc @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "marker_file.h" @@ -45,6 +46,7 @@ using namespace isc::data; using namespace isc::dhcp; using namespace isc::dhcp::test; using namespace isc::hooks; +using namespace isc::stats; namespace { @@ -82,6 +84,8 @@ public: /// @brief Destructor ~CtrlChannelDhcpv4SrvTest() { + LeaseMgrFactory::destroy(); + StatsMgr::instance().removeAll(); server_.reset(); reset(); }; diff --git a/src/bin/dhcp6/ctrl_dhcp6_srv.cc b/src/bin/dhcp6/ctrl_dhcp6_srv.cc index 5b051951f1..8762809705 100644 --- a/src/bin/dhcp6/ctrl_dhcp6_srv.cc +++ b/src/bin/dhcp6/ctrl_dhcp6_srv.cc @@ -103,6 +103,9 @@ ControlledDhcpv6Srv::processCommand(const std::string& command, } else if (command == "config-reload") { return (srv->commandConfigReloadHandler(command, args)); + + } else if (command == "leases-reclaim") { + return (srv->commandLeasesReclaimHandler(command, args)); } return (isc::config::createAnswer(1, "Unrecognized command:" diff --git a/src/bin/dhcp6/ctrl_dhcp6_srv.h b/src/bin/dhcp6/ctrl_dhcp6_srv.h index 3e1c26f28a..43b42b6459 100644 --- a/src/bin/dhcp6/ctrl_dhcp6_srv.h +++ b/src/bin/dhcp6/ctrl_dhcp6_srv.h @@ -70,6 +70,7 @@ public: /// - shutdown /// - libreload /// - config-reload + /// - leases-reclaim /// /// @note It never throws. /// diff --git a/src/bin/dhcp6/kea_controller.cc b/src/bin/dhcp6/kea_controller.cc index f1fc901f97..2962f0eb15 100644 --- a/src/bin/dhcp6/kea_controller.cc +++ b/src/bin/dhcp6/kea_controller.cc @@ -73,11 +73,11 @@ void configure(const std::string& file_name) { // works only for map. if (json->getType() != isc::data::Element::map) { isc_throw(isc::BadValue, "Configuration file is expected to be " - "a map, i.e., start with { and end with } and contain " - "at least an entry called 'Dhcp6' that itself is a map. " - << file_name + "a map, i.e., start with { and end with } and contain " + "at least an entry called 'Dhcp6' that itself is a map. " + << file_name << " is a valid JSON, but its top element is not a map." - " Did you forget to add { } around your configuration?"); + " Did you forget to add { } around your configuration?"); } // Let's configure logging before applying the configuration, diff --git a/src/bin/dhcp6/tests/ctrl_dhcp6_srv_unittest.cc b/src/bin/dhcp6/tests/ctrl_dhcp6_srv_unittest.cc index dcbe5ed1ad..38683a9699 100644 --- a/src/bin/dhcp6/tests/ctrl_dhcp6_srv_unittest.cc +++ b/src/bin/dhcp6/tests/ctrl_dhcp6_srv_unittest.cc @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "marker_file.h" @@ -41,6 +42,7 @@ using namespace isc::data; using namespace isc::dhcp; using namespace isc::dhcp::test; using namespace isc::hooks; +using namespace isc::stats; namespace { @@ -63,6 +65,8 @@ public: } virtual ~CtrlDhcpv6SrvTest() { + LeaseMgrFactory::destroy(); + StatsMgr::instance().removeAll(); reset(); }; @@ -415,6 +419,37 @@ TEST_F(CtrlChannelDhcpv6SrvTest, controlChannelShutdown) { EXPECT_EQ("{ \"result\": 0, \"text\": \"Shutting down.\" }",response); } +// Thist test verifies that the DHCP server immediately reclaims expired +// leases on leases-reclaim command +TEST_F(CtrlChannelDhcpv6SrvTest, controlLeasesReclaim) { + createUnixChannelServer(); + + // Create an expired lease. The lease is expired by 40 seconds ago + // (valid lifetime = 60, cltt = now - 100). + DuidPtr duid_expired(new DUID(DUID::fromText("00:01:02:03:04:05:06").getDuid())); + Lease6Ptr lease_expired(new Lease6(Lease::TYPE_NA, IOAddress("3000::1"), + duid_expired, 1, 50, 60, 10, 20, SubnetID(1))); + lease_expired->cltt_ = time(NULL) - 100; + + // Add lease to the database. + LeaseMgr& lease_mgr = LeaseMgrFactory().instance(); + ASSERT_NO_THROW(lease_mgr.addLease(lease_expired)); + + // Make sure it has been added. + ASSERT_TRUE(lease_mgr.getLease6(Lease::TYPE_NA, IOAddress("3000::1"))); + + // Send the command. + std::string response; + sendUnixCommand("{ \"command\": \"leases-reclaim\" }", response); + EXPECT_EQ("{ \"result\": 0, \"text\": \"Leases successfully reclaimed.\" }", response); + + // Verify that the lease in the database has been processed as expected. + ASSERT_NO_THROW( + lease_expired = lease_mgr.getLease6(Lease::TYPE_NA, IOAddress("3000::1")) + ); + EXPECT_FALSE(lease_expired); +} + // Tests that the server properly responds to statistics commands. Note this // is really only intended to verify that the appropriate Statistics handler // is called based on the command. It is not intended to be an exhaustive @@ -461,36 +496,4 @@ TEST_F(CtrlChannelDhcpv6SrvTest, controlChannelStats) { response); } -// Thist test verifies that the DHCP server immediately reclaims expired -// leases on leases-reclaim command -// @todo currently must be last as it changes statistics. -TEST_F(CtrlChannelDhcpv6SrvTest, controlLeasesReclaim) { - createUnixChannelServer(); - - // Create an expired lease. The lease is expired by 40 seconds ago - // (valid lifetime = 60, cltt = now - 100). - DuidPtr duid_expired(new DUID(DUID::fromText("00:01:02:03:04:05:06").getDuid())); - Lease6Ptr lease_expired(new Lease6(Lease::TYPE_NA, IOAddress("3000::1"), - duid_expired, 1, 50, 60, 10, 20, SubnetID(1))); - lease_expired->cltt_ = time(NULL) - 100; - - // Add lease to the database. - LeaseMgr& lease_mgr = LeaseMgrFactory().instance(); - ASSERT_NO_THROW(lease_mgr.addLease(lease_expired)); - - // Make sure it has been added. - ASSERT_TRUE(lease_mgr.getLease6(Lease::TYPE_NA, IOAddress("3000::1"))); - - // Send the command. - std::string response; - sendUnixCommand("{ \"command\": \"leases-reclaim\" }", response); - EXPECT_EQ("{ \"result\": 0, \"text\": \"Leases successfully reclaimed.\" }", response); - - // Verify that the lease in the database has been processed as expected. - ASSERT_NO_THROW( - lease_expired = lease_mgr.getLease6(Lease::TYPE_NA, IOAddress("3000::1")) - ); - EXPECT_FALSE(lease_expired); -} - } // End of anonymous namespace