fluent-plugin-eval-filter 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 +4 -4
- data/fluent-plugin-eval-filter.gemspec +1 -1
- data/lib/fluent/plugin/out_eval_filter.rb +12 -6
- data/test/plugin/test_out_eval_filter.rb +112 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d49f815a9d7d68a2b0fdf1acee1863d649329984
|
4
|
+
data.tar.gz: a0f8bebad7623fd6404cd01b5e15bcdd55f7ae16
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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
|
-
|
43
|
-
|
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
|
-
|
59
|
-
|
60
|
-
|
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
|
-
|
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.
|
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-
|
11
|
+
date: 2014-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|