run all available queries automatically

This commit is contained in:
2026-04-19 12:55:33 +02:00
parent f6989084ff
commit 10bffc0fbc
2 changed files with 13 additions and 69 deletions

View File

@ -49,9 +49,7 @@ sub find_subdirs {
}
sub execute_query {
my ( $experiment, $queryname, $db_conf, $builds_dir ) = @_;
say "Running query $queryname";
my ( $experiment, $queryname, $db_conf, $builds_dir, $do_notify_file ) = @_;
my $module = "Queries::$queryname";
my $file = "$module.pm";
@ -80,7 +78,9 @@ sub execute_query {
print $results_handle $result;
close($results_handle) or die "failed to close file: $!";
if ( defined $do_notify_file and $do_notify_file == 1 ) {
notify_file("$builds_dir/$experiment/$filenamestring");
}
return $result;
}

View File

@ -67,13 +67,6 @@ sub cpu_count {
return $count;
}
# Find new experiments
# opendir( my $dhandle, $remote_builds_dir )
# or die "opendir($remote_builds_dir): $!";
# my @experiments = grep { $_ ne '.' && $_ ne '..' && -d "$remote_builds_dir/$_" }
# readdir($dhandle);
# closedir($dhandle);
my @experiments = Util::find_subdirs($remote_builds_dir);
sub trace {
@ -100,8 +93,6 @@ sub trace {
"-Wf,--elf-file=$remote_builds_dir/$experiment/system.elf"
)
);
# notify("Tracing $experiment complete.");
}
sub import_trace {
@ -198,8 +189,6 @@ sub import_trace {
"-b %%", "--overwrite"
)
);
# notify("Importing $experiment trace complete.");
}
sub inject {
@ -268,67 +257,22 @@ sub inject {
say "Killing server with pid $pid...";
kill 'TERM', $pid;
waitpid( $pid, 0 );
# notify("Injecting $experiment complete.");
}
# sub query {
# my ( $experiment, $query, $args, $file, $postprocess ) = @_;
#
# say "Running query $query";
#
# my $result = qx{mariadb --defaults-file=$remote_db_conf $args -e "$query"};
# die "Query failed: $?" if $? != 0;
#
# if ( defined $postprocess ) {
# $postprocess->($result);
# }
#
# open( my $results_handle, '>', "$remote_builds_dir/$experiment/$file" )
# or die "failed to open file: $!";
# print $results_handle $result;
# close($results_handle) or die "failed to close file: $!";
#
# notify_file("$remote_builds_dir/$experiment/$file");
# }
sub results {
my ($experiment) = @_;
Util::notify("Querying $experiment...");
my @queries = Util::find_files("$remote_root/scripts/Queries");
Util::execute_query( $experiment, "Results", $remote_db_conf,
$remote_builds_dir );
Util::execute_query( $experiment, "FaultsFailed", $remote_db_conf,
$remote_builds_dir );
foreach (@queries) {
my $query = $_;
$query =~ s/\.pm//g;
# my $results_overview_query = "SELECT
# variant, benchmark, resulttype, sum(t.time2 - t.time1 + 1) AS faults
# FROM variant v
# JOIN trace t ON v.id = t.variant_id
# JOIN fspgroup g ON g.variant_id = t.variant_id AND g.instr2 = t.instr2 AND g.data_address = t.data_address
# JOIN result_GenericExperimentMessage r ON r.pilot_id = g.pilot_id
# JOIN fsppilot p ON r.pilot_id = p.id
# WHERE v.variant = '$experiment'
# GROUP BY v.id, resulttype
# ORDER BY variant, benchmark, resulttype;";
#
# query( $experiment, $results_overview_query, "-t", "results.txt" );
#
# my $fail_markers_query = "SELECT
# CONCAT('0x', HEX(p.injection_instr_absolute)) AS fault_address,
# SUM(t.time2 - t.time1 + 1) AS total_fail_markers
# FROM trace t
# JOIN variant v ON v.id = t.variant_id
# JOIN fspgroup g ON g.variant_id = t.variant_id AND g.instr2 = t.instr2 AND g.data_address = t.data_address
# JOIN result_GenericExperimentMessage r ON r.pilot_id = g.pilot_id
# JOIN fsppilot p ON p.id = r.pilot_id
# WHERE v.variant = '$experiment' AND r.resulttype = 'FAIL_MARKER'
# GROUP BY p.injection_instr_absolute
# ORDER BY SUM(t.time2 - t.time1 + 1) DESC;";
#
# query( $experiment, $fail_markers_query, "--batch --raw",
# "markers.csv", sub { $_[0] =~ s/\t/,/g } );
Util::notify("Running query $query for $experiment...");
Util::execute_query( $experiment, $query,
$remote_db_conf, $remote_builds_dir, 1 );
}
}
# Run experiments