fluent-plugin-histogram 0.2.2 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NGY2M2ZhNzY5YmE2ZDc4MzMwYTA2YTYxMmYzYWFiNDExMGQ0OWFiNA==
4
+ MjE3MzNkNjEwZDczYzBhMDk0NmIxMWEwNDk2ZTliOWNhYzRhOGJjNw==
5
5
  data.tar.gz: !binary |-
6
- Y2Q3MWViYTNkMjViMzU2MDA1MGIwZTMyM2FkMzg3NjQyMThlZTdjNA==
6
+ YzEyYTFkNmQxNWY1MjZhMzNhZTU1NjczMTNjMzIzMmE0M2QyZTk5OA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MWYzNDg5ZjkyZGQyNGMzNGNjYWNiZjQ1MDc3M2NhNDNkODA3OTcxMjljYTNh
10
- ZWYzOWNjOTI2YzJiYjY1OWZjOWM3OGU5YjVmOTU4NmY0M2U0MDM2MGNhMTA1
11
- ODY2YTI4OWM5ZDRlN2VkOGNjN2QwOTMwOTE1OWQ0ZjhjYzkwYmQ=
9
+ MWUzNzgyMDM3NGRiNGZiODlkOWEzMjhiNzg0NzQ2NzJiN2E0Mzc5MDA2MGQz
10
+ NmU2M2ZhNTg0MGJjYzNkN2Q4NzdjZTU4N2JiM2EyNGJhYTJiMDdjZDU2MDBj
11
+ YTdjMjYxMDE2ZDg0Mjg3NzMyZTFiYjdjOTMxMjRhYTFjYTMzMWU=
12
12
  data.tar.gz: !binary |-
13
- Yzc0MTRkMTJkYTNkY2Y1NWY3ZjVlYWNlNDA3ZjNmMjdkNGUzYzFkMTRlYjQ2
14
- YWNlNWMxZTg0ZjY5YWYyMGI1YjE2MjE1N2Q3NjZjYzcxYTNjODVlNzllN2Ez
15
- ZjVhNGRiMDU5ZGM5ZWUyM2YxY2I4MmI3OTE4OWQxZTFjZTExMmU=
13
+ NGQyMmRkNzQxZWVmZjc4MThkNTM1YmZiYmVlZjA1YzZmODBjZDg4NWYyODlj
14
+ MmYzNTZiNGI3Njk1MTExYjc4YmIwNDYxMGJlYzQ4ZGY2MGIzMmE1ZTFhYTNk
15
+ NWNhODIwODZmNjI2NjVjNjdmMmRkYWQ2MjY0YWY5NjgyN2U3YmE=
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = "fluent-plugin-histogram"
5
- gem.version = "0.2.2"
5
+ gem.version = "0.2.4"
6
6
  gem.authors = ["Yusuke SHIMIZU"]
7
7
  gem.email = "a.ryuklnm@gmail.com"
8
8
  gem.description = "Combine inputs data and make histogram which helps to detect a hotspot."
@@ -175,11 +175,18 @@ module Fluent
175
175
  output = {}
176
176
  flushed.each do |tag, hist|
177
177
  output[tag] = {}
178
- sum = hist.inject(:+)
179
- avg = sum / hist.size
180
- sd = hist.instance_eval do
181
- sigmas = map { |n| (avg - n)**2 }
182
- Math.sqrt(sigmas.inject(:+) / size)
178
+ act_hist = hist.dup.select!{|v| v > 0}
179
+ if act_hist.size == 0 # equal to zero_hist
180
+ sum = 0
181
+ avg = 0
182
+ sd = 0
183
+ else
184
+ sum = act_hist.inject(:+)
185
+ avg = sum / act_hist.size
186
+ sd = act_hist.instance_eval do
187
+ sigmas = map { |n| (avg - n)**2 }
188
+ Math.sqrt(sigmas.inject(:+) / size)
189
+ end
183
190
  end
184
191
  output[tag][:hist] = hist if @out_include_hist
185
192
  output[tag][:sum] = @disable_revalue ? sum : sum / @revalue
@@ -53,12 +53,13 @@ class HistogramOutputTest < Test::Unit::TestCase
53
53
  hist[id] += 1
54
54
  end
55
55
 
56
- sd = hist.instance_eval do
56
+ act_hist = hist.dup.select{|v| v > 0}
57
+ sd = act_hist.instance_eval do
57
58
  avg = inject(:+) / size
