All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] testsuite: Handle large number of kernel options
@ 2018-08-22  8:31 Stefan Bader
  2018-08-22 11:02 ` Luca Boccassi
  0 siblings, 1 reply; 2+ messages in thread
From: Stefan Bader @ 2018-08-22  8:31 UTC (permalink / raw)
  To: net-devel; +Cc: Stephen Hemminger, Christian Ehrhardt, Luca

Once there are more than a certain number of kernel config options
set (this happened for us with kernel 4.17), the method of passing
those as command line arguments exceeds the maximum number of
arguments the shell supports. This causes the whole testsuite to
fail.
Instead, create a temporary file and modify its contents so that
the config option variables are exported. Then this file can be
sourced in before running the tests.

Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
---
 testsuite/Makefile | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/testsuite/Makefile b/testsuite/Makefile
index 8fcbc55..f9f3b19 100644
--- a/testsuite/Makefile
+++ b/testsuite/Makefile
@@ -14,15 +14,13 @@ TESTS_DIR := $(dir $(TESTS))
 
 IPVERS := $(filter-out iproute2/Makefile,$(wildcard iproute2/*))
 
+KENVFN := $(shell mktemp /tmp/tc_testkenv.XXXXXX)
 ifneq (,$(wildcard /proc/config.gz))
-	KENV := $(shell cat /proc/config.gz | gunzip | grep ^CONFIG)
+	KCPATH := /proc/config.gz
 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)
@@ -59,14 +57,22 @@ endif
 	    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" $(KENV) $(PREFIX) tests/$@ > $(RESULTS_DIR)/$@.$$o.out; \
+		ERRF="$(RESULTS_DIR)/$@.$$o.err" $(PREFIX) tests/$@ > $(RESULTS_DIR)/$@.$$o.out; \
 		if [ "$$?" = "127" ]; then \
 			echo "SKIPPED"; \
 		elif [ -e "$(RESULTS_DIR)/$@.$$o.err" ]; then \
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-08-22 14:27 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-08-22  8:31 [PATCH] testsuite: Handle large number of kernel options Stefan Bader
2018-08-22 11:02 ` Luca Boccassi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.