fluent-plugin-formatter_sprintf 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 680811c15a315a52cf2906c81909a4be47fe21e8
4
- data.tar.gz: 5c26a569349c7525e385ba919eb6979c181f5ddd
3
+ metadata.gz: c29fa74f14ed89372ce1790fc6e840cb18bd026c
4
+ data.tar.gz: 25575cb703755f1039806fa596686ab645b957dd
5
5
  SHA512:
6
- metadata.gz: 3d782c2973084909961205d341ab5134e49c529880c8caa98b0bf127b3f5b307cac28e060bbf9d6d649a3f16e9b989556cc5fcd16366ab88df6b4dbc3f7879b1
7
- data.tar.gz: bae6243e0718c75c6056d939ed7ec0498d96f4d9d863ca37a216f96b630ea0e6e609324a1844e2ac0e8ad66f41c52b89eb53168592f084c554e188150383d0b3
6
+ metadata.gz: 94666c65e0d2321805d2207ca2f8ab800df4963be57ee09d3a611ae6895417f60df6f5b4b38062338fbe512d3cb717a1584309739309854936545bef5e9e57d4
7
+ data.tar.gz: 81bf567361de1e809d011e9d18c291ef2b090b843d9e2d445b93d8d99f97a01ff51c286d2de77c7c179da124b50a1b2229b1f6d96d8f419df6ad97b5a0158488
data/.travis.yml CHANGED
@@ -1,7 +1,9 @@
1
1
  rvm:
2
- - 1.9.3
3
2
  - 2.0.0
4
- - 2.1
3
+ - 2.1.*
4
+ - 2.2.*
5
+ - 2.3.0
5
6
  gemfile:
6
7
  - Gemfile
8
+ before_install: gem update bundler
7
9
  script: "rake test"
data/README.md CHANGED
@@ -53,6 +53,24 @@ gem install fluent-plugin-formatter_sprintf
53
53
  </match>
