fluent-plugin-eval-filter 0.0.3 → 0.0.4

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: 6765bfbe982ee8ab3f79203bc16c41905c367373
4
- data.tar.gz: cc5f7b09aae48c79710766f835fe5cf419800209
3
+ metadata.gz: d49f815a9d7d68a2b0fdf1acee1863d649329984
4
+ data.tar.gz: a0f8bebad7623fd6404cd01b5e15bcdd55f7ae16
5
5
  SHA512:
6
- metadata.gz: 05b3f8c2ea08ec5b9aa6865ce8fcee0bb1449d1ffbcbbfbc75d63127396e6b673cda42e53009a804ca47bc50681d61fdc61ca240debbf78df520bac6b3cabbdc
7
- data.tar.gz: 70701cb426b287d3494faf4803a0b50306387f8a2a768de03b17e4cea34d28c5d2bc4d44273f695387305487d8469e49bc737eb5d79a288f52dde1b45ec1d7fc
6
+ metadata.gz: b64c70845fecf3419042615aa3caab263acb2e643555b45e56b5be424ac9316c263f713107559a1068f20235c5afece00aac702ac21b4188d07319553dc3ed14
7
+ data.tar.gz: abcf947942f1aa1a30a6fb8c0daa9dee18288c91ee1e33f2326592573b39f11efb16a80726a07dcdfc06b5ba03591393ae9f9e326faa24bf913e0907eb7194f2
@@ -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-eval-filter"
7
- spec.version = "0.0.3"
7
+ spec.version = "0.0.4"
8
8
  spec.authors = ["Yuzuki Masaru"]
9
9
  spec.email = ["ephemeralsnow@gmail.com"]
10
10
  spec.description = %q{Fluentd Output eval filter plugin.}
@@ -39,8 +39,10 @@ class Fluent::EvalFilterOutput < Fluent::Output
39
39
  def emit(tag, es, chain)
40
40
  tag = handle_tag(tag)
41
41
  es.each do |time, record|
42
- result = filter_record(tag, time, record)
43
- Fluent::Engine.emit(*result) if result
42
+ results = filter_record(tag, time, record)
43
+ results.each do |result|
44
+ Fluent::Engine.emit(*result)
45
+ end
44
46
  end
45
47
  chain.next
46
48
  end
@@ -54,12 +56,16 @@ class Fluent::EvalFilterOutput < Fluent::Output
54
56
  end
55
57
 
56
58
  def filter_record(tag, time, record)
59
+ results = []
57
60
  @filters.each do |filter|
58
- filter_result = filter.call(tag, time, record)
59
- result = create_result(tag, time, record, filter_result) if filter_result
60
- return result if result
61
+ filter_results = filter.call(tag, time, record)
62
+ filter_results = [filter_results] unless filter_results.instance_of?(Enumerator)
63
+ filter_results.each do |filter_result|
64
+ result = create_result(tag, time, record, filter_result) if filter_result
65
+ results << result if result
66
+ end
61
67
  end
62
- nil
68
+ results
63
69
  end
64
70
 
65
71
  def create_result(tag, time, record, result)
@@ -184,4 +184,116 @@ class EvalFilterTest < Test::Unit::TestCase
184
184
  assert_equal "test.#{hostname}", emits[0][0]
185
185
  end
186
186
 
