~percona-toolkit-dev/percona-toolkit/mysql-5.6-test-fixes

« back to all changes in this revision

Viewing changes to t/pt-query-digest/run_time.t

  • Committer: Daniel Nichter
  • Date: 2011-06-24 22:02:05 UTC
  • Revision ID: daniel@percona.com-20110624220205-e779cao9hcwyly1w
Add forked Maatkit tools in bin/ and their tests in t/.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env perl
 
2
 
 
3
BEGIN {
 
4
   die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
 
5
      unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
 
6
   unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
 
7
};
 
8
 
 
9
use strict;
 
10
use warnings FATAL => 'all';
 
11
use English qw(-no_match_vars);
 
12
use Test::More;
 
13
 
 
14
use MaatkitTest;
 
15
use Sandbox;
 
16
use Time::HiRes qw(sleep);
 
17
shift @INC;  # our unshift (above)
 
18
shift @INC;  # MaatkitTest's unshift
 
19
shift @INC;  # Sandbox's unshift
 
20
require "$trunk/bin/pt-query-digest";
 
21
 
 
22
my $dp = new DSNParser(opts=>$dsn_opts);
 
23
my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp);
 
24
my $dbh = $sb->get_dbh_for('master');
 
25
 
 
26
if ( !$dbh ) {
 
27
   plan skip_all => 'Cannot connect to sandbox master';
 
28
}
 
29
else {
 
30
   plan tests => 10;
 
31
}
 
32
 
 
33
my @args;
 
34
 
 
35
# #############################################################################
 
36
# Issue 361: Add a --runfor (or something) option to mk-query-digest
 
37
# #############################################################################
 
38
`$trunk/bin/pt-query-digest --processlist h=127.1,P=12345,u=msandbox,p=msandbox --run-time 3 --port 12345 --log /tmp/mk-query-digest.log --pid /tmp/mk-query-digest.pid --daemonize 1>/dev/null 2>/dev/null`;
 
39
chomp(my $pid = `cat /tmp/mk-query-digest.pid`);
 
40
sleep 2;
 
41
my $output = `ps x | grep $pid | grep processlist | grep -v grep`;
 
42
ok(
 
43
   $output,
 
44
   'Still running for --run-time (issue 361)'
 
45
);
 
46
 
 
47
sleep 1.5;
 
48
$output = `ps x | grep $pid | grep processlist | grep -v grep`;
 
49
is(
 
50
   $output,
 
51
   '',
 
52
   'No longer running for --run-time (issue 361)'
 
53
);
 
54
 
 
55
diag(`rm -rf /tmp/mk-query-digest.log`);
 
56
 
 
57
# #############################################################################
 
58
# Issue 1150: Make mk-query-digest --run-time behavior more flexible
 
59
# #############################################################################
 
60
@args = ('--report-format', 'query_report,profile', '--limit', '10');
 
61
 
 
62
# --run-time-mode event without a --run-time should result in the same output
 
63
# as --run-time-mode clock because the log ts will be effectively ignored.
 
64
my $before = output(
 
65
   sub { mk_query_digest::main("$trunk/t/lib/samples/slowlogs/slow033.txt",
 
66
      '--report-format', 'query_report,profile')
 
67
   },
 
68
);
 
69
 
 
70
@args = ('--report-format', 'query_report,profile', '--limit', '10');
 
71
 
 
72
my $after = output(
 
73
   sub { mk_query_digest::main(@args, "$trunk/t/lib/samples/slowlogs/slow033.txt",
 
74
      qw(--run-time-mode event))
 
75
   },
 
76
);
 
77
 
 
78
is(
 
79
   $before,
 
80
   $after,
 
81
   "Event run time mode doesn't change analysis"
 
82
);
 
