support/testing/run-tests: fix --testcases option

The --testcases option of run-tests says how many test cases to build in
parallel. It automatically derives a jlevel from it by dividing the
number of cores + 1 by the number of parallel testcases. However, this
will typically result in a fractional number. Make doesn't like
fractional numbers as argument to -j.

Convert the number to integer (rounding down).

* br2_jlevel is an int, as multiprocessing.cpu_count() is an int, so it
  will be always >=2  (cpu_count() raises an error if it can't determine
  the number of CPU, so it will always return at least 1);

* args.testcases is an int, and is checked to be >=1

So br2_jlevel + args.testcases is guaranteed to always be bigger
than or equal to args.testcases, and the division thus bigger than 1.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
[yann.morin.1998@free.fr:
  - ensure division provide at least 1
  - drop the test below
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
This commit is contained in:
Arnout Vandecappelle (Essensium/Mind) 2022-07-27 17:02:30 +02:00 committed by Yann E. MORIN
parent 42646265d5
commit 8dce595a68

View File

@ -87,9 +87,7 @@ def main():
return 1 return 1
# same default BR2_JLEVEL as package/Makefile.in # same default BR2_JLEVEL as package/Makefile.in
br2_jlevel = 1 + multiprocessing.cpu_count() br2_jlevel = 1 + multiprocessing.cpu_count()
each_testcase = br2_jlevel / args.testcases each_testcase = int((br2_jlevel + args.testcases) / args.testcases)
if each_testcase < 1:
each_testcase = 1
BRConfigTest.jlevel = each_testcase BRConfigTest.jlevel = each_testcase
if args.jlevel: if args.jlevel: