add curses entry point for scripts (archival, ghidra import, plots, queries, cleanup)

This commit is contained in:
2026-04-20 00:16:27 +02:00
parent 9c7933e912
commit 5b316bbd64
16 changed files with 622 additions and 349 deletions

29
scripts/Queries/Faults.pm Normal file
View File

@ -0,0 +1,29 @@
package Queries::Faults;
use strict;
use warnings;
use diagnostics;
sub query {
my ($experiment) = @_;
return "SELECT
benchmark, resulttype, SUM(t.time2 - t.time1 + 1) AS faults,
CONCAT('0x', HEX(p.injection_instr_absolute)) AS fault_address
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 benchmark, resulttype, p.injection_instr_absolute
ORDER BY benchmark, resulttype, SUM(t.time2 - t.time1 + 1) DESC;"
}
sub args { return "--batch --raw"; }
sub filename { return "faults.csv"; }
sub postprocess { $_[0] =~ s/\t/,/g; }
1;

View File

@ -1,30 +0,0 @@
package Queries::FaultsDetected;
use strict;
use warnings;
use diagnostics;
sub query {
my ($experiment) = @_;
my $resulttype = 'DETECTED_MARKER';
return
"SELECT CONCAT('0x', HEX(p.injection_instr_absolute)) AS fault_address, SUM(t.time2 - t.time1 + 1) AS total_results
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 = '$resulttype'
GROUP BY p.injection_instr_absolute
ORDER BY SUM(t.time2 - t.time1 + 1) DESC;"
}
sub args { return "--batch --raw"; }
sub filename { return "faults_detected.csv"; }
sub postprocess { $_[0] =~ s/\t/,/g; }
1;

View File

@ -1,30 +0,0 @@
package Queries::FaultsFailed;
use strict;
use warnings;
use diagnostics;
sub query {
my ($experiment) = @_;
my $resulttype = 'FAIL_MARKER';
return
"SELECT CONCAT('0x', HEX(p.injection_instr_absolute)) AS fault_address, SUM(t.time2 - t.time1 + 1) AS total_results
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 = '$resulttype'
GROUP BY p.injection_instr_absolute
ORDER BY SUM(t.time2 - t.time1 + 1) DESC;"
}
sub args { return "--batch --raw"; }
sub filename { return "faults_failed.csv"; }
sub postprocess { $_[0] =~ s/\t/,/g; }
1;

View File

@ -1,30 +0,0 @@
package Queries::FaultsOuterspace;
use strict;
use warnings;
use diagnostics;
sub query {
my ($experiment) = @_;
my $resulttype = 'ACCESS_OUTERSPACE';
return
"SELECT CONCAT('0x', HEX(p.injection_instr_absolute)) AS fault_address, SUM(t.time2 - t.time1 + 1) AS total_results
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 = '$resulttype'
GROUP BY p.injection_instr_absolute
ORDER BY SUM(t.time2 - t.time1 + 1) DESC;"
}
sub args { return "--batch --raw"; }
sub filename { return "faults_outerspace.csv"; }
sub postprocess { $_[0] =~ s/\t/,/g; }
1;

View File

@ -1,30 +0,0 @@
package Queries::FaultsTimeout;
use strict;
use warnings;
use diagnostics;
sub query {
my ($experiment) = @_;
my $resulttype = 'TIMEOUT';
return
"SELECT CONCAT('0x', HEX(p.injection_instr_absolute)) AS fault_address, SUM(t.time2 - t.time1 + 1) AS total_results
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 = '$resulttype'
GROUP BY p.injection_instr_absolute
ORDER BY SUM(t.time2 - t.time1 + 1) DESC;"
}
sub args { return "--batch --raw"; }
sub filename { return "faults_timeout.csv"; }
sub postprocess { $_[0] =~ s/\t/,/g; }
1;

View File

@ -1,30 +0,0 @@
package Queries::FaultsTrap;
use strict;
use warnings;
use diagnostics;
sub query {
my ($experiment) = @_;
my $resulttype = 'TRAP';
return
"SELECT CONCAT('0x', HEX(p.injection_instr_absolute)) AS fault_address, SUM(t.time2 - t.time1 + 1) AS total_results
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 = '$resulttype'
GROUP BY p.injection_instr_absolute
ORDER BY SUM(t.time2 - t.time1 + 1) DESC;"
}
sub args { return "--batch --raw"; }
sub filename { return "faults_trap.csv"; }
sub postprocess { $_[0] =~ s/\t/,/g; }
1;

View File

@ -7,8 +7,8 @@ use diagnostics;
sub query {
my ($experiment) = @_;
return
"SELECT variant, benchmark, resulttype, sum(t.time2 - t.time1 + 1) AS faults
return "SELECT
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

View File

@ -0,0 +1,28 @@
package Queries::ResultsData;
use strict;
use warnings;
use diagnostics;
sub query {
my ($experiment) = @_;
return "SELECT
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;";
}
sub args { return "--batch --raw"; }
sub filename { return "resultsdata.csv"; }
sub postprocess { $_[0] =~ s/\t/,/g; }
1;