fluent-plugin-derive 0.0.3 → 0.0.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bd95355aa8004a964c277475bc8716af8a1adea7
4
- data.tar.gz: d7f05f7e00022daae25af6dbda1d926c421c6b1e
3
+ metadata.gz: 2edf79d1c0846b494a3e52d47d19078ed1b9ada0
4
+ data.tar.gz: 87e3e2840c5d56c7744a37bd4183de29db72ed93
5
5
  SHA512:
6
- metadata.gz: 99ac284efb825d838b1a1f6cb434fa06b5772ae8512167d606ea4bdaaa98e0b54679999893756bc9316a3ab7565a79f9f6cf9451e45b7b82ae9287e23fdac9f6
7
- data.tar.gz: 987957ac4fbd5222ad927cce3ab77166f3a6c702c093307bca8d414ea50b7de2f1162cc1b2e2552b766ca44a482cae09556cd34dc13226ddfa7a1a47ab35a2b2
6
+ metadata.gz: aff057813ef913ebc37a08f2ce37a4654039a66c6f5a97219e3d041ce50742bf3ba3ef25b53b595e676e9bace83808aa38a8815c04146f274f1b89aff4fe1ebb
7
+ data.tar.gz: 74be1d87a51f67e61b8291bee976880f68c83c2af8dce03b07f9f765f56210f40609d647d658ef67d7555b82cb706d5cda94b8956a5f4789e04afe9f1a872981
@@ -1,3 +1,9 @@
1
+ # 0.0.4 (2016/10/11)
2
+
3
+ Enhancement:
4
+
5
+ * Support RRD's counter_mode optionally. Thanks @paihu.
6
+
1
7
  # 0.0.3 (2014/08/04)
2
8
 
3
9
  Enhancement:
data/README.md CHANGED
@@ -99,6 +99,10 @@ Define the expected range value. If min and/or max are specified any value outsi
99
99
 
100
100
  Optional. Divide the incleased value by interval time before output. The default is `true`. Set `false` for disable dividing.
101
101
 
102
+ * counter_mode
103
+
104
+ Optional. Use RRD's counter mode. The default is `false`. Set `true` for use RRD's counter.
105
+
102
106
  ## Contributing
103
107
 
104
108
  1. Fork it
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "fluent-plugin-derive"
7
- spec.version = "0.0.3"
7
+ spec.version = "0.0.4"
8
8
  spec.authors = ["Nobuhiro Nikushi"]
9
9
  spec.email = ["deneb.ge@gmail.com"]
10
10
  spec.description = spec.summary
@@ -15,6 +15,7 @@ class Fluent::DeriveOutput < Fluent::Output
15
15
  config_param :min, :integer, :default => nil
16
16
  config_param :max, :integer, :default => nil
17
17
  config_param :time_unit_division, :bool, :default => true
18
+ config_param :counter_mode, :bool, :default => false
18
19
 
19
20
  # for test
20
21
  attr_reader :key_pattern
@@ -157,9 +158,9 @@ class Fluent::DeriveOutput < Fluent::Output
157
158
  return nil
158
159
  end
159
160
  if @time_unit_division
160
- rate = (cur_value - prev_value)/(cur_time - prev_time)
161
+ rate = _calc_rate(cur_value , prev_value)/(cur_time - prev_time)
161
162
  else
162
- rate = cur_value - prev_value
163
+ rate = _calc_rate(cur_value , prev_value)
163
164
  end
164
165
  if adjustment && adjustment[0] == '*'
165
166
  rate * adjustment[1]
@@ -170,6 +171,19 @@ class Fluent::DeriveOutput < Fluent::Output
170
171
  end
171
172
  end
172
173
 
174
+ def _calc_rate(cur_value, prev_value)
175
+ rate = cur_value - prev_value
176
+ if @counter_mode
177
+ if rate < 0
178
+ rate += 2 ** 32 - 1
179
+ end
180
+ if rate < 0
181
+ rate += 2 ** 64 - 2 ** 32
182
+ end
183
+ end
184
+ rate
185
+ end
186
+
173
187
  def truncate_min(value, min)
174
188
  return nil unless value
175
189
  (value < min) ? min : value
@@ -299,6 +299,77 @@ describe Fluent::DeriveOutput do
299
299
  }
300
300
  end
301
301
 
302
+ context 'counter_mode true 32bit' do
303
+ let(:config) { %[
304
+ counter_mode true
305
+ tag rate
306
+ key1 foo
307
+ time_unit_division false
308
+ ]}
309
+ before do
310
+ driver.run {
311
+ driver.emit({'foo'=> 4294967295}, time)
312
+ driver.emit({'foo'=> 100}, time + 60)
313
+ }
314
+ end
315
+ it {
316
+ driver.emits[1].should == ['rate', time + 60, {'foo'=> 100}]
317
+ }
318
+ end
319
+
320
+ context 'counter_mode not set 32bit' do
321
+ let(:config) { %[
322
+ tag rate
323
+ key1 foo
324
+ time_unit_division false
325
+ ]}
326
+ before do
327
+ driver.run {
328
+ driver.emit({'foo'=> 4294967295}, time)
329
+ driver.emit({'foo'=> 100}, time + 60)
330
+ }
331
+ end
332
+ it {
333
+ driver.emits[1].should == ['rate', time + 60, {'foo'=> -4294967195}]
334
+ }
335
+ end
336
+
337
+ context 'counter_mode true 64bit' do
338
+ let(:config) { %[
339
+ counter_mode true
340
+ tag rate
341
+ key1 foo
342
+ time_unit_division false
343
+ ]}
344
+ before do
345
+ driver.run {
346
+ driver.emit({'foo'=> 18446744073709551615}, time)
347
+ driver.emit({'foo'=> 100}, time + 60)
348
+ }
349
+ end
350
+ it {
351
+ driver.emits[1].should == ['rate', time + 60, {'foo'=> 100}]
352
+ }
353
+ end
354
+
355
+ context 'counter_mode not set 64bit' do
356
+ let(:config) { %[
357
+ tag rate
358
+ key1 foo
359
+ time_unit_division false
360
+ ]}
361
+ before do
362
+ driver.run {
363
+ driver.emit({'foo'=> 18446744073709551615}, time)
364
+ driver.emit({'foo'=> 100}, time + 60)
365
+ }
366
+ end
367
+ it {
368
+ driver.emits[1].should == ['rate', time + 60, {'foo'=> -18446744073709551515}]
369
+ }
370
+ end
371
+
372
+
302
373
  end
303
374
  end
304
375
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-derive
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nobuhiro Nikushi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-04 00:00:00.000000000 Z
11
+ date: 2016-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -94,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
94
  version: '0'
95
95
  requirements: []
96
96
  rubyforge_project:
97
- rubygems_version: 2.2.2
97
+ rubygems_version: 2.5.1
98
98
  signing_key:
99
99
  specification_version: 4
100
100
  summary: fluentd plugin to derive rate