fluent-plugin-array-splitter 0.1.0 → 0.1.2

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
  SHA256:
3
- metadata.gz: 7b744e9de9c27aef607ee4954f10942b1a1de51ed36767ead52026abe028b171
4
- data.tar.gz: b456cd234a8940164f8d4efd4372724224fb504cd55ab5b81a4435445a2d5655
3
+ metadata.gz: 0bf5d03998979b55a12ce89992692bbda3b010bfbccb2b1cf9dbd670a3c63cec
4
+ data.tar.gz: 311c9c506b8e7e3b1a48fa77df5e500ac630b7df3797066756beafe985e4468b
5
5
  SHA512:
6
- metadata.gz: d666f6b204fd61c70a2e033edce5fde4a174d8e36e549eda9330b97bf5cc47eb9ad994e088185e56cda0884728546090095b532896ee28f6985c6675c609ee9b
7
- data.tar.gz: b39b59481bf68ffe1b1831904d1a356fc5a4567818419e30881f882bd81a3ceed9755d101c81634136c6fef2c53a5d029da4c23f7c8c87505d1cf76f0c25e4ea
6
+ metadata.gz: 789c595e0ae1f9c8cc14d8668e25dba1984e72f1df6c8c51eb29ecb5299ee2fa3482936e78d9ba28427cf7f25c38dc45a336b26080960934af54b6e0f7ec93e2
7
+ data.tar.gz: 00e5532d24f9eb2e2e0ecc7829356daca338f5a26f79deaaccae09ec1414aba3c74fabe65e7f83dfe2daffa8ab0d5645e3bfdae673bab0879106210c56c5a13b
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = "fluent-plugin-array-splitter"
6
- spec.version = "0.1.0"
6
+ spec.version = "0.1.2"
7
7
  spec.authors = ["pcoffmanjr"]
8
8
  spec.email = ["pcoffman@ctc-america.com"]
9
9
 
@@ -7,28 +7,30 @@ module Fluent
7
7
  class ArraySplitterFilter < Fluent::Plugin::Filter
8
8
  Fluent::Plugin.register_filter("array_splitter", self)
9
9
 
10
+ desc 'The field name to split and expand array values'
11
+ config_param :array_key, :string, default: 'message'
12
+
10
13
  def configure(conf)
11
14
  super
15
+ raise Fluent::ConfigError, "'array_key' parameter is required" unless conf.has_key?('array_key')
12
16
  log.info "Configuring Array Splitter Filter"
13
17
  end
14
18
 
15
19
  def filter_stream(tag, es)
16
20
  new_es = Fluent::MultiEventStream.new
17
21
  es.each do |time, record|
18
- if record['message'].is_a?(Array)
19
- record['message'].each do |value|
22
+ if record[@array_key].is_a?(Array)
23
+ record[@array_key].each do |value|
20
24
  new_record = record.dup
21
- new_record['message'] = value
22
- new_es.add(time, new_record)
23
- end
24
- elsif record['target_field'].is_a?(Array)
25
- record['target_field'].each do |hash|
26
- hash.each do |k, v|
27
- new_record = record.dup
28
- new_record.delete('target_field')
29
- new_record[k] = v
30
- new_es.add(time, new_record)
25
+ new_record.delete(@array_key)
26
+ if value.is_a?(Hash)
27
+ value.each do |k, v|
28
+ new_record[k] = v
29
+ end
30
+ else
31
+ new_record[@array_key] = value
31
32
  end
33
+ new_es.add(time, new_record)
32
34
  end
33
35
  else
34
36
  new_es.add(time, record)
@@ -4,7 +4,9 @@ require "fluent/plugin/filter_array_splitter.rb"
4
4
  class ArraySplitterFilterTest < Test::Unit::TestCase
5
5
  setup do
6
6
  Fluent::Test.setup
7
- @driver = create_driver
7
+ @driver = create_driver(%[
8
+ array_key message
9
+ ])
8
10
  end
9
11
 
10
12
  def create_driver(conf = "")
@@ -29,7 +31,45 @@ class ArraySplitterFilterTest < Test::Unit::TestCase
29
31
  assert_equal("v3", filtered_records[2]["message"])
30
32
  end
31
33
 
32
- # More tests for other cases...
34
+ test "expand array with hashes in message field" do
35
+ record = {
36
+ "key1" => "foo",
37
+ "key2" => "bar",
38
+ "message" => [{"k1" => "hoge"}, {"k2" => "foobar"}]
39
+ }
40
+ @driver.run(default_tag: "test") do
41
+ @driver.feed(record)
42
+ end
43
+ filtered_records = @driver.filtered_records
44
+ assert_equal(2, filtered_records.size)
45
+ assert_equal("foo", filtered_records[0]["key1"])
46
+ assert_equal("bar", filtered_records[0]["key2"])
47
+ assert_equal("hoge", filtered_records[0]["k1"])
48
+ assert_nil(filtered_records[0]["message"])
49
+ assert_equal("foo", filtered_records[1]["key1"])
50
+ assert_equal("bar", filtered_records[1]["key2"])
51
+ assert_equal("foobar", filtered_records[1]["k2"])
52
+ assert_nil(filtered_records[1]["message"])
53
+ end
54
+
55
+ test "expand array with custom key" do
56
+ driver = create_driver(%[
57
+ array_key record
58
+ ])
59
+ record = {
60
+ "key1" => "foo",
61
+ "key2" => "bar",
62
+ "record" => ["v1", "v2", "v3"]
63
+ }
64
+ driver.run(default_tag: "test") do
65
+ driver.feed(record)
66
+ end
67
+ filtered_records = driver.filtered_records
68
+ assert_equal(3, filtered_records.size)
69
+ assert_equal("v1", filtered_records[0]["record"])
70
+ assert_equal("v2", filtered_records[1]["record"])
71
+ assert_equal("v3", filtered_records[2]["record"])
72
+ end
33
73
  end
34
74
  end
35
75
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-array-splitter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - pcoffmanjr