separate client/server logs + move logs to experiment dir
This commit is contained in:
@ -136,7 +136,7 @@ sub import_trace {
|
||||
"-v $experiment",
|
||||
"-b ip",
|
||||
"--objdump objdump",
|
||||
"--sources",
|
||||
# "--sources",
|
||||
)
|
||||
);
|
||||
system(
|
||||
@ -150,7 +150,7 @@ sub import_trace {
|
||||
"-v $experiment",
|
||||
"-b mem",
|
||||
"--objdump objdump",
|
||||
"--sources",
|
||||
# "--sources",
|
||||
)
|
||||
);
|
||||
system(
|
||||
@ -164,7 +164,7 @@ sub import_trace {
|
||||
"-v $experiment",
|
||||
"-b regs",
|
||||
"--objdump objdump",
|
||||
"--sources",
|
||||
# "--sources",
|
||||
)
|
||||
);
|
||||
|
||||
@ -186,6 +186,41 @@ sub inject {
|
||||
|
||||
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...";
|
||||
my $pid = fork();
|
||||
die "fork failed: $!" unless defined $pid;
|
||||
@ -193,52 +228,16 @@ sub inject {
|
||||
if ( $pid == 0 ) {
|
||||
|
||||
# child -> server
|
||||
|
||||
say "Running server in child process...";
|
||||
exec(
|
||||
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: $!";
|
||||
exec($server_command) == 0 or die "exec server failed: $!";
|
||||
}
|
||||
|
||||
# parent -> client
|
||||
|
||||
say "Waiting for server...";
|
||||
sleep(10);
|
||||
|
||||
say "Running client with $count cores in parent process";
|
||||
|
||||
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: $?";
|
||||
system($client_command) == 0 or die "client failed: $?";
|
||||
|
||||
say "Killing server with pid $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
|
||||
my @experiments = Util::find_subdirs($remote_builds_dir);
|
||||
for my $experiment (@experiments) {
|
||||
@ -271,6 +274,10 @@ for my $experiment (@experiments) {
|
||||
import_trace($experiment);
|
||||
inject($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");
|
||||
|
||||
Reference in New Issue
Block a user