]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Passing back port via variables is not thread safe, so set a unique variable containi...
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 22 Apr 2022 21:38:42 +0000 (16:38 -0500)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 22 Apr 2022 21:38:42 +0000 (16:38 -0500)
src/tests/digest/all.mk
src/tests/eapol_test/all.mk
src/tests/radclient/all.mk
src/tests/radiusd.mk
src/tests/tacacs/all.mk
src/tests/vmps/all.mk

index cb5348a43180767f4b1b80d046420c1a7af529b4..f90be42ad309447bb5ceedb67570f2f1bc9b9f98 100644 (file)
@@ -40,13 +40,13 @@ $(OUTPUT)/%: $(DIR)/% | $(TEST).radiusd_kill $(TEST).radiusd_start
                cp -f $< $@.request;                                    \
                echo "Vendor-Specific.Test.Test-Name = \"$(TARGET)\"" >> $@.request;            \
                echo "Vendor-Specific.Test.Test-Number = \"$${_num}\"" >> $@.request;   \
-               if ! $(TEST_BIN)/radclient -f $@.request -xF -d src/tests/digest/config -D share/dictionary 127.0.0.1:$(PORT) auth $(SECRET) > $@.out; then \
+               if ! $(TEST_BIN)/radclient -f $@.request -xF -d src/tests/digest/config -D share/dictionary 127.0.0.1:$(digest_port) auth $(SECRET) > $@.out; then \
                        echo "FAILED";                                  \
                        cat $@.out;                                     \
                        rm -f $(BUILD_DIR)/tests/test.digest;           \
                        $(MAKE) --no-print-directory test.digest.radiusd_kill; \
                        echo "RADIUSD:   $(RADIUSD_RUN)";               \
-                       echo "RADCLIENT: $(TEST_BIN)/radclient -f $@.request -xF -d src/tests/digest/config -D share/dictionary 127.0.0.1:$(PORT) auth $(SECRET)"; \
+                       echo "RADCLIENT: $(TEST_BIN)/radclient -f $@.request -xF -d src/tests/digest/config -D share/dictionary 127.0.0.1:$(digest_port) auth $(SECRET)"; \
                        exit 1;                                         \
                fi;                                                     \
                touch $@;                                               \
