fluent-plugin-array-splitter 0.1.1 → 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: 0d04da9205757d519b782b4f8603c6cd5999a0ca1ed15d50044ab9600259d200
4
- data.tar.gz: c97d3587db8921bf2b25ca8b930b6e0e96dcc6e47f41ad2169a48775073217cc
3
+ metadata.gz: 0bf5d03998979b55a12ce89992692bbda3b010bfbccb2b1cf9dbd670a3c63cec
4
+ data.tar.gz: 311c9c506b8e7e3b1a48fa77df5e500ac630b7df3797066756beafe985e4468b
5
5
  SHA512:
6
- metadata.gz: 720519d90f4c95983ec89fc616626cce0712be211673724d3f8db15e2bd0a4e562dd196344a13127f4c177c923ee5018c0ad98b19be27ee71f189868a43216c1
7
- data.tar.gz: 40d369cb984e7b01125328e98df4c01b0c5a7f6725fae82d55a26e7cd8ab37001474a14913f4cd27c34260cf71ab4a115df69ddc9c8a9298da4339e7dc8b41cf
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.1"
6
+ spec.version = "0.1.2"
7
7
  spec.authors = ["pcoffmanjr"]
8
8
  spec.email = ["pcoffman@ctc-america.com"]
9
9
 
@@ -7,24 +7,28 @@ 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.delete('message')
25
+ new_record.delete(@array_key)
22
26
  if value.is_a?(Hash)
23
27
  value.each do |k, v|
24
- new_record[k] = v
28
+ new_record[k] = v
25
29
  end
26
30
  else
27
- new_record['message'] = value
31
+ new_record[@array_key] = value
28
32
  end
29
33
  new_es.add(time, new_record)
30
34
  end
@@ -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 = "")
@@ -28,7 +30,7 @@ class ArraySplitterFilterTest < Test::Unit::TestCase
28
30
  assert_equal("v2", filtered_records[1]["message"])
29
31
  assert_equal("v3", filtered_records[2]["message"])
30
32
  end
31
-
33
+
32
34
  test "expand array with hashes in message field" do
33
35
  record = {
34
36
  "key1" => "foo",
@@ -49,6 +51,25 @@ class ArraySplitterFilterTest < Test::Unit::TestCase
49
51
  assert_equal("foobar", filtered_records[1]["k2"])
50
52
  assert_nil(filtered_records[1]["message"])
51
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
52
73
  end
53
74
  end
54
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.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - pcoffmanjr