]> git.sur5r.net Git - i3/i3/commitdiff
complete-run: don’t parallelize more than the number of tests
authorMichael Stapelberg <michael@stapelberg.de>
Sat, 17 Dec 2011 11:19:31 +0000 (11:19 +0000)
committerMichael Stapelberg <michael@stapelberg.de>
Sat, 17 Dec 2011 11:19:31 +0000 (11:19 +0000)
testcases/complete-run.pl
testcases/lib/StartXDummy.pm

index 247f15b0a880df079241e09367e05007bf1c456d..fe652623fe7f4b6445b4f14e65b7b908586ddd3e 100755 (executable)
@@ -61,8 +61,16 @@ pod2usage(-verbose => 2, -exitcode => 0) if $help;
 @displays = split(/,/, join(',', @displays));
 @displays = map { s/ //g; $_ } @displays;
 
+# 2: get a list of all testcases
+my @testfiles = @ARGV;
+
+# if no files were passed on command line, run all tests from t/
+@testfiles = <t/*.t> if @testfiles == 0;
+
+my $numtests = scalar @testfiles;
+
 # No displays specified, let’s start some Xdummy instances.
-@displays = start_xdummy($parallel) if @displays == 0;
+@displays = start_xdummy($parallel, $numtests) if @displays == 0;
 
 # 1: create an output directory for this test-run
 my $outdir = "testsuite-";
@@ -96,12 +104,6 @@ for my $display (@displays) {
 my $timingsjson = StartXDummy::slurp('.last_run_timings.json');
 %timings = %{decode_json($timingsjson)} if length($timingsjson) > 0;
 
-# 2: get a list of all testcases
-my @testfiles = @ARGV;
-
-# if no files were passed on command line, run all tests from t/
-@testfiles = <t/*.t> if @testfiles == 0;
-
 # Re-order the files so that those which took the longest time in the previous
 # run will be started at the beginning to not delay the whole run longer than
 # necessary.
index 0764c4ecfe19a592b7121b31a81dae56252f91b9..d9d2fd129cc6a1e99620291222f44d4b8af02570 100644 (file)
@@ -27,7 +27,7 @@ the Xdummy processes and a list of PIDs of the processes.
 my $x_socketpath = '/tmp/.X11-unix/X';
 
 sub start_xdummy {
-    my ($parallel) = @_;
+    my ($parallel, $numtests) = @_;
 
     my @displays = ();
     my @childpids = ();
@@ -41,6 +41,9 @@ sub start_xdummy {
 
     $parallel ||= $num_cores * 2;
 
+    # If we are running a small number of tests, don’t over-parallelize.
+    $parallel = $numtests if $numtests < $parallel;
+
     # First get the last used display number, then increment it by one.
     # Effectively falls back to 1 if no X server is running.
     my ($displaynum) = map { /(\d+)$/ } reverse sort glob($x_socketpath . '*');