mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-01 18:25:59 +00:00
101 lines
2.7 KiB
Perl
101 lines
2.7 KiB
Perl
#!/usr/bin/perl
|
|
|
|
BEGIN {
|
|
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
|
|
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
|
|
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
|
|
};
|
|
|
|
use strict;
|
|
use warnings FATAL => 'all';
|
|
use English qw(-no_match_vars);
|
|
use Test::More tests => 4;
|
|
|
|
use SlowLogParser;
|
|
use SlowLogWriter;
|
|
use PerconaTest;
|
|
|
|
my $p = new SlowLogParser;
|
|
my $w = new SlowLogWriter;
|
|
|
|
sub __no_diff {
|
|
my ( $filename, $expected ) = @_;
|
|
|
|
# Parse and rewrite the original file.
|
|
my $tmp_file = '/tmp/SlowLogWriter-test.txt';
|
|
open my $rewritten_fh, '>', $tmp_file
|
|
or die "Cannot write to $tmp_file: $OS_ERROR";
|
|
open my $fh, "<", "$trunk/$filename"
|
|
or die "Cannot open $trunk/$filename: $OS_ERROR";
|
|
my %args = (
|
|
next_event => sub { return <$fh>; },
|
|
tell => sub { return tell $fh; },
|
|
);
|
|
while ( my $e = $p->parse_event(%args) ) {
|
|
$w->write($rewritten_fh, $e);
|
|
}
|
|
close $fh;
|
|
close $rewritten_fh;
|
|
|
|
# Compare the contents of the two files.
|
|
my $retval = system("diff $tmp_file $trunk/$expected");
|
|
`rm -rf $tmp_file`;
|
|
$retval = $retval >> 8;
|
|
return !$retval;
|
|
}
|
|
|
|
sub write_event {
|
|
my ( $event, $expected_output ) = @_;
|
|
my $tmp_file = '/tmp/SlowLogWriter-output.txt';
|
|
open my $fh, '>', $tmp_file or die "Cannot open $tmp_file: $OS_ERROR";
|
|
$w->write($fh, $event);
|
|
close $fh;
|
|
my $retval = system("diff $tmp_file $trunk/$expected_output");
|
|
`rm -rf $tmp_file`;
|
|
$retval = $retval >> 8;
|
|
return !$retval;
|
|
}
|
|
|
|
# Check that I can write a slow log in the default slow log format.
|
|
ok(
|
|
__no_diff('t/lib/samples/slowlogs/slow001.txt', 't/lib/samples/slowlogs/slow001-rewritten.txt'),
|
|
'slow001.txt rewritten'
|
|
);
|
|
|
|
# Test writing a Percona-patched slow log with Thread_id and hi-res Query_time.
|
|
ok(
|
|
__no_diff('t/lib/samples/slowlogs/slow032.txt', 't/lib/samples/slowlogs/slow032-rewritten.txt'),
|
|
'slow032.txt rewritten'
|
|
);
|
|
|
|
ok(
|
|
write_event(
|
|
{
|
|
Query_time => '1',
|
|
arg => 'select * from foo',
|
|
ip => '127.0.0.1',
|
|
port => '12345',
|
|
},
|
|
't/lib/samples/slowlogs/slowlogwriter001.txt',
|
|
),
|
|
'Writes Client attrib from tcpdump',
|
|
);
|
|
|
|
ok(
|
|
write_event(
|
|
{
|
|
Query_time => '1.123456',
|
|
Lock_time => '0.000001',
|
|
arg => 'select * from foo',
|
|
},
|
|
't/lib/samples/slowlogs/slowlogwriter002.txt',
|
|
),
|
|
'Writes microsecond times'
|
|
);
|
|
|
|
# #############################################################################
|
|
# Done.
|
|
# #############################################################################
|
|
diag(`rm -rf SlowLogWriter-test.txt >/dev/null 2>&1`);
|
|
exit;
|