separate client/server logs + move logs to experiment dir

This commit is contained in:
Christoph Urlacher
2026-05-04 13:32:04 +02:00
parent 2de6e20675
commit 10fe608a90

View File

@ -136,7 +136,7 @@ sub import_trace {
"-v $experiment", "-v $experiment",
"-b ip", "-b ip",
"--objdump objdump", "--objdump objdump",
"--sources", # "--sources",
) )
); );
system( system(
@ -150,7 +150,7 @@ sub import_trace {
"-v $experiment", "-v $experiment",
"-b mem", "-b mem",
"--objdump objdump", "--objdump objdump",
"--sources", # "--sources",
) )
); );
system( system(
@ -164,7 +164,7 @@ sub import_trace {
"-v $experiment", "-v $experiment",
"-b regs", "-b regs",
"--objdump objdump", "--objdump objdump",
"--sources", # "--sources",
) )
); );
@ -186,6 +186,41 @@ sub inject {
Util::notify("Injecting $experiment using $count cores..."); Util::notify("Injecting $experiment using $count cores...");
my $server_command = join " ", (
"$fail_server",
"--port $fail_server_port",
"--database-option-file $remote_db_conf",
"-v $experiment",
"-b %",
"--inject-single-bit",
"--inject-registers",
">$remote_root/server.log"
);
say "Server command: $server_command";
my $client_command = join " ", (
"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,--catch-write-textsegment",
"-Wf,--timeout=500000",
"-Wf,--ok-marker=fail_marker_positive",
"-Wf,--fail-marker=fail_marker_negative",
"-Wf,--detected-marker=fail_marker_detected",
# ">/dev/null"
">$remote_root/client.log"
);
say "Client command: $client_command";
say "Forking..."; say "Forking...";
my $pid = fork(); my $pid = fork();
die "fork failed: $!" unless defined $pid; die "fork failed: $!" unless defined $pid;
@ -193,52 +228,16 @@ sub inject {
if ( $pid == 0 ) { if ( $pid == 0 ) {
# child -> server # child -> server
say "Running server in child process..."; say "Running server in child process...";
exec( exec($server_command) == 0 or die "exec server failed: $!";
join " ",
(
"$fail_server",
"--port $fail_server_port",
"--database-option-file $remote_db_conf",
"-v $experiment",
"-b %",
"--inject-single-bit",
"--inject-registers"
)
) == 0 or die "exec server failed: $!";
} }
# parent -> client # parent -> client
say "Waiting for server..."; say "Waiting for server...";
sleep(10); sleep(10);
say "Running client with $count cores in parent process"; say "Running client with $count cores in parent process";
system($client_command) == 0 or die "client failed: $?";
system(
join " ",
(
"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,--catch-write-textsegment",
"-Wf,--timeout=500000",
"-Wf,--ok-marker=fail_marker_positive",
"-Wf,--fail-marker=fail_marker_negative",
"-Wf,--detected-marker=fail_marker_detected",
">/dev/null"
)
) == 0 or die "client failed: $?";
say "Killing server with pid $pid..."; say "Killing server with pid $pid...";
kill 'TERM', $pid; kill 'TERM', $pid;
@ -261,6 +260,10 @@ sub results {
} }
} }
system("rm $remote_root/runner.log");
system("rm $remote_root/server.log");
system("rm $remote_root/client.log");
# Run experiments # Run experiments
my @experiments = Util::find_subdirs($remote_builds_dir); my @experiments = Util::find_subdirs($remote_builds_dir);
for my $experiment (@experiments) { for my $experiment (@experiments) {
@ -271,6 +274,10 @@ for my $experiment (@experiments) {
import_trace($experiment); import_trace($experiment);
inject($experiment); inject($experiment);
results($experiment); results($experiment);
system("mv $remote_root/runner.log $remote_builds_dir/$experiment/runner.log");
system("mv $remote_root/server.log $remote_builds_dir/$experiment/server.log");
system("mv $remote_root/client.log $remote_builds_dir/$experiment/client.log");
} }
Util::notify("Finished all experiments"); Util::notify("Finished all experiments");