1 # SPDX-License-Identifier: GPL-2.0
4 PREFIX
:= sudo
-E unshare
-n
8 HAVE_UNSHARED_UTIL
:= $(shell unshare
--version
2> /dev
/null
)
10 rwildcard
=$(wildcard $1$2) $(foreach d
,$(wildcard $1*),$(call rwildcard
,$d/,$2))
12 TESTS
:= $(patsubst tests
/%,%,$(call rwildcard
,tests
/,*.t
))
13 TESTS_DIR
:= $(dir $(TESTS
))
15 IPVERS
:= $(filter-out iproute2
/Makefile
,$(wildcard iproute2
/*))
17 KENVFN
:= $(shell mktemp
/tmp
/tc_testkenv.XXXXXX
)
18 ifneq (,$(wildcard /proc
/config.gz
))
19 KCPATH
:= /proc
/config.gz
21 KVER
:= $(shell uname
-r
)
22 KCPATHS
:= /lib
/modules
/$(KVER
)/config
/boot
/config-
$(KVER
)
23 KCPATH
:= $(firstword $(wildcard $(KCPATHS
)))
26 .PHONY
: compile listtests alltests configure
$(TESTS
)
29 echo
"Entering iproute2" && cd iproute2
&& $(MAKE
) configure
&& cd ..
;
31 compile
: configure generate_nlmsg
32 echo
"Entering iproute2" && cd iproute2
&& $(MAKE
) && cd ..
;
35 @for t in
$(TESTS
); do \
42 alltests
: generate_nlmsg
$(TESTS
)
45 @echo
"Removing $(RESULTS_DIR) dir ..."
46 @
rm -rf
$(RESULTS_DIR
)
49 @
rm -f iproute2
/iproute2-this
50 @
rm -f tests
/ip
/link
/dev_wo_vf_rate.nl
51 $(MAKE
) -C tools
clean
54 echo
"Entering iproute2" && cd iproute2
&& $(MAKE
) distclean && cd ..
;
56 $(TESTS
): generate_nlmsg testclean
58 $(error Please run make first
)
60 ifeq (,$(HAVE_UNSHARED_UTIL
))
61 $(error Please
install util-linux tools to run tests in separated network namespace
)
63 @.
/tools
/generate_nlmsg
65 @mkdir
-p
$(RESULTS_DIR
)
67 @for d in
$(TESTS_DIR
); do \
68 mkdir
-p
$(RESULTS_DIR
)/$$d; \
71 @if
[ "$(KCPATH)" = "/proc/config.gz" ]; then \
72 gunzip
-c
$(KCPATH
) >$(KENVFN
); \
73 elif
[ "$(KCPATH)" != "" ]; then \
74 cat
$(KCPATH
) >$(KENVFN
); \
76 @sed
-i
-e
's/^CONFIG_/export CONFIG_/' $(KENVFN
)
78 @for i in
$(IPVERS
); do \
79 o
=`echo $$i | sed -e 's/iproute2\///'`; \
80 echo
-n
"Running $@ [$$o/`uname -r`]: "; \
81 TMP_ERR
=`mktemp /tmp/tc_testsuite.XXXXXX`; \
82 TMP_OUT
=`mktemp /tmp/tc_testsuite.XXXXXX`; \
84 STD_ERR
="$$TMP_ERR" STD_OUT
="$$TMP_OUT" \
85 TC
="$$i/tc/tc" IP
="$$i/ip/ip" SS
=$$i/misc
/ss DEV
="$(DEV)" IPVER
="$@" SNAME
="$$i" \
86 ERRF
="$(RESULTS_DIR)/$@.$$o.err" $(PREFIX
) tests
/$@
> $(RESULTS_DIR
)/$@.
$$o.out
; \
87 if
[ "$$?" = "127" ]; then \
88 printf
"\033[1;35mSKIPPED\033[0m\n"; \
89 elif
[ -e
"$(RESULTS_DIR)/$@.$$o.err" ]; then \
90 printf
"\033[0;31mFAILED\033[0m\n"; \
92 printf
"\033[0;32mPASS\033[0m\n"; \
94 rm "$$TMP_ERR" "$$TMP_OUT"; \
95 sudo dmesg
> $(RESULTS_DIR
)/$@.
$$o.dmesg
; \