~percona-toolkit-dev/percona-toolkit/release-2.2.3

« back to all changes in this revision

Viewing changes to t/lib/UpgradeReportFormatter.t

  • Committer: Daniel Nichter
  • Date: 2013-03-12 15:21:13 UTC
  • mfrom: (507.1.37 pt-upgrade-2.2)
  • Revision ID: daniel@percona.com-20130312152113-jfkrxi3p8ca84oin
Merge pt-upgrade-2.2.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/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 tests => 3;
13
 
 
14
 
use Transformers;
15
 
use EventAggregator;
16
 
use QueryRewriter;
17
 
use ReportFormatter;
18
 
use UpgradeReportFormatter;
19
 
use PerconaTest;
20
 
 
21
 
my $result;
22
 
my $expected;
23
 
my ($meta_events, $events1, $events2, $meta_ea, $ea1, $ea2);
24
 
 
25
 
my $qr  = new QueryRewriter();
26
 
my $urf = new UpgradeReportFormatter();
27
 
 
28
 
sub aggregate {
29
 
   foreach my $event (@$meta_events) {
30
 
      $event->{fingerprint} = $qr->fingerprint( $event->{arg} );
31
 
      $meta_ea->aggregate($event);
32
 
   }
33
 
   foreach my $event (@$events1) {
34
 
      $event->{fingerprint} = $qr->fingerprint( $event->{arg} );
35
 
      $ea1->aggregate($event);
36
 
   }
37
 
   $ea1->calculate_statistical_metrics();
38
 
   foreach my $event (@$events2) {
39
 
      $event->{fingerprint} = $qr->fingerprint( $event->{arg} );
40
 
      $ea2->aggregate($event);
41
 
   }
42
 
   $ea2->calculate_statistical_metrics(); 
43
 
}
44
 
 
45
 
$meta_ea = new EventAggregator(
46
 
   groupby => 'fingerprint',
47
 
   worst   => 'differences',
48
 
);
49
 
$ea1 = new EventAggregator(
50
 
   groupby => 'fingerprint',
51
 
   worst   => 'Query_time',
52
 
);
53
 
$ea2 = new EventAggregator(
54
 
   groupby => 'fingerprint',
55
 
   worst   => 'Query_time',
56
 
);
57
 
 
58
 
isa_ok($urf, 'UpgradeReportFormatter');
59
 
 
60
 
$events1 = [
61
 
   {
62
 
      cmd           => 'Query',
63
 
      arg           => "SELECT id FROM users WHERE name='foo'",
64
 
      Query_time    => '8.000652',
65
 
      pos_in_log    => 1,
66
 
      db            => 'test1',
67
 
      Errors        => 'No',
68
 
   },
69
 
   {
70
 
      cmd  => 'Query',
71
 
      arg           => "SELECT id FROM users WHERE name='foo'",
72
 
      Query_time    => '1.001943',
73
 
      pos_in_log    => 2,
74
 
      db            => 'test1',
75
 
      Errors        => 'Yes',
76
 
   },
77
 
   {
78
 
      cmd           => 'Query',
79
 
      arg           => "SELECT id FROM users WHERE name='bar'",
80
 
      Query_time    => '1.000682',
81
 
      pos_in_log    => 5,
82
 
      db            => 'test1',
83
 
      Errors        => 'No',
84
 
   },
85
 
];
86
 
$events2 = $events1;
87
 
$meta_events = [
88
 
   {
89
 
      arg => "SELECT id FROM users WHERE name='bar'",
90
 
      differences          => 0,
91
 
      different_row_counts => 0,
92
 
      different_checksums  => 0,
93
 
      sampleno             => 1,
94
 
   },
95
 
   {
96
 
      arg => "SELECT id FROM users WHERE name='bar'",
97
 
      differences          => 0,
98
 
      different_row_counts => 0,
99
 
      different_checksums  => 0,
100
 
      sampleno             => 2,
101
 
   },
102
 
   {
103
 
      arg => "SELECT id FROM users WHERE name='bar'",
104
 
      differences          => 1,
105
 
      different_row_counts => 1,
106
 
      different_checksums  => 0,
107
 
      sampleno             => 3,
108
 
   },
109
 
];
110
 
 
111
 
$expected = <<EOF;
112
 
# Query 1: ID 0x82860EDA9A88FCC5 at byte 0 _______________________________
113
 
# host1: host1.domain.com:3306
114
 
# host2: host2.domain.com:3307
115
 
# Found 1 differences in 3 samples:
116
 
#   checksums       0
117
 
#   row counts      1
118
 
#            host1 host2
119
 
# Errors         1     1
120
 
# Warnings       0     0
121
 
# Query_time            
122
 
#   sum        10s   10s
123
 
#   min         1s    1s
124
 
#   max         8s    8s
125
 
#   avg         3s    3s
126
 
#   pct_95      8s    8s
127
 
#   stddev      3s    3s
128
 
#   median   992ms 992ms
129
 
EOF
130
 
 
131
 
aggregate();
132
 
 
133
 
$result = $urf->event_report(
134
 
   meta_ea  => $meta_ea,
135
 
   hosts    => [ {name=>'host1.domain.com:3306', ea=>$ea1},
136
 
                 {name=>'host2.domain.com:3307', ea=>$ea2} ],
137
 
   where   => 'select id from users where name=?',
138
 
   rank    => 1,
139
 
   worst   => 'differences',
140
 
);
141
 
 
142
 
is($result, $expected, 'Event report');
143
 
 
144
 
# #############################################################################
145
 
# Done.
146
 
# #############################################################################
147
 
my $output = '';
148
 
{
149
 
   local *STDERR;
150
 
   open STDERR, '>', \$output;
151
 
   $urf->_d('Complete test coverage');
152
 
}
153
 
like(
154
 
   $output,
155
 
   qr/Complete test coverage/,
156
 
   '_d() works'
157
 
);
158
 
exit;