diff --git a/scripts/Util.pm b/scripts/Util.pm index 217fe66..f982ae3 100644 --- a/scripts/Util.pm +++ b/scripts/Util.pm @@ -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: $!"; - notify_file("$builds_dir/$experiment/$filenamestring"); + if ( defined $do_notify_file and $do_notify_file == 1 ) { + notify_file("$builds_dir/$experiment/$filenamestring"); + } return $result; } diff --git a/scripts/runner.pl b/scripts/runner.pl index 1720cab..f11b6c5 100644 --- a/scripts/runner.pl +++ b/scripts/runner.pl @@ -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