79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Makefile
		
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Makefile
		
	
	
	
| ## -- 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/*))
 | |
| 
 | |
| ifneq (,$(wildcard /proc/config.gz))
 | |
| 	KENV := $(shell cat /proc/config.gz | gunzip | grep ^CONFIG)
 | |
| else
 | |
| KVER := $(shell uname -r)
 | |
| KCPATHS := /lib/modules/$(KVER)/config /boot/config-$(KVER)
 | |
| KCPATH := $(firstword $(wildcard $(KCPATHS)))
 | |
| ifneq (,$(KCPATH))
 | |
| 	KENV := $(shell cat ${KCPATH} | grep ^CONFIG)
 | |
| endif
 | |
| endif
 | |
| 
 | |
| .PHONY: compile listtests alltests configure $(TESTS)
 | |
| 
 | |
| configure:
 | |
| 	echo "Entering iproute2" && cd iproute2 && $(MAKE) configure && cd ..;
 | |
| 
 | |
| compile: configure
 | |
| 	echo "Entering iproute2" && cd iproute2 && $(MAKE) && cd ..;
 | |
| 
 | |
| listtests:
 | |
| 	@for t in $(TESTS); do \
 | |
| 		echo "$$t"; \
 | |
| 	done
 | |
| 
 | |
| alltests: $(TESTS)
 | |
| 
 | |
| clean:
 | |
| 	@echo "Removing $(RESULTS_DIR) dir ..."
 | |
| 	@rm -rf $(RESULTS_DIR)
 | |
| 
 | |
| distclean: clean
 | |
| 	echo "Entering iproute2" && cd iproute2 && $(MAKE) distclean && cd ..;
 | |
| 
 | |
| $(TESTS): clean
 | |
| 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
 | |
| 	
 | |
| 	@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`; \
 | |
| 		STD_ERR="$$TMP_ERR" STD_OUT="$$TMP_OUT" \
 | |
| 		TC="$$i/tc/tc" IP="$$i/ip/ip" DEV="$(DEV)" IPVER="$@" SNAME="$$i" \
 | |
| 		ERRF="$(RESULTS_DIR)/$@.$$o.err" $(KENV) $(PREFIX) tests/$@ > $(RESULTS_DIR)/$@.$$o.out; \
 | |
| 		if [ "$$?" = "127" ]; then \
 | |
| 			echo "SKIPPED"; \
 | |
| 		elif [ -e "$(RESULTS_DIR)/$@.$$o.err" ]; then \
 | |
| 			echo "FAILED"; \
 | |
| 		else \
 | |
| 			echo "PASS"; \
 | |
| 		fi; \
 | |
| 		rm "$$TMP_ERR" "$$TMP_OUT"; \
 | |
| 		dmesg > $(RESULTS_DIR)/$@.$$o.dmesg; \
 | |
| 	done
 |