Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ISC Open Source Projects
Kea
Commits
b0142552
Commit
b0142552
authored
Jun 11, 2014
by
Marcin Siodelski
Browse files
[3422] Cleanup in the dhcp_test_lib.sh script.
parent
c3baf284
Changes
10
Hide whitespace changes
Inline
Side-by-side
src/bin/dhcp4/tests/dhcp4_reconfigure_test.sh
View file @
b0142552
...
...
@@ -12,8 +12,6 @@
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
# Test name
TEST_NAME
=
"DHCPv4.dynamicReconfiguration"
# Path to the temporary configuration file.
CFG_FILE
=
"test_config.json"
# Path to the Kea log file.
...
...
@@ -61,14 +59,14 @@ CONFIG_INVALID="{
}"
# Set the location of the executable.
BIN
=
"b10-dhcp4"
BIN_PATH
=
".."
bin
=
"b10-dhcp4"
bin_path
=
".."
# Import common test library.
.
$(
dirname
$0
)
/../../../lib/testutils/dhcp_test_lib.sh
# Log the start of the test and print test name.
test_start
test_start
"dhcpv4_srv.dynamic_reconfiguration"
# Remove dangling Kea instances and remove log files.
cleanup
# Create new configuration file.
...
...
@@ -76,7 +74,7 @@ create_config "${CONFIG}"
# Instruct Kea to log to the specific file.
set_logger
# Start Kea.
start_kea
start_kea
${
bin_path
}
/
${
bin
}
# Wait up to 20s for Kea to start.
wait_for_kea 20
if
[
${
_WAIT_FOR_KEA
}
-eq
0
]
;
then
...
...
@@ -86,7 +84,7 @@ fi
# Check if it is still running. It could have terminated (e.g. as a result
# of configuration failure).
get_pids
${
BIN
}
get_pids
${
bin
}
if
[
${
_GET_PIDS_NUM
}
-ne
1
]
;
then
printf
"ERROR: expected one Kea process to be started. Found %d processes
\
started.
\n
"
${
_GET_PIDS_NUM
}
...
...
@@ -107,7 +105,7 @@ fi
create_config
"
${
CONFIG_INVALID
}
"
# Try to reconfigure by sending SIGHUP
send_signal 1
${
BIN
}
send_signal 1
${
bin
}
# The configuration should fail and the error message should be there.
wait_for_message 10
"DHCP4_CONFIG_LOAD_FAIL"
1
...
...
@@ -126,7 +124,7 @@ elif [ ${_GET_RECONFIG_ERRORS} -ne 1 ]; then
fi
# Make sure the server is still operational.
get_pids
${
BIN
}
get_pids
${
bin
}
if
[
${
_GET_PIDS_NUM
}
-ne
1
]
;
then
printf
"ERROR: Kea process was killed when attempting reconfiguration.
\n
"
clean_exit 1
...
...
@@ -136,7 +134,7 @@ fi
create_config
"
${
CONFIG
}
"
# Reconfigure the server with SIGHUP.
send_signal 1
${
BIN
}
send_signal 1
${
bin
}
# There should be two occurrences of the DHCP4_CONFIG_COMPLETE messages.
# Wait for it up to 10s.
...
...
@@ -153,7 +151,7 @@ else
fi
# Make sure the server is still operational.
get_pids
${
BIN
}
get_pids
${
bin
}
if
[
${
_GET_PIDS_NUM
}
-ne
1
]
;
then
printf
"ERROR: Kea process was killed when attempting reconfiguration.
\n
"
clean_exit 1
...
...
src/bin/dhcp4/tests/dhcp4_shutdown_test.sh
View file @
b0142552
...
...
@@ -18,7 +18,7 @@ if [ $# -ne 2 ]; then
fi
# Test name
TEST_NAME
=
$1
test_name
=
${
1
}
# Signal number to be used for this test.
SIG_NUM
=
$2
# Path to the temporary configuration file.
...
...
@@ -47,14 +47,14 @@ CONFIG="{
}"
# Set the location of the executable.
BIN
=
"b10-dhcp4"
BIN_PATH
=
".."
bin
=
"b10-dhcp4"
bin_path
=
".."
# Import common test library.
.
$(
dirname
$0
)
/../../../lib/testutils/dhcp_test_lib.sh
# Log the start of the test and print test name.
test_start
test_start
${
test_name
}
# Remove dangling Kea instances and remove log files.
cleanup
# Create new configuration file.
...
...
@@ -62,7 +62,7 @@ create_config "${CONFIG}"
# Instruct Kea to log to the specific file.
set_logger
# Start Kea.
start_kea
start_kea
${
bin_path
}
/
${
bin
}
# Wait up to 20s for Kea to start.
wait_for_kea 20
if
[
${
_WAIT_FOR_KEA
}
-eq
0
]
;
then
...
...
@@ -72,7 +72,7 @@ fi
# Check if it is still running. It could have terminated (e.g. as a result
# of configuration failure).
get_pids
${
BIN
}
get_pids
${
bin
}
if
[
${
_GET_PIDS_NUM
}
-ne
1
]
;
then
printf
"ERROR: expected one Kea process to be started. Found %d processes
\
started.
\n
"
${
_GET_PIDS_NUM
}
...
...
@@ -90,7 +90,7 @@ else
fi
# Send signal to Kea (SIGTERM, SIGINT etc.)
send_signal
${
SIG_NUM
}
${
BIN
}
send_signal
${
SIG_NUM
}
${
bin
}
# Wait up to 10s for the server's graceful shutdown. The graceful shut down
# should be recorded in the log file with the appropriate message.
...
...
@@ -101,7 +101,7 @@ if [ ${_WAIT_FOR_MESSAGE} -eq 0 ]; then
fi
# Server should have shut down.
get_pids
${
BIN
}
get_pids
${
bin
}
if
[
${
_GET_PIDS_NUM
}
-ne
0
]
;
then
printf
"ERROR: Kea did not shut down after receiving signal.
\n
"
\
${
_GET_PIDS_NUM
}
...
...
src/bin/dhcp4/tests/dhcp4_sigint_test.sh
View file @
b0142552
...
...
@@ -13,4 +13,4 @@
# PERFORMANCE OF THIS SOFTWARE.
# Run a test that sends SIGINT to Kea and checks if it shuts down gracefully.
$(
dirname
$0
)
/dhcp4_shutdown_test.sh
"
DHCPv4
.sigint"
2
$(
dirname
$0
)
/dhcp4_shutdown_test.sh
"
dhcpv4_srv
.sigint"
2
src/bin/dhcp4/tests/dhcp4_sigterm_test.sh
View file @
b0142552
...
...
@@ -13,4 +13,4 @@
# PERFORMANCE OF THIS SOFTWARE.
# Run a test that sends SIGTERM to Kea and checks if it shuts down gracefully.
$(
dirname
$0
)
/dhcp4_shutdown_test.sh
"
DHCPv4
.sigterm"
15
$(
dirname
$0
)
/dhcp4_shutdown_test.sh
"
dhcpv4_srv
.sigterm"
15
src/bin/dhcp6/tests/dhcp6_reconfigure_test.sh
View file @
b0142552
...
...
@@ -12,8 +12,6 @@
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
# Test name
TEST_NAME
=
"DHCPv6.dynamicReconfiguration"
# Path to the temporary configuration file.
CFG_FILE
=
"test_config.json"
# Path to the Kea log file.
...
...
@@ -63,14 +61,14 @@ CONFIG_INVALID="{
}"
# Set the location of the executable.
BIN
=
"b10-dhcp6"
BIN_PATH
=
".."
bin
=
"b10-dhcp6"
bin_path
=
".."
# Import common test library.
.
$(
dirname
$0
)
/../../../lib/testutils/dhcp_test_lib.sh
# Log the start of the test and print test name.
test_start
test_start
"dhcpv6_srv.dynamic_reconfiguration"
# Remove dangling Kea instances and remove log files.
cleanup
# Create new configuration file.
...
...
@@ -78,7 +76,7 @@ create_config "${CONFIG}"
# Instruct Kea to log to the specific file.
set_logger
# Start Kea.
start_kea
start_kea
${
bin_path
}
/
${
bin
}
# Wait up to 20s for Kea to start.
wait_for_kea 20
if
[
${
_WAIT_FOR_KEA
}
-eq
0
]
;
then
...
...
@@ -88,7 +86,7 @@ fi
# Check if it is still running. It could have terminated (e.g. as a result
# of configuration failure).
get_pids
${
BIN
}
get_pids
${
bin
}
if
[
${
_GET_PIDS_NUM
}
-ne
1
]
;
then
printf
"ERROR: expected one Kea process to be started. Found %d processes
\
started.
\n
"
${
_GET_PIDS_NUM
}
...
...
@@ -109,7 +107,7 @@ fi
create_config
"
${
CONFIG_INVALID
}
"
# Try to reconfigure by sending SIGHUP
send_signal 1
${
BIN
}
send_signal 1
${
bin
}
# The configuration should fail and the error message should be there.
wait_for_message 10
"DHCP6_CONFIG_LOAD_FAIL"
1
...
...
@@ -128,7 +126,7 @@ elif [ ${_GET_RECONFIG_ERRORS} -ne 1 ]; then
fi
# Make sure the server is still operational.
get_pids
${
BIN
}
get_pids
${
bin
}
if
[
${
_GET_PIDS_NUM
}
-ne
1
]
;
then
printf
"ERROR: Kea process was killed when attempting reconfiguration.
\n
"
clean_exit 1
...
...
@@ -138,7 +136,7 @@ fi
create_config
"
${
CONFIG
}
"
# Reconfigure the server with SIGHUP.
send_signal 1
${
BIN
}
send_signal 1
${
bin
}
# There should be two occurrences of the DHCP6_CONFIG_COMPLETE messages.
# Wait for it up to 10s.
...
...
@@ -155,7 +153,7 @@ else
fi
# Make sure the server is still operational.
get_pids
${
BIN
}
get_pids
${
bin
}
if
[
${
_GET_PIDS_NUM
}
-ne
1
]
;
then
printf
"ERROR: Kea process was killed when attempting reconfiguration.
\n
"
clean_exit 1
...
...
src/bin/dhcp6/tests/dhcp6_shutdown_test.sh
View file @
b0142552
...
...
@@ -18,7 +18,7 @@ if [ $# -ne 2 ]; then
fi
# Test name
TEST_NAME
=
$1
test_name
=
${
1
}
# Signal number to be used for this test.
SIG_NUM
=
$2
# Path to the temporary configuration file.
...
...
@@ -48,14 +48,14 @@ CONFIG="{
}"
# Set the location of the executable.
BIN
=
"b10-dhcp6"
BIN_PATH
=
".."
bin
=
"b10-dhcp6"
bin_path
=
".."
# Import common test library.
.
$(
dirname
$0
)
/../../../lib/testutils/dhcp_test_lib.sh
# Log the start of the test and print test name.
test_start
test_start
${
test_name
}
# Remove dangling Kea instances and remove log files.
cleanup
# Create new configuration file.
...
...
@@ -63,7 +63,7 @@ create_config "${CONFIG}"
# Instruct Kea to log to the specific file.
set_logger
# Start Kea.
start_kea
start_kea
${
bin_path
}
/
${
bin
}
# Wait up to 20s for Kea to start.
wait_for_kea 20
if
[
${
_WAIT_FOR_KEA
}
-eq
0
]
;
then
...
...
@@ -73,7 +73,7 @@ fi
# Check if it is still running. It could have terminated (e.g. as a result
# of configuration failure).
get_pids
${
BIN
}
get_pids
${
bin
}
if
[
${
_GET_PIDS_NUM
}
-ne
1
]
;
then
printf
"ERROR: expected one Kea process to be started. Found %d processes
\
started.
\n
"
${
_GET_PIDS_NUM
}
...
...
@@ -91,7 +91,7 @@ else
fi
# Send signal to Kea (SIGTERM, SIGINT etc.)
send_signal
${
SIG_NUM
}
${
BIN
}
send_signal
${
SIG_NUM
}
${
bin
}
# Wait up to 10s for the server's graceful shutdown. The graceful shut down
# should be recorded in the log file with the appropriate message.
...
...
@@ -102,7 +102,7 @@ if [ ${_WAIT_FOR_MESSAGE} -eq 0 ]; then
fi
# Server should have shut down.
get_pids
${
BIN
}
get_pids
${
bin
}
if
[
${
_GET_PIDS_NUM
}
-ne
0
]
;
then
printf
"ERROR: Kea did not shut down after receiving signal.
\n
"
\
${
_GET_PIDS_NUM
}
...
...
src/bin/dhcp6/tests/dhcp6_sigint_test.sh
View file @
b0142552
...
...
@@ -13,4 +13,4 @@
# PERFORMANCE OF THIS SOFTWARE.
# Run a test that sends SIGINT to Kea and checks if it shuts down gracefully.
$(
dirname
$0
)
/dhcp6_shutdown_test.sh
"
DHCPv6
.sigint"
2
$(
dirname
$0
)
/dhcp6_shutdown_test.sh
"
dhcpv6_srv
.sigint"
2
src/bin/dhcp6/tests/dhcp6_sigterm_test.sh
View file @
b0142552
...
...
@@ -13,4 +13,4 @@
# PERFORMANCE OF THIS SOFTWARE.
# Run a test that sends SIGTERM to Kea and checks if it shuts down gracefully.
$(
dirname
$0
)
/dhcp6_shutdown_test.sh
"
DHCPv6
.sigterm"
15
$(
dirname
$0
)
/dhcp6_shutdown_test.sh
"
dhcpv6_srv
.sigterm"
15
src/bin/keactrl/tests/keactrl_tests.sh.in
View file @
b0142552
...
...
@@ -71,13 +71,11 @@ config="{
# This test checks that both DHCPv4 and DHCPv6 server can be started and
# shut down.
start_both_servers_test
()
{
# Test name.
TEST_NAME
=
"keactrl.start_both_servers_test"
# Create configuration file for keactrl. This configuration enables
# both DHCPv4 and DHCPv6 server.
keactrl_config
=
"kea_config_file=
${
CFG_FILE
}
\n
kea4=yes
\n
kea6=yes
\n
"
test_start
test_start
"keactrl.start_both_servers_test"
# Create configuration file for Kea and for keactrl.
create_config
"
${
config
}
"
...
...
@@ -150,13 +148,11 @@ Expected wait_for_message return %d, returned %d."
# This test checks that only DHCPv4 server can be started and that the DHCPv6
# server is not started.
start_v4_server_test
()
{
# Test name.
TEST_NAME
=
"keactrl.start_v4_server_test"
# Create configuration file for keactrl. This configuration enables
# DHCPv4 server but disables DHCPv6 server.
keactrl_config
=
"kea_config_file=
${
CFG_FILE
}
\n
kea4=yes
\n
kea6=no
\n
"
test_start
test_start
"keactrl.start_v4_server_test"
# Create configuration file for Kea and for keactrl.
create_config
"
${
config
}
"
...
...
@@ -228,13 +224,11 @@ Expected wait_for_message return %d, returned %d."
# This test checks that only DHCPv6 server can be started and that the DHCPv4
# server is not started.
start_v6_server_test
()
{
# Test name.
TEST_NAME
=
"keactrl.start_v6_server_test"
# Create configuration file for keactrl. This configuration enables
# DHCPv6 server but disables DHCPv4 server.
keactrl_config
=
"kea_config_file=
${
CFG_FILE
}
\n
kea4=no
\n
kea6=yes
\n
"
test_start
test_start
"keactrl.start_v6_server_test"
# Create configuration file for Kea and for keactrl.
create_config
"
${
config
}
"
...
...
@@ -307,13 +301,11 @@ Expected wait_for_message return %d, returned %d."
# DHCPv4 server can be started while DHCPv6 server is already running.
# Also check that both servers can be reconfigured.
late_start_v4_server_test
()
{
# Test name.
TEST_NAME
=
"keactrl.late_start_v4_server_test"
# Create configuration file for keactrl. This configuration enables
# DHCPv6 server but disables DHCPv4 server.
keactrl_config
=
"kea_config_file=
${
CFG_FILE
}
\n
kea4=no
\n
kea6=yes
\n
"
test_start
test_start
"keactrl.late_start_v4_server_test"
# Create configuration file for Kea and for keactrl.
create_config
"
${
config
}
"
...
...
@@ -435,13 +427,11 @@ Expected wait_for_message return %d, returned %d."
# DHCPv6 server can be started while DHCPv4 server is already running.
# Also check that both servers can be reconfigured.
late_start_v6_server_test
()
{
# Test name.
TEST_NAME
=
"keactrl.late_start_v6_server_test"
# Create configuration file for keactrl. This configuration enables
# DHCPv4 server but disables DHCPv6 server.
keactrl_config
=
"kea_config_file=
${
CFG_FILE
}
\n
kea4=yes
\n
kea6=no
\n
"
test_start
test_start
"keactrl.late_start_v6_server_test"
# Create configuration file for Kea and for keactrl.
create_config
"
${
config
}
"
...
...
src/lib/testutils/dhcp_test_lib.sh
View file @
b0142552
...
...
@@ -12,15 +12,23 @@
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
# The following two parameters must to be specified in a script
# including this library.
# - BIN - Name of the Kea executable (excluding a path), e.g. b10-dhcp6
# - BIN_PATH - Path to the Kea executable (excluding an executable name),
# e.g. ../
# A list of Kea processes, mainly used by the cleanup functions.
KEA_PROCS
=
"b10-dhcp4 b10-dhcp6 b10-dhcp-ddns"
### Logging functions ###
# Prints error message.
test_lib_error
()
{
printf
"ERROR/test_lib: %s
\n
"
"
${
1
}
"
}
# Prints info message.
test_lib_info
()
{
printf
"INFO/test_lib: %s
\n
"
"
${
1
}
"
}
### Assertions ###
# Assertion that checks if two numbers are equal.
# If numbers are not equal, the mismatched values are presented and the
# detailed error is printed. The detailed error must use the printf
...
...
@@ -59,14 +67,18 @@ assert_string_contains() {
}
# Begins a test by prining its name.
# It requires the ${TEST_NAME} variable to hold the test name.
test_start
()
{
TEST_NAME
=
${
1
}
if
[
-z
${
TEST_NAME
}
]
;
then
test_lib_error
"test_start requires test name as an argument"
clean_exit 1
fi
printf
"
\n
START TEST
${
TEST_NAME
}
\n
"
}
# Prints test result an cleans up after the test.
test_finish
()
{
local
error_code
=
${
1
}
exit_code
=
${
1
}
# Exit code to be returned by the exit function.
local
exit_code
=
${
1
}
# Exit code to be returned by the exit function.
if
[
${
exit_code
}
-eq
0
]
;
then
cleanup
printf
"PASSED
${
TEST_NAME
}
\n\n
"
...
...
@@ -84,39 +96,78 @@ test_finish() {
# Stores the configuration specified as a parameter in the configuration
# file which name has been set in the ${CFG_FILE} variable.
create_config
()
{
local
cfg
=
${
1
}
# Configuration string.
if
[
-z
${
CFG_FILE
}
]
;
then
test_lib_error
"create_config requires CFG_FILE variable be set"
clean_exit 1
elif
[
-z
"
${
cfg
}
"
]
;
then
test_lib_error
"create_config requires argument holding a configuration"
clean_exit 1
fi
printf
"Creating Kea configuration file: %s.
\n
"
${
CFG_FILE
}
printf
"%b"
${
1
}
>
${
CFG_FILE
}
printf
"%b"
${
cfg
}
>
${
CFG_FILE
}
}
# Stores the keactrl configuration specified as a parameter in the
# configuration file which name has been set in the ${KEACTRL_CFG_FILE}
# variable.
create_keactrl_config
()
{
local
cfg
=
${
1
}
# Configuration string.
if
[
-z
${
KEACTRL_CFG_FILE
}
]
;
then
test_lib_error
"create_keactrl_config requires KEACTRL_CFG_FILE
\
variable be set"
clean_exit 1
elif
[
-z
"
${
cfg
}
"
]
;
then
test_lib_error
"create_keactrl_config requires argument holding a
\
configuration"
clean_exit 1
fi
printf
"Creating keactrl configuration file: %s.
\n
"
${
KEACTRL_CFG_FILE
}
printf
"%b"
${
1
}
>
${
KEACTRL_CFG_FILE
}
printf
"%b"
${
cfg
}
>
${
KEACTRL_CFG_FILE
}
}
# Sets Kea logger to write to the file specified by the global value
# ${LOG_FILE}.
set_logger
()
{
if
[
-z
${
LOG_FILE
}
]
;
then
test_lib_error
"set_logger requies LOG_FILE variable be set"
clean_exit 1
fi
printf
"Kea log will be stored in %s.
\n
"
${
LOG_FILE
}
export
B10_LOGGER_DESTINATION
=
${
LOG_FILE
}
}
# Returns the number of running process pids and the list of pids.
_GET_PIDS
=
# Return value: holds space separated list of DHCPv6 pids.
_GET_PIDS_NUM
=
# Return value: holds the number of DHCPv6 server pids.
# Return values:
# _GET_PIDS: holds space separated list of pids.
# _GET_PIDS_NUM: holds the number pids.
get_pids
()
{
proc_name
=
${
1
}
# Process name
_GET_PIDS
=
`
ps axwwo pid,command |
grep
${
proc_name
}
|
grep
-v
grep
|
awk
'{print $1}'
`
_GET_PIDS_NUM
=
`
printf
"%s"
"
${
_GET_PIDS
}
"
|
wc
-w
|
awk
'{print $1}'
`
local
proc_name
=
${
1
}
# Process name
if
[
-z
${
proc_name
}
]
;
then
test_lib_error
"get_pids requires process name"
clean_exit 1
fi
_GET_PIDS
=
$(
ps axwwo pid,command |
grep
${
proc_name
}
\
|
grep
-v
grep
|
awk
'{print $1}'
)
_GET_PIDS_NUM
=
$(
printf
"%s"
"
${
_GET_PIDS
}
"
|
wc
-w
|
awk
'{print $1}'
)
}
# Returns the number of occurrences of the Kea log message in the
#
log file.
_GET_LOG_MESSAGES
=
0
# Holds the
number of log message occurrences.
# Returns the number of occurrences of the Kea log message in the
log file.
#
Return value:
#
_GET_LOG_MESSAGES
:
number of log message occurrences.
get_log_messages
()
{
local
msg
=
${
1
}
# Message id, e.g. DHCP6_SHUTDOWN
if
[
-z
${
msg
}
]
;
then
test_lib_error
"get_log_messages require message identifier"
clean_exit 1
fi
_GET_LOG_MESSAGES
=
0
# If log file is not present, the number of occurrences is 0.
if
[
-s
${
LOG_FILE
}
]
;
then
# Grep log file for the logger message occurrences.
_GET_LOG_MESSAGES
=
`
grep
-o
${
1
}
${
LOG_FILE
}
|
wc
-w
`
_GET_LOG_MESSAGES
=
$(
grep
-o
${
msg
}
${
LOG_FILE
}
|
wc
-w
)
# Remove whitespaces.
${
_GET_LOG_MESSAGES
##*[! ]
}
fi
...
...
@@ -124,26 +175,29 @@ get_log_messages() {
# Returns the number of server configurations performed so far. Also
# returns the number of configuration errors.
_GET_RECONFIGS
=
# Return value: number of configurations so far.
_GET_RECONFIG_ERRORS
=
# Return value: number of configuration errors.
# Return values:
# _GET_RECONFIGS: number of configurations so far.
# _GET_RECONFIG_ERRORS: number of configuration errors.
get_reconfigs
()
{
# Grep log file for
DHCP6_
CONFIG_COMPLETE occurences. There should
# Grep log file for CONFIG_COMPLETE occurences. There should
# be one occurence per (re)configuration.
_GET_RECONFIGS
=
`
grep
-o
CONFIG_COMPLETE
${
LOG_FILE
}
|
wc
-w
`
# Grep log file for
DHCP6_
CONFIG_LOAD_FAIL to check for configuration
_GET_RECONFIGS
=
$(
grep
-o
CONFIG_COMPLETE
${
LOG_FILE
}
|
wc
-w
)
# Grep log file for CONFIG_LOAD_FAIL to check for configuration
# failures.
_GET_RECONFIG_ERRORS
=
`
grep
-o
CONFIG_LOAD_FAIL
${
LOG_FILE
}
|
wc
-w
`
_GET_RECONFIG_ERRORS
=
$(
grep
-o
CONFIG_LOAD_FAIL
${
LOG_FILE
}
|
wc
-w
)
# Remove whitespaces
${
_GET_RECONFIGS
##*[! ]
}
${
_GET_RECONFIG_ERRORS
##*[! ]
}
}
# Performs cleanup
for a
test.
# Performs cleanup
after
test.
# It shuts down running Kea processes and removes temporary files.
# The location of the log file and the configuration file should be set
# The location of the log file and the configuration file
s
should be set
# in the ${LOG_FILE}, ${CFG_FILE} and ${KEACTRL_CFG_FILE} variables
# recpectively, prior to calling this function.
cleanup
()
{
# KEA_PROCS holds the name of all Kea processes. Shut down each
# of them if running.
for
proc_name
in
${
KEA_PROCS
}
do
get_pids
${
proc_name
}
...
...
@@ -153,7 +207,6 @@ cleanup() {
printf
"Shutting down Kea proccess having pid %d.
\n
"
${
pid
}
kill
-9
${
pid
}
done
shift
done
# Remove temporary files.
rm
-rf
${
LOG_FILE
}
...
...
@@ -166,19 +219,28 @@ cleanup() {
# If a test fails, the Kea log is dumped.
clean_exit
()
{
exit_code
=
${
1
}
# Exit code to be returned by the exit function.
case
${
exit_code
}
in
''
|
*
[!
0-9]
*
)
test_lib_error
"argument passed to clean_exit must be a number"
;;
esac
# Print test result and perform a cleanup
test_finish
${
exit_code
}
exit
${
exit_code
}
}
# Starts Kea process in background using a configuration file specified
# in the global variable ${CFG_FILE}
# in the global variable ${CFG_FILE}
.
start_kea
()
{
printf
"Running command %s.
\n
"
"
\"
${
BIN_PATH
}
/
${
BIN
}
-c
${
CFG_FILE
}
\"
"
${
BIN_PATH
}
/
$BIN
-c
${
CFG_FILE
}
&
bin
=
${
1
}
if
[
-z
${
bin
}
]
;
then
test_lib_error
"binary name must be specified for start_kea"
clean_exit 1
fi
printf
"Running command %s.
\n
"
"
\"
${
bin
}
-c
${
CFG_FILE
}
\"
"
${
bin
}
-c
${
CFG_FILE
}
&
}
# Waits for Kea to start
up with timeout
.
# Waits
with timeout
for Kea to start.
# This function repeatedly checs if the Kea log file has been created
# and is non-empty. If it is, the function assumes that Kea has started.
# It doesn't check the contents of the log file though.
...
...
@@ -186,15 +248,21 @@ start_kea() {
# checks again. This is repeated until timeout is reached or non-empty
# log file is found. If timeout is reached, the function reports an
# error.
_WAIT_FOR_KEA
=
0
# Return value: Holds 0 if Kea hasn't started, 1 otherwise
# Return value:
# _WAIT_FOR_KEA: 0 if Kea hasn't started, 1 otherwise
wait_for_kea
()
{
timeout
=
${
1
}
# Desired timeout in seconds.
loops
=
0
# Loops counter
local timeout
=
${
1
}
# Desired timeout in seconds.
case
${
timeout
}
in
''
|
*
[!
0-9]
*
)
test_lib_error
"argument passed to wait_for_kea must be a number"
clean_exit 1
;;
esac
local
loops
=
0
# Loops counter
_WAIT_FOR_KEA
=
0
while
[
!
-s
${
LOG_FILE
}
]
&&
[
${
loops
}
-le
${
timeout
}
]
;
do
printf
"."
sleep
1
loops
=
`
expr
$loops
+ 1
`
loops
=
$(
expr
$loops
+ 1
)
done
printf
"
\n
"
if
[
${
loops
}
-le
${
timeout
}
]
;
then
...
...
@@ -211,27 +279,50 @@ wait_for_kea() {
# This function waits a specified number of seconds for the number
# of message occurrences to show up. If the expected number of
# message doesn't occur, the error status is returned.
_WAIT_FOR_MESSAGE
=
0
# Return value: holds 0 if the message hasn't occured,
#
1 otherwise.