mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-02 02:34:19 +00:00
205 lines
4.9 KiB
Perl
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;
|