separate client/server logs + move logs to experiment dir
This commit is contained in:
@ -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");
|
||||||
|
|||||||
Reference in New Issue
Block a user