# SPDX-License-Identifier: GPL-2.0
## -- Config --
DEV := lo
PREFIX := sudo -E unshare -n
RESULTS_DIR := results
## -- End Config --

HAVE_UNSHARED_UTIL := $(shell unshare --version 2> /dev/null)

rwildcard=$(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2))

TESTS := $(patsubst tests/%,%,$(call rwildcard,tests/,*.t))
TESTS_DIR := $(dir $(TESTS))

IPVERS := $(filter-out iproute2/Makefile,$(wildcard iproute2/*))

KENVFN := $(shell mktemp /tmp/tc_testkenv.XXXXXX)
ifneq (,$(wildcard /proc/config.gz))
	KCPATH := /proc/config.gz
else
	KVER := $(shell uname -r)
	KCPATHS := /lib/modules/$(KVER)/config /boot/config-$(KVER)
	KCPATH := $(firstword $(wildcard $(KCPATHS)))
endif

.PHONY: compile listtests alltests configure $(TESTS)

configure:
	$(MAKE) -C iproute2 configure

compile: configure generate_nlmsg
	$(MAKE) -C iproute2

listtests:
	@for t in $(TESTS); do \
		echo "$$t"; \
	done

generate_nlmsg:
	$(MAKE) -C tools

alltests: generate_nlmsg $(TESTS)

testclean:
	@echo "Removing $(RESULTS_DIR) dir ..."
	@rm -rf $(RESULTS_DIR)

clean: testclean
	@rm -f iproute2/iproute2-this
	@rm -f tests/ip/link/dev_wo_vf_rate.nl
	$(MAKE) -C tools clean

distclean: clean
	$(MAKE) -C iproute2 distclean

$(TESTS): generate_nlmsg testclean
ifeq (,$(IPVERS))
	$(error Please run make first)
endif
ifeq (,$(HAVE_UNSHARED_UTIL))
	$(error Please install util-linux tools to run tests in separated network namespace)
endif
	@./tools/generate_nlmsg

	@mkdir -p $(RESULTS_DIR)

	@for d in $(TESTS_DIR); do \
	    mkdir -p $(RESULTS_DIR)/$$d; \
	done

	@if [ "$(KCPATH)" = "/proc/config.gz" ]; then \
		gunzip -c $(KCPATH) >$(KENVFN); \
	elif [ "$(KCPATH)" != "" ]; then \
               cat $(KCPATH) >$(KENVFN); \
	fi
	@sed -i -e 's/^CONFIG_/export CONFIG_/' $(KENVFN)

	@for i in $(IPVERS); do \
		o=`echo $$i | sed -e 's/iproute2\///'`; \
		echo -n "Running $@ [$$o/`uname -r`]: "; \
		TMP_ERR=`mktemp /tmp/tc_testsuite.XXXXXX`; \
		TMP_OUT=`mktemp /tmp/tc_testsuite.XXXXXX`; \
		. $(KENVFN); \
		STD_ERR="$$TMP_ERR" STD_OUT="$$TMP_OUT" \
		TC="$$i/tc/tc" IP="$$i/ip/ip" SS=$$i/misc/ss DEV="$(DEV)" IPVER="$@" SNAME="$$i" \
		ERRF="$(RESULTS_DIR)/$@.$$o.err" $(PREFIX) tests/$@ > $(RESULTS_DIR)/$@.$$o.out; \
		if [ "$$?" = "127" ]; then \
			printf "\033[1;35mSKIPPED\033[0m\n"; \
		elif [ -e "$(RESULTS_DIR)/$@.$$o.err" ]; then \
			printf "\033[0;31mFAILED\033[0m\n"; \
		else \
			printf "\033[0;32mPASS\033[0m\n"; \
		fi; \
		rm "$$TMP_ERR" "$$TMP_OUT"; \
		sudo dmesg > $(RESULTS_DIR)/$@.$$o.dmesg; \
	done
