
For now, printing of Sun RPC requests is disabled because we do not yet have the RPC header files. This should affect basically noone, as we do not have any RPC-based programs yet, for the same reason. Change-Id: Ie7818faaaacdc104d8b2c37a68866b4ce18247d6
69 lines
1.8 KiB
Perl
Executable File
69 lines
1.8 KiB
Perl
Executable File
#!/usr/bin/env perl
|
|
|
|
system("mkdir -p NEW DIFF");
|
|
|
|
if(@ARGV != 4) {
|
|
print "Usage: TESTonce name input output options\n";
|
|
exit 20;
|
|
}
|
|
|
|
$name=$ARGV[0];
|
|
$input=$ARGV[1];
|
|
$output=$ARGV[2];
|
|
$options=$ARGV[3];
|
|
|
|
my $r;
|
|
|
|
if ($^O eq 'MSWin32') {
|
|
$r = system "..\\windump -n -r $input $options 2>NUL | sed 's/\\r//' | tee NEW/$output | diff $output - >DIFF/$output.diff";
|
|
# need to do same as below for Cygwin.
|
|
}
|
|
else {
|
|
# we used to do this as a nice pipeline, but the problem is that $r fails to
|
|
# to be set properly if the tcpdump core dumps.
|
|
$r = system "../tcpdump 2>/dev/null -n -r $input $options >NEW/$output";
|
|
if($r == 0x100) {
|
|
# this means tcpdump exited with code 1.
|
|
open(OUTPUT, ">>"."NEW/$output") || die "fail to open $output\n";
|
|
printf OUTPUT "EXIT CODE %08x\n", $r;
|
|
close(OUTPUT);
|
|
$r = 0;
|
|
}
|
|
if($r == 0) {
|
|
$r = system "cat NEW/$output | diff $output - >DIFF/$output.diff";
|
|
}
|
|
#print sprintf("END: %08x\n", $r);
|
|
}
|
|
|
|
if($r == 0) {
|
|
printf " %-30s: passed\n", $name;
|
|
unlink "DIFF/$output.diff";
|
|
exit 0;
|
|
}
|
|
printf " %-30s: TEST FAILED", $name;
|
|
open FOUT, '>>failure-outputs.txt';
|
|
printf FOUT "Failed test: $name\n\n";
|
|
close FOUT;
|
|
if(-f "DIFF/$output.diff") {
|
|
system "cat DIFF/$output.diff >> failure-outputs.txt";
|
|
}
|
|
|
|
if($r == -1) {
|
|
print " (failed to execute: $!)\n";
|
|
exit 30;
|
|
}
|
|
|
|
# this is not working right, $r == 0x8b00 when there is a core dump.
|
|
# clearly, we need some platform specific perl magic to take this apart, so look for "core"
|
|
# too.
|
|
if($r & 127 || -f "core") {
|
|
my $with = ($r & 128) ? 'with' : 'without';
|
|
if(-f "core") {
|
|
$with = "with";
|
|
}
|
|
printf " (terminated with signal %u, %s coredump)\n", ($r & 127), $with;
|
|
exit ($r & 128) ? 10 : 20;
|
|
}
|
|
print "\n";
|
|
exit $r >> 8;
|