"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
ControlledDhcpv4Srv::processCommand(const string& command,
ConstElementPtr args) {
} else if (command == "config-backend-pull") {
return (srv->commandConfigBackendPullHandler(command, args));
+ } else if (command == "status-get") {
+ return (srv->commandStatusGetHandler(command, args));
}
ConstElementPtr answer = isc::config::createAnswer(1,
"Unrecognized command:" + command);
CommandMgr::instance().registerCommand("shutdown",
boost::bind(&ControlledDhcpv4Srv::commandShutdownHandler, this, _1, _2));
+ CommandMgr::instance().registerCommand("status-get",
+ boost::bind(&ControlledDhcpv4Srv::commandStatusGetHandler, this, _1, _2));
+
CommandMgr::instance().registerCommand("version-get",
boost::bind(&ControlledDhcpv4Srv::commandVersionGetHandler, this, _1, _2));
CommandMgr::instance().deregisterCommand("statistic-sample-age-set-all");
CommandMgr::instance().deregisterCommand("statistic-sample-count-set");
CommandMgr::instance().deregisterCommand("statistic-sample-count-set-all");
+ CommandMgr::instance().deregisterCommand("status-get");
CommandMgr::instance().deregisterCommand("version-get");
} catch (...) {
commandConfigBackendPullHandler(const std::string& command,
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.
///
/// This is a wrapper method for @c AllocEngine::reclaimExpiredLeases4.
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-all\"") != string::npos);
+ EXPECT_TRUE(command_list.find("\"status-get\"") != string::npos);
EXPECT_TRUE(command_list.find("\"version-get\"") != string::npos);
// Ok, and now delete the server. It should deregister its commands.
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
TEST_F(CtrlChannelDhcpv4SrvTest, configBackendPull) {
createUnixChannelServer();
"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
ControlledDhcpv6Srv::processCommand(const std::string& command,
isc::data::ConstElementPtr args) {
} else if (command == "config-backend-pull") {
return (srv->commandConfigBackendPullHandler(command, args));
+ } else if (command == "status-get") {
+ return (srv->commandStatusGetHandler(command, args));
}
return (isc::config::createAnswer(1, "Unrecognized command:"
CommandMgr::instance().registerCommand("shutdown",
boost::bind(&ControlledDhcpv6Srv::commandShutdownHandler, this, _1, _2));
+ CommandMgr::instance().registerCommand("status-get",
+ boost::bind(&ControlledDhcpv6Srv::commandStatusGetHandler, this, _1, _2));
+
CommandMgr::instance().registerCommand("version-get",
boost::bind(&ControlledDhcpv6Srv::commandVersionGetHandler, this, _1, _2));
CommandMgr::instance().deregisterCommand("statistic-sample-age-set-all");
CommandMgr::instance().deregisterCommand("statistic-sample-count-set");
CommandMgr::instance().deregisterCommand("statistic-sample-count-set-all");
+ CommandMgr::instance().deregisterCommand("status-get");
CommandMgr::instance().deregisterCommand("version-get");
} catch (...) {
commandConfigBackendPullHandler(const std::string& command,
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.
///
/// This is a wrapper method for @c AllocEngine::reclaimExpiredLeases6.
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-all\"") != string::npos);
+ EXPECT_TRUE(command_list.find("\"status-get\"") != string::npos);
EXPECT_TRUE(command_list.find("\"version-get\"") != string::npos);
// Ok, and now delete the server. It should deregister its commands.
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
TEST_F(CtrlChannelDhcpv6SrvTest, serverTagGet) {
createUnixChannelServer();