Files
percona-toolkit/t/lib/TextResultSetParser.t

205 lines
4.9 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 => 13;
use TextResultSetParser;
use PerconaTest;
use Data::Dumper;
$Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys = 1;
$Data::Dumper::Quotekeys = 0;
my $r = new TextResultSetParser();
isa_ok($r, 'TextResultSetParser');
throws_ok(
sub { $r->parse(load_file('t/lib/samples/slowlogs/slow002.txt')) },
qr/Cannot determine if text is/,
"Dies if output type cannot be determined"
);
is_deeply(
$r->parse( load_file('t/lib/samples/pl/recset001.txt') ),
[
{
Time => '0',
Command => 'Query',
db => '',
Id => '9',
Info => 'show processlist',
User => 'msandbox',
State => '',
Host => 'localhost'
},
],
'Basic tablular processlist'
);
is_deeply(
$r->parse( load_file('t/lib/samples/pl/recset002.txt') ),
[
{
Time => '4',
Command => 'Query',
db => 'foo',
Id => '1',
Info => 'select * from foo1;',
User => 'user1',
State => 'Locked',
Host => '1.2.3.4:3333'
},
{
Time => '5',
Command => 'Query',
db => 'foo',
Id => '2',
Info => 'select * from foo2;',
User => 'user1',
State => 'Locked',
Host => '1.2.3.4:5455'
},
],
'2 row vertical processlist'
);
my $recset = $r->parse ( load_file('t/lib/samples/pl/recset003.txt') );
cmp_ok(
scalar @$recset,
'==',
113,
'113 row vertical processlist'
);
$recset = $r->parse( load_file('t/lib/samples/pl/recset004.txt') );
cmp_ok(
scalar @$recset,
'==',
51,
'51 row vertical processlist'
);
is_deeply(
$r->parse( load_file('t/lib/samples/pl/recset005.txt') ),
[
{
Id => '29392005',
User => 'remote',
Host => '1.2.3.148:49718',
db => 'happy',
Command => 'Sleep',
Time => '17',
State => undef,
Info => undef,
}
],
'1 vertical row, No State value'
);
is_deeply(
$r->parse( load_file('t/lib/samples/pl/recset009.txt') ),
[
{
Id => '21',
User => 'msandbox',
Host => 'localhost:54732',
db => undef,
Command => 'Binlog Dump',
Time => '3081',
State => 'Has sent all binlog to slave; waiting for binlog to be updated',
Info => undef,
},
{
Id => '41',
User => 'msandbox',
Host => 'localhost',
db => undef,
Command => 'Query',
Time => '0',
State => undef,
Info => 'show full processlist',
}
],
'Horizontal, tab-separated'
);
$recset = $r->parse(load_file('t/lib/samples/show-variables/vars001.txt'));
# Should only get the var once.
my $got_var = grep { $_->{Variable_name} eq 'warning_count' } @$recset;
is(
$got_var,
1,
"vars001.txt"
);
$recset = $r->parse(load_file('t/lib/samples/show-variables/vars002.txt'));
$got_var = grep { $_->{Variable_name} eq 'warning_count' } @$recset;
is(
$got_var,
1,
"vars002.txt"
);
# #############################################################################
# Parse with NAME_lc for lowercase key/col names.
# #############################################################################
$r = new TextResultSetParser(NAME_lc => 1);
$recset = $r->parse(load_file('t/lib/samples/show-variables/vars001.txt'));
$got_var = grep { $_->{variable_name} eq 'warning_count' } @$recset;
is(
$got_var,
1,
"NAME_lc tabular"
);
$recset = $r->parse(load_file('t/lib/samples/show-variables/vars002.txt'));
$got_var = grep { $_->{variable_name} eq 'warning_count' } @$recset;
is(
$got_var,
1,
"NAME_lc tab-separated"
);
is_deeply(
$r->parse( load_file('t/lib/samples/pl/recset002.txt') ),
[
{
time => '4',
command => 'Query',
db => 'foo',
id => '1',
info => 'select * from foo1;',
user => 'user1',
state => 'Locked',
host => '1.2.3.4:3333'
},
{
time => '5',
command => 'Query',
db => 'foo',
id => '2',
info => 'select * from foo2;',
user => 'user1',
state => 'Locked',
host => '1.2.3.4:5455'
},
],
"NAME_lc vertical"
);
# #############################################################################
# Done.
# #############################################################################
exit;