fluent-plugin-fork 0.1.0 → 0.1.1

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: 9a6046f60ea7ea3def073da545f25629badae3e2
4
- data.tar.gz: 89c121b947e6e4ecb7c578eb00890f68cc36f8b1
3
+ metadata.gz: fc184ac71ede6fa2f8f6350c3f3a95b2eca661ec
4
+ data.tar.gz: 99a85b33ae597ef2e22ed94d4344970cb02b8118
5
5
  SHA512:
6
- metadata.gz: 68a3e769a9fb09e3086026d3ce4ccefd19f488e5949285a8810c1268945b0695a8fd4009e6e10506bd6ae9821275baad6588101e142e6c332bc591ee82fbcb25
7
- data.tar.gz: 9dee3e9e0ba50b0d03576044e44057780d97d3935d010013b4bb06a069c14a3d0347145f08dbd6d9775a1119c3532e1e121faeed17955c0dcdcd31a2b11e9534
6
+ metadata.gz: 880f9933eeac2a5b8e2ba7653ea06a933886b7ac433b4f61fe4a880ce0247003690b3c054846ac0a439c00188dde9ea9f8e285f7600fc3aa36ed6ec8708934aa
7
+ data.tar.gz: 2b1699aa72558bb271f44e7bbbdc31476259a777cd66fbadc6e7bed68189f7db5f8c9a385153fe5eb31937c64c3d8eac8cd48e70e6e44ca9bf4b08863c350e0e
data/.gitignore CHANGED
@@ -3,6 +3,7 @@
3
3
  *~
4
4
  .bundle
5
5
  Gemfile.lock
