apachecrunch 0.5 → 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.
Files changed (2) hide show
  1. data/lib/procedure_dsl.rb +58 -3
  2. metadata +2 -2
data/lib/procedure_dsl.rb CHANGED
@@ -52,6 +52,22 @@ class ApacheCrunch
52
52
  end
53
53
 
54
54
 
55
+ # DSL routine that calculates the sum of the quantities given by the block
56
+ #
57
+ # All values produced by the block must have a to_f method, and this routine
58
+ # returns a float.
59
+ class Sum < ProcedureRoutine
60
+ def execute(&blk)
61
+ rslt = 0.0
62
+ while @_current_entry = @_log_parser.next_entry
63
+ rslt += instance_eval(&blk).to_f
64
+ end
65
+
66
+ rslt
67
+ end
68
+ end
69
+
70
+
55
71
  # DSL routine(s) that filter(s) for entries for which the given block evaluates to true
56
72
  #
57
73
  # This can be called as 'filter()', which means the filtering happens in a temporary file, or
@@ -191,14 +207,17 @@ class ApacheCrunch
191
207
  # time_to_serve
192
208
  # end
193
209
  #
194
- # would return two numbers, the lower and upper bound of a 95% confidence interval for the values
195
- # of time_to_serve.
210
+ # would return two numbers, the lower and upper bound of a 95% confidence interval for the
211
+ # values of time_to_serve.
212
+ #
213
+ # This routine returns a float, and the block must always evaluate to something with a to_f
214
+ # method.
196
215
  class ConfidenceInterval < ProcedureRoutine
197
216
  def execute(confidence, &blk)
198
217
  # Build a list of all the values found
199
218
  values = []
200
219
  while @_current_entry = @_log_parser.next_entry
201
- values << instance_eval(&blk)
220
+ values << instance_eval(&blk).to_f
202
221
  end
203
222
  values.sort!
204
223
 
@@ -211,6 +230,26 @@ class ApacheCrunch
211
230
  end
212
231
 
213
232
 
233
+ # DSL routine that determines the nth percentile for the values to which the block evaluates
234
+ #
235
+ # This routine returns a float, and the block must always evaluate to something with a to_f
236
+ # method.
237
+ class Percentile < ProcedureRoutine
238
+ def execute(n, &blk)
239
+ # Build a list of all the values found
240
+ values = []
241
+ while @_current_entry = @_log_parser.next_entry
242
+ values << instance_eval(&blk).to_f
243
+ end
244
+ values.sort!
245
+
246
+ puts "values.length: #{values.length}"
247
+ puts "n/100.0*values.length: #{n/100.0*values.length}"
248
+ return values[((n/100.0)*values.length).to_i]
249
+ end
250
+ end
251
+
252
+
214
253
  # DSL routine that finds the most common n values for the given block.
215
254
  #
216
255
  # Returns a list of lists, each of which is [value, count]. This list is sorted by count.
@@ -275,6 +314,14 @@ class ApacheCrunch
275
314
  nil
276
315
  end
277
316
 
317
+ # DSL routine 'sum'
318
+ def sum(&blk)
319
+ routine = Sum.new(@_log_parser)
320
+ rv = routine.execute(&blk)
321
+ routine.finish
322
+ rv
323
+ end
324
+
278
325
  # DSL routine 'count_by'
279
326
  def count_by(&blk)
280
327
  routine = CountBy.new(@_log_parser)
@@ -307,6 +354,14 @@ class ApacheCrunch
307
354
  rv
308
355
  end
309
356
 
357
+ # DSL routine 'percentile'
358
+ def percentile(n, &blk)
359
+ routine = Percentile.new(@_log_parser)
360
+ rv = routine.execute(n, &blk)
361
+ routine.finish
362
+ rv
363
+ end
364
+
310
365
  # DSL routine 'most_common'
311
366
  def most_common(n, &blk)
312
367
  routine = MostCommon.new(@_log_parser)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apachecrunch
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.5"
4
+ version: "0.6"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Slimmon
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2011-09-17 00:00:00 -04:00
12
+ date: 2011-09-26 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies: []
15
15