[Buildroot] [PATCH 8/9] support/testing: run testcases in parallel
Ricardo Martincoski
ricardo.martincoski at gmail.com
Thu Jun 29 02:45:48 UTC 2017
Let the user to pass -t to set the number of testcases to run
simultaneously.
When -j is not specified, calculate it to split the available cores
between the simultaneous testcases.
Example of auto calculated -j for cpu_count 8:
-t -j total
1 9 9
2 4 8
3 3 9
4 2 8
>=5 1 t
Signed-off-by: Ricardo Martincoski <ricardo.martincoski at gmail.com>
---
support/testing/conf/unittest.cfg | 1 -
support/testing/run-tests | 18 ++++++++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/support/testing/conf/unittest.cfg b/support/testing/conf/unittest.cfg
index 6eaa234fc9..4f516fb80a 100644
--- a/support/testing/conf/unittest.cfg
+++ b/support/testing/conf/unittest.cfg
@@ -2,5 +2,4 @@
plugins = nose2.plugins.mp
[multiprocess]
-processes = 1
always-on = True
diff --git a/support/testing/run-tests b/support/testing/run-tests
index e560ec7720..0cb673c61f 100755
--- a/support/testing/run-tests
+++ b/support/testing/run-tests
@@ -3,6 +3,7 @@ import argparse
import sys
import os
import nose2
+import multiprocessing
from infra.basetest import BRTest
@@ -23,6 +24,8 @@ def main():
parser.add_argument('-k', '--keep',
help='keep build directories',
action='store_true')
+ parser.add_argument('-t', '--testcases', type=int, default=1,
+ help='number of testcases to run simultaneously')
parser.add_argument('-j', '--jlevel', type=int,
help='BR2_JLEVEL to use for each testcase')
@@ -72,15 +75,30 @@ def main():
BRTest.keepbuilds = args.keep
+ if args.testcases != 1:
+ if args.testcases < 1:
+ print "Invalid number of testcases to run simultaneously"
+ print ""
+ parser.print_help()
+ return 1
+ # same default BR2_JLEVEL as package/Makefile.in
+ br2_jlevel = 1 + multiprocessing.cpu_count()
+ each_testcase = br2_jlevel / args.testcases
+ if each_testcase < 1:
+ each_testcase = 1
+ BRTest.jlevel = each_testcase
+
if args.jlevel:
if args.jlevel < 0:
print "Invalid BR2_JLEVEL to use for each testcase"
print ""
parser.print_help()
return 1
+ # the user can override the auto calculated value
BRTest.jlevel = args.jlevel
nose2_args = ["-v",
+ "-N", str(args.testcases),
"-s", "support/testing",
"-c", "support/testing/conf/unittest.cfg"]
--
2.11.0
More information about the buildroot
mailing list