mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-09-03 15:35:17 +00:00
[#1041] Checkpoint: created status-get returning pid (only)
This commit is contained in:
committed by
Marcin Siodelski
parent
c3fb2c597e
commit
82f58f889e
@@ -574,6 +574,16 @@ ControlledDhcpv4Srv::commandConfigBackendPullHandler(const std::string&,
|
|||||||
"On demand configuration update successful."));
|
"On demand configuration update successful."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ConstElementPtr
|
||||||
|
ControlledDhcpv4Srv::commandStatusGetHandler(const string&,
|
||||||
|
ConstElementPtr /*args*/) {
|
||||||
|
ElementPtr status = Element::createMap();
|
||||||
|
status->set("pid", Element::create(static_cast<int>(getpid())));
|
||||||
|
// TODO...
|
||||||
|
|
||||||
|
return (createAnswer(0, status));
|
||||||
|
}
|
||||||
|
|
||||||
ConstElementPtr
|
ConstElementPtr
|
||||||
ControlledDhcpv4Srv::processCommand(const string& command,
|
ControlledDhcpv4Srv::processCommand(const string& command,
|
||||||
ConstElementPtr args) {
|
ConstElementPtr args) {
|
||||||
@@ -634,6 +644,8 @@ ControlledDhcpv4Srv::processCommand(const string& command,
|
|||||||
} else if (command == "config-backend-pull") {
|
} else if (command == "config-backend-pull") {
|
||||||
return (srv->commandConfigBackendPullHandler(command, args));
|
return (srv->commandConfigBackendPullHandler(command, args));
|
||||||
|
|
||||||
|
} else if (command == "status-get") {
|
||||||
|
return (srv->commandStatusGetHandler(command, args));
|
||||||
}
|
}
|
||||||
ConstElementPtr answer = isc::config::createAnswer(1,
|
ConstElementPtr answer = isc::config::createAnswer(1,
|
||||||
"Unrecognized command:" + command);
|
"Unrecognized command:" + command);
|
||||||
@@ -877,6 +889,9 @@ ControlledDhcpv4Srv::ControlledDhcpv4Srv(uint16_t server_port /*= DHCP4_SERVER_P
|
|||||||
CommandMgr::instance().registerCommand("shutdown",
|
CommandMgr::instance().registerCommand("shutdown",
|
||||||
boost::bind(&ControlledDhcpv4Srv::commandShutdownHandler, this, _1, _2));
|
boost::bind(&ControlledDhcpv4Srv::commandShutdownHandler, this, _1, _2));
|
||||||
|
|
||||||
|
CommandMgr::instance().registerCommand("status-get",
|
||||||
|
boost::bind(&ControlledDhcpv4Srv::commandStatusGetHandler, this, _1, _2));
|
||||||
|
|
||||||
CommandMgr::instance().registerCommand("version-get",
|
CommandMgr::instance().registerCommand("version-get",
|
||||||
boost::bind(&ControlledDhcpv4Srv::commandVersionGetHandler, this, _1, _2));
|
boost::bind(&ControlledDhcpv4Srv::commandVersionGetHandler, this, _1, _2));
|
||||||
|
|
||||||
@@ -954,6 +969,7 @@ ControlledDhcpv4Srv::~ControlledDhcpv4Srv() {
|
|||||||
CommandMgr::instance().deregisterCommand("statistic-sample-age-set-all");
|
CommandMgr::instance().deregisterCommand("statistic-sample-age-set-all");
|
||||||
CommandMgr::instance().deregisterCommand("statistic-sample-count-set");
|
CommandMgr::instance().deregisterCommand("statistic-sample-count-set");
|
||||||
CommandMgr::instance().deregisterCommand("statistic-sample-count-set-all");
|
CommandMgr::instance().deregisterCommand("statistic-sample-count-set-all");
|
||||||
|
CommandMgr::instance().deregisterCommand("status-get");
|
||||||
CommandMgr::instance().deregisterCommand("version-get");
|
CommandMgr::instance().deregisterCommand("version-get");
|
||||||
|
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
|
@@ -317,6 +317,18 @@ private:
|
|||||||
commandConfigBackendPullHandler(const std::string& command,
|
commandConfigBackendPullHandler(const std::string& command,
|
||||||
isc::data::ConstElementPtr args);
|
isc::data::ConstElementPtr args);
|
||||||
|
|
||||||
|
/// @brief handler for processing 'status-get' command
|
||||||
|
///
|
||||||
|
/// This handler processes status-get command, which retrieves
|
||||||
|
/// the server process information i.e. the pid and returns it in response.
|
||||||
|
///
|
||||||
|
/// @param command (ignored)
|
||||||
|
/// @param args (ignored)
|
||||||
|
/// @return process information wrapped in a response
|
||||||
|
isc::data::ConstElementPtr
|
||||||
|
commandStatusGetHandler(const std::string& command,
|
||||||
|
isc::data::ConstElementPtr args);
|
||||||
|
|
||||||
/// @brief Reclaims expired IPv4 leases and reschedules timer.
|
/// @brief Reclaims expired IPv4 leases and reschedules timer.
|
||||||
///
|
///
|
||||||
/// This is a wrapper method for @c AllocEngine::reclaimExpiredLeases4.
|
/// This is a wrapper method for @c AllocEngine::reclaimExpiredLeases4.
|
||||||
|
@@ -497,6 +497,7 @@ TEST_F(CtrlChannelDhcpv4SrvTest, commandsRegistration) {
|
|||||||
EXPECT_TRUE(command_list.find("\"statistic-sample-age-set-all\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"statistic-sample-age-set-all\"") != string::npos);
|
||||||
EXPECT_TRUE(command_list.find("\"statistic-sample-count-set\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"statistic-sample-count-set\"") != string::npos);
|
||||||
EXPECT_TRUE(command_list.find("\"statistic-sample-count-set-all\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"statistic-sample-count-set-all\"") != string::npos);
|
||||||
|
EXPECT_TRUE(command_list.find("\"status-get\"") != string::npos);
|
||||||
EXPECT_TRUE(command_list.find("\"version-get\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"version-get\"") != string::npos);
|
||||||
|
|
||||||
// Ok, and now delete the server. It should deregister its commands.
|
// Ok, and now delete the server. It should deregister its commands.
|
||||||
@@ -1026,6 +1027,18 @@ TEST_F(CtrlChannelDhcpv4SrvTest, serverTagGet) {
|
|||||||
expected = "{ \"arguments\": { \"server-tag\": \"foobar\" }, \"result\": 0 }";
|
expected = "{ \"arguments\": { \"server-tag\": \"foobar\" }, \"result\": 0 }";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This test verifies that the DHCP server handles status-get commands
|
||||||
|
TEST_F(CtrlChannelDhcpv4SrvTest, statusGet) {
|
||||||
|
createUnixChannelServer();
|
||||||
|
|
||||||
|
std::string response;
|
||||||
|
|
||||||
|
// Send the version-get command
|
||||||
|
sendUnixCommand("{ \"command\": \"status-get\" }", response);
|
||||||
|
EXPECT_TRUE(response.find("\"result\": 0") != string::npos);
|
||||||
|
EXPECT_TRUE(response.find("\"pid\": ") != string::npos);
|
||||||
|
}
|
||||||
|
|
||||||
// This test verifies that the DHCP server handles config-backend-pull command
|
// This test verifies that the DHCP server handles config-backend-pull command
|
||||||
TEST_F(CtrlChannelDhcpv4SrvTest, configBackendPull) {
|
TEST_F(CtrlChannelDhcpv4SrvTest, configBackendPull) {
|
||||||
createUnixChannelServer();
|
createUnixChannelServer();
|
||||||
|
@@ -574,6 +574,16 @@ ControlledDhcpv6Srv::commandConfigBackendPullHandler(const std::string&,
|
|||||||
"On demand configuration update successful."));
|
"On demand configuration update successful."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ConstElementPtr
|
||||||
|
ControlledDhcpv6Srv::commandStatusGetHandler(const string&,
|
||||||
|
ConstElementPtr /*args*/) {
|
||||||
|
ElementPtr status = Element::createMap();
|
||||||
|
status->set("pid", Element::create(static_cast<int>(getpid())));
|
||||||
|
// TODO...
|
||||||
|
|
||||||
|
return (createAnswer(0, status));
|
||||||
|
}
|
||||||
|
|
||||||
isc::data::ConstElementPtr
|
isc::data::ConstElementPtr
|
||||||
ControlledDhcpv6Srv::processCommand(const std::string& command,
|
ControlledDhcpv6Srv::processCommand(const std::string& command,
|
||||||
isc::data::ConstElementPtr args) {
|
isc::data::ConstElementPtr args) {
|
||||||
@@ -634,6 +644,8 @@ ControlledDhcpv6Srv::processCommand(const std::string& command,
|
|||||||
} else if (command == "config-backend-pull") {
|
} else if (command == "config-backend-pull") {
|
||||||
return (srv->commandConfigBackendPullHandler(command, args));
|
return (srv->commandConfigBackendPullHandler(command, args));
|
||||||
|
|
||||||
|
} else if (command == "status-get") {
|
||||||
|
return (srv->commandStatusGetHandler(command, args));
|
||||||
}
|
}
|
||||||
|
|
||||||
return (isc::config::createAnswer(1, "Unrecognized command:"
|
return (isc::config::createAnswer(1, "Unrecognized command:"
|
||||||
@@ -896,6 +908,9 @@ ControlledDhcpv6Srv::ControlledDhcpv6Srv(uint16_t server_port,
|
|||||||
CommandMgr::instance().registerCommand("shutdown",
|
CommandMgr::instance().registerCommand("shutdown",
|
||||||
boost::bind(&ControlledDhcpv6Srv::commandShutdownHandler, this, _1, _2));
|
boost::bind(&ControlledDhcpv6Srv::commandShutdownHandler, this, _1, _2));
|
||||||
|
|
||||||
|
CommandMgr::instance().registerCommand("status-get",
|
||||||
|
boost::bind(&ControlledDhcpv6Srv::commandStatusGetHandler, this, _1, _2));
|
||||||
|
|
||||||
CommandMgr::instance().registerCommand("version-get",
|
CommandMgr::instance().registerCommand("version-get",
|
||||||
boost::bind(&ControlledDhcpv6Srv::commandVersionGetHandler, this, _1, _2));
|
boost::bind(&ControlledDhcpv6Srv::commandVersionGetHandler, this, _1, _2));
|
||||||
|
|
||||||
@@ -973,6 +988,7 @@ ControlledDhcpv6Srv::~ControlledDhcpv6Srv() {
|
|||||||
CommandMgr::instance().deregisterCommand("statistic-sample-age-set-all");
|
CommandMgr::instance().deregisterCommand("statistic-sample-age-set-all");
|
||||||
CommandMgr::instance().deregisterCommand("statistic-sample-count-set");
|
CommandMgr::instance().deregisterCommand("statistic-sample-count-set");
|
||||||
CommandMgr::instance().deregisterCommand("statistic-sample-count-set-all");
|
CommandMgr::instance().deregisterCommand("statistic-sample-count-set-all");
|
||||||
|
CommandMgr::instance().deregisterCommand("status-get");
|
||||||
CommandMgr::instance().deregisterCommand("version-get");
|
CommandMgr::instance().deregisterCommand("version-get");
|
||||||
|
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
|
@@ -316,6 +316,18 @@ private:
|
|||||||
commandConfigBackendPullHandler(const std::string& command,
|
commandConfigBackendPullHandler(const std::string& command,
|
||||||
isc::data::ConstElementPtr args);
|
isc::data::ConstElementPtr args);
|
||||||
|
|
||||||
|
/// @brief handler for processing 'status-get' command
|
||||||
|
///
|
||||||
|
/// This handler processes status-get command, which retrieves
|
||||||
|
/// the server process information i.e. the pid and returns it in response.
|
||||||
|
///
|
||||||
|
/// @param command (ignored)
|
||||||
|
/// @param args (ignored)
|
||||||
|
/// @return process information wrapped in a response
|
||||||
|
isc::data::ConstElementPtr
|
||||||
|
commandStatusGetHandler(const std::string& command,
|
||||||
|
isc::data::ConstElementPtr args);
|
||||||
|
|
||||||
/// @brief Reclaims expired IPv6 leases and reschedules timer.
|
/// @brief Reclaims expired IPv6 leases and reschedules timer.
|
||||||
///
|
///
|
||||||
/// This is a wrapper method for @c AllocEngine::reclaimExpiredLeases6.
|
/// This is a wrapper method for @c AllocEngine::reclaimExpiredLeases6.
|
||||||
|
@@ -516,6 +516,7 @@ TEST_F(CtrlDhcpv6SrvTest, commandsRegistration) {
|
|||||||
EXPECT_TRUE(command_list.find("\"statistic-sample-age-set-all\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"statistic-sample-age-set-all\"") != string::npos);
|
||||||
EXPECT_TRUE(command_list.find("\"statistic-sample-count-set\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"statistic-sample-count-set\"") != string::npos);
|
||||||
EXPECT_TRUE(command_list.find("\"statistic-sample-count-set-all\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"statistic-sample-count-set-all\"") != string::npos);
|
||||||
|
EXPECT_TRUE(command_list.find("\"status-get\"") != string::npos);
|
||||||
EXPECT_TRUE(command_list.find("\"version-get\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"version-get\"") != string::npos);
|
||||||
|
|
||||||
// Ok, and now delete the server. It should deregister its commands.
|
// Ok, and now delete the server. It should deregister its commands.
|
||||||
@@ -918,6 +919,18 @@ TEST_F(CtrlChannelDhcpv6SrvTest, getVersion) {
|
|||||||
EXPECT_TRUE(response.find("GTEST_VERSION") != string::npos);
|
EXPECT_TRUE(response.find("GTEST_VERSION") != string::npos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This test verifies that the DHCP server handles status-get commands
|
||||||
|
TEST_F(CtrlChannelDhcpv6SrvTest, statusGet) {
|
||||||
|
createUnixChannelServer();
|
||||||
|
|
||||||
|
std::string response;
|
||||||
|
|
||||||
|
// Send the version-get command
|
||||||
|
sendUnixCommand("{ \"command\": \"status-get\" }", response);
|
||||||
|
EXPECT_TRUE(response.find("\"result\": 0") != string::npos);
|
||||||
|
EXPECT_TRUE(response.find("\"pid\": ") != string::npos);
|
||||||
|
}
|
||||||
|
|
||||||
// This test verifies that the DHCP server handles server-tag-get command
|
// This test verifies that the DHCP server handles server-tag-get command
|
||||||
TEST_F(CtrlChannelDhcpv6SrvTest, serverTagGet) {
|
TEST_F(CtrlChannelDhcpv6SrvTest, serverTagGet) {
|
||||||
createUnixChannelServer();
|
createUnixChannelServer();
|
||||||
|
Reference in New Issue
Block a user