58
59
  sigmas = map { |n| (avg - n)**2 }
59
60
  Math.sqrt(sigmas.inject(:+) / size)
60
61
  end
61
- assert_equal({"test.input" => {:hist => hist, :sum => 6, :avg => 6/bin_num, :sd=>sd.to_i}},
62
+ assert_equal({"test.input" => {:hist => hist, :sum => 6, :avg => 6/act_hist.size, :sd=>sd.to_i}},
62
63
  f.instance.flush)
63
64
  end
64
65
 
@@ -98,12 +99,13 @@ class HistogramOutputTest < Test::Unit::TestCase
98
99
  hist[(id - alpha) % bin_num] += 1
99
100
  end
100
101
 
101
- sd = hist.instance_eval do
102
+ act_hist = hist.select{|v| v > 0}
103
+ sd = act_hist.instance_eval do
102
104
  avg = inject(:+) / size
103
105
  sigmas = map { |n| (avg - n)**2 }
104
106
  Math.sqrt(sigmas.inject(:+) / size)
105
107
  end
106
- assert_equal({"test.input" => {:hist => hist, :sum => 6, :avg => 6/bin_num, :sd=>sd.to_i}},
108
+ assert_equal({"test.input" => {:hist => hist, :sum => 6, :avg => 6/act_hist.size, :sd=>sd.to_i}},
107
109
  f.instance.flush)
108
110
  end
109
111
 
@@ -156,8 +158,9 @@ class HistogramOutputTest < Test::Unit::TestCase
156
158
  f.instance.increment("test.input", i.to_s)
157
159
  end
158
160
  flushed = f.instance.flush
161
+ act_hist = flushed["test.input"][:hist].select{|v| v > 0}
159
162
  assert_equal(1000, flushed["test.input"][:sum])
160
- assert_equal(1000/bin_num, flushed["test.input"][:avg])
163
+ assert_equal(1000/act_hist.size, flushed["test.input"][:avg])
161
164
  end
162
165
 
163
166
  def test_emit
@@ -171,8 +174,9 @@ class HistogramOutputTest < Test::Unit::TestCase
171
174
  end
172
175
  end
173
176
  flushed = f.instance.flush
177
+ act_hist = flushed["test"][:hist].select{|v| v > 0}
174
178
  assert_equal(300, flushed["test"][:sum])
175
- assert_equal(300/bin_num, flushed["test"][:avg])
179
+ assert_equal(300/act_hist.size, flushed["test"][:avg])
176
180
  end
177
181
 
178
182
  def test_some_hist_exist_case_tagging_with_emit
@@ -302,14 +306,31 @@ bias:#{flushed_bias["histo.localhost"]}")
302
306
  id = "c"[0..9].codepoints.collect{|cp| cp}.join().to_i % bin_num
303
307
  hist[id] += 3
304
308
 
305
- sd = hist.instance_eval do
309
+ act_hist = hist.dup.select{|v| v > 0}
310
+ sd = act_hist.instance_eval do
306
311
  avg = inject(:+) / size
307
312
  sigmas = map { |n| (avg - n)**2 }
308
313
  Math.sqrt(sigmas.inject(:+) / size)
309
314
  end
310
315
  flushed = f.instance.flush
311
- assert_equal({"test.input" => {:hist => hist, :sum => 6, :avg => 6/bin_num, :sd=>sd.to_i}}, flushed)
316
+ assert_equal({"test.input" => {:hist => hist, :sum => 6, :avg => 6/act_hist.size, :sd=>sd.to_i}}, flushed)
312
317
  end
313
318
 
319
+ def test_output_zero_length_hist
320
+ bin_num = 5
321
+ f = create_driver(%[ bin_num #{bin_num} ])
322
+ flushed = f.instance.flush
323
+ assert_equal({}, flushed)
324
+
325
+ f.run do
326
+ f.emit({"keys" => "a"})
327
+ end
328
+ f.instance.flush # flush
329
+ flushed = f.instance.flush
330
+ assert_equal([0]*5, flushed["test"][:hist])
331
+ assert_equal(0, flushed["test"][:sum])
332
+ assert_equal(0, flushed["test"][:avg])
333
+ assert_equal(0, flushed["test"][:sd])
334
+ end
314
335
 
315
336
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-histogram
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yusuke SHIMIZU
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-02 00:00:00.000000000 Z
11
+ date: 2014-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler