BIND 10 trac3329, updated. e8513d7199db5ba79b1f91087f57eb54ab81ef74 [3329] Added inital call to startD2 to dhcp4's controller.
BIND 10 source code commits
bind10-changes at lists.isc.org
Sun Feb 16 15:36:15 UTC 2014
The branch, trac3329 has been updated
via e8513d7199db5ba79b1f91087f57eb54ab81ef74 (commit)
from 6c21d3743e3e779bede1ebd6e4906697d3b0076a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit e8513d7199db5ba79b1f91087f57eb54ab81ef74
Author: Thomas Markwalder <tmark at isc.org>
Date: Sun Feb 16 10:33:19 2014 -0500
[3329] Added inital call to startD2 to dhcp4's controller.
Added a callt to startD2 ControlledDhcpv4Srv::establishSession().
This ensures D2ClientMgr is started upon initial server startup.
Added commentary to d2_unittests.cc
-----------------------------------------------------------------------
Summary of changes:
src/bin/dhcp4/ctrl_dhcp4_srv.cc | 4 ++++
src/bin/dhcp4/tests/d2_unittest.cc | 44 ++++++++++++++++++++++++++++--------
2 files changed, 38 insertions(+), 10 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/bin/dhcp4/ctrl_dhcp4_srv.cc b/src/bin/dhcp4/ctrl_dhcp4_srv.cc
index 9808528..7238c3b 100644
--- a/src/bin/dhcp4/ctrl_dhcp4_srv.cc
+++ b/src/bin/dhcp4/ctrl_dhcp4_srv.cc
@@ -221,6 +221,10 @@ void ControlledDhcpv4Srv::establishSession() {
try {
configureDhcp4Server(*this, config_session_->getFullConfig());
+
+ // Server will start DDNS communications if its enabled.
+ server_->startD2();
+
// Configuration may disable or enable interfaces so we have to
// reopen sockets according to new configuration.
openActiveSockets(getPort(), useBroadcast());
diff --git a/src/bin/dhcp4/tests/d2_unittest.cc b/src/bin/dhcp4/tests/d2_unittest.cc
index f657b71..95bbf0b 100644
--- a/src/bin/dhcp4/tests/d2_unittest.cc
+++ b/src/bin/dhcp4/tests/d2_unittest.cc
@@ -49,7 +49,7 @@ Dhcp4SrvD2Test::~Dhcp4SrvD2Test() {
reset();
}
-dhcp_ddns::NameChangeRequestPtr
+dhcp_ddns::NameChangeRequestPtr
Dhcp4SrvD2Test::buildTestNcr(uint32_t dhcid_id_num) {
// Build an NCR from json string.
std::ostringstream stream;
@@ -61,7 +61,7 @@ Dhcp4SrvD2Test::buildTestNcr(uint32_t dhcid_id_num) {
" \"reverse_change\" : false , "
" \"fqdn\" : \"myhost.example.com.\" , "
" \"ip_address\" : \"192.168.2.1\" , "
- " \"dhcid\" : \""
+ " \"dhcid\" : \""
<< std::hex << std::setfill('0') << std::setw(16)
<< dhcid_id_num << "\" , "
@@ -88,7 +88,7 @@ Dhcp4SrvD2Test::reset() {
}
void
-Dhcp4SrvD2Test::configureD2(bool enable_d2, const bool exp_result,
+Dhcp4SrvD2Test::configureD2(bool enable_d2, const bool exp_result,
const std::string& ip_address,
const uint32_t port) {
std::ostringstream config;
@@ -101,7 +101,7 @@ Dhcp4SrvD2Test::configureD2(bool enable_d2, const bool exp_result,
" \"subnet\": \"192.0.2.0/24\" } ],"
" \"dhcp-ddns\" : {"
" \"enable-updates\" : " << (enable_d2 ? "true" : "false") << ", "
- " \"server-ip\" : \"" << ip_address << "\", "
+ " \"server-ip\" : \"" << ip_address << "\", "
" \"server-port\" : " << port << ", "
" \"ncr-protocol\" : \"UDP\", "
" \"ncr-format\" : \"JSON\", "
@@ -132,9 +132,12 @@ Dhcp4SrvD2Test::configure(const std::string& config, bool exp_result) {
ASSERT_EQ(0, rcode);
} else {
ASSERT_EQ(1, rcode);
- }
+ }
}
+// Tests ability to turn on and off ddns updates by submitting
+// by submitting the appropriate configuration to Dhcp4 server
+// and then invoking its startD2() method.
TEST_F(Dhcp4SrvD2Test, enableDisable) {
// Grab the manager and verify that be default ddns is off
// and a sender was not started.
@@ -148,7 +151,7 @@ TEST_F(Dhcp4SrvD2Test, enableDisable) {
ASSERT_TRUE(mgr.ddnsEnabled());
ASSERT_FALSE(mgr.amSending());
- // Verify that calling start does not throw and starts the sender.
+ // Verify that calling start does not throw and starts the sender.
ASSERT_NO_THROW(srv_.startD2());
ASSERT_TRUE(mgr.amSending());
@@ -163,6 +166,10 @@ TEST_F(Dhcp4SrvD2Test, enableDisable) {
ASSERT_FALSE(mgr.amSending());
}
+// Tests Dhcp4 server's ability to correctly handle a flawed dhcp-ddns configuration.
+// It does so by first enabling updates by submitting a valid configuration and then
+// ensuring they remain on after submitting a flawed configuration.
+// and then invoking its startD2() method.
TEST_F(Dhcp4SrvD2Test, badConfig) {
// Grab the manager and verify that be default ddns is off
// and a sender was not started.
@@ -183,12 +190,16 @@ TEST_F(Dhcp4SrvD2Test, badConfig) {
ASSERT_TRUE(mgr.ddnsEnabled());
ASSERT_TRUE(mgr.amSending());
- // Verify that calling start does not throw or stop the sender.
+ // Verify that calling start does not throw or stop the sender.
ASSERT_NO_THROW(srv_.startD2());
ASSERT_TRUE(mgr.amSending());
}
+// Checks that submitting an identical dhcp-ddns configuration
+// is handled properly. Not effect should be no change in
+// status for ddns updating. Updates should still enabled and
+// in send mode. This indicates that the sender was not stopped.
TEST_F(Dhcp4SrvD2Test, sameConfig) {
// Grab the manager and verify that be default ddns is off
// and a sender was not started.
@@ -208,11 +219,15 @@ TEST_F(Dhcp4SrvD2Test, sameConfig) {
ASSERT_TRUE(mgr.ddnsEnabled());
ASSERT_TRUE(mgr.amSending());
- // Verify that calling start does not throw or stop the sender.
+ // Verify that calling start does not throw or stop the sender.
ASSERT_NO_THROW(srv_.startD2());
ASSERT_TRUE(mgr.amSending());
}
+// Checks that submitting an different, but valid dhcp-ddns configuration
+// is handled properly. Updates should be enabled, however they should
+// not yet be running. This indicates that the sender was stopped and
+// replaced, but not yet started.
TEST_F(Dhcp4SrvD2Test, differentConfig) {
// Grab the manager and verify that be default ddns is off
// and a sender was not started.
@@ -237,6 +252,11 @@ TEST_F(Dhcp4SrvD2Test, differentConfig) {
ASSERT_TRUE(mgr.amSending());
}
+// Checks that given a valid, enabled configuration and placing
+// sender in send mode, permits NCR requests to be sent via UPD
+// socket. Note this test does not employ any sort of receiving
+// client to verify actual transmission. These types of tests
+// are including under dhcp_ddns and d2 unit testing.
TEST_F(Dhcp4SrvD2Test, simpleUDPSend) {
// Grab the manager and verify that be default ddns is off
// and a sender was not started.
@@ -255,13 +275,17 @@ TEST_F(Dhcp4SrvD2Test, simpleUDPSend) {
EXPECT_EQ(1, mgr.getQueueSize());
// Calling receive should detect the ready IO on the sender's select-fd,
- // and invoke callback, which should complete the send.
+ // and invoke callback, which should complete the send.
ASSERT_NO_THROW(IfaceMgr::instance().receive4(0,0));
// Verify the queue is now empty.
EXPECT_EQ(0, mgr.getQueueSize());
}
+// Checks that an IO error in sending a request to D2, results in ddns updates being
+// suspended. This indicates that Dhcp4Srv's error handler has been invoked as expected.
+// Note that this unit test relies on an attempt to send to a server address of 0.0.0.0
+// port 0 fails under all OSs.
TEST_F(Dhcp4SrvD2Test, forceUDPSendFailure) {
// Grab the manager and verify that be default ddns is off
// and a sender was not started.
@@ -337,7 +361,7 @@ TEST_F(Dhcp4SrvD2Test, queueMaxError) {
ASSERT_NO_THROW(mgr.sendRequest(ncr));
}
- // Stopping sender will coÏplete the first message so there
+ // Stopping sender will complete the first message so there
// should be max less one.
EXPECT_EQ(max_msgs - 1, mgr.getQueueSize());
More information about the bind10-changes
mailing list