fluent-plugin-fork 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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