ezmetrics 2.0.1 → 2.0.2

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 (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