File Coverage

blib/lib/HTTPD/Bench/ApacheBench/Regression.pm
Criterion Covered Total %
statement 9 107 8.4
branch 0 30 0.0
condition 0 36 0.0
subroutine 3 41 7.3
pod 0 38 0.0
total 12 252 4.7


line stmt bran cond sub pod time code
1             package HTTPD::Bench::ApacheBench::Regression;
2              
3 3     3   15 use strict;
  3         5  
  3         90  
4 3     3   15 use vars qw($VERSION);
  3         5  
  3         97  
5              
6 3     3   14 use HTTPD::Bench::ApacheBench;
  3         4  
  3         5364  
7              
8             $HTTPD::Bench::ApacheBench::Regression::VERSION =
9             $HTTPD::Bench::ApacheBench::VERSION;
10              
11             sub new {
12 0     0 0   my ($this, $self) = @_;
13 0   0       my $class = ref($this) || $this;
14 0 0         if (ref($self) ne "HASH") { $self = {} }
  0            
15 0           bless $self, $class;
16 0           return $self;
17             }
18              
19             sub get_regression_hash {
20 0     0 0   my ($self) = @_;
21             return
22 0 0         (ref $self->{'regression'} eq "HASH" ? $self->{'regression'} : undef);
23             }
24              
25             sub run {
26 0     0 0   my ($self, $run_no) = @_;
27 0 0         $self->{'run_no'} = $run_no if defined $run_no;
28 0           return $self;
29             }
30              
31             sub iteration {
32 0     0 0   my ($self, $iter_no) = @_;
33 0 0 0       $self->{'iter_no'} = $iter_no
34             if defined $self->{'run_no'} and defined $iter_no;
35 0           return $self;
36             }
37              
38             ##################################################
39             ## regression data accessors ##
40             ##################################################
41             sub total_time {
42 0     0 0   my ($self) = @_;
43 0 0 0       return undef unless (my $reg = $self->get_regression_hash and
44             !defined $self->{'run_no'});
45 0           return $reg->{'total_time'};
46             }
47              
48             sub bytes_received {
49 0     0 0   my ($self) = @_;
50 0 0 0       return undef unless (my $reg = $self->get_regression_hash and
51             !defined $self->{'run_no'});
52 0           return $reg->{'bytes_received'};
53             }
54              
55             sub total_requests_sent {
56 0     0 0   my ($self) = @_;
57 0 0 0       return undef unless (my $reg = $self->get_regression_hash and
58             !defined $self->{'run_no'});
59 0           return $reg->{'started'};
60             }
61              
62             sub total_responses_received {
63 0     0 0   my ($self) = @_;
64 0 0 0       return undef unless (my $reg = $self->get_regression_hash and
65             !defined $self->{'run_no'});
66 0           return $reg->{'good'};
67             }
68              
69             sub total_responses_failed {
70 0     0 0   my ($self) = @_;
71 0 0 0       return undef unless (my $reg = $self->get_regression_hash and
72             !defined $self->{'run_no'});
73 0           return $reg->{'failed'};
74             }
75              
76             sub warnings {
77 0     0 0   my ($self) = @_;
78 0 0 0       return undef unless (my $reg = $self->get_regression_hash and
79             !defined $self->{'run_no'});
80 0           return $reg->{'warnings'};
81             }
82              
83              
84             sub iteration_value {
85 0     0 0   my ($self, $value, $expect_ref, $idx) = @_;
86 0 0         return undef unless (my $reg = $self->get_regression_hash);
87 0 0         return undef unless defined $self->{'run_no'};
88 0 0         my $iter_no = defined $self->{'iter_no'} ? $self->{'iter_no'} : 0;
89 0           my $iter = $reg->{'run'.$self->{'run_no'}}->[$iter_no];
90 0 0 0       return undef unless (ref $iter eq "HASH" and
      0        
91             (!$expect_ref or ref $iter->{$value} eq $expect_ref));
92 0 0 0       return $iter->{$value}->[$idx]
      0        
93             if defined $expect_ref and $expect_ref eq "ARRAY" and defined $idx;
94 0           return $iter->{$value};
95             }
96              
97              
98             sub sent_requests {
99 0     0 0   my ($self, $idx) = @_;
100 0           return $self->iteration(0)->iteration_value('started', "ARRAY", $idx);
101             }
102              
103             sub good_responses {
104 0     0 0   my ($self, $idx) = @_;
105 0           return $self->iteration(0)->iteration_value('good', "ARRAY", $idx);
106             }
107              
108             sub failed_responses {
109 0     0 0   my ($self, $idx) = @_;
110 0           return $self->iteration(0)->iteration_value('failed', "ARRAY", $idx);
111             }
112              
113             sub connect_times {
114 0     0 0   my ($self, $idx) = @_;
115 0           return $self->iteration_value('connect_time', "ARRAY", $idx);
116             }
117              
118             sub min_connect_time {
119 0     0 0   my ($self) = @_;
120 0           return $self->iteration_value('min_connect_time');
121             }
122              
123             sub max_connect_time {
124 0     0 0   my ($self) = @_;
125 0           return $self->iteration_value('max_connect_time');
126             }
127              
128             sub avg_connect_time {
129 0     0 0   my ($self) = @_;
130 0           return $self->iteration_value('average_connect_time');
131             }
132              
133             sub sum_connect_time {
134 0     0 0   my ($self) = @_;
135 0           return $self->iteration_value('total_connect_time');
136             }
137              
138             sub request_times {
139 0     0 0   my ($self, $idx) = @_;
140 0           return $self->iteration_value('request_time', "ARRAY", $idx);
141             }
142              
143             sub min_request_time {
144 0     0 0   my ($self) = @_;
145 0           return $self->iteration_value('min_request_time');
146             }
147              
148             sub max_request_time {
149 0     0 0   my ($self) = @_;
150 0           return $self->iteration_value('max_request_time');
151             }
152              
153             sub avg_request_time {
154 0     0 0   my ($self) = @_;
155 0           return $self->iteration_value('average_request_time');
156             }
157              
158             sub sum_request_time {
159 0     0 0   my ($self) = @_;
160 0           return $self->iteration_value('total_request_time');
161             }
162              
163             sub response_times {
164 0     0 0   my ($self, $idx) = @_;
165 0           return $self->iteration_value('response_time', "ARRAY", $idx);
166             }
167              
168             sub min_response_time {
169 0     0 0   my ($self) = @_;
170 0           return $self->iteration_value('min_response_time');
171             }
172              
173             sub max_response_time {
174 0     0 0   my ($self) = @_;
175 0           return $self->iteration_value('max_response_time');
176             }
177              
178             sub avg_response_time {
179 0     0 0   my ($self) = @_;
180 0           return $self->iteration_value('average_response_time');
181             }
182              
183             sub sum_response_time {
184 0     0 0   my ($self) = @_;
185 0           return $self->iteration_value('total_response_time');
186             }
187              
188             sub bytes_posted {
189 0     0 0   my ($self, $idx) = @_;
190 0           return $self->iteration_value('bytes_posted', "ARRAY", $idx);
191             }
192              
193             sub sum_bytes_posted {
194 0     0 0   my ($self) = @_;
195 0           return $self->iteration_value('total_bytes_posted');
196             }
197              
198             sub bytes_read {
199 0     0 0   my ($self, $idx) = @_;
200 0           return $self->iteration_value('bytes_read', "ARRAY", $idx);
201             }
202              
203             sub sum_bytes_read {
204 0     0 0   my ($self) = @_;
205 0           return $self->iteration_value('total_bytes_read');
206             }
207              
208             sub request_headers {
209 0     0 0   my ($self, $idx) = @_;
210 0           return $self->iteration_value('request_headers', "ARRAY", $idx);
211             }
212              
213             sub request_body {
214 0     0 0   my ($self, $idx) = @_;
215 0           my $request = $self->iteration_value('request_body', "ARRAY", $idx);
216 0           $request =~ s,^.*?\r?\n\r?\n,,s;
217 0           return $request;
218             }
219              
220             sub response_headers {
221 0     0 0   my ($self, $idx) = @_;
222 0           return $self->iteration_value('headers', "ARRAY", $idx);
223             }
224              
225             sub response_body {
226 0     0 0   my ($self, $idx) = @_;
227 0           my $response = $self->iteration_value('page_content', "ARRAY", $idx);
228 0           $response =~ s,^.*?\r?\n\r?\n,,s;
229 0           return $response;
230             }
231              
232             sub response_body_lengths {
233 0     0 0   my ($self, $idx) = @_;
234 0           return $self->iteration_value('doc_length', "ARRAY", $idx);
235             }
236              
237              
238             1;