Generate query and results and charts in separate directory

This commit is contained in:
2026-09-15 17:38:52 +02:00
parent 428d36e529
commit c5ec776d87
4 changed files with 88 additions and 48 deletions
+25 -12
View File
@@ -17,6 +17,7 @@ use feature 'say';
my $local_root = '/home/christoph/Notes/TU/MastersThesis/FailNix';
my $local_archive_dir = "$local_root/injections";
my $local_queries_dir = "$local_root/queries";
my $ntfy_url = 'https://ntfy.vps.chriphost.de';
my $ntfy_token = 'tk_rx8fd6hojuz4ekcb72j7juugkbmga'; # May be public
@@ -133,8 +134,8 @@ sub find_subdirs {
}
sub execute_query {
my ( $experiment, $queryname, $db_conf, $builds_dir, $do_notify_file,
@filter_config_names )
my ( $experiment, $queryname, $db_conf, $experiment_dir, $output_dir,
$output_prefix, $do_notify_file, @filter_config_names )
= @_;
my $module = "$queryname";
@@ -150,7 +151,7 @@ sub execute_query {
or die "$module can't postprocess()";
my $querystring =
$query->( $experiment, "$builds_dir/$experiment", @filter_config_names );
$query->( $experiment, $experiment_dir, @filter_config_names );
my $argsstring = $args->();
my $filenamestring = $filename->(@filter_config_names);
@@ -162,14 +163,16 @@ sub execute_query {
$postprocess->($result);
system( 'mkdir', '-p', "$builds_dir/$experiment" );
open( my $results_handle, '>', "$builds_dir/$experiment/$filenamestring" )
my $resultfile = "$output_dir/${output_prefix}${filenamestring}";
system( 'mkdir', '-p', $output_dir );
open( my $results_handle, '>', $resultfile )
or die "failed to open file: $!";
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");
notify_file($resultfile);
}
return $result;
@@ -359,21 +362,31 @@ sub delete_marker_info {
"$local_archive_dir/$experiment/markers/$benchmark-$address.info" );
}
sub pick_data_file {
my ( $dir, $prefix ) = @_;
sub pick_query_file {
my ( $experiment, $prefix ) = @_;
die "No query directory $local_queries_dir\n"
unless -d $local_queries_dir;
# \Q...\E treats ... as literal string
my @files = sort grep { /^\Q$prefix\E.*\.csv$/ } find_files($dir);
my @files =
sort grep { /^\Q${experiment}_\E\Q$prefix\E.*\.csv$/ }
find_files($local_queries_dir);
die "No $prefix CSV files found in $dir\n" unless @files;
return $files[0] if @files == 1;
die "No $prefix CSV files found for $experiment in $local_queries_dir\n"
unless @files;
# Strip the experiment prefix
my @names = map { s/^\Q${experiment}_\E//r } @files;
return $names[0] if @names == 1;
# Make sure the unfiltered file is at the top
my @sorted = sort {
( $a eq "$prefix.csv" ) ? -1
: ( $b eq "$prefix.csv" ) ? 1
: $a cmp $b
} @files;
} @names;
my @selected =
TUI::select_from_list( "Select $prefix CSV file", 0, @sorted );