54
54
  ```
55
55
 
56
+ ### blank string(include [nil, empty?, blank?])
57
+
58
+ ```apache
59
+ format sprintf
60
+ sprintf_format "${tag} ${time} ${url} ${ip_address}\n"
61
+ sprintf_blank_string -
62
+ ```
63
+
64
+ ##### input
65
+ ```json
66
+ 2016-03-15 14:21:40 +0900 analysis.pageview: { "url": null, "ip_address": null }
67
+ ```
68
+
69
+ ##### output
70
+ ```
71
+ analysis.pageview 2016-01-01 00:00:00 - -
72
+ ```
73
+
56
74
  ### bad syntax(at error)
57
75
 
58
76
  sprintf_format "%s ${tag} ${time} ${url} ${ip_address}\n"
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "fluent-plugin-formatter_sprintf"
6
- s.version = "0.0.3"
6
+ s.version = "0.0.4"
7
7
  s.authors = ["Hiroshi Toyama"]
8
8
  s.email = ["toyama0919@gmail.com"]
9
9
  s.homepage = "https://github.com/toyama0919/fluent-plugin-formatter_sprintf"
@@ -41,15 +41,26 @@ module Fluent
41
41
 
42
42
  def get_values(keys, tag, time, record)
43
43
  keys.map{ |key|
44
- if key == 'tag'
45
- tag
46
- elsif key == 'time'
47
- Time.at(time).strftime(@time_format)
48
- else
49
- (record[key].nil? || record[key].empty?) ? @sprintf_blank_string : record[key]
50
- end
44
+ get_value(key, tag, time, record)
51
45
  }
52
46
  end
47
+
48
+ def get_value(key, tag, time, record)
49
+ if key == 'tag'
50
+ tag
51
+ elsif key == 'time'
52
+ Time.at(time).strftime(@time_format)
53
+ else
54
+ return @sprintf_blank_string if record[key].nil?
55
+ if record[key].respond_to?(:empty?) && record[key].empty?
56
+ return @sprintf_blank_string
57
+ end
58
+ if record[key].class == String && record[key].strip.empty?
59
+ return @sprintf_blank_string
60
+ end
61
+ record[key]
62
+ end
63
+ end
53
64
  end
54
65
  end
55
66
  end
data/sample/fluent.conf CHANGED
@@ -1,4 +1,9 @@
1
- <match test.file>
1
+ <source>
2
+ type forward
3
+ port 24224
4
+ </source>
5
+
6
+ <match **>
2
7
  type file
3
8
  path /tmp/test.log
4
9
  format sprintf
@@ -8,11 +8,16 @@ class SprintfFormatterTest < ::Test::Unit::TestCase
8
8
  @time = Fluent::Engine.now
9
9
  end
10
10
 
11
+ def create_driver(conf={})
12
+ Fluent::Test::FormatterTestDriver.new(Fluent::TextFormatter::SprintfFormatter).configure(conf)
13
+ end
14
+
11
15
  def configure(conf)
16
+ @formatter = create_driver(conf)
12
17
  end
13
18
 
14
19
  def test_format_space
15
- @formatter.configure({'sprintf_format' => "${tag} ${url} ${ip_address}\n"})
20
+ configure({'sprintf_format' => "${tag} ${url} ${ip_address}\n"})
16
21
  tag = 'file.test'
17
22
  record = {"url" => "/", "ip_address" => "127.0.0.1"}
18
23
 
@@ -21,7 +26,7 @@ class SprintfFormatterTest < ::Test::Unit::TestCase
21
26
  end
22
27
 
23
28
  def test_format_tsv
24
- @formatter.configure({'sprintf_format' => "${tag}\t${url}\t${ip_address}\n"})
29
+ configure({'sprintf_format' => "${tag}\t${url}\t${ip_address}\n"})
25
30
  tag = 'file.test'
26
31
  record = {"url" => "/", "ip_address" => "127.0.0.1"}
27
32
 
@@ -31,15 +36,67 @@ class SprintfFormatterTest < ::Test::Unit::TestCase
31
36
 
32
37
  def test_format_literal_error
33
38
  assert_raise(Fluent::ConfigError) do
34
- @formatter.configure({'sprintf_format' => "%s\t${url}\t${ip_address}\n"})
39
+ configure({'sprintf_format' => "%s\t${url}\t${ip_address}\n"})
35
40
  end
36
41
 
37
42
  assert_raise(Fluent::ConfigError) do
38
- @formatter.configure({'sprintf_format' => "${url}\t${ip_address}\t%s"})
43
+ configure({'sprintf_format' => "${url}\t${ip_address}\t%s"})
39
44
  end
40
45
 
41
46
  assert_raise(Fluent::ConfigError) do
42
- @formatter.configure({'sprintf_format' => "${url}\t%s\t${ip_address}\t"})
47
+ configure({'sprintf_format' => "${url}\t%s\t${ip_address}\t"})
43
48
  end
44
49
  end
50
+
51
+ def test_fixnum
52
+ configure({'sprintf_format' => "${tag}\t${id}\t${ip_address}\n"})
53
+ tag = 'file.test'
54
+ record = {"id" => 1, "ip_address" => "127.0.0.1"}
55
+
56
+ formatted = @formatter.format(tag, @time, record)
57
+ assert_equal("file.test\t1\t127.0.0.1\n", formatted)
58
+ end
59
+
60
+ def test_sprintf_blank_string
61
+ configure(
62
+ {
63
+ 'sprintf_format' => "${tag}\t${id}\t${ip_address}\t${space}\n",
64
+ 'sprintf_blank_string' => "-",
65
+ }
66
+ )
67
+ tag = 'file.test'
68
+ record = {"id" => nil, "ip_address" => "", "space" => " "}
69
+
70
+ formatted = @formatter.format(tag, @time, record)
71
+ assert_equal("file.test\t-\t-\t-\n", formatted)
72
+ end
73
+
74
+ def test_sprintf_blank_string_with_array
75
+ configure(
76
+ {
77
+ 'sprintf_format' => "${tag}\t${array}\n",
78
+ 'sprintf_blank_string' => "-",
79
+ }
80
+ )
81
+ tag = 'file.test'
82
+ record = {"array" => []}
83
+
84
+ formatted = @formatter.format(tag, @time, record)
85
+ assert_equal("file.test\t-\n", formatted)
86
+ end
87
+
88
+ def test_sprintf_blank_record_format
89
+ configure(
90
+ {
91
+ 'sprintf_format' => "${tag}\t${id}\t${ip_address}\t${space}\n",
92
+ 'sprintf_blank_string' => "-",
93
+ 'sprintf_blank_record_format' => "---\n",
94
+ }
95
+ )
96
+ tag = 'file.test'
97
+ record = {}
98
+
99
+ formatted = @formatter.format(tag, @time, record)
100
+ assert_equal("---\n", formatted)
101
+ end
45
102
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-formatter_sprintf
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
  - Hiroshi Toyama
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-12 00:00:00.000000000 Z
11
+ date: 2016-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -119,11 +119,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  version: '0'
120
120
  requirements: []
121
121
  rubyforge_project: fluent-plugin-formatter_sprintf
122
- rubygems_version: 2.4.2
122
+ rubygems_version: 2.4.8
123
123
  signing_key:
124
124
  specification_version: 4
125
125
  summary: Fluentd Free formatter plugin, Use sprintf.
126
126
  test_files:
127
127
  - test/helper.rb
128
128
  - test/test_formatter_sprintf.rb
129
- has_rdoc: