diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 09:49:46 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 09:49:46 +0000 |
commit | 50b37d4a27d3295a29afca2286f1a5a086142cec (patch) | |
tree | 9212f763934ee090ef72d823f559f52ce387f268 /src/tests/radiusd.mk | |
parent | Initial commit. (diff) | |
download | freeradius-50b37d4a27d3295a29afca2286f1a5a086142cec.tar.xz freeradius-50b37d4a27d3295a29afca2286f1a5a086142cec.zip |
Adding upstream version 3.2.1+dfsg.upstream/3.2.1+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | src/tests/radiusd.mk | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/src/tests/radiusd.mk b/src/tests/radiusd.mk new file mode 100644 index 0000000..eed4c79 --- /dev/null +++ b/src/tests/radiusd.mk @@ -0,0 +1,115 @@ +# +# The "RADIUSD_SERVICE" macro is charged to start/stop the radiusd instances +# from the mostly test targets. It expects the below variables. +# +# - Already defined by scripts/boiler.mk +# +# DIR = src/tests/$target +# BUILD_DIR = build/ +# +# - Defined by the target +# +# PORT := Run the service +# TEST := test.$target +# +# - Parameter +# +# ${1} config-name found in $(DIR)/config, e.g: src/tests/$target/config/${config-name}.conf +# ${2} output directory +# +# - How to use +# +# 1. $(eval $(call RADIUSD_SERVICE,myconfig,directory/path/)) +# +# 2. It will defined the targets. +# +# $(TEST).radiusd_kill and $(TEST).radiusd_start +# +# 3. The target 'radiusd_start' define the variable $(RADIUSD_RUN) with the +# exactly command used to start the service. +# +# 4. You could use the 'RADIUSD_BIN' to set such path to the "radiusd" binary +# that you want to against the tests. +# +# e.g: +# +# make RADIUSD_BIN=/path/to/my/radiusd test +# +include Make.inc + +define RADIUSD_SERVICE +$$(eval RADIUSD_BIN := $(JLIBTOOL) --silent --mode=execute $$(TESTBIN)/radiusd) + +# +# Kill it. We don't care if it failed or not. However, we do care +# if we can't kill it. +# +.PHONY: $(TEST).radiusd_kill +$(TEST).radiusd_kill: | ${2} + ${Q}if [ -f ${2}/radiusd.pid ]; then \ + if ! ps `cat ${2}/radiusd.pid` >/dev/null 2>&1; then \ + rm -f ${2}/radiusd.pid; \ + echo "FreeRADIUS terminated during test called by $(TEST).radiusd_kill"; \ + echo "GDB output was:"; \ + cat "${2}/gdb.log" 2> /dev/null; \ + echo "--------------------------------------------------"; \ + echo "Last entries in server log (${2}/radiusd.log):"; \ + tail -n 100 "${2}/radiusd.log" 2> /dev/null; \ + exit 0; \ + fi; \ + if ! kill -9 `cat ${2}/radiusd.pid` >/dev/null 2>&1; then \ + exit 1; \ + fi; \ + rm -f ${2}/radiusd.pid; \ + exit 0; \ + fi + +# +# Stop it politely. +# +.PHONY: $(TEST).radiusd_stop +$(TEST).radiusd_stop: | ${2} + ${Q}if [ -f ${2}/radiusd.pid ]; then \ + if ! ps `cat ${2}/radiusd.pid` >/dev/null 2>&1; then \ + rm -f ${2}/radiusd.pid; \ + echo "FreeRADIUS terminated during test called by $(TEST).radiusd_stop"; \ + echo "GDB output was:"; \ + cat "${2}/gdb.log" 2> /dev/null; \ + echo "--------------------------------------------------"; \ + echo "Last entries in server log (${2}/radiusd.log):"; \ + tail -n 100 "${2}/radiusd.log" 2> /dev/null; \ + exit 1; \ + fi; \ + if ! kill -TERM `cat ${2}/radiusd.pid` >/dev/null 2>&1; then \ + exit 1; \ + fi; \ + rm -f ${2}/radiusd.pid; \ + exit 0; \ + fi + +# +# Start radiusd instance +# +${2}/radiusd.pid: ${2} + $$(eval RADIUSD_RUN := TOP_SRCDIR=$(top_srcdir) TESTDIR=$(DIR) OUTPUT=$(OUTPUT) TEST_PORT=$(PORT) $$(RADIUSD_BIN) -Pxxx -d $(DIR)/config -n ${1} -D $(DICT_PATH) -l ${2}/radiusd.log) + ${Q}rm -f ${2}/radiusd.log + ${Q}if ! $$(RADIUSD_RUN); then \ + echo "FAILED STARTING RADIUSD"; \ + grep 'Error :' "${2}/radiusd.log"; \ + echo "Last entries in server log (${2}/radiusd.log):"; \ + tail -n 100 "${2}/radiusd.log" 2> /dev/null; \ + echo "RADIUSD_RUN: $$(RADIUSD_RUN)"; \ + fi + +.PHONY: $(TEST).radiusd_start +$(TEST).radiusd_start: ${2}/radiusd.pid + +# +# If this test framework needs radiusd to be started / stopped, then ensure that +# the output files depend on the radiusd binary. +# +ifneq "$(FILES.$(TEST))" "" +$(foreach x, $(FILES.$(TEST)), $(eval $x: $(TESTBINDIR)/radiusd $(TESTBINDIR)/$(CLIENT) $(top_srcdir)/src/tests/$(subst test.,,$(TEST))/config/${1}.conf)) +endif + +endef |