ezmetrics 2.0.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ezmetrics.rb +9 -9
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6dca2c75bfaae789d33af8f319e5c6ff86772f480d4d2f6549f044f4bfe12586
4
- data.tar.gz: 259881b87a073eaceb729b402166d185b3d66ee48af1727e27cc78a8ae5c226c
3
+ metadata.gz: df2d108f37b4f0a5988f72ad465c531d0559ef651c78e3f58aa72f7c9fcc0a3c
4
+ data.tar.gz: a1b871a56189e2035289a976e508dd437125c8a6bc9fa29dfbb47402096faf1b
5
5
  SHA512:
6
- metadata.gz: 119325aef351ecbb8cf54a80941474904b727207ed658298f04e225bb54c99f2e47509a42f076fd1ddbe034f86d48db2b9692dbd5498c1e594903253aa4f65d6
7
- data.tar.gz: fe97199f23bfac6eddf90755bfbcf74ff524b6735cf340b1dcbb625c9f66dfa4bd021733dccb7ba0d7c63aca6cb6ae6dd5523ba478fbd7ca22f1f91b33c3d661
6
+ metadata.gz: ad8ce6744522f55b65029bffeb8d56491ce188c29870a5560389ea44795131999bbe6f9d11d3a444831c49c2c0aad2f2b8bca448cdd2c18c5a11ba8d04216889
7
+ data.tar.gz: 80c76c1709db877c71063650db012b423116232a32f6ff5d9c17262e43e80e8696d4a0fc687b798291551ca5f0f6b84f3f7ae7a635ecad644f09628daf842cd1
@@ -176,16 +176,16 @@ class EZmetrics
176
176
 
177
177
  percentile = aggregation_function.match(/percentile_(?<value>\d+)/)
178
178
 
179
- if percentile && percentile["value"]
179
+ if percentile && percentile["value"].to_i.between?(1, 99)
180
180
  sorted_values = send("sorted_#{metrics}_values")
181
- percentile(sorted_values, percentile["value"].to_i)&.round
181
+ percentile(sorted_values, percentile["value"].to_i)
182
182
  end
183
183
  end
184
184
 
185
185
  METRICS.each do |metrics|
186
186
  define_method "sorted_#{metrics}_values" do
187
187
  instance_variable_get("@sorted_#{metrics}_values") || instance_variable_set(
188
- "@sorted_#{metrics}_values", interval_metrics.map { |array| array[schema["#{metrics}_values"]] }.flatten.compact
188
+ "@sorted_#{metrics}_values", interval_metrics.map { |array| array[schema["#{metrics}_values"]] }.flatten.compact.sort
189
189
  )
190
190
  end
191
191
  end
@@ -234,12 +234,12 @@ class EZmetrics
234
234
  interval_metrics.max { |array| array[schema[metrics]] }[schema[metrics]].round
235
235
  end
236
236
 
237
- def percentile(array, pcnt)
238
- sorted_array = array.sort
237
+ def percentile(sorted_array, pcnt)
238
+ array_length = sorted_array.length
239
239
 
240
- return nil if array.length == 0
240
+ return "not enough data (requests: #{array_length}, required: #{pcnt})" if array_length < pcnt
241
241
 
242
- rank = (pcnt.to_f / 100) * (array.length + 1)
242
+ rank = (pcnt.to_f / 100) * (array_length + 1)
243
243
  whole = rank.truncate
244
244
 
245
245
  # if has fractional part
@@ -249,9 +249,9 @@ class EZmetrics
249
249
 
250
250
  f = (rank - rank.truncate).abs
251
251
 
252
- return (f * (s1 - s0)) + s0
252
+ return ((f * (s1 - s0)) + s0)&.round
253
253
  else
254
- return sorted_array[whole - 1]
254
+ return (sorted_array[whole - 1])&.round
255
255
  end
256
256
  end
257
257
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ezmetrics
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolae Rotaru