diff options
author | Dr. David von Oheimb <David.von.Oheimb@siemens.com> | 2020-07-02 17:59:55 +0200 |
---|---|---|
committer | Dr. David von Oheimb <David.von.Oheimb@siemens.com> | 2020-07-16 21:44:25 +0200 |
commit | 1e76cb002a8d89b66b67214921b921c4cb9f6506 (patch) | |
tree | 9af0d64219da9622dc777182466c6beb8e464ebd /test/run_tests.pl | |
parent | 0b670a2101c6cdcc3f2a4ed168f75243fe082a2b (diff) |
test/run_tests.pl: In parallel runs, start those tests first that run longest
Also untabify the Perl source file.
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/12359)
Diffstat (limited to 'test/run_tests.pl')
-rw-r--r-- | test/run_tests.pl | 76 |
1 files changed, 43 insertions, 33 deletions
diff --git a/test/run_tests.pl b/test/run_tests.pl index d47f7cf1e6..73d4d91931 100644 --- a/test/run_tests.pl +++ b/test/run_tests.pl @@ -70,44 +70,54 @@ open $openssl_args{'tap_copy'}, ">$outfilename" my @alltests = find_matching_tests("*"); my %tests = (); +sub reorder { + my $key = pop; + + # for parallel test runs, do slow tests first + if (defined $jobs && $jobs > 1 && $key =~ m/test_ssl_new|test_fuzz/) { + $key =~ s/(\d+)-/00-/; + } + return $key; +} + my $initial_arg = 1; foreach my $arg (@ARGV ? @ARGV : ('alltests')) { if ($arg eq 'list') { - foreach (@alltests) { - (my $x = basename($_)) =~ s|^[0-9][0-9]-(.*)\.t$|$1|; - print $x,"\n"; - } - exit 0; + foreach (@alltests) { + (my $x = basename($_)) =~ s|^[0-9][0-9]-(.*)\.t$|$1|; + print $x,"\n"; + } + exit 0; } if ($arg eq 'alltests') { - warn "'alltests' encountered, ignoring everything before that...\n" - unless $initial_arg; - %tests = map { $_ => basename($_) } @alltests; + warn "'alltests' encountered, ignoring everything before that...\n" + unless $initial_arg; + %tests = map { $_ => 1 } @alltests; } elsif ($arg =~ m/^(-?)(.*)/) { - my $sign = $1; - my $test = $2; - my @matches = find_matching_tests($test); - - # If '-foo' is the first arg, it's short for 'alltests -foo' - if ($sign eq '-' && $initial_arg) { - %tests = map { $_ => basename($_) } @alltests; - } - - if (scalar @matches == 0) { - warn "Test $test found no match, skipping ", - ($sign eq '-' ? "removal" : "addition"), - "...\n"; - } else { - foreach $test (@matches) { - if ($sign eq '-') { - delete $tests{$test}; - } else { - $tests{$test} = basename($test); - } - } - } + my $sign = $1; + my $test = $2; + my @matches = find_matching_tests($test); + + # If '-foo' is the first arg, it's short for 'alltests -foo' + if ($sign eq '-' && $initial_arg) { + %tests = map { $_ => 1 } @alltests; + } + + if (scalar @matches == 0) { + warn "Test $test found no match, skipping ", + ($sign eq '-' ? "removal" : "addition"), + "...\n"; + } else { + foreach $test (@matches) { + if ($sign eq '-') { + delete $tests{$test}; + } else { + $tests{$test} = 1; + } + } + } } else { - warn "I don't know what '$arg' is about, ignoring...\n"; + warn "I don't know what '$arg' is about, ignoring...\n"; } $initial_arg = 0; @@ -280,8 +290,8 @@ unless (defined $eres) { my $harness = $package->new(\%tapargs); my $ret = - $harness->runtests(map { [ abs2rel($_, rel2abs(curdir())), $tests{$_} ] } - sort keys %tests); + $harness->runtests(map { [ abs2rel($_, rel2abs(curdir())), basename($_) ] } + sort { reorder($a) cmp reorder($b) } keys %tests); # $ret->has_errors may be any number, not just 0 or 1. On VMS, numbers # from 2 and on are used as is as VMS statuses, which has severity encoded |