index 8a59c2f208a8572157e62cfcf6b6ffbbe5030f7e..f258cf0b20a9b43a2561b8d2cfe0688b78f9e498 100644 (file)
@@ -103,18 +103,19 @@ $(OUTPUT)/%.ok: $(DIR)/%.conf $(if $(POST_INSTALL_MAKEFILE_ARG),,$(BUILD_DIR)/li
        $(eval METHOD := $(notdir $(patsubst %.conf,%,$<)))
        $(eval KEY := $(shell grep key_mgmt=NONE $< | sed 's/key_mgmt=NONE/-n/'))
        $(eval RADIUS_LOG := $(dir $@)/test.$(METHOD)/radiusd.log)
+       $(eval TEST_PORT := $($(METHOD)_port))
        @echo "EAPOL-TEST $(METHOD)"
        ${Q}$(MAKE) $(POST_INSTALL_MAKEFILE_ARG) --no-print-directory test.$(METHOD).radiusd_kill
-       ${Q}PORT=`PRINT_PORT=1 $(MAKE) $(POST_INSTALL_MAKEFILE_ARG) --no-print-directory test.$(METHOD).radiusd_start`; \
-       if ! $(EAPOL_TEST) -t 10 -c $< -p $${PORT} -s $(SECRET) $(KEY) > $(EAPOL_TEST_LOG) 2>&1; then   \
+       ${Q}$(MAKE) $(POST_INSTALL_MAKEFILE_ARG) --no-print-directory test.$(METHOD).radiusd_start
+       ${Q}if ! $(EAPOL_TEST) -t 10 -c $< -p $(TEST_PORT) -s $(SECRET) $(KEY) > $(EAPOL_TEST_LOG) 2>&1; then   \
                echo "Last entries in supplicant log ($(EAPOL_TEST_LOG):";      \
                tail -n 40 "$(EAPOL_TEST_LOG)";                                                 \
                echo "--------------------------------------------------";              \
                tail -n 40 "$(RADIUS_LOG)";                                             \
                echo "Last entries in server log ($(RADIUS_LOG)):";                     \
                echo "--------------------------------------------------";              \
-               echo "RADIUSD :  OUTPUT=$(dir $@) TESTDIR=$(dir $<) TEST=$(METHOD) TEST_PORT=$(PORT) $(RADIUSD_BIN) -fxxx -n servers -d $(dir $<)config -D $(DICT_PATH) -lstdout -f";\";\
-               echo "EAPOL   :  $(EAPOL_TEST) -c \"$<\" -p $${PORT} -s $(SECRET) $(KEY) "; \
+               echo "RADIUSD :  OUTPUT=$(dir $@) TESTDIR=$(dir $<) TEST=$(METHOD) TEST_PORT=$(TEST_PORT) $(RADIUSD_BIN) -fxxx -n servers -d $(dir $<)config -D $(DICT_PATH) -lstdout -f";\";\
+               echo "EAPOL   :  $(EAPOL_TEST) -c \"$<\" -p $(TEST_PORT) -s $(SECRET) $(KEY) "; \
                echo "           log is in $(OUT)"; \
                rm -f $(BUILD_DIR)/tests/test.eap;                                      \
                $(MAKE) $(POST_INSTALL_MAKEFILE_ARG) --no-print-directory test.$(METHOD).radiusd_kill;                  \
index 84ce587b126d4f533920cba32ee27ab4a0e21a76..84799f906b6f27ead6321f6ca33ba089452229a3 100644 (file)
@@ -44,14 +44,14 @@ $(OUTPUT)/%: $(DIR)/% | $(TEST).radiusd_kill $(TEST).radiusd_start
 
        $(Q)echo "RADCLIENT-TEST INPUT=$(TARGET) ARGV=\"$(ARGV)\""
        $(Q)[ -f $(dir $@)/radiusd.pid ] || exit 1
-       $(Q)if ! $(TEST_BIN)/radclient $(ARGV) -C $(RADCLIENT_CLIENT_PORT) -f $< -d src/tests/radclient/config -D share/dictionary 127.0.0.1:$(PORT) $(TYPE) $(SECRET) 1> $(FOUND) 2>&1; then \
+       $(Q)if ! $(TEST_BIN)/radclient $(ARGV) -C $(RADCLIENT_CLIENT_PORT) -f $< -d src/tests/radclient/config -D share/dictionary 127.0.0.1:$(radclient_port) $(TYPE) $(SECRET) 1> $(FOUND) 2>&1; then \
                if [ "$(IGNORE_ERROR)" != "1" ]; then                               \
                        echo "FAILED";                                              \
                        cat $(FOUND);                                               \
                        rm -f $(BUILD_DIR)/tests/test.radclient;                    \
                        $(MAKE) --no-print-directory test.radclient.radiusd_kill;   \
                        echo "RADIUSD:   $(RADIUSD_RUN)";                           \
-                       echo "RADCLIENT: $(TEST_BIN)/radclient $(ARGV) -C $(RADCLIENT_CLIENT_PORT) -f $< -xF -d src/tests/radclient/config -D share/dictionary 127.0.0.1:$(PORT) $(TYPE) $(SECRET)"; \
+                       echo "RADCLIENT: $(TEST_BIN)/radclient $(ARGV) -C $(RADCLIENT_CLIENT_PORT) -f $< -xF -d src/tests/radclient/config -D share/dictionary 127.0.0.1:$(radclient_port) $(TYPE) $(SECRET)"; \
                        exit 1;                                                     \
                fi;                                                                 \
        fi
@@ -76,7 +76,7 @@ $(OUTPUT)/%: $(DIR)/% | $(TEST).radiusd_kill $(TEST).radiusd_start
        $(Q)if [ -e "$(EXPECTED)" ] && ! diff -I 'Sent' -I 'Received' $(EXPECTED) $(FOUND); then  \
                echo "RADCLIENT FAILED $@";                                 \
                echo "RADIUSD:   $(RADIUSD_RUN)";                           \
-               echo "RADCLIENT: $(TEST_BIN)/radclient $(ARGV) -C $(RADCLIENT_CLIENT_PORT) -f $< -d src/tests/radclient/config -D share/dictionary 127.0.0.1:$(PORT) $(TYPE) $(SECRET)"; \
+               echo "RADCLIENT: $(TEST_BIN)/radclient $(ARGV) -C $(RADCLIENT_CLIENT_PORT) -f $< -d src/tests/radclient/config -D share/dictionary 127.0.0.1:$(radclient_port) $(TYPE) $(SECRET)"; \
                echo "ERROR: File $(FOUND) is not the same as $(EXPECTED)"; \
                echo "If you did some update on the radclient code, please be sure to update the unit tests."; \
                echo "e.g: $(EXPECTED)";                                    \
@@ -87,7 +87,7 @@ $(OUTPUT)/%: $(DIR)/% | $(TEST).radiusd_kill $(TEST).radiusd_start
        elif [ -e "$(CMD_TEST)" ] && ! $(SHELL) $(CMD_TEST); then           \
                echo "RADCLIENT FAILED $@";                                 \
                echo "RADIUSD:   $(RADIUSD_RUN)";                           \
-               echo "RADCLIENT: $(TEST_BIN)/radclient $(ARGV) -C $(RADCLIENT_CLIENT_PORT) -f $< -d src/tests/radclient/config -D share/dictionary 127.0.0.1:$(PORT) $(TYPE) $(SECRET)"; \
+               echo "RADCLIENT: $(TEST_BIN)/radclient $(ARGV) -C $(RADCLIENT_CLIENT_PORT) -f $< -d src/tests/radclient/config -D share/dictionary 127.0.0.1:$(radclient_port) $(TYPE) $(SECRET)"; \
                echo "ERROR: The script $(CMD_TEST) can't validate the content of $(FOUND)"; \
                echo "If you did some update on the radclient code, please be sure to update the unit tests."; \
                rm -f $(BUILD_DIR)/tests/test.radclient;                    \
index bdc279feef39aade77908066491042dead0284c0..ce9eb671b58993e9c986e40c2d41feb03ee5a625 100644 (file)
 #  ${1}                config-name found in $(DIR)/config, e.g: src/tests/$target/config/${config-name}.conf
 #  ${2}                output directory
 #
+#  - Global variables defined
+#
+#  <test>_port  Passing TEST=test.foo results in "foo_port" being set to the port assigned to the
+#               radiusd instance created for the test suite.
+#
 #  - Available in calling rule
 #
-#  PORT         The port the server started on
 #  RADIUSD_RUN  The server invocation
 #
 #  - How to use
@@ -43,7 +47,8 @@ include Make.inc
 
 define RADIUSD_SERVICE
 $$(eval RADIUSD_BIN := $(JLIBTOOL) --silent --mode=execute $$(TEST_BIN)/radiusd)
-$$(eval PORT := $(shell echo $$(($(PORT)+1))))
+$(eval PORT := $(shell echo $$(($(PORT)+1))))
+$(eval $(subst test.,,$(TEST))_port := $(PORT))
 
 #
 #  Kill it.  We don't care if it failed or not.  However, we do care
@@ -96,7 +101,6 @@ $(TEST).radiusd_stop: | ${2}
 #      Start radiusd instance
 #
 ${2}/radiusd.pid: ${2}
-       $$(eval PORT=$(PORT))
        $$(eval RADIUSD_RUN := TESTDIR=$(DIR) OUTPUT=${2} TEST_PORT=$(PORT) TEST=$(subst test.,,$(TEST)) $$(RADIUSD_BIN) -Pxxx -d $(DIR)/config -n ${1} -D $(DICT_PATH) -l ${2}/radiusd.log)
        ${Q}rm -f ${2}/radiusd.log
        ${Q}if test ! -z "$$(PRINT_PORT)"; then \
index 7d3353b250088806e0afed3318c4032e251250de..52340cca38b858c95e85a6e9c73684d799d07e64 100644 (file)
@@ -54,13 +54,13 @@ $(OUTPUT)/%: $(DIR)/% | $(TEST).radiusd_kill $(TEST).radiusd_start
        $(eval ARGV     := $(shell grep "#.*ARGV:" $< | cut -f2 -d ':'))
        $(Q)echo "TACACS-TEST INPUT=$(TARGET) TACACS_ARGV=\"$(ARGV)\""
        $(Q)[ -f $(dir $@)/radiusd.pid ] || exit 1
-       $(Q)if ! $(TACCLIENT) --return-0-if-failed -v -k $(SECRET) -p $(PORT) -H localhost -r 192.168.69.1 -P pegapilha/0 --timeout 2 $(ARGV) 1> $(FOUND) 2>&1; then \
+       $(Q)if ! $(TACCLIENT) --return-0-if-failed -v -k $(SECRET) -p $(tacacs_port) -H localhost -r 192.168.69.1 -P pegapilha/0 --timeout 2 $(ARGV) 1> $(FOUND) 2>&1; then \
                echo "FAILED";                                              \
                cat $(FOUND);                                               \
                rm -f $(BUILD_DIR)/tests/test.tacacs;                       \
                $(MAKE) --no-print-directory test.tacacs.radiusd_kill;      \
                echo "RADIUSD:   $(RADIUSD_RUN)";                           \
-               echo "TACCLIENT: $(TACCLIENT) --return-0-if-failed -v -k $(SECRET) -p $(PORT) -H localhost -r 192.168.69.1 -P pegapilha/0 --timeout 2 $(ARGV)"; \
+               echo "TACCLIENT: $(TACCLIENT) --return-0-if-failed -v -k $(SECRET) -p $(tacacs_port) -H localhost -r 192.168.69.1 -P pegapilha/0 --timeout 2 $(ARGV)"; \
                exit 1;                                                     \
        fi
 #
@@ -71,7 +71,7 @@ $(OUTPUT)/%: $(DIR)/% | $(TEST).radiusd_kill $(TEST).radiusd_start
        $(Q)if [ -e "$(EXPECTED)" ] && ! cmp -s $(FOUND) $(EXPECTED); then  \
                echo "TACCLIENT FAILED $@";                                 \
                echo "RADIUSD:   $(RADIUSD_RUN)";                           \
-               echo "TACCLIENT: $(TACCLIENT) --return-0-if-failed -v -k $(SECRET) -p $(PORT) -H localhost -r 192.168.69.1 -P pegapilha/0 --timeout 2 $(ARGV)"; \
+               echo "TACCLIENT: $(TACCLIENT) --return-0-if-failed -v -k $(SECRET) -p $(tacacs_port) -H localhost -r 192.168.69.1 -P pegapilha/0 --timeout 2 $(ARGV)"; \
                echo "ERROR: File $(FOUND) is not the same as $(EXPECTED)"; \
                echo "If you did some update on the proto_tacacs code, please be sure to update the unit tests."; \
                echo "e.g: $(EXPECTED)";                                    \
index 9d55d44f25083f0c38575c3c707f21b87d903109..888cfaa01d5cf343b3412d1922c48423b22f4f8d 100644 (file)
@@ -35,13 +35,13 @@ $(OUTPUT)/%: $(DIR)/% | $(TEST).radiusd_kill $(TEST).radiusd_start
        $(eval ARGV     := $(shell grep "#.*ARGV:" $< | cut -f2 -d ':'))
        $(Q)echo "VMPS-TEST INPUT=$(TARGET) VMPS_ARGV=\"$(ARGV)\""
        $(Q)[ -f $(dir $@)/radiusd.pid ] || exit 1
-       $(Q)if ! $(VQCLI) -s 127.0.0.1 -p $(PORT) $(ARGV) 1> $(FOUND) 2>&1; then \
+       $(Q)if ! $(VQCLI) -s 127.0.0.1 -p $(vmps_port) $(ARGV) 1> $(FOUND) 2>&1; then \
                echo "FAILED";                                            \
                cat $(FOUND);                                             \
                rm -f $(BUILD_DIR)/tests/test.vmps;                       \
                $(MAKE) --no-print-directory test.vmps.radiusd_kill;      \
                echo "RADIUSD: $(RADIUSD_RUN)";                           \
-               echo "VQCLI:   $(VQCLI) -s 127.0.0.1 -p $(PORT) $(ARGV)"; \
+               echo "VQCLI:   $(VQCLI) -s 127.0.0.1 -p $(vmps_port) $(ARGV)"; \
                exit 1;                                                   \
        fi
 #