summaryrefslogtreecommitdiff
path: root/test/run_tests.pl
diff options
context:
space:
mode:
authorDr. David von Oheimb <David.von.Oheimb@siemens.com>2020-07-02 17:59:55 +0200
committerDr. David von Oheimb <David.von.Oheimb@siemens.com>2020-07-16 21:44:25 +0200
commit1e76cb002a8d89b66b67214921b921c4cb9f6506 (patch)
tree9af0d64219da9622dc777182466c6beb8e464ebd /test/run_tests.pl
parent0b670a2101c6cdcc3f2a4ed168f75243fe082a2b (diff)
downloadopenssl-new-1e76cb002a8d89b66b67214921b921c4cb9f6506.tar.gz
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.pl76
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