fluent-plugin-array-splitter 0.1.0 → 0.1.2

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
  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