send injection results as ntfy attachements
This commit is contained in:
@ -38,6 +38,16 @@ sub notify {
|
|||||||
"-d", $msg, "$ntfy_url/$ntfy_topic" );
|
"-d", $msg, "$ntfy_url/$ntfy_topic" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub notify_file {
|
||||||
|
my ($file) = @_;
|
||||||
|
|
||||||
|
system(
|
||||||
|
"curl", "-H", "Authorization: Bearer $ntfy_token",
|
||||||
|
"-T", $file, "-H", "Filename: $file",
|
||||||
|
"$ntfy_url/$ntfy_topic"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
sub update_db_config {
|
sub update_db_config {
|
||||||
my ($experiment) = @_;
|
my ($experiment) = @_;
|
||||||
|
|
||||||
@ -125,7 +135,10 @@ sub import_trace {
|
|||||||
sub inject {
|
sub inject {
|
||||||
my ($experiment) = @_;
|
my ($experiment) = @_;
|
||||||
|
|
||||||
notify("Injecting $experiment...");
|
# my $count = 1;
|
||||||
|
my $count = cpu_count();
|
||||||
|
|
||||||
|
notify("Injecting $experiment using $count cores...");
|
||||||
|
|
||||||
my $pid = fork();
|
my $pid = fork();
|
||||||
die "fork failed: $!" unless defined $pid;
|
die "fork failed: $!" unless defined $pid;
|
||||||
@ -139,9 +152,6 @@ sub inject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# parent -> client
|
# parent -> client
|
||||||
# my $count = 1;
|
|
||||||
my $count = cpu_count();
|
|
||||||
|
|
||||||
# "-Wf,--catch-write-textsegment",
|
# "-Wf,--catch-write-textsegment",
|
||||||
system(
|
system(
|
||||||
"nice $bochs_runner -V $fail_share/vgabios.bin -b $fail_share/BIOS-bochs-latest -f $fail_inject -e $remote_builds_dir/$experiment/system.elf -i $remote_builds_dir/$experiment/system.iso -j $count -- -Wf,--server-port=$fail_server_port -Wf,--state-dir=$remote_builds_dir/$experiment/state -Wf,--trap -Wf,--catch-outerspace -Wf,--timeout=500000 -Wf,--ok-marker=fail_marker_positive -Wf,--fail-marker=fail_marker_negative -Wf,--detected-marker=fail_marker_detected > /dev/null"
|
"nice $bochs_runner -V $fail_share/vgabios.bin -b $fail_share/BIOS-bochs-latest -f $fail_inject -e $remote_builds_dir/$experiment/system.elf -i $remote_builds_dir/$experiment/system.iso -j $count -- -Wf,--server-port=$fail_server_port -Wf,--state-dir=$remote_builds_dir/$experiment/state -Wf,--trap -Wf,--catch-outerspace -Wf,--timeout=500000 -Wf,--ok-marker=fail_marker_positive -Wf,--fail-marker=fail_marker_negative -Wf,--detected-marker=fail_marker_detected > /dev/null"
|
||||||
@ -153,7 +163,20 @@ sub inject {
|
|||||||
# notify("Injecting $experiment complete.");
|
# notify("Injecting $experiment complete.");
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO: Add a function that accepts query + output file args
|
sub query {
|
||||||
|
my ( $experiment, $query, $args, $file ) = @_;
|
||||||
|
|
||||||
|
my $result = qx{mariadb --defaults-file=$remote_db_conf $args -e "$query"};
|
||||||
|
die "Query failed: $?" if $? != 0;
|
||||||
|
|
||||||
|
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 {
|
sub results {
|
||||||
my ($experiment) = @_;
|
my ($experiment) = @_;
|
||||||
|
|
||||||
@ -170,16 +193,20 @@ WHERE v.variant = '$experiment'
|
|||||||
GROUP BY v.id, resulttype
|
GROUP BY v.id, resulttype
|
||||||
ORDER BY variant, benchmark, resulttype;";
|
ORDER BY variant, benchmark, resulttype;";
|
||||||
|
|
||||||
my $results_overview = qx{
|
query( $experiment, $results_overview_query, "-t", "results.txt" );
|
||||||
mariadb --defaults-file=$remote_db_conf -t -e "$results_overview_query"
|
|
||||||
};
|
|
||||||
die "Query failed: $?" if $? != 0;
|
|
||||||
|
|
||||||
open( my $results_overview_handle,
|
# my $results_overview = qx{
|
||||||
'>', "$remote_builds_dir/$experiment/results.txt" )
|
# mariadb --defaults-file=$remote_db_conf -t -e "$results_overview_query"
|
||||||
or die "failed to open file: $!";
|
# };
|
||||||
print $results_overview_handle $results_overview;
|
# die "Query failed: $?" if $? != 0;
|
||||||
close($results_overview_handle) or die "failed to close file: $!";
|
#
|
||||||
|
# open( my $results_overview_handle,
|
||||||
|
# '>', "$remote_builds_dir/$experiment/results.txt" )
|
||||||
|
# or die "failed to open file: $!";
|
||||||
|
# print $results_overview_handle $results_overview;
|
||||||
|
# close($results_overview_handle) or die "failed to close file: $!";
|
||||||
|
#
|
||||||
|
# notify_file("$remote_builds_dir/$experiment/results.txt");
|
||||||
|
|
||||||
my $fail_markers_query = "SELECT
|
my $fail_markers_query = "SELECT
|
||||||
CONCAT('0x', HEX(p.injection_instr_absolute)) AS fault_address,
|
CONCAT('0x', HEX(p.injection_instr_absolute)) AS fault_address,
|
||||||
@ -193,17 +220,21 @@ WHERE v.variant = '$experiment' AND r.resulttype = 'FAIL_MARKER'
|
|||||||
GROUP BY p.injection_instr_absolute
|
GROUP BY p.injection_instr_absolute
|
||||||
ORDER BY SUM(t.time2 - t.time1 + 1) DESC;";
|
ORDER BY SUM(t.time2 - t.time1 + 1) DESC;";
|
||||||
|
|
||||||
my $fail_markers = qx{
|
query( $experiment, $fail_markers_query, "--batch --raw", "markers.csv" );
|
||||||
mariadb --defaults-file=$remote_db_conf --batch --raw -e "$fail_markers_query"
|
|
||||||
};
|
|
||||||
die "Query failed: $?" if $? != 0;
|
|
||||||
$fail_markers =~ s/\t/,/g;
|
|
||||||
|
|
||||||
open( my $fail_markers_handle,
|
# my $fail_markers = qx{
|
||||||
'>', "$remote_builds_dir/$experiment/markers.csv" )
|
# mariadb --defaults-file=$remote_db_conf --batch --raw -e "$fail_markers_query"
|
||||||
or die "failed to open file: $!";
|
# };
|
||||||
print $fail_markers_handle $fail_markers;
|
# die "Query failed: $?" if $? != 0;
|
||||||
close($fail_markers_handle) or die "failed to close file: $!";
|
# $fail_markers =~ s/\t/,/g;
|
||||||
|
#
|
||||||
|
# open( my $fail_markers_handle,
|
||||||
|
# '>', "$remote_builds_dir/$experiment/markers.csv" )
|
||||||
|
# or die "failed to open file: $!";
|
||||||
|
# print $fail_markers_handle $fail_markers;
|
||||||
|
# close($fail_markers_handle) or die "failed to close file: $!";
|
||||||
|
#
|
||||||
|
# notify_file("$remote_builds_dir/$experiment/markers.csv");
|
||||||
}
|
}
|
||||||
|
|
||||||
# Run experiments
|
# Run experiments
|
||||||
|
|||||||
Reference in New Issue
Block a user