6
+ gemfiles/*.lock
6
7
  vendor/
7
8
  doc/
8
9
  tmp/
@@ -4,6 +4,9 @@ rvm:
4
4
  - 1.9.3
5
5
  - 2.0.0
6
6
  - 2.1.0
7
+ gemfile:
8
+ - gemfiles/gemfile
9
+ - gemfiles/fluentd.0.10.42.gemfile
7
10
 
8
11
  script: "bundle exec rake spec"
9
12
 
data/README.md CHANGED
@@ -1,8 +1,24 @@
1
- [![Build Status](https://secure.travis-ci.org/dtaniwaki/fluent-plugin-fork.png?branch=master)](http://travis-ci.org/dtaniwaki/fluent-plugin-fork) [![Coverage Status](https://coveralls.io/repos/dtaniwaki/fluent-plugin-fork/badge.png?branch=master)](https://coveralls.io/r/dtaniwaki/fluent-plugin-fork?branch=master)
2
-
3
1
  # fluent-plugin-fork
4
2
 
5
- Fork output by separating values for fluentd
3
+ [![Gem Version](https://badge.fury.io/rb/fluent-plugin-fork.png)](https://rubygems.org/gems/fluent-plugin-fork) [![Build Status](https://secure.travis-ci.org/dtaniwaki/fluent-plugin-fork.png?branch=master)](http://travis-ci.org/dtaniwaki/fluent-plugin-fork) [![Coverage Status](https://coveralls.io/repos/dtaniwaki/fluent-plugin-fork/badge.png?branch=master)](https://coveralls.io/r/dtaniwaki/fluent-plugin-fork?branch=master)
4
+
5
+ Fork output by separating values for [fluentd](http://fluentd.org/).
6
+
7
+ ### Example
8
+
9
+ You can fork the following data
10
+
11
+ ```
12
+ {"id": "1", "key": "2", "segments": "1,2,3"}
13
+ ```
14
+
15
+ to
16
+
17
+ ```
18
+ {"id": "1", "key": "2", "segments": "1"}
19
+ {"id": "1", "key": "2", "segments": "2"}
20
+ {"id": "1", "key": "2", "segments": "3"}
21
+ ```
6
22
 
7
23
  # Installation
8
24
 
@@ -2,7 +2,7 @@ $:.push File.expand_path('../lib', __FILE__)
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = "fluent-plugin-fork"
5
- gem.version = "0.1.0"
5
+ gem.version = "0.1.1"
6
6
  gem.authors = ["Daisuke Taniwaki"]
7
7
  gem.email = "daisuketaniwaki@gmail.com"
8
8
  gem.homepage = "https://github.com/dtaniwaki/fluent-plugin-fork"
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem 'fluentd', '= 0.10.42'
4
+ gemspec :path => '../'
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec :path => '../'
@@ -23,7 +23,7 @@ module Fluent
23
23
  def configure(conf)
24
24
  super
25
25
 
26
- fallbacks = %w(drop log)
26
+ fallbacks = %w(skip drop log)
27
27
  raise Fluent::ConfigError, "max_fallback must be one of #{fallbacks.inspect}" unless fallbacks.include?(@max_fallback)
28
28
  end
29
29
 
@@ -42,6 +42,9 @@ module Fluent
42
42
 
43
43
  if @max_size && @max_size < values.size
44
44
  case @max_fallback
45
+ when 'skip'
46
+ log.warn "#{tag} - #{time}: Skip too many forked values (max=#{@max_size}) : #{org_value}"
47
+ next
45
48
  when 'drop'
46
49
  log.warn "#{tag} - #{time}: Drop too many forked values (max=#{@max_size}) : #{org_value}"
47
50
  values = values.take(@max_size)
@@ -55,10 +58,10 @@ module Fluent
55
58
  Engine.emit(@output_tag, time, record.reject{ |k, v| k == @fork_key }.merge(@output_key => value))
56
59
  end
57
60
  end
58
-
59
- chain.next
60
61
  rescue => e
61
62
  log.error "#{e.message}: #{e.backtrace.join(', ')}"
63
+ ensure
64
+ chain.next
62
65
  end
63
66
  end
64
67
  end
@@ -66,11 +66,21 @@ describe Fluent::ForkOutput do
66
66
  expect(subject.emits).to include(["ot", time, {"ok" => "4"}])
67
67
  end
68
68
  it "forks with other params" do
69
- subject.run { subject.emit({"sk" => "2,3,4,3", "o1" => 1, "o2" => 2}, time) }
70
- expect(subject.emits.size).to eq(3)
69
+ subject.run { subject.emit({"sk" => "2,3,4,5", "o1" => 1, "o2" => 2}, time) }
70
+ expect(subject.emits.size).to eq(4)
71
71
  expect(subject.emits).to include(["ot", time, {"ok" => "2", "o1" => 1, "o2" => 2}])
72
72
  expect(subject.emits).to include(["ot", time, {"ok" => "3", "o1" => 1, "o2" => 2}])
73
73
  expect(subject.emits).to include(["ot", time, {"ok" => "4", "o1" => 1, "o2" => 2}])
74
+ expect(subject.emits).to include(["ot", time, {"ok" => "5", "o1" => 1, "o2" => 2}])
75
+ end
76
+ it "does nothing for empty value" do
77
+ subject.run { subject.emit({"o1" => 1, "o2" => 2}, time) }
78
+ expect(subject.emits.size).to eq(0)
79
+ end
80
+ it "ignores exceptions and writes down the log" do
81
+ expect(subject.instance.log).to receive(:error).with(/^The error/)
82
+ allow_any_instance_of(String).to receive(:split).and_raise("The error")
83
+ subject.emit({"sk" => "2,3,4,5", "o1" => 1, "o2" => 2}, time)
74
84
  end
75
85
  context "with no_unique option" do
76
86
  let(:params) { required_params.merge(no_unique: true) }
@@ -112,6 +122,13 @@ describe Fluent::ForkOutput do
112
122
  expect(subject.emits).to include(["ot", time, {"ok" => "4"}])
113
123
  end
114
124
  end
125
+ describe "skip" do
126
+ let(:params) { required_params.merge(max_size: 3, max_fallback: 'skip') }
127
+ it "skip the values" do
128
+ subject.run { subject.emit({"sk" => "2,3,4,5"}, time) }
129
+ expect(subject.emits.size).to eq(0)
130
+ end
131
+ end
115
132
  end
116
133
  end
117
134
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-fork
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daisuke Taniwaki
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-22 00:00:00.000000000 Z
11
+ date: 2014-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -79,6 +79,8 @@ files:
79
79
  - README.md
80
80
  - Rakefile
81
81
  - fluent-plugin-fork.gemspec
82
+ - gemfiles/fluentd.0.10.42.gemfile
83
+ - gemfiles/gemfile
82
84
  - lib/fluent/plugin/out_fork.rb
83
85
  - spec/plugin/out_fork_spec.rb
84
86
  - spec/spec_helper.rb