rfuzz 0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/COPYING +55 -0
- data/LICENSE +55 -0
- data/README +252 -0
- data/Rakefile +48 -0
- data/doc/rdoc/classes/RFuzz.html +146 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.html +481 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000010.html +24 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000011.html +34 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000012.html +49 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000013.html +49 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000014.html +57 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000015.html +37 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000016.html +26 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000017.html +34 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000018.html +18 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000019.html +26 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.html +294 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000001.html +26 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000002.html +18 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000003.html +26 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000004.html +18 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000005.html +32 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000006.html +18 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000007.html +20 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000008.html +20 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000009.html +32 -0
- data/doc/rdoc/classes/RFuzz/HttpResponse.html +180 -0
- data/doc/rdoc/classes/RFuzz/Notifier.html +252 -0
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000044.html +17 -0
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000045.html +17 -0
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000046.html +17 -0
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000047.html +17 -0
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000048.html +17 -0
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000049.html +17 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.html +362 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000032.html +21 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000033.html +23 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000036.html +22 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000037.html +20 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000038.html +22 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000039.html +20 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000040.html +18 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000041.html +18 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000042.html +22 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000043.html +18 -0
- data/doc/rdoc/classes/RFuzz/Sampler.html +383 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000056.html +19 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000057.html +23 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000058.html +26 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000059.html +18 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000060.html +18 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000061.html +18 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000062.html +18 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000063.html +19 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000064.html +18 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000065.html +23 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000066.html +18 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000067.html +20 -0
- data/doc/rdoc/classes/RFuzz/Session.html +415 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000020.html +31 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000021.html +18 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000022.html +18 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000023.html +34 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000024.html +19 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000025.html +19 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000026.html +26 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000027.html +29 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000028.html +19 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000029.html +18 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000030.html +18 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000031.html +23 -0
- data/doc/rdoc/classes/RFuzz/StatsTracker.html +242 -0
- data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000050.html +19 -0
- data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000051.html +19 -0
- data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000052.html +18 -0
- data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000053.html +18 -0
- data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000054.html +28 -0
- data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000055.html +18 -0
- data/doc/rdoc/created.rid +1 -0
- data/doc/rdoc/files/COPYING.html +168 -0
- data/doc/rdoc/files/LICENSE.html +168 -0
- data/doc/rdoc/files/README.html +473 -0
- data/doc/rdoc/files/lib/rfuzz/client_rb.html +111 -0
- data/doc/rdoc/files/lib/rfuzz/random_rb.html +116 -0
- data/doc/rdoc/files/lib/rfuzz/rfuzz_rb.html +109 -0
- data/doc/rdoc/files/lib/rfuzz/session_rb.html +111 -0
- data/doc/rdoc/files/lib/rfuzz/stats_rb.html +113 -0
- data/doc/rdoc/fr_class_index.html +35 -0
- data/doc/rdoc/fr_file_index.html +34 -0
- data/doc/rdoc/fr_method_index.html +93 -0
- data/doc/rdoc/index.html +24 -0
- data/doc/rdoc/rdoc-style.css +208 -0
- data/examples/amazon_headers.rb +38 -0
- data/examples/hpricot_pudding.rb +22 -0
- data/examples/kill_routes.rb +26 -0
- data/examples/mongrel_test_suite/lib/gen.rb +24 -0
- data/examples/mongrel_test_suite/test/camping/static_files.rb +9 -0
- data/examples/mongrel_test_suite/test/camping/upload_file.rb +9 -0
- data/examples/mongrel_test_suite/test/camping/upload_progress.rb +9 -0
- data/examples/mongrel_test_suite/test/http/base_protocol.rb +23 -0
- data/examples/mongrel_test_suite/test/nitro/upload_file.rb +9 -0
- data/examples/mongrel_test_suite/test/nitro/upload_progress.rb +9 -0
- data/examples/mongrel_test_suite/test/rails/static_files.rb +9 -0
- data/examples/mongrel_test_suite/test/rails/upload_file.rb +9 -0
- data/examples/mongrel_test_suite/test/rails/upload_progress.rb +9 -0
- data/examples/perftest.rb +30 -0
- data/ext/fuzzrnd/ext_help.h +14 -0
- data/ext/fuzzrnd/extconf.rb +6 -0
- data/ext/fuzzrnd/fuzzrnd.c +149 -0
- data/ext/http11_client/ext_help.h +14 -0
- data/ext/http11_client/extconf.rb +6 -0
- data/ext/http11_client/http11_client.c +288 -0
- data/ext/http11_client/http11_parser.c +629 -0
- data/ext/http11_client/http11_parser.h +46 -0
- data/ext/http11_client/http11_parser.rl +169 -0
- data/lib/rfuzz/client.rb +498 -0
- data/lib/rfuzz/random.rb +110 -0
- data/lib/rfuzz/rfuzz.rb +12 -0
- data/lib/rfuzz/session.rb +154 -0
- data/lib/rfuzz/stats.rb +159 -0
- data/resources/defaults.yaml +2 -0
- data/resources/words.txt +3310 -0
- data/test/coverage/index.html +388 -0
- data/test/coverage/lib-rfuzz-client_rb.html +1127 -0
- data/test/coverage/lib-rfuzz-random_rb.html +739 -0
- data/test/coverage/lib-rfuzz-session_rb.html +783 -0
- data/test/coverage/lib-rfuzz-stats_rb.html +788 -0
- data/test/server.rb +101 -0
- data/test/test_client.rb +164 -0
- data/test/test_fuzzrnd.rb +31 -0
- data/test/test_httpparser.rb +48 -0
- data/test/test_random.rb +75 -0
- data/test/test_session.rb +33 -0
- data/test/test_stats.rb +45 -0
- data/tools/rakehelp.rb +119 -0
- metadata +201 -0
|
@@ -0,0 +1,788 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
2
|
+
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
|
|
3
|
+
<head>
|
|
4
|
+
<title>lib/rfuzz/stats.rb - C0 code coverage information</title>
|
|
5
|
+
<style type='text/css'>body { background-color: rgb(240, 240, 245); }</style>
|
|
6
|
+
<style type='text/css'>span.cross-ref-title {
|
|
7
|
+
font-size: 140%;
|
|
8
|
+
}
|
|
9
|
+
span.cross-ref a {
|
|
10
|
+
text-decoration: none;
|
|
11
|
+
}
|
|
12
|
+
span.cross-ref {
|
|
13
|
+
background-color:#f3f7fa;
|
|
14
|
+
border: 1px dashed #333;
|
|
15
|
+
margin: 1em;
|
|
16
|
+
padding: 0.5em;
|
|
17
|
+
overflow: hidden;
|
|
18
|
+
}
|
|
19
|
+
a.crossref-toggle {
|
|
20
|
+
text-decoration: none;
|
|
21
|
+
}
|
|
22
|
+
span.marked0 {
|
|
23
|
+
background-color: rgb(185, 210, 200);
|
|
24
|
+
display: block;
|
|
25
|
+
}
|
|
26
|
+
span.marked1 {
|
|
27
|
+
background-color: rgb(190, 215, 205);
|
|
28
|
+
display: block;
|
|
29
|
+
}
|
|
30
|
+
span.inferred0 {
|
|
31
|
+
background-color: rgb(175, 200, 200);
|
|
32
|
+
display: block;
|
|
33
|
+
}
|
|
34
|
+
span.inferred1 {
|
|
35
|
+
background-color: rgb(180, 205, 205);
|
|
36
|
+
display: block;
|
|
37
|
+
}
|
|
38
|
+
span.uncovered0 {
|
|
39
|
+
background-color: rgb(225, 110, 110);
|
|
40
|
+
display: block;
|
|
41
|
+
}
|
|
42
|
+
span.uncovered1 {
|
|
43
|
+
background-color: rgb(235, 120, 120);
|
|
44
|
+
display: block;
|
|
45
|
+
}
|
|
46
|
+
span.overview {
|
|
47
|
+
border-bottom: 8px solid black;
|
|
48
|
+
}
|
|
49
|
+
div.overview {
|
|
50
|
+
border-bottom: 8px solid black;
|
|
51
|
+
}
|
|
52
|
+
body {
|
|
53
|
+
font-family: verdana, arial, helvetica;
|
|
54
|
+
}
|
|
55
|
+
div.footer {
|
|
56
|
+
font-size: 68%;
|
|
57
|
+
margin-top: 1.5em;
|
|
58
|
+
}
|
|
59
|
+
h1, h2, h3, h4, h5, h6 {
|
|
60
|
+
margin-bottom: 0.5em;
|
|
61
|
+
}
|
|
62
|
+
h5 {
|
|
63
|
+
margin-top: 0.5em;
|
|
64
|
+
}
|
|
65
|
+
.hidden {
|
|
66
|
+
display: none;
|
|
67
|
+
}
|
|
68
|
+
div.separator {
|
|
69
|
+
height: 10px;
|
|
70
|
+
}
|
|
71
|
+
/* Commented out for better readability, esp. on IE */
|
|
72
|
+
/*
|
|
73
|
+
table tr td, table tr th {
|
|
74
|
+
font-size: 68%;
|
|
75
|
+
}
|
|
76
|
+
td.value table tr td {
|
|
77
|
+
font-size: 11px;
|
|
78
|
+
}
|
|
79
|
+
*/
|
|
80
|
+
table.percent_graph {
|
|
81
|
+
height: 12px;
|
|
82
|
+
border: #808080 1px solid;
|
|
83
|
+
empty-cells: show;
|
|
84
|
+
}
|
|
85
|
+
table.percent_graph td.covered {
|
|
86
|
+
height: 10px;
|
|
87
|
+
background: #00f000;
|
|
88
|
+
}
|
|
89
|
+
table.percent_graph td.uncovered {
|
|
90
|
+
height: 10px;
|
|
91
|
+
background: #e00000;
|
|
92
|
+
}
|
|
93
|
+
table.percent_graph td.NA {
|
|
94
|
+
height: 10px;
|
|
95
|
+
background: #eaeaea;
|
|
96
|
+
}
|
|
97
|
+
table.report {
|
|
98
|
+
border-collapse: collapse;
|
|
99
|
+
width: 100%;
|
|
100
|
+
}
|
|
101
|
+
table.report td.heading {
|
|
102
|
+
background: #dcecff;
|
|
103
|
+
border: #d0d0d0 1px solid;
|
|
104
|
+
font-weight: bold;
|
|
105
|
+
text-align: center;
|
|
106
|
+
}
|
|
107
|
+
table.report td.heading:hover {
|
|
108
|
+
background: #c0ffc0;
|
|
109
|
+
}
|
|
110
|
+
table.report td.text {
|
|
111
|
+
border: #d0d0d0 1px solid;
|
|
112
|
+
}
|
|
113
|
+
table.report td.value {
|
|
114
|
+
text-align: right;
|
|
115
|
+
border: #d0d0d0 1px solid;
|
|
116
|
+
}
|
|
117
|
+
table.report tr.light {
|
|
118
|
+
background-color: rgb(240, 240, 245);
|
|
119
|
+
}
|
|
120
|
+
table.report tr.dark {
|
|
121
|
+
background-color: rgb(230, 230, 235);
|
|
122
|
+
}
|
|
123
|
+
</style>
|
|
124
|
+
<script type='text/javascript'>
|
|
125
|
+
// <![CDATA[
|
|
126
|
+
function toggleCode( id ) {
|
|
127
|
+
if ( document.getElementById )
|
|
128
|
+
elem = document.getElementById( id );
|
|
129
|
+
else if ( document.all )
|
|
130
|
+
elem = eval( "document.all." + id );
|
|
131
|
+
else
|
|
132
|
+
return false;
|
|
133
|
+
|
|
134
|
+
elemStyle = elem.style;
|
|
135
|
+
|
|
136
|
+
if ( elemStyle.display != "block" ) {
|
|
137
|
+
elemStyle.display = "block"
|
|
138
|
+
} else {
|
|
139
|
+
elemStyle.display = "none"
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Make cross-references hidden by default
|
|
146
|
+
document.writeln( "<style type=\"text/css\">span.cross-ref { display: none }</style>" )
|
|
147
|
+
// ]]>
|
|
148
|
+
</script>
|
|
149
|
+
<style type='text/css'>span.run0 {
|
|
150
|
+
background-color: rgb(178, 204, 255);
|
|
151
|
+
display: block;
|
|
152
|
+
}
|
|
153
|
+
span.run1 {
|
|
154
|
+
background-color: rgb(178, 206, 255);
|
|
155
|
+
display: block;
|
|
156
|
+
}
|
|
157
|
+
span.run2 {
|
|
158
|
+
background-color: rgb(178, 209, 255);
|
|
159
|
+
display: block;
|
|
160
|
+
}
|
|
161
|
+
span.run3 {
|
|
162
|
+
background-color: rgb(178, 211, 255);
|
|
163
|
+
display: block;
|
|
164
|
+
}
|
|
165
|
+
span.run4 {
|
|
166
|
+
background-color: rgb(178, 214, 255);
|
|
167
|
+
display: block;
|
|
168
|
+
}
|
|
169
|
+
span.run5 {
|
|
170
|
+
background-color: rgb(178, 218, 255);
|
|
171
|
+
display: block;
|
|
172
|
+
}
|
|
173
|
+
span.run6 {
|
|
174
|
+
background-color: rgb(178, 220, 255);
|
|
175
|
+
display: block;
|
|
176
|
+
}
|
|
177
|
+
span.run7 {
|
|
178
|
+
background-color: rgb(178, 223, 255);
|
|
179
|
+
display: block;
|
|
180
|
+
}
|
|
181
|
+
span.run8 {
|
|
182
|
+
background-color: rgb(178, 225, 255);
|
|
183
|
+
display: block;
|
|
184
|
+
}
|
|
185
|
+
span.run9 {
|
|
186
|
+
background-color: rgb(178, 228, 255);
|
|
187
|
+
display: block;
|
|
188
|
+
}
|
|
189
|
+
span.run10 {
|
|
190
|
+
background-color: rgb(178, 232, 255);
|
|
191
|
+
display: block;
|
|
192
|
+
}
|
|
193
|
+
span.run11 {
|
|
194
|
+
background-color: rgb(178, 234, 255);
|
|
195
|
+
display: block;
|
|
196
|
+
}
|
|
197
|
+
span.run12 {
|
|
198
|
+
background-color: rgb(178, 237, 255);
|
|
199
|
+
display: block;
|
|
200
|
+
}
|
|
201
|
+
span.run13 {
|
|
202
|
+
background-color: rgb(178, 239, 255);
|
|
203
|
+
display: block;
|
|
204
|
+
}
|
|
205
|
+
span.run14 {
|
|
206
|
+
background-color: rgb(178, 242, 255);
|
|
207
|
+
display: block;
|
|
208
|
+
}
|
|
209
|
+
span.run15 {
|
|
210
|
+
background-color: rgb(178, 246, 255);
|
|
211
|
+
display: block;
|
|
212
|
+
}
|
|
213
|
+
span.run16 {
|
|
214
|
+
background-color: rgb(178, 248, 255);
|
|
215
|
+
display: block;
|
|
216
|
+
}
|
|
217
|
+
span.run17 {
|
|
218
|
+
background-color: rgb(178, 251, 255);
|
|
219
|
+
display: block;
|
|
220
|
+
}
|
|
221
|
+
span.run18 {
|
|
222
|
+
background-color: rgb(178, 253, 255);
|
|
223
|
+
display: block;
|
|
224
|
+
}
|
|
225
|
+
span.run19 {
|
|
226
|
+
background-color: rgb(178, 255, 253);
|
|
227
|
+
display: block;
|
|
228
|
+
}
|
|
229
|
+
span.run20 {
|
|
230
|
+
background-color: rgb(178, 255, 249);
|
|
231
|
+
display: block;
|
|
232
|
+
}
|
|
233
|
+
span.run21 {
|
|
234
|
+
background-color: rgb(178, 255, 247);
|
|
235
|
+
display: block;
|
|
236
|
+
}
|
|
237
|
+
span.run22 {
|
|
238
|
+
background-color: rgb(178, 255, 244);
|
|
239
|
+
display: block;
|
|
240
|
+
}
|
|
241
|
+
span.run23 {
|
|
242
|
+
background-color: rgb(178, 255, 242);
|
|
243
|
+
display: block;
|
|
244
|
+
}
|
|
245
|
+
span.run24 {
|
|
246
|
+
background-color: rgb(178, 255, 239);
|
|
247
|
+
display: block;
|
|
248
|
+
}
|
|
249
|
+
span.run25 {
|
|
250
|
+
background-color: rgb(178, 255, 235);
|
|
251
|
+
display: block;
|
|
252
|
+
}
|
|
253
|
+
span.run26 {
|
|
254
|
+
background-color: rgb(178, 255, 233);
|
|
255
|
+
display: block;
|
|
256
|
+
}
|
|
257
|
+
span.run27 {
|
|
258
|
+
background-color: rgb(178, 255, 230);
|
|
259
|
+
display: block;
|
|
260
|
+
}
|
|
261
|
+
span.run28 {
|
|
262
|
+
background-color: rgb(178, 255, 228);
|
|
263
|
+
display: block;
|
|
264
|
+
}
|
|
265
|
+
span.run29 {
|
|
266
|
+
background-color: rgb(178, 255, 225);
|
|
267
|
+
display: block;
|
|
268
|
+
}
|
|
269
|
+
span.run30 {
|
|
270
|
+
background-color: rgb(178, 255, 221);
|
|
271
|
+
display: block;
|
|
272
|
+
}
|
|
273
|
+
span.run31 {
|
|
274
|
+
background-color: rgb(178, 255, 219);
|
|
275
|
+
display: block;
|
|
276
|
+
}
|
|
277
|
+
span.run32 {
|
|
278
|
+
background-color: rgb(178, 255, 216);
|
|
279
|
+
display: block;
|
|
280
|
+
}
|
|
281
|
+
span.run33 {
|
|
282
|
+
background-color: rgb(178, 255, 214);
|
|
283
|
+
display: block;
|
|
284
|
+
}
|
|
285
|
+
span.run34 {
|
|
286
|
+
background-color: rgb(178, 255, 211);
|
|
287
|
+
display: block;
|
|
288
|
+
}
|
|
289
|
+
span.run35 {
|
|
290
|
+
background-color: rgb(178, 255, 207);
|
|
291
|
+
display: block;
|
|
292
|
+
}
|
|
293
|
+
span.run36 {
|
|
294
|
+
background-color: rgb(178, 255, 205);
|
|
295
|
+
display: block;
|
|
296
|
+
}
|
|
297
|
+
span.run37 {
|
|
298
|
+
background-color: rgb(178, 255, 202);
|
|
299
|
+
display: block;
|
|
300
|
+
}
|
|
301
|
+
span.run38 {
|
|
302
|
+
background-color: rgb(178, 255, 200);
|
|
303
|
+
display: block;
|
|
304
|
+
}
|
|
305
|
+
span.run39 {
|
|
306
|
+
background-color: rgb(178, 255, 197);
|
|
307
|
+
display: block;
|
|
308
|
+
}
|
|
309
|
+
span.run40 {
|
|
310
|
+
background-color: rgb(178, 255, 193);
|
|
311
|
+
display: block;
|
|
312
|
+
}
|
|
313
|
+
span.run41 {
|
|
314
|
+
background-color: rgb(178, 255, 191);
|
|
315
|
+
display: block;
|
|
316
|
+
}
|
|
317
|
+
span.run42 {
|
|
318
|
+
background-color: rgb(178, 255, 188);
|
|
319
|
+
display: block;
|
|
320
|
+
}
|
|
321
|
+
span.run43 {
|
|
322
|
+
background-color: rgb(178, 255, 186);
|
|
323
|
+
display: block;
|
|
324
|
+
}
|
|
325
|
+
span.run44 {
|
|
326
|
+
background-color: rgb(178, 255, 183);
|
|
327
|
+
display: block;
|
|
328
|
+
}
|
|
329
|
+
span.run45 {
|
|
330
|
+
background-color: rgb(178, 255, 179);
|
|
331
|
+
display: block;
|
|
332
|
+
}
|
|
333
|
+
span.run46 {
|
|
334
|
+
background-color: rgb(179, 255, 178);
|
|
335
|
+
display: block;
|
|
336
|
+
}
|
|
337
|
+
span.run47 {
|
|
338
|
+
background-color: rgb(182, 255, 178);
|
|
339
|
+
display: block;
|
|
340
|
+
}
|
|
341
|
+
span.run48 {
|
|
342
|
+
background-color: rgb(184, 255, 178);
|
|
343
|
+
display: block;
|
|
344
|
+
}
|
|
345
|
+
span.run49 {
|
|
346
|
+
background-color: rgb(187, 255, 178);
|
|
347
|
+
display: block;
|
|
348
|
+
}
|
|
349
|
+
span.run50 {
|
|
350
|
+
background-color: rgb(191, 255, 178);
|
|
351
|
+
display: block;
|
|
352
|
+
}
|
|
353
|
+
span.run51 {
|
|
354
|
+
background-color: rgb(193, 255, 178);
|
|
355
|
+
display: block;
|
|
356
|
+
}
|
|
357
|
+
span.run52 {
|
|
358
|
+
background-color: rgb(196, 255, 178);
|
|
359
|
+
display: block;
|
|
360
|
+
}
|
|
361
|
+
span.run53 {
|
|
362
|
+
background-color: rgb(198, 255, 178);
|
|
363
|
+
display: block;
|
|
364
|
+
}
|
|
365
|
+
span.run54 {
|
|
366
|
+
background-color: rgb(201, 255, 178);
|
|
367
|
+
display: block;
|
|
368
|
+
}
|
|
369
|
+
span.run55 {
|
|
370
|
+
background-color: rgb(205, 255, 178);
|
|
371
|
+
display: block;
|
|
372
|
+
}
|
|
373
|
+
span.run56 {
|
|
374
|
+
background-color: rgb(207, 255, 178);
|
|
375
|
+
display: block;
|
|
376
|
+
}
|
|
377
|
+
span.run57 {
|
|
378
|
+
background-color: rgb(210, 255, 178);
|
|
379
|
+
display: block;
|
|
380
|
+
}
|
|
381
|
+
span.run58 {
|
|
382
|
+
background-color: rgb(212, 255, 178);
|
|
383
|
+
display: block;
|
|
384
|
+
}
|
|
385
|
+
span.run59 {
|
|
386
|
+
background-color: rgb(215, 255, 178);
|
|
387
|
+
display: block;
|
|
388
|
+
}
|
|
389
|
+
span.run60 {
|
|
390
|
+
background-color: rgb(219, 255, 178);
|
|
391
|
+
display: block;
|
|
392
|
+
}
|
|
393
|
+
span.run61 {
|
|
394
|
+
background-color: rgb(221, 255, 178);
|
|
395
|
+
display: block;
|
|
396
|
+
}
|
|
397
|
+
span.run62 {
|
|
398
|
+
background-color: rgb(224, 255, 178);
|
|
399
|
+
display: block;
|
|
400
|
+
}
|
|
401
|
+
span.run63 {
|
|
402
|
+
background-color: rgb(226, 255, 178);
|
|
403
|
+
display: block;
|
|
404
|
+
}
|
|
405
|
+
span.run64 {
|
|
406
|
+
background-color: rgb(229, 255, 178);
|
|
407
|
+
display: block;
|
|
408
|
+
}
|
|
409
|
+
span.run65 {
|
|
410
|
+
background-color: rgb(233, 255, 178);
|
|
411
|
+
display: block;
|
|
412
|
+
}
|
|
413
|
+
span.run66 {
|
|
414
|
+
background-color: rgb(235, 255, 178);
|
|
415
|
+
display: block;
|
|
416
|
+
}
|
|
417
|
+
span.run67 {
|
|
418
|
+
background-color: rgb(238, 255, 178);
|
|
419
|
+
display: block;
|
|
420
|
+
}
|
|
421
|
+
span.run68 {
|
|
422
|
+
background-color: rgb(240, 255, 178);
|
|
423
|
+
display: block;
|
|
424
|
+
}
|
|
425
|
+
span.run69 {
|
|
426
|
+
background-color: rgb(243, 255, 178);
|
|
427
|
+
display: block;
|
|
428
|
+
}
|
|
429
|
+
span.run70 {
|
|
430
|
+
background-color: rgb(247, 255, 178);
|
|
431
|
+
display: block;
|
|
432
|
+
}
|
|
433
|
+
span.run71 {
|
|
434
|
+
background-color: rgb(249, 255, 178);
|
|
435
|
+
display: block;
|
|
436
|
+
}
|
|
437
|
+
span.run72 {
|
|
438
|
+
background-color: rgb(252, 255, 178);
|
|
439
|
+
display: block;
|
|
440
|
+
}
|
|
441
|
+
span.run73 {
|
|
442
|
+
background-color: rgb(255, 255, 178);
|
|
443
|
+
display: block;
|
|
444
|
+
}
|
|
445
|
+
span.run74 {
|
|
446
|
+
background-color: rgb(255, 252, 178);
|
|
447
|
+
display: block;
|
|
448
|
+
}
|
|
449
|
+
span.run75 {
|
|
450
|
+
background-color: rgb(255, 248, 178);
|
|
451
|
+
display: block;
|
|
452
|
+
}
|
|
453
|
+
span.run76 {
|
|
454
|
+
background-color: rgb(255, 246, 178);
|
|
455
|
+
display: block;
|
|
456
|
+
}
|
|
457
|
+
span.run77 {
|
|
458
|
+
background-color: rgb(255, 243, 178);
|
|
459
|
+
display: block;
|
|
460
|
+
}
|
|
461
|
+
span.run78 {
|
|
462
|
+
background-color: rgb(255, 240, 178);
|
|
463
|
+
display: block;
|
|
464
|
+
}
|
|
465
|
+
span.run79 {
|
|
466
|
+
background-color: rgb(255, 238, 178);
|
|
467
|
+
display: block;
|
|
468
|
+
}
|
|
469
|
+
span.run80 {
|
|
470
|
+
background-color: rgb(255, 234, 178);
|
|
471
|
+
display: block;
|
|
472
|
+
}
|
|
473
|
+
span.run81 {
|
|
474
|
+
background-color: rgb(255, 232, 178);
|
|
475
|
+
display: block;
|
|
476
|
+
}
|
|
477
|
+
span.run82 {
|
|
478
|
+
background-color: rgb(255, 229, 178);
|
|
479
|
+
display: block;
|
|
480
|
+
}
|
|
481
|
+
span.run83 {
|
|
482
|
+
background-color: rgb(255, 226, 178);
|
|
483
|
+
display: block;
|
|
484
|
+
}
|
|
485
|
+
span.run84 {
|
|
486
|
+
background-color: rgb(255, 224, 178);
|
|
487
|
+
display: block;
|
|
488
|
+
}
|
|
489
|
+
span.run85 {
|
|
490
|
+
background-color: rgb(255, 220, 178);
|
|
491
|
+
display: block;
|
|
492
|
+
}
|
|
493
|
+
span.run86 {
|
|
494
|
+
background-color: rgb(255, 218, 178);
|
|
495
|
+
display: block;
|
|
496
|
+
}
|
|
497
|
+
span.run87 {
|
|
498
|
+
background-color: rgb(255, 215, 178);
|
|
499
|
+
display: block;
|
|
500
|
+
}
|
|
501
|
+
span.run88 {
|
|
502
|
+
background-color: rgb(255, 212, 178);
|
|
503
|
+
display: block;
|
|
504
|
+
}
|
|
505
|
+
span.run89 {
|
|
506
|
+
background-color: rgb(255, 210, 178);
|
|
507
|
+
display: block;
|
|
508
|
+
}
|
|
509
|
+
span.run90 {
|
|
510
|
+
background-color: rgb(255, 206, 178);
|
|
511
|
+
display: block;
|
|
512
|
+
}
|
|
513
|
+
span.run91 {
|
|
514
|
+
background-color: rgb(255, 204, 178);
|
|
515
|
+
display: block;
|
|
516
|
+
}
|
|
517
|
+
span.run92 {
|
|
518
|
+
background-color: rgb(255, 201, 178);
|
|
519
|
+
display: block;
|
|
520
|
+
}
|
|
521
|
+
span.run93 {
|
|
522
|
+
background-color: rgb(255, 198, 178);
|
|
523
|
+
display: block;
|
|
524
|
+
}
|
|
525
|
+
span.run94 {
|
|
526
|
+
background-color: rgb(255, 196, 178);
|
|
527
|
+
display: block;
|
|
528
|
+
}
|
|
529
|
+
span.run95 {
|
|
530
|
+
background-color: rgb(255, 192, 178);
|
|
531
|
+
display: block;
|
|
532
|
+
}
|
|
533
|
+
span.run96 {
|
|
534
|
+
background-color: rgb(255, 189, 178);
|
|
535
|
+
display: block;
|
|
536
|
+
}
|
|
537
|
+
span.run97 {
|
|
538
|
+
background-color: rgb(255, 187, 178);
|
|
539
|
+
display: block;
|
|
540
|
+
}
|
|
541
|
+
span.run98 {
|
|
542
|
+
background-color: rgb(255, 184, 178);
|
|
543
|
+
display: block;
|
|
544
|
+
}
|
|
545
|
+
span.run99 {
|
|
546
|
+
background-color: rgb(255, 182, 178);
|
|
547
|
+
display: block;
|
|
548
|
+
}
|
|
549
|
+
span.run100 {
|
|
550
|
+
background-color: rgb(255, 178, 178);
|
|
551
|
+
display: block;
|
|
552
|
+
}
|
|
553
|
+
</style>
|
|
554
|
+
</head>
|
|
555
|
+
<body>
|
|
556
|
+
<h3>C0 code coverage information</h3>
|
|
557
|
+
<p>Generated on Wed Jul 19 17:39:34 EDT 2006 with <a href='http://eigenclass.org/hiki.rb?rcov'>rcov 0.6.0</a>
|
|
558
|
+
</p>
|
|
559
|
+
<hr /><pre><span class='marked0'>Code reported as executed by Ruby looks like this...
|
|
560
|
+
</span><span class='marked1'>and this: this line is also marked as covered.
|
|
561
|
+
</span><span class='inferred0'>Lines considered as run by rcov, but not reported by Ruby, look like this,
|
|
562
|
+
</span><span class='inferred1'>and this: these lines were inferred by rcov (using simple heuristics).
|
|
563
|
+
</span><span class='uncovered0'>Finally, here's a line marked as not executed.
|
|
564
|
+
</span></pre>
|
|
565
|
+
<table class='report'>
|
|
566
|
+
<thead>
|
|
567
|
+
<tr>
|
|
568
|
+
<td class='heading'>Name</td>
|
|
569
|
+
<td class='heading'>Total lines</td>
|
|
570
|
+
<td class='heading'>Lines of code</td>
|
|
571
|
+
<td class='heading'>Total coverage</td>
|
|
572
|
+
<td class='heading'>Code coverage</td>
|
|
573
|
+
</tr>
|
|
574
|
+
</thead>
|
|
575
|
+
<tbody>
|
|
576
|
+
<tr class='light'>
|
|
577
|
+
<td>
|
|
578
|
+
<a href='lib-rfuzz-stats_rb.html'>lib/rfuzz/stats.rb</a>
|
|
579
|
+
</td>
|
|
580
|
+
<td class='value'>
|
|
581
|
+
<tt>159</tt>
|
|
582
|
+
</td>
|
|
583
|
+
<td class='value'>
|
|
584
|
+
<tt>95</tt>
|
|
585
|
+
</td>
|
|
586
|
+
<td>
|
|
587
|
+
<table cellspacing='0' cellpadding='0' align='right'>
|
|
588
|
+
<tr>
|
|
589
|
+
<td>
|
|
590
|
+
<tt>92.5%</tt> </td>
|
|
591
|
+
<td>
|
|
592
|
+
<table cellspacing='0' class='percent_graph' cellpadding='0' width='100'>
|
|
593
|
+
<tr>
|
|
594
|
+
<td class='covered' width='92' />
|
|
595
|
+
<td class='uncovered' width='8' />
|
|
596
|
+
</tr>
|
|
597
|
+
</table>
|
|
598
|
+
</td>
|
|
599
|
+
</tr>
|
|
600
|
+
</table>
|
|
601
|
+
</td>
|
|
602
|
+
<td>
|
|
603
|
+
<table cellspacing='0' cellpadding='0' align='right'>
|
|
604
|
+
<tr>
|
|
605
|
+
<td>
|
|
606
|
+
<tt>87.4%</tt> </td>
|
|
607
|
+
<td>
|
|
608
|
+
<table cellspacing='0' class='percent_graph' cellpadding='0' width='100'>
|
|
609
|
+
<tr>
|
|
610
|
+
<td class='covered' width='87' />
|
|
611
|
+
<td class='uncovered' width='13' />
|
|
612
|
+
</tr>
|
|
613
|
+
</table>
|
|
614
|
+
</td>
|
|
615
|
+
</tr>
|
|
616
|
+
</table>
|
|
617
|
+
</td>
|
|
618
|
+
</tr>
|
|
619
|
+
</tbody>
|
|
620
|
+
</table><pre><span class="inferred1"><a name="line1" /> 1 # Copyright (c) 2005 Zed A. Shaw
|
|
621
|
+
</span><span class="inferred0"><a name="line2" /> 2 # You can redistribute it and/or modify it under the same terms as Ruby.
|
|
622
|
+
</span><span class="inferred1"><a name="line3" /> 3 #
|
|
623
|
+
</span><span class="inferred0"><a name="line4" /> 4 # Additional work donated by contributors. See http://mongrel.rubyforge.org/attributions.html
|
|
624
|
+
</span><span class="inferred1"><a name="line5" /> 5 # for more information.
|
|
625
|
+
</span><span class="inferred0"><a name="line6" /> 6
|
|
626
|
+
</span><span class="inferred1"><a name="line7" /> 7 # A very simple little class for doing some basic fast statistics sampling.
|
|
627
|
+
</span><span class="inferred0"><a name="line8" /> 8 # You feed it either samples of numeric data you want measured or you call
|
|
628
|
+
</span><span class="inferred1"><a name="line9" /> 9 # Sampler.tick to get it to add a time delta between the last time you called it.
|
|
629
|
+
</span><span class="inferred0"><a name="line10" /> 10 # When you're done either call sum, sumsq, n, min, max, mean or sd to get
|
|
630
|
+
</span><span class="inferred1"><a name="line11" /> 11 # the information. The other option is to just call dump and see everything.
|
|
631
|
+
</span><span class="inferred0"><a name="line12" /> 12 #
|
|
632
|
+
</span><span class="inferred1"><a name="line13" /> 13 # It does all of this very fast and doesn't take up any memory since the samples
|
|
633
|
+
</span><span class="inferred0"><a name="line14" /> 14 # are not stored but instead all the values are calculated on the fly.
|
|
634
|
+
</span><span class="marked1"><a name="line15" /> 15 module RFuzz
|
|
635
|
+
</span><span class="marked0"><a name="line16" /> 16 class Sampler
|
|
636
|
+
</span><span class="marked1"><a name="line17" /> 17 attr_reader :sum, :sumsq, :n, :min, :max
|
|
637
|
+
</span><span class="inferred0"><a name="line18" /> 18
|
|
638
|
+
</span><span class="marked1"><a name="line19" /> 19 def initialize(name)
|
|
639
|
+
</span><span class="marked0"><a name="line20" /> 20 @name = name
|
|
640
|
+
</span><span class="marked1"><a name="line21" /> 21 reset
|
|
641
|
+
</span><span class="marked0"><a name="line22" /> 22 end
|
|
642
|
+
</span><span class="inferred1"><a name="line23" /> 23
|
|
643
|
+
</span><span class="inferred0"><a name="line24" /> 24 # Resets the internal counters so you can start sampling again.
|
|
644
|
+
</span><span class="marked1"><a name="line25" /> 25 def reset
|
|
645
|
+
</span><span class="marked0"><a name="line26" /> 26 @sum = 0.0
|
|
646
|
+
</span><span class="marked1"><a name="line27" /> 27 @sumsq = 0.0
|
|
647
|
+
</span><span class="marked0"><a name="line28" /> 28 @last_time = Time.new
|
|
648
|
+
</span><span class="marked1"><a name="line29" /> 29 @n = 0.0
|
|
649
|
+
</span><span class="marked0"><a name="line30" /> 30 @min = 0.0
|
|
650
|
+
</span><span class="marked1"><a name="line31" /> 31 @max = 0.0
|
|
651
|
+
</span><span class="inferred0"><a name="line32" /> 32 end
|
|
652
|
+
</span><span class="inferred1"><a name="line33" /> 33
|
|
653
|
+
</span><span class="inferred0"><a name="line34" /> 34 # Adds a sampling to the calculations.
|
|
654
|
+
</span><span class="marked1"><a name="line35" /> 35 def sample(s)
|
|
655
|
+
</span><span class="marked0"><a name="line36" /> 36 @sum += s
|
|
656
|
+
</span><span class="marked1"><a name="line37" /> 37 @sumsq += s * s
|
|
657
|
+
</span><span class="marked0"><a name="line38" /> 38 if @n == 0
|
|
658
|
+
</span><span class="marked1"><a name="line39" /> 39 @min = @max = s
|
|
659
|
+
</span><span class="inferred0"><a name="line40" /> 40 else
|
|
660
|
+
</span><span class="marked1"><a name="line41" /> 41 @min = s if @min > s
|
|
661
|
+
</span><span class="marked0"><a name="line42" /> 42 @max = s if @max < s
|
|
662
|
+
</span><span class="inferred1"><a name="line43" /> 43 end
|
|
663
|
+
</span><span class="marked0"><a name="line44" /> 44 @n+=1
|
|
664
|
+
</span><span class="inferred1"><a name="line45" /> 45 end
|
|
665
|
+
</span><span class="inferred0"><a name="line46" /> 46
|
|
666
|
+
</span><span class="inferred1"><a name="line47" /> 47 # Dump this Sampler object with an optional additional message.
|
|
667
|
+
</span><span class="marked0"><a name="line48" /> 48 def dump(msg = "", out=STDERR)
|
|
668
|
+
</span><span class="marked1"><a name="line49" /> 49 out.puts "#{msg}: #{self.to_s}"
|
|
669
|
+
</span><span class="marked0"><a name="line50" /> 50 end
|
|
670
|
+
</span><span class="inferred1"><a name="line51" /> 51
|
|
671
|
+
</span><span class="inferred0"><a name="line52" /> 52 # Returns a common display (used by dump)
|
|
672
|
+
</span><span class="marked1"><a name="line53" /> 53 def to_s
|
|
673
|
+
</span><span class="marked0"><a name="line54" /> 54 "[%s]: SUM=%0.6f, SUMSQ=%0.6f, N=%0.6f, MEAN=%0.6f, SD=%0.6f, MIN=%0.6f, MAX=%0.6f" % values
|
|
674
|
+
</span><span class="marked1"><a name="line55" /> 55 end
|
|
675
|
+
</span><span class="inferred0"><a name="line56" /> 56
|
|
676
|
+
</span><span class="inferred1"><a name="line57" /> 57 # An array of the values minus the name: [sum,sumsq,n,mean,sd,min,max]
|
|
677
|
+
</span><span class="marked0"><a name="line58" /> 58 def values
|
|
678
|
+
</span><span class="marked1"><a name="line59" /> 59 [@name, @sum, @sumsq, @n, mean, sd, @min, @max]
|
|
679
|
+
</span><span class="marked0"><a name="line60" /> 60 end
|
|
680
|
+
</span><span class="inferred1"><a name="line61" /> 61
|
|
681
|
+
</span><span class="inferred0"><a name="line62" /> 62 # Class method that returns the headers that a CSV file would have for the
|
|
682
|
+
</span><span class="inferred1"><a name="line63" /> 63 # values that this stats object is using.
|
|
683
|
+
</span><span class="marked0"><a name="line64" /> 64 def self.keys
|
|
684
|
+
</span><span class="marked1"><a name="line65" /> 65 ["name","sum","sumsq","n","mean","sd","min","max"]
|
|
685
|
+
</span><span class="marked0"><a name="line66" /> 66 end
|
|
686
|
+
</span><span class="inferred1"><a name="line67" /> 67
|
|
687
|
+
</span><span class="marked0"><a name="line68" /> 68 def to_hash
|
|
688
|
+
</span><span class="uncovered1"><a name="line69" /> 69 {"name" => @name, "sum" => @sum, "sumsq" => @sumsq, "mean" => mean,
|
|
689
|
+
</span><span class="uncovered0"><a name="line70" /> 70 "sd" => sd, "min" => @min, "max" => @max}
|
|
690
|
+
</span><span class="uncovered1"><a name="line71" /> 71 end
|
|
691
|
+
</span><span class="inferred0"><a name="line72" /> 72
|
|
692
|
+
</span><span class="inferred1"><a name="line73" /> 73 # Calculates and returns the mean for the data passed so far.
|
|
693
|
+
</span><span class="marked0"><a name="line74" /> 74 def mean
|
|
694
|
+
</span><span class="marked1"><a name="line75" /> 75 @sum / @n
|
|
695
|
+
</span><span class="marked0"><a name="line76" /> 76 end
|
|
696
|
+
</span><span class="inferred1"><a name="line77" /> 77
|
|
697
|
+
</span><span class="inferred0"><a name="line78" /> 78 # Calculates the standard deviation of the data so far.
|
|
698
|
+
</span><span class="marked1"><a name="line79" /> 79 def sd
|
|
699
|
+
</span><span class="inferred0"><a name="line80" /> 80 # (sqrt( ((s).sumsq - ( (s).sum * (s).sum / (s).n)) / ((s).n-1) ))
|
|
700
|
+
</span><span class="marked1"><a name="line81" /> 81 begin
|
|
701
|
+
</span><span class="marked0"><a name="line82" /> 82 return Math.sqrt( (@sumsq - ( @sum * @sum / @n)) / (@n-1) )
|
|
702
|
+
</span><span class="uncovered1"><a name="line83" /> 83 rescue Errno::EDOM
|
|
703
|
+
</span><span class="uncovered0"><a name="line84" /> 84 return 0.0
|
|
704
|
+
</span><span class="uncovered1"><a name="line85" /> 85 end
|
|
705
|
+
</span><span class="marked0"><a name="line86" /> 86 end
|
|
706
|
+
</span><span class="inferred1"><a name="line87" /> 87
|
|
707
|
+
</span><span class="inferred0"><a name="line88" /> 88 # You can just call tick repeatedly if you need the delta times
|
|
708
|
+
</span><span class="inferred1"><a name="line89" /> 89 # between a set of sample periods, but many times you actually want
|
|
709
|
+
</span><span class="inferred0"><a name="line90" /> 90 # to sample how long something takes between a start/end period.
|
|
710
|
+
</span><span class="inferred1"><a name="line91" /> 91 # Call mark at the beginning and then tick at the end you'll get this
|
|
711
|
+
</span><span class="inferred0"><a name="line92" /> 92 # kind of measurement. Don't mix mark/tick and tick sampling together
|
|
712
|
+
</span><span class="inferred1"><a name="line93" /> 93 # or the measurement will be meaningless.
|
|
713
|
+
</span><span class="marked0"><a name="line94" /> 94 def mark
|
|
714
|
+
</span><span class="marked1"><a name="line95" /> 95 @last_time = Time.now
|
|
715
|
+
</span><span class="marked0"><a name="line96" /> 96 end
|
|
716
|
+
</span><span class="inferred1"><a name="line97" /> 97
|
|
717
|
+
</span><span class="inferred0"><a name="line98" /> 98 # Adds a time delta between now and the last time you called this. This
|
|
718
|
+
</span><span class="inferred1"><a name="line99" /> 99 # will give you the average time between two activities.
|
|
719
|
+
</span><span class="inferred0"><a name="line100" />100 #
|
|
720
|
+
</span><span class="inferred1"><a name="line101" />101 # An example is:
|
|
721
|
+
</span><span class="inferred0"><a name="line102" />102 #
|
|
722
|
+
</span><span class="inferred1"><a name="line103" />103 # t = Sampler.new("do_stuff")
|
|
723
|
+
</span><span class="inferred0"><a name="line104" />104 # 10000.times { do_stuff(); t.tick }
|
|
724
|
+
</span><span class="inferred1"><a name="line105" />105 # t.dump("time")
|
|
725
|
+
</span><span class="inferred0"><a name="line106" />106 #
|
|
726
|
+
</span><span class="marked1"><a name="line107" />107 def tick
|
|
727
|
+
</span><span class="marked0"><a name="line108" />108 now = Time.now
|
|
728
|
+
</span><span class="marked1"><a name="line109" />109 sample(now - @last_time)
|
|
729
|
+
</span><span class="marked0"><a name="line110" />110 @last_time = now
|
|
730
|
+
</span><span class="inferred1"><a name="line111" />111 end
|
|
731
|
+
</span><span class="inferred0"><a name="line112" />112 end
|
|
732
|
+
</span><span class="inferred1"><a name="line113" />113
|
|
733
|
+
</span><span class="inferred0"><a name="line114" />114 # When registered as the notifier for a client it tracks
|
|
734
|
+
</span><span class="inferred1"><a name="line115" />115 # the times for each part of the request. Rather than subclassing
|
|
735
|
+
</span><span class="inferred0"><a name="line116" />116 # RFuzz::Notifier it uses a method_missing to record the even timings.
|
|
736
|
+
</span><span class="inferred1"><a name="line117" />117 #
|
|
737
|
+
</span><span class="inferred0"><a name="line118" />118 # You can dump it with to_s, or you can access the StatsTracker.stats
|
|
738
|
+
</span><span class="inferred1"><a name="line119" />119 # hash to read the RFuzz::Sampler objects related to each event.
|
|
739
|
+
</span><span class="marked0"><a name="line120" />120 class StatsTracker
|
|
740
|
+
</span><span class="marked1"><a name="line121" />121 attr_reader :stats
|
|
741
|
+
</span><span class="inferred0"><a name="line122" />122
|
|
742
|
+
</span><span class="marked1"><a name="line123" />123 def initialize
|
|
743
|
+
</span><span class="marked0"><a name="line124" />124 @stats = {}
|
|
744
|
+
</span><span class="marked1"><a name="line125" />125 @error_count = 0
|
|
745
|
+
</span><span class="inferred0"><a name="line126" />126 end
|
|
746
|
+
</span><span class="inferred1"><a name="line127" />127
|
|
747
|
+
</span><span class="marked0"><a name="line128" />128 def mark(event)
|
|
748
|
+
</span><span class="marked1"><a name="line129" />129 @stats[event] ||= RFuzz::Sampler.new(event)
|
|
749
|
+
</span><span class="marked0"><a name="line130" />130 @stats[event].mark
|
|
750
|
+
</span><span class="marked1"><a name="line131" />131 end
|
|
751
|
+
</span><span class="inferred0"><a name="line132" />132
|
|
752
|
+
</span><span class="marked1"><a name="line133" />133 def sample(event)
|
|
753
|
+
</span><span class="marked0"><a name="line134" />134 @stats[event].tick
|
|
754
|
+
</span><span class="marked1"><a name="line135" />135 end
|
|
755
|
+
</span><span class="inferred0"><a name="line136" />136
|
|
756
|
+
</span><span class="marked1"><a name="line137" />137 def reset
|
|
757
|
+
</span><span class="marked0"><a name="line138" />138 @stats.each {|e,s| s.reset }
|
|
758
|
+
</span><span class="marked1"><a name="line139" />139 end
|
|
759
|
+
</span><span class="inferred0"><a name="line140" />140
|
|
760
|
+
</span><span class="marked1"><a name="line141" />141 def method_missing(event, *args)
|
|
761
|
+
</span><span class="marked0"><a name="line142" />142 case args[0]
|
|
762
|
+
</span><span class="marked1"><a name="line143" />143 when :begins
|
|
763
|
+
</span><span class="marked0"><a name="line144" />144 mark(:request) if event == :connect
|
|
764
|
+
</span><span class="marked1"><a name="line145" />145 mark(event)
|
|
765
|
+
</span><span class="marked0"><a name="line146" />146 when :ends
|
|
766
|
+
</span><span class="marked1"><a name="line147" />147 sample(:request) if event == :close
|
|
767
|
+
</span><span class="marked0"><a name="line148" />148 sample(event)
|
|
768
|
+
</span><span class="marked1"><a name="line149" />149 when :error
|
|
769
|
+
</span><span class="inferred0"><a name="line150" />150 sample(:request)
|
|
770
|
+
</span><span class="uncovered1"><a name="line151" />151 @error_count += 1
|
|
771
|
+
</span><span class="uncovered0"><a name="line152" />152 end
|
|
772
|
+
</span><span class="marked1"><a name="line153" />153 end
|
|
773
|
+
</span><span class="inferred0"><a name="line154" />154
|
|
774
|
+
</span><span class="marked1"><a name="line155" />155 def to_s
|
|
775
|
+
</span><span class="uncovered0"><a name="line156" />156 "#{@stats.values.join("\n")}\nErrors: #@error_count"
|
|
776
|
+
</span><span class="uncovered1"><a name="line157" />157 end
|
|
777
|
+
</span><span class="uncovered0"><a name="line158" />158 end
|
|
778
|
+
</span><span class="uncovered1"><a name="line159" />159 end
|
|
779
|
+
</span></pre><hr /> <p>Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'>rcov code coverage analysis tool for Ruby</a> version 0.6.0.</p><p>
|
|
780
|
+
<a href='http://validator.w3.org/check/referer'>
|
|
781
|
+
<img src='http://www.w3.org/Icons/valid-xhtml10' height='31' alt='Valid XHTML 1.0!' width='88' />
|
|
782
|
+
</a>
|
|
783
|
+
<a href='http://jigsaw.w3.org/css-validator/check/referer'>
|
|
784
|
+
<img src='http://jigsaw.w3.org/css-validator/images/vcss' alt='Valid CSS!' style='border:0;width:88px;height:31px' />
|
|
785
|
+
</a>
|
|
786
|
+
</p>
|
|
787
|
+
</body>
|
|
788
|
+
</html>
|