-# Copyright (C) 2016 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2016-2017 Internet Systems Consortium, Inc. ("ISC")
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
}
}"
+# Invalid configuration (syntax error) to check that Kea can check syntax.
+CONFIG_BAD_SYNTAX="{
+ \"Control-agent\":
+ {
+ \"http-port\": BOGUS
+ }
+}"
+
+# Invalid configuration (out of range port) to check that Kea can check syntax.
+CONFIG_BAD_VALUE="{
+ \"Control-agent\":
+ {
+ \"http-port\": 80000
+ }
+}"
+
bin="kea-ctrl-agent"
bin_path=@abs_top_builddir@/src/bin/agent
# Import common test library.
. @abs_top_builddir@/src/lib/testutils/dhcp_test_lib.sh
+# This test verifies that syntax checking works properly. This function
+# requires 3 parameters:
+# testname
+# config - string with a content of the config (will be written to a file)
+# exp_code - expected exit code returned by kea (0 - success, 1 - failure)
+syntax_check_test() {
+ local TESTNAME="${1}"
+ local CONFIG="${2}"
+ local EXP_CODE="${3}"
+
+ # Log the start of the test and print test name.
+ test_start $TESTNAME
+ # Remove dangling Kea instances and remove log files.
+ cleanup
+ # Create correct configuration file.
+ create_config "${CONFIG}"
+ # Check it
+ printf "Running command %s.\n" "\"${bin_path}/${bin} -t ${CFG_FILE}\""
+ ${bin_path}/${bin} -t ${CFG_FILE}
+ exit_code=$?
+ if [ ${exit_code} -ne $EXP_CODE ]; then
+ printf "ERROR: expected exit code ${EXP_CODE}, got ${exit_code}\n"
+ clean_exit 1
+ fi
+ test_finish 0
+}
+
# This test verifies that Control Agent is shut down gracefully when it
# receives a SIGINT or SIGTERM signal.
shutdown_test() {
server_pid_file_test "${CONFIG}" DCTL_ALREADY_RUNNING
shutdown_test "ctrl-agent.sigterm_test" 15
shutdown_test "ctrl-agent.sigint_test" 2
-
+syntax_check_test "ctrl-agent.syntax_check_success" "${CONFIG}" 0
+syntax_check_test "ctrl-agent.syntax_check_bad_syntax" "${CONFIG_BAD_SYNTAX}" 1
+syntax_check_test "ctrl-agent.syntax_check_bad_values" "${CONFIG_BAD_VALUE}" 1
-# Copyright (C) 2014-2016 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2014-2017 Internet Systems Consortium, Inc. ("ISC")
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
}
}"
-# Invalid configuration (invalid port) to check that D2
+# Invalid configuration (syntax error) to check that Kea can check syntax.
+CONFIG_BAD_SYNTAX="{
+ \"DhcpDdns\":
+ {
+ \"ip-address\": \"127.0.0.1\",
+ \"port\": BOGUS,
+ \"tsig-keys\": [],
+ \"forward-ddns\" : {},
+ \"reverse-ddns\" : {}
+ },
+ \"Logging\":
+ {
+ \"loggers\": [
+ {
+ \"name\": \"kea-dhcp-ddns\",
+ \"output_options\": [
+ {
+ \"output\": \"$LOG_FILE\"
+ }
+ ],
+ \"severity\": \"INFO\"
+ }
+ ]
+ }
+}"
+
+# Invalid configuration (out of range port) to check that Kea can check syntax.
+CONFIG_BAD_VALUE="{
+ \"DhcpDdns\":
+ {
+ \"ip-address\": \"127.0.0.1\",
+ \"port\": 80000,
+ \"tsig-keys\": [],
+ \"forward-ddns\" : {},
+ \"reverse-ddns\" : {}
+ },
+ \"Logging\":
+ {
+ \"loggers\": [
+ {
+ \"name\": \"kea-dhcp-ddns\",
+ \"output_options\": [
+ {
+ \"output\": \"$LOG_FILE\"
+ }
+ ],
+ \"severity\": \"INFO\"
+ }
+ ]
+ }
+}"
+
+# Invalid value configuration (invalid port) to check that D2
# gracefully handles reconfiguration errors.
CONFIG_INVALID="{
\"DhcpDdns\":
# Import common test library.
. @abs_top_builddir@/src/lib/testutils/dhcp_test_lib.sh
+# This test verifies that syntax checking works properly. This function
+# requires 3 parameters:
+# testname
+# config - string with a content of the config (will be written to a file)
+# exp_code - expected exit code returned by kea (0 - success, 1 - failure)
+syntax_check_test() {
+ local TESTNAME="${1}"
+ local CONFIG="${2}"
+ local EXP_CODE="${3}"
+
+ # Log the start of the test and print test name.
+ test_start $TESTNAME
+ # Remove dangling Kea instances and remove log files.
+ cleanup
+ # Create correct configuration file.
+ create_config "${CONFIG}"
+ # Check it
+ printf "Running command %s.\n" "\"${bin_path}/${bin} -t ${CFG_FILE}\""
+ ${bin_path}/${bin} -t ${CFG_FILE}
+ exit_code=$?
+ if [ ${exit_code} -ne $EXP_CODE ]; then
+ printf "ERROR: expected exit code ${EXP_CODE}, got ${exit_code}\n"
+ clean_exit 1
+ fi
+ test_finish 0
+}
+
# This test verifies that D2 can be reconfigured with a SIGHUP signal.
dynamic_reconfiguration_test() {
# Log the start of the test and print test name.
shutdown_test "dhcp-ddns.sigint_test" 2
version_test "dhcp-ddns.version"
logger_vars_test "dhcp-ddns.variables"
+syntax_check_test "dhcp-ddns.syntax_check_success" "${CONFIG}" 0
+syntax_check_test "dhcp-ddns.syntax_check_bad_syntax" "${CONFIG_BAD_SYNTAX}" 1
+syntax_check_test "dhcp-ddns.syntax_check_bad_values" "${CONFIG_BAD_VALUE}" 1
<< std::endl
<< " -d: optional, verbose output " << std::endl
<< " -c <config file name> : mandatory,"
- << " specifies name of configuration file " << std::endl;
+ << " specify name of configuration file" << std::endl
+ << " -t <config file name> : check the"
+ << " configuration file and exit" << std::endl;
// add any derivation specific usage
std::cerr << getUsageText() << std::endl;