83
 
 
84
ok(
 
85
   no_diff(
 
86
      sub { mk_query_digest::main(@args, "$trunk/t/lib/samples/slowlogs/slow033.txt",
 
87
         qw(--run-time-mode event --run-time 1h)) },
 
88
      "t/pt-query-digest/samples/slow033-rtm-event-1h.txt"
 
89
   ),
 
90
   "Run-time mode event 1h"
 
91
);
 
92
 
 
93
# This is correct because the next event is 1d and 1m after the first.
 
94
# So runtime 1d should not include it.
 
95
ok(
 
96
   no_diff(
 
97
      sub { mk_query_digest::main(@args, "$trunk/t/lib/samples/slowlogs/slow033.txt",
 
98
         qw(--run-time-mode event --run-time 1d)) },
 
99
      "t/pt-query-digest/samples/slow033-rtm-event-1h.txt"
 
100
   ),
 
101
   "Run-time mode event 1d"
 
102
);
 
103
 
 
104
# Now we'll get the 2nd event but not the 3rd.
 
105
ok(
 
106
   no_diff(
 
107
      sub { mk_query_digest::main(@args, "$trunk/t/lib/samples/slowlogs/slow033.txt",
 
108
         qw(--run-time-mode event --run-time 25h)) },
 
109
      "t/pt-query-digest/samples/slow033-rtm-event-25h.txt"
 
110
   ),
 
111
   "Run-time mode event 25h"
 
112
);
 
113
 
 
114
# Run-time interval.
 
115
push @args, qw(--iterations 0);
 
116
ok(
 
117
   no_diff(
 
118
      sub { mk_query_digest::main(@args, "$trunk/t/lib/samples/slowlogs/slow033.txt",
 
119
         qw(--run-time-mode interval --run-time 1d)) },
 
120
      "t/pt-query-digest/samples/slow033-rtm-interval-1d.txt"
 
121
   ),
 
122
   "Run-time mode interval 1d"
 
123
);
 
124
 
 
125
# This correctly splits these two events:
 
126
#   Time: 090727 11:19:30 # User@Host: [SQL_SLAVE] @  []
 
127
#   Time: 090727 11:19:31 # User@Host: [SQL_SLAVE] @  []
 
128
# The first belongs to the 0-29s interval, the second to the
 
129
# 30-60s interval.
 
130
ok(
 
131
   no_diff(
 
132
      sub { mk_query_digest::main(@args, "$trunk/t/lib/samples/slowlogs/slow033.txt",
 
133
         qw(--run-time-mode interval --run-time 30)) },
 
134
      "t/pt-query-digest/samples/slow033-rtm-interval-30s.txt"
 
135
   ),
 
136
   "Run-time mode interval 30s"
 
137
);
 
138
 
 
139
# Now, contrary to the above, those two events are together because they're
 
140
# within the same 30m interval.
 
141
ok(
 
142
   no_diff(
 
143
      sub { mk_query_digest::main(@args, "$trunk/t/lib/samples/slowlogs/slow033.txt",
 
144
         qw(--run-time-mode interval --run-time 30m)) },
 
145
      "t/pt-query-digest/samples/slow033-rtm-interval-30m.txt",
 
146
   ),
 
147
   "Run-time mode interval 30m"
 
148
);
 
149
 
 
150
pop @args;  # report --iterations 0
 
151
pop @args;
 
152
# Like the first 30s run above, but with only 3 interations, only the
 
153
# first 3 queries are gotten.
 
154
ok(
 
155
   no_diff(
 
156
      sub { mk_query_digest::main(@args, "$trunk/t/lib/samples/slowlogs/slow033.txt",
 
157
         qw(--run-time-mode interval --run-time 30 --iterations 3)) },
 
158
      "t/pt-query-digest/samples/slow033-rtm-interval-30s-3iter.txt"
 
159
   ),
 
160
   "Run-time mode interval and --iterations"
 
161
);
 
162
 
 
163
# #############################################################################
 
164
# Done.
 
165
# #############################################################################
 
166
$sb->wipe_clean($dbh);
 
167
exit;