2626# of the test-framework.
2727#
2828
29- # Find ENV compose file by stripping trailing "-suffix" chunks until a match exists.
30- # Returns: environments/docker-compose/env-<base-without-test->.yml
31- define FIND_ENV_COMPOSE
29+ # Find ENV compose template by stripping trailing "-suffix" chunks until a match exists.
30+ # Returns: environments/docker-compose/env-<base-without-test->.yml.j2
31+ define FIND_ENV_COMPOSE_J2
3232$(strip $(shell \
3333 name='$(1 ) '; base="$$name"; \
3434 while :; do \
3535 env="environments/docker-compose/env-$${base#test-}.yml"; \
3636 envj2="$$env.j2"; \
3737 if [ -f "$(MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH ) $$envj2" ]; then \
38- printf '% s' "$$env"; exit 0; \
39- elif [ -f "$(MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH ) $$env" ]; then \
40- printf '% s' "$$env"; exit 0; \
38+ printf '% s' "$$envj2"; exit 0; \
4139 fi; \
4240 newbase="$${base% -* }"; \
4341 if [ "$$newbase" = "$$base" ]; then \
44- echo "ERROR: No matching env compose file for $(1 ) (tried $$env( .j2) and shorter prefixes) " 1>&2; \
42+ echo "ERROR: No matching env compose template for $(1 ) (expected $$env.j2 and shorter prefixes) " 1>&2; \
4543 exit 1; \
4644 fi; \
4745 base="$$newbase"; \
@@ -54,49 +52,66 @@ define MAKE_TEST_TARGET
5452$(1 ) : TEST_NAME := $(1 )
5553$(1 ) : TEST_FILENAME := $$(TEST_NAME ) .yml
5654
57- # Compute compose path by finding the longest matching base env file
58- $(1 ) : ENV_COMPOSE_PATH := $$(call FIND_ENV_COMPOSE,$$(TEST_NAME ) )
55+ # Compose template (must exist)
56+ $(1 ) : ENV_COMPOSE_TEMPLATE_PATH := $$(call FIND_ENV_COMPOSE_J2,$$(TEST_NAME ) )
57+
58+ # Output compose file (strip .j2)
59+ $(1 ) : ENV_COMPOSE_PATH := $$(patsubst % .j2,% ,$$(ENV_COMPOSE_TEMPLATE_PATH ) )
60+
61+ # Stem: environments/docker-compose/env-5hs-autoaccept.yml -> 5hs-autoaccept
62+ $(1 ) : ENV_STEM := $$(patsubst environments/docker-compose/env-% .yml,% ,$$(ENV_COMPOSE_PATH ) )
63+
64+ # Vars aligned to stem
65+ $(1 ) : VARS_FILE_REL ?= environments/jinja-vars/env-$$(ENV_STEM ) .vars.yml
5966
6067$(1 ) : clone
6168 @echo "MULTI_SERVER_BUILD_DIR_REL_PATH=$(MULTI_SERVER_BUILD_DIR_REL_PATH ) "
6269 @echo "MULTI_SERVER_BUILD_DIR_ABS_PATH=$(MULTI_SERVER_BUILD_DIR_ABS_PATH ) "
6370 @mkdir -p "$(MULTI_SERVER_BUILD_DIR_REL_PATH ) /freeradius-listener-logs/$$(TEST_NAME ) "
64- @cd "$(FRAMEWORK_REPO_DIR ) " && \
65- git pull && \
66- \
67- $(MAKE ) configure && \
68- . ".venv/bin/activate" && \
71+ @bash -lc 'set -euo pipefail; \
72+ echo "INFO: entering framework repo: $(FRAMEWORK_REPO_DIR ) "; \
73+ cd "$(FRAMEWORK_REPO_DIR ) "; \
74+ git pull; \
75+ $(MAKE ) configure; \
76+ . ".venv/bin/activate"; \
6977 \
7078 DATA_PATH="$(MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH ) environments/configs"; \
7179 LISTENER_DIR="$(MULTI_SERVER_BUILD_DIR_ABS_PATH ) /freeradius-listener-logs/$$(TEST_NAME ) "; \
80+ INCLUDE_PATH_ABS="$(MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH ) "; \
81+ VARS_FILE_ABS="$(MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH )$$(VARS_FILE_REL ) "; \
82+ ENV_COMPOSE_TEMPLATE_ABS="$(MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH )$$(ENV_COMPOSE_TEMPLATE_PATH ) "; \
83+ ENV_COMPOSE_ABS="$(MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH )$$(ENV_COMPOSE_PATH ) "; \
84+ TEST_ABS="$(MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH )$$(TEST_FILENAME ) "; \
7285 \
73- echo "INFO: TEST_FILENAME=$$(TEST_FILENAME ) "; \
7486 echo "INFO: TEST_NAME=$$(TEST_NAME ) "; \
87+ echo "INFO: TEST_FILENAME=$$(TEST_FILENAME ) "; \
88+ echo "INFO: TEST_ABS=$$TEST_ABS"; \
89+ echo "INFO: ENV_COMPOSE_TEMPLATE_PATH=$$(ENV_COMPOSE_TEMPLATE_PATH ) "; \
7590 echo "INFO: ENV_COMPOSE_PATH=$$(ENV_COMPOSE_PATH ) "; \
76- echo "INFO: MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH=$(MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH ) "; \
77- echo "INFO: DATA_PATH=$$$$DATA_PATH"; \
78- echo "INFO: MULTI_SERVER_BUILD_DIR_REL_PATH=$(MULTI_SERVER_BUILD_DIR_REL_PATH ) "; \
91+ echo "INFO: ENV_STEM=$$(ENV_STEM ) "; \
92+ echo "INFO: VARS_FILE_REL=$$(VARS_FILE_REL ) "; \
93+ echo "INFO: VARS_FILE_ABS=$$$$VARS_FILE_ABS"; \
94+ echo "INFO: ENV_COMPOSE_TEMPLATE_ABS=$$$$ENV_COMPOSE_TEMPLATE_ABS"; \
95+ echo "INFO: ENV_COMPOSE_ABS=$$$$ENV_COMPOSE_ABS"; \
7996 echo "INFO: LISTENER_DIR=$$$$LISTENER_DIR"; \
8097 \
81- CMD="python3 src/config_builder.py --listener_type file --aux $( MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH ) environments/configs/freeradius/homeserver/radiusd.conf.j2 --includepath $( MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH ) " ; \
82- echo "INFO: CMD = $$$$CMD" ; \
83- bash -c "$$$$CMD" ; \
98+ test -f "$$$$VARS_FILE_ABS" || { echo "ERROR: Missing vars file: $$$$VARS_FILE_ABS" >&2; exit 1; } ; \
99+ test -f "$$$$ENV_COMPOSE_TEMPLATE_ABS" || { echo "ERROR: Missing compose template: $$$$ENV_COMPOSE_TEMPLATE_ABS" >&2; exit 1; } ; \
100+ test -f "$$$$TEST_ABS" || { echo "ERROR: Missing test file: $$$$TEST_ABS" >&2; exit 1; } ; \
84101 \
85- CMD="python3 src/config_builder.py --listener_type file --aux $(MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH ) environments/configs/freeradius/load-generator/radiusd.conf.j2 --includepath $(MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH ) "; \
86- echo "INFO: CMD = $$$$CMD"; \
87- bash -c "$$$$CMD"; \
102+ echo "INFO: Rendering homeserver radiusd.conf.j2"; \
103+ python3 src/config_builder.py --vars-file "$$$$VARS_FILE_ABS" --aux-file "$(MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH ) environments/configs/freeradius/homeserver/radiusd.conf.j2" --include-path "$$$$INCLUDE_PATH_ABS"; \
88104 \
89- CMD="python3 src/config_builder.py --listener_type file --aux $(MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH ) environments/docker-compose/env-5hs-autoaccept.yml.j2 --includepath $(MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH ) "; \
90- echo "INFO: CMD = $$$$CMD"; \
91- bash -c "$$$$CMD"; \
105+ echo "INFO: Rendering load-generator radiusd.conf.j2"; \
106+ python3 src/config_builder.py --vars-file "$$$$VARS_FILE_ABS" --aux-file "$(MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH ) environments/configs/freeradius/load-generator/radiusd.conf.j2" --include-path "$$$$INCLUDE_PATH_ABS"; \
92107 \
93- test -f " $( MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH )$$( ENV_COMPOSE_PATH ) " || { \
94- echo "ERROR: Missing compose file: $( MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH )$$( ENV_COMPOSE_PATH ) "; \
95- exit 1; \
96- } && \
97- CMD="DATA_PATH= $( MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH ) environments/configs make test-framework -- -x -v --compose $( MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH )$$( ENV_COMPOSE_PATH ) --test $( MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH )$$( TEST_FILENAME ) --use-files --listener-dir $$$$LISTENER_DIR"; \
98- echo "INFO: CMD = $$$$CMD "; \
99- bash -c "$$$$CMD"
108+ echo "INFO: Rendering docker-compose env from template"; \
109+ python3 src/config_builder.py --vars-file "$$$$VARS_FILE_ABS" --aux- file "$$$$ENV_COMPOSE_TEMPLATE_ABS" --include-path "$$$$INCLUDE_PATH_ABS "; \
110+ \
111+ test -f "$$$$ENV_COMPOSE_ABS" || { echo "ERROR: Compose file was not generated: $$$$ENV_COMPOSE_ABS" >&2; exit 1; }; \
112+ \
113+ echo "INFO: Running test-framework "; \
114+ DATA_PATH=" $( MULTI_SERVER_TESTS_BASE_DIR_ABS_PATH ) environments/configs" make test-framework -- -x -v --compose "$$$$ENV_COMPOSE_ABS" --test "$$$$TEST_ABS" --use-files --listener-dir "$$$$LISTENER_DIR"'
100115endef
101116
102117# Set directory name where all.mk is located. Help with relative paths
0 commit comments