[U-Boot] [PATCH v2 04/10] test: Add a 'make qcheck' target for quicker testing

Simon Glass sjg at chromium.org
Sun Nov 18 15:14:29 UTC 2018


At present tests are quite slow to run, over a minute on my machine. This
presents a considerable barrier to bisecting for failures.

The slowest tests are the filesystem ones and the buildman --fetch-arch
test. Add a new 'qcheck' target that skips these tests. This reduces test
time down to about 40 second, still too long, but bearable.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

Changes in v2: None

 Makefile                             |  6 +++++-
 test/README                          |  6 +++++-
 test/py/tests/test_fs/test_basic.py  |  1 +
 test/py/tests/test_fs/test_ext.py    |  1 +
 test/py/tests/test_fs/test_mkdir.py  |  1 +
 test/py/tests/test_fs/test_unlink.py |  1 +
 test/run                             | 10 ++++++++--
 7 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 552687db538..15b710b214e 100644
--- a/Makefile
+++ b/Makefile
@@ -443,7 +443,7 @@ defaultenv_h := include/generated/defaultenv_autogenerated.h
 
 no-dot-config-targets := clean clobber mrproper distclean \
 			 help %docs check% coccicheck \
-			 ubootversion backup tests
+			 ubootversion backup tests check qcheck
 
 config-targets := 0
 mixed-targets  := 0
@@ -1703,6 +1703,7 @@ help:
 	@echo  'Test targets:'
 	@echo  ''
 	@echo  '  check           - Run all automated tests that use sandbox'
+	@echo  '  qcheck          - Run quick automated tests that use sandbox'
 	@echo  ''
 	@echo  'Other generic targets:'
 	@echo  '  all		  - Build all necessary images depending on configuration'
@@ -1745,6 +1746,9 @@ help:
 tests check:
 	$(srctree)/test/run
 
+qcheck:
+	$(srctree)/test/run quick
+
 # Documentation targets
 # ---------------------------------------------------------------------------
 DOC_TARGETS := xmldocs latexdocs pdfdocs htmldocs epubdocs cleandocs \
diff --git a/test/README b/test/README
index 873a4e19313..4bc9ca3a6ae 100644
--- a/test/README
+++ b/test/README
@@ -10,11 +10,15 @@ Running tests
 
 To run most tests on sandbox, type this:
 
-    test/run
+    make check
 
 in the U-Boot directory. Note that only the pytest suite is run using this
 command.
 
+Some tests take ages to run. To run just the quick ones, type this:
+
+    make qcheck
+
 
 Sandbox
 -------
diff --git a/test/py/tests/test_fs/test_basic.py b/test/py/tests/test_fs/test_basic.py
index c067cc9ba3f..140ca29ac73 100644
--- a/test/py/tests/test_fs/test_basic.py
+++ b/test/py/tests/test_fs/test_basic.py
@@ -13,6 +13,7 @@ import re
 from fstest_defs import *
 
 @pytest.mark.boardspec('sandbox')
+ at pytest.mark.slow
 class TestFsBasic(object):
     def test_fs1(self, u_boot_console, fs_obj_basic):
         """
diff --git a/test/py/tests/test_fs/test_ext.py b/test/py/tests/test_fs/test_ext.py
index 38217d08bf6..06cad5516d5 100644
--- a/test/py/tests/test_fs/test_ext.py
+++ b/test/py/tests/test_fs/test_ext.py
@@ -13,6 +13,7 @@ import re
 from fstest_defs import *
 
 @pytest.mark.boardspec('sandbox')
+ at pytest.mark.slow
 class TestFsExt(object):
     def test_fs_ext1(self, u_boot_console, fs_obj_ext):
         """
diff --git a/test/py/tests/test_fs/test_mkdir.py b/test/py/tests/test_fs/test_mkdir.py
index d9da97b56b5..b3fe11cf3b5 100644
--- a/test/py/tests/test_fs/test_mkdir.py
+++ b/test/py/tests/test_fs/test_mkdir.py
@@ -11,6 +11,7 @@ This test verifies mkdir operation on file system.
 import pytest
 
 @pytest.mark.boardspec('sandbox')
+ at pytest.mark.slow
 class TestMkdir(object):
     def test_mkdir1(self, u_boot_console, fs_obj_mkdir):
         """
diff --git a/test/py/tests/test_fs/test_unlink.py b/test/py/tests/test_fs/test_unlink.py
index 69c1a6e078c..2b817468eda 100644
--- a/test/py/tests/test_fs/test_unlink.py
+++ b/test/py/tests/test_fs/test_unlink.py
@@ -12,6 +12,7 @@ on file system.
 import pytest
 
 @pytest.mark.boardspec('sandbox')
+ at pytest.mark.slow
 class TestUnlink(object):
     def test_unlink1(self, u_boot_console, fs_obj_unlink):
         """
diff --git a/test/run b/test/run
index fb8ff5da0cb..c212cfe7916 100755
--- a/test/run
+++ b/test/run
@@ -1,6 +1,7 @@
 #!/bin/bash
 
 # Script to run all U-Boot tests that use sandbox.
+#  $1: tests to run (empty for all, 'quick' for quick ones only)
 
 # Runs a test and checks the exit code to decide if it passed
 #  $1:         Test name
@@ -12,10 +13,13 @@ run_test() {
 	[ $? -ne 0 ] && failures=$((failures+1))
 }
 
+# SKip slow tests if requested
+[ "$1" == "quick" ] && mark_expr="not slow"
+
 failures=0
 
 # Run all tests that the standard sandbox build can support
-run_test "sandbox" ./test/py/test.py --bd sandbox --build
+run_test "sandbox" ./test/py/test.py --bd sandbox --build -m "${mark_expr}"
 
 # Run tests which require sandbox_spl
 run_test "sandbox_spl" ./test/py/test.py --bd sandbox_spl --build \
@@ -36,7 +40,9 @@ export DTC=${DTC_DIR}/dtc
 
 run_test "binman" ./tools/binman/binman -t
 run_test "patman" ./tools/patman/patman --test
-run_test "buildman" ./tools/buildman/buildman -t
+
+[ "$1" == "quick" ] && skip=--skip-net-tests
+run_test "buildman" ./tools/buildman/buildman -t ${skip}
 run_test "fdt" ./tools/dtoc/test_fdt -t
 run_test "dtoc" ./tools/dtoc/dtoc -t
 
-- 
2.19.1.1215.g8438c0b245-goog



More information about the U-Boot mailing list