]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
differentiate between "kill" and "stop"
authorAlan T. DeKok <aland@freeradius.org>
Fri, 15 May 2020 19:38:59 +0000 (15:38 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 15 May 2020 19:38:59 +0000 (15:38 -0400)
"kill" means kill it, even if it doesn't exist

"stop" means gracefully stop it, and fail if we can't.

src/tests/digest/all.mk
src/tests/eapol_test/all.mk
src/tests/radclient/all.mk
src/tests/radiusd.mk
src/tests/radmin/all.mk

index 82e299e70d5798d06bd2a35546a1320a24afa197..60363f505213b6f4b776d73bbe6624fcccef8bd4 100644 (file)
@@ -48,5 +48,5 @@ $(OUTPUT)/%: $(DIR)/% | $(TEST).radiusd_kill $(TEST).radiusd_start
        done
 
 $(TEST):
-       ${Q}$(MAKE) --no-print-directory $@.radiusd_kill
+       ${Q}$(MAKE) --no-print-directory $@.radiusd_stop
        @touch $(BUILD_DIR)/tests/$@
index 64b94fcf6fcb3c4ce7382bd32e656fd5e8a45604..cc6f2219172bbcfd395f44c44d599c03e0a50c82 100644 (file)
@@ -60,7 +60,7 @@ test.eap.check: $(IGNORED_EAP_TYPES) | $(OUTPUT) $(GENERATED_CERT_FILES)
 #
 $(OUTPUT)/%.ok: $(DIR)/%.conf | $(GENERATED_CERT_FILES)
        @echo "EAPOL-TEST $(notdir $(patsubst %.conf,%,$<))"
-       ${Q}$(MAKE) --no-print-directory test.eap.radiusd_kill || true
+       ${Q}$(MAKE) --no-print-directory test.eap.radiusd_kill
        ${Q}$(MAKE) --no-print-directory METHOD=$(basename $(notdir $@)) test.eap.radiusd_start
        ${Q} [ -f $(dir $@)/radiusd.pid ] || exit 1
        $(eval OUT := $(patsubst %.conf,%.log,$@))
@@ -80,7 +80,7 @@ $(OUTPUT)/%.ok: $(DIR)/%.conf | $(GENERATED_CERT_FILES)
                $(MAKE) --no-print-directory test.eap.radiusd_kill;                     \
                exit 1;\
        fi
-       ${Q}$(MAKE) --no-print-directory test.eap.radiusd_kill || true
+       ${Q}$(MAKE) --no-print-directory test.eap.radiusd_stop
        ${Q}touch $@
 
 $(TEST): $(EAPOL_OK_FILES)
index 30c9deb2449e98e59a63f9ff1066e848d59d19f2..14599c2b1edb61c57e04a2cad9162c9ca08a5798 100644 (file)
@@ -85,5 +85,5 @@ $(OUTPUT)/%: $(DIR)/% | $(TEST).radiusd_kill $(TEST).radiusd_start
        $(Q)touch $@
 
 $(TEST):
-       $(Q)$(MAKE) --no-print-directory $@.radiusd_kill
+       $(Q)$(MAKE) --no-print-directory $@.radiusd_stop
        @touch $(BUILD_DIR)/tests/$@
index 6b9af65f3e239c570a9d39496f83306117bae6ca..e54242b05f7f4ec25af4d7dce747886d79546eef 100644 (file)
@@ -41,8 +41,34 @@ include Make.inc
 define RADIUSD_SERVICE
 $$(eval RADIUSD_BIN := $(JLIBTOOL) --silent --mode=execute $$(BIN_PATH)/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 "--------------------------------------------------"; \
+                   tail -n 100 "${2}/gdb.log" 2> /dev/null; \
+                   echo "Last entries in server log (${2}/gdb.log):"; \
+                   exit 0; \
+               fi; \
+               if ! kill -TERM `cat ${2}/radiusd.pid` >/dev/null 2>&1; then \
+                       exit 1; \
+               fi; \
+               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; \
index 8bd6626621d2a41585f65a24032bbadcc74e2a07..ae340ddacf9a1f033418e84e4f5619a79b60bd1d 100644 (file)
@@ -85,5 +85,5 @@ $(OUTPUT)/%: $(DIR)/% | $(TEST).radiusd_kill $(TEST).radiusd_start
        fi
 
 $(TEST):
-       ${Q}$(MAKE) --no-print-directory $@.radiusd_kill
+       ${Q}$(MAKE) --no-print-directory $@.radiusd_stop
        @touch $(BUILD_DIR)/tests/$@