← Commit list

5bb0bea084

Mihai-Gabriel Marin
Mihai-Gabriel Marin
2026-09-03
SUCCESS Duration: 397s

Subject

runtests: Added runnernums in order to have O(1) lookup

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

tests/runtests.pl+9 -12
@@ -173,6 +173,7 @@ my %singletest_state; # current state of singletest() by runner ID
my %singletest_logs; # log messages while in singletest array ref by runner
my $singletest_bufferedrunner; # runner ID which is buffering logs
my %runnerids; # runner IDs by number
+my %runnernums; # runner numbers by IDs (inverted %runnerids)
my @runnersidle; # runner IDs idle and ready to execute a test
my %countforrunner; # test count by runner ID
my %runnersrunning; # tests currently running by runner ID
@@ -269,11 +270,8 @@ sub catch_usr1 {
print scalar(%runnersrunning) . " busy test runner(s) of " . scalar(keys %runnerids) . "\r\n";
foreach my $rid (sort(keys(%runnersrunning))) {
my $runnernum = "unknown";
- foreach my $rnum (keys %runnerids) {
- if($runnerids{$rnum} == $rid) {
- $runnernum = $rnum;
- last;
- }
+ if(exists $runnernums{$rid}) {
+ $runnernum = $runnernums{$rid};
}
print "Runner $runnernum (id $rid) running test $runnersrunning{$rid} in state $singletest_state{$rid}\r\n";
}
@@ -1041,11 +1039,8 @@ sub getrunnerlogdir {
if($jobs <= 1) {
return $LOGDIR;
}
- # TODO: speed up this O(n) operation
- for my $runnernum (keys %runnerids) {
- if($runnerid eq $runnerids{$runnernum}) {
- return "$LOGDIR/$runnernum";
- }
+ if(exists $runnernums{$runnerid}) {
+ return "$LOGDIR/$runnernums{$runnerid}";
}
die "Internal error: runner ID $runnerid not found";
}
@@ -2320,8 +2315,10 @@ sub createrunners {
my $dir = getrunnernumlogdir($runnernum);
cleardir($dir);
mkdir($dir, 0777);
- $runnerids{$runnernum} = runner_init($dir, $jobs);
- runnerready($runnerids{$runnernum});
+ my $id = runner_init($dir, $jobs);
+ $runnerids{$runnernum} = $id;
+ $runnernums{$id} = $runnernum;
+ runnerready($id);
}
}