187
+ def test_amplify_tag_filter
188
+ d = create_driver(%[
189
+ filter1 (1..3).map { |n| tag + n.to_s }.to_enum
190
+ ])
191
+
192
+ d.run { d.emit({}) }
193
+
194
+ emits = d.emits
195
+ assert_equal 3, emits.size
196
+ p emits[0]
197
+ assert_equal "test1", emits[0][0]
198
+ p emits[1]
199
+ assert_equal "test2", emits[1][0]
200
+ p emits[2]
201
+ assert_equal "test3", emits[2][0]
202
+ end
203
+
204
+ def test_amplify_time_filter
205
+ d = create_driver(%[
206
+ filter1 (1..3).map { |n| time + n }.to_enum
207
+ ])
208
+
209
+ d.run { d.emit({}) }
210
+
211
+ emits = d.emits
212
+ assert_equal 3, emits.size
213
+ p emits[0]
214
+ assert emits[0][1] > 0
215
+ p emits[1]
216
+ assert_equal emits[0][1] + 1, emits[1][1]
217
+ p emits[2]
218
+ assert_equal emits[1][1] + 1, emits[2][1]
219
+ end
220
+
221
+ def test_amplify_record_filter
222
+ d = create_driver(%[
223
+ filter1 (1..3).map { |n| record.merge({'n' => n}) }.to_enum
224
+ ])
225
+
226
+ d.run { d.emit({'key' => 'value'}) }
227
+
228
+ emits = d.emits
229
+ assert_equal 3, emits.size
230
+ p emits[0]
231
+ assert_equal 2, emits[0][2].size
232
+ assert_equal true, emits[0][2].key?('key')
233
+ assert_equal 'value', emits[0][2]['key']
234
+ assert_equal true, emits[0][2].key?('n')
235
+ assert_equal 1, emits[0][2]['n']
236
+ p emits[1]
237
+ assert_equal 2, emits[1][2].size
238
+ assert_equal true, emits[1][2].key?('key')
239
+ assert_equal 'value', emits[1][2]['key']
240
+ assert_equal true, emits[1][2].key?('n')
241
+ assert_equal 2, emits[1][2]['n']
242
+ p emits[2]
243
+ assert_equal 2, emits[2][2].size
244
+ assert_equal true, emits[2][2].key?('key')
245
+ assert_equal 'value', emits[2][2]['key']
246
+ assert_equal true, emits[2][2].key?('n')
247
+ assert_equal 3, emits[2][2]['n']
248
+ end
249
+
250
+ def test_split_record_filter
251
+ d = create_driver(%[
252
+ filter1 record.map { |key, value| [[tag, key].join('.'), {'key' => value}] }.to_enum
253
+ ])
254
+
255
+ d.run { d.emit({'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3'}) }
256
+
257
+ emits = d.emits
258
+ assert_equal 3, emits.size
259
+ p emits[0]
260
+ assert_equal 'test.key1', emits[0][0]
261
+ assert_equal 1, emits[0][2].size
262
+ assert_equal true, emits[0][2].key?('key')
263
+ assert_equal 'value1', emits[0][2]['key']
264
+ p emits[1]
265
+ assert_equal 'test.key2', emits[1][0]
266
+ assert_equal 1, emits[1][2].size
267
+ assert_equal true, emits[1][2].key?('key')
268
+ assert_equal 'value2', emits[1][2]['key']
269
+ p emits[2]
270
+ assert_equal 'test.key3', emits[2][0]
271
+ assert_equal 1, emits[2][2].size
272
+ assert_equal true, emits[2][2].key?('key')
273
+ assert_equal 'value3', emits[2][2]['key']
274
+ end
275
+
276
+ def test_split_array_in_record_filter
277
+ d = create_driver(%[
278
+ filter1 record['array'].map { |v| {'value' => v} }.to_enum
279
+ ])
280
+
281
+ d.run { d.emit({'array' => ['test1', 'test2', 'test3']}) }
282
+
283
+ emits = d.emits
284
+ assert_equal 3, emits.size
285
+ p emits[0]
286
+ assert_equal 1, emits[0][2].size
287
+ assert_equal true, emits[0][2].key?('value')
288
+ assert_equal 'test1', emits[0][2]['value']
289
+ p emits[1]
290
+ assert_equal 1, emits[1][2].size
291
+ assert_equal true, emits[1][2].key?('value')
292
+ assert_equal 'test2', emits[1][2]['value']
293
+ p emits[2]
294
+ assert_equal 1, emits[2][2].size
295
+ assert_equal true, emits[2][2].key?('value')
296
+ assert_equal 'test3', emits[2][2]['value']
297
+ end
298
+
187
299
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-eval-filter
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
  - Yuzuki Masaru
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-23 00:00:00.000000000 Z
11
+ date: 2014-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd