mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-09 18:30:16 +00:00
PerconaTest: Split slurp_file out of load_file, also changes to no_diff.
The no_diff changes introduce two new transformation options, and also add a diag with the diff if there was one.
This commit is contained in:
@@ -51,6 +51,7 @@ our @EXPORT = qw(
|
|||||||
full_output
|
full_output
|
||||||
load_data
|
load_data
|
||||||
load_file
|
load_file
|
||||||
|
slurp_file
|
||||||
parse_file
|
parse_file
|
||||||
wait_until
|
wait_until
|
||||||
wait_for
|
wait_for
|
||||||
@@ -191,10 +192,16 @@ sub load_data {
|
|||||||
sub load_file {
|
sub load_file {
|
||||||
my ( $file, %args ) = @_;
|
my ( $file, %args ) = @_;
|
||||||
$file = "$trunk/$file";
|
$file = "$trunk/$file";
|
||||||
|
my $contents = slurp_file($file);
|
||||||
|
chomp $contents if $args{chomp_contents};
|
||||||
|
return $contents;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub slurp_file {
|
||||||
|
my ($file) = @_;
|
||||||
open my $fh, "<", $file or die "Cannot open $file: $OS_ERROR";
|
open my $fh, "<", $file or die "Cannot open $file: $OS_ERROR";
|
||||||
my $contents = do { local $/ = undef; <$fh> };
|
my $contents = do { local $/ = undef; <$fh> };
|
||||||
close $fh;
|
close $fh;
|
||||||
chomp $contents if $args{chomp_contents};
|
|
||||||
return $contents;
|
return $contents;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -515,6 +522,11 @@ sub test_packet_parser {
|
|||||||
# * args hash: (optional) may include
|
# * args hash: (optional) may include
|
||||||
# update_sample overwrite expected_output with cmd/code output
|
# update_sample overwrite expected_output with cmd/code output
|
||||||
# keep_output keep last cmd/code output file
|
# keep_output keep last cmd/code output file
|
||||||
|
# transform_result transform the code to be compared but do not
|
||||||
|
# reflect these changes on the original file
|
||||||
|
# if update_sample is passed in
|
||||||
|
# transform_sample similar to the above, but with the sample
|
||||||
|
# file
|
||||||
# * trf transform cmd/code output before diff
|
# * trf transform cmd/code output before diff
|
||||||
# The sub dies if cmd or code dies. STDERR is not captured.
|
# The sub dies if cmd or code dies. STDERR is not captured.
|
||||||
sub no_diff {
|
sub no_diff {
|
||||||
@@ -567,14 +579,34 @@ sub no_diff {
|
|||||||
`mv $tmp_file-2 $tmp_file`;
|
`mv $tmp_file-2 $tmp_file`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $res_file = $tmp_file;
|
||||||
|
if ( $args{transform_result} ) {
|
||||||
|
(undef, $res_file) = tempfile();
|
||||||
|
output(
|
||||||
|
sub { $args{transform_result}->($tmp_file) },
|
||||||
|
file => $res_file,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
my $cmp_file = $expected_output;
|
||||||
|
if ( $args{transform_sample} ) {
|
||||||
|
(undef, $cmp_file) = tempfile();
|
||||||
|
output(
|
||||||
|
sub { $args{transform_sample}->($expected_output) },
|
||||||
|
file => $cmp_file,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
# diff the outputs.
|
# diff the outputs.
|
||||||
my $retval = system("diff $tmp_file $expected_output");
|
my $out = `diff $res_file $cmp_file`;
|
||||||
|
my $retval = $?;
|
||||||
|
|
||||||
# diff returns 0 if there were no differences,
|
# diff returns 0 if there were no differences,
|
||||||
# so !0 = 1 = no diff in our testing parlance.
|
# so !0 = 1 = no diff in our testing parlance.
|
||||||
$retval = $retval >> 8;
|
$retval = $retval >> 8;
|
||||||
|
|
||||||
if ( $retval ) {
|
if ( $retval ) {
|
||||||
|
diag($out);
|
||||||
if ( $ENV{UPDATE_SAMPLES} || $args{update_sample} ) {
|
if ( $ENV{UPDATE_SAMPLES} || $args{update_sample} ) {
|
||||||
`cat $tmp_file > $expected_output`;
|
`cat $tmp_file > $expected_output`;
|
||||||
print STDERR "Updated $expected_output\n";
|
print STDERR "Updated $expected_output\n";
|
||||||
@@ -585,6 +617,9 @@ sub no_diff {
|
|||||||
`rm -f $tmp_file $tmp_file_orig /tmp/pt-test-outfile-trf >/dev/null 2>&1`
|
`rm -f $tmp_file $tmp_file_orig /tmp/pt-test-outfile-trf >/dev/null 2>&1`
|
||||||
unless $ENV{KEEP_OUTPUT} || $args{keep_output};
|
unless $ENV{KEEP_OUTPUT} || $args{keep_output};
|
||||||
|
|
||||||
|
1 while unlink $res_file;
|
||||||
|
1 while unlink $cmp_file;
|
||||||
|
|
||||||
return !$retval;
|
return !$retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user