fluentd 0.14.1 → 0.14.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of fluentd might be problematic. Click here for more details.

Files changed (129) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +110 -1
  3. data/Rakefile +5 -1
  4. data/appveyor.yml +7 -1
  5. data/example/in_forward.conf +4 -0
  6. data/lib/fluent/compat/exec_util.rb +129 -0
  7. data/lib/fluent/compat/file_util.rb +54 -0
  8. data/lib/fluent/compat/filter.rb +21 -3
  9. data/lib/fluent/compat/formatter.rb +4 -2
  10. data/lib/fluent/compat/formatter_utils.rb +85 -0
  11. data/lib/fluent/compat/handle_tag_and_time_mixin.rb +60 -0
  12. data/lib/fluent/compat/input.rb +1 -3
  13. data/lib/fluent/compat/output.rb +95 -39
  14. data/lib/fluent/compat/parser.rb +17 -0
  15. data/lib/fluent/compat/parser_utils.rb +40 -0
  16. data/lib/fluent/compat/socket_util.rb +165 -0
  17. data/lib/fluent/compat/string_util.rb +34 -0
  18. data/lib/fluent/{test/driver/owner.rb → compat/structured_format_mixin.rb} +5 -11
  19. data/lib/fluent/config/element.rb +2 -2
  20. data/lib/fluent/configurable.rb +2 -1
  21. data/lib/fluent/event.rb +61 -7
  22. data/lib/fluent/event_router.rb +1 -1
  23. data/lib/fluent/plugin.rb +7 -7
  24. data/lib/fluent/plugin/buf_file.rb +5 -2
  25. data/lib/fluent/plugin/buffer.rb +194 -64
  26. data/lib/fluent/plugin/buffer/chunk.rb +28 -3
  27. data/lib/fluent/plugin/buffer/file_chunk.rb +5 -21
  28. data/lib/fluent/plugin/buffer/memory_chunk.rb +1 -11
  29. data/lib/fluent/plugin/exec_util.rb +2 -112
  30. data/lib/fluent/plugin/file_util.rb +3 -38
  31. data/lib/fluent/plugin/file_wrapper.rb +1 -1
  32. data/lib/fluent/plugin/filter_grep.rb +3 -7
  33. data/lib/fluent/plugin/filter_record_transformer.rb +5 -5
  34. data/lib/fluent/plugin/filter_stdout.rb +18 -11
  35. data/lib/fluent/plugin/formatter.rb +0 -48
  36. data/lib/fluent/plugin/formatter_csv.rb +7 -8
  37. data/lib/fluent/plugin/formatter_hash.rb +1 -4
  38. data/lib/fluent/plugin/formatter_json.rb +1 -4
  39. data/lib/fluent/plugin/formatter_ltsv.rb +5 -6
  40. data/lib/fluent/plugin/formatter_msgpack.rb +1 -4
  41. data/lib/fluent/plugin/formatter_out_file.rb +36 -3
  42. data/lib/fluent/plugin/formatter_stdout.rb +36 -1
  43. data/lib/fluent/plugin/in_dummy.rb +9 -2
  44. data/lib/fluent/plugin/in_exec.rb +20 -57
  45. data/lib/fluent/plugin/in_forward.rb +4 -3
  46. data/lib/fluent/plugin/in_object_space.rb +8 -44
  47. data/lib/fluent/plugin/in_syslog.rb +13 -24
  48. data/lib/fluent/plugin/in_tail.rb +3 -0
  49. data/lib/fluent/plugin/out_buffered_stdout.rb +14 -4
  50. data/lib/fluent/plugin/out_exec.rb +7 -5
  51. data/lib/fluent/plugin/out_exec_filter.rb +10 -10
  52. data/lib/fluent/plugin/out_file.rb +1 -3
  53. data/lib/fluent/plugin/out_forward.rb +38 -57
  54. data/lib/fluent/plugin/out_stdout.rb +14 -5
  55. data/lib/fluent/plugin/out_stream.rb +3 -0
  56. data/lib/fluent/plugin/output.rb +31 -14
  57. data/lib/fluent/plugin/parser.rb +0 -69
  58. data/lib/fluent/plugin/parser_apache.rb +10 -6
  59. data/lib/fluent/plugin/parser_apache_error.rb +8 -3
  60. data/lib/fluent/plugin/parser_csv.rb +3 -1
  61. data/lib/fluent/plugin/parser_json.rb +1 -1
  62. data/lib/fluent/plugin/parser_multiline.rb +5 -3
  63. data/lib/fluent/plugin/parser_nginx.rb +10 -6
  64. data/lib/fluent/plugin/parser_regexp.rb +73 -0
  65. data/lib/fluent/plugin/socket_util.rb +2 -148
  66. data/lib/fluent/plugin/storage_local.rb +1 -1
  67. data/lib/fluent/plugin/string_util.rb +3 -18
  68. data/lib/fluent/plugin_helper.rb +1 -0
  69. data/lib/fluent/plugin_helper/compat_parameters.rb +166 -41
  70. data/lib/fluent/plugin_helper/formatter.rb +30 -19
  71. data/lib/fluent/plugin_helper/inject.rb +25 -12
  72. data/lib/fluent/plugin_helper/parser.rb +22 -13
  73. data/lib/fluent/plugin_helper/storage.rb +22 -13
  74. data/lib/fluent/registry.rb +19 -6
  75. data/lib/fluent/supervisor.rb +27 -1
  76. data/lib/fluent/test/driver/base.rb +16 -92
  77. data/lib/fluent/test/driver/base_owned.rb +17 -53
  78. data/lib/fluent/test/driver/base_owner.rb +125 -0
  79. data/lib/fluent/test/driver/filter.rb +24 -2
  80. data/lib/fluent/test/driver/input.rb +2 -2
  81. data/lib/fluent/test/driver/multi_output.rb +2 -2
  82. data/lib/fluent/test/driver/output.rb +3 -5
  83. data/lib/fluent/test/helpers.rb +25 -0
  84. data/lib/fluent/test/input_test.rb +4 -4
  85. data/lib/fluent/test/output_test.rb +3 -3
  86. data/lib/fluent/version.rb +1 -1
  87. data/test/config/test_element.rb +135 -6
  88. data/test/plugin/test_buf_file.rb +71 -3
  89. data/test/plugin/test_buffer.rb +305 -86
  90. data/test/plugin/test_buffer_chunk.rb +60 -2
  91. data/test/plugin/test_buffer_file_chunk.rb +4 -3
  92. data/test/plugin/test_filter_grep.rb +25 -21
  93. data/test/plugin/test_filter_record_transformer.rb +75 -67
  94. data/test/plugin/test_filter_stdout.rb +171 -74
  95. data/test/plugin/test_formatter_csv.rb +94 -0
  96. data/test/plugin/test_formatter_json.rb +30 -0
  97. data/test/plugin/test_formatter_ltsv.rb +52 -0
  98. data/test/plugin/test_formatter_msgpack.rb +28 -0
  99. data/test/plugin/test_formatter_out_file.rb +95 -0
  100. data/test/plugin/test_formatter_single_value.rb +38 -0
  101. data/test/plugin/test_in_dummy.rb +95 -0
  102. data/test/plugin/test_in_exec.rb +27 -31
  103. data/test/plugin/test_in_forward.rb +24 -0
  104. data/test/plugin/test_in_gc_stat.rb +5 -5
  105. data/test/plugin/test_in_object_space.rb +4 -4
  106. data/test/plugin/test_in_syslog.rb +60 -35
  107. data/test/plugin/test_out_buffered_stdout.rb +17 -3
  108. data/test/plugin/test_out_forward.rb +93 -5
  109. data/test/plugin/test_out_stdout.rb +14 -3
  110. data/test/plugin/test_output_as_buffered_retries.rb +20 -0
  111. data/test/plugin/test_output_as_buffered_secondary.rb +16 -0
  112. data/test/plugin/test_output_as_standard.rb +22 -22
  113. data/test/plugin/test_parser_apache.rb +13 -9
  114. data/test/plugin/test_parser_apache_error.rb +11 -6
  115. data/test/plugin/test_parser_csv.rb +35 -25
  116. data/test/plugin/test_parser_nginx.rb +11 -5
  117. data/test/plugin/test_parser_regexp.rb +235 -68
  118. data/test/plugin/test_parser_tsv.rb +54 -58
  119. data/test/plugin_helper/test_compat_parameters.rb +111 -46
  120. data/test/plugin_helper/test_formatter.rb +40 -0
  121. data/test/plugin_helper/test_inject.rb +101 -2
  122. data/test/plugin_helper/test_parser.rb +40 -0
  123. data/test/plugin_helper/test_storage.rb +43 -0
  124. data/test/test_event.rb +93 -0
  125. data/test/test_event_router.rb +13 -4
  126. data/test/test_event_time.rb +0 -3
  127. data/test/test_formatter.rb +7 -164
  128. data/test/test_plugin_classes.rb +28 -1
  129. metadata +24 -3
@@ -73,6 +73,14 @@ class StorageHelperTest < Test::Unit::TestCase
73
73
  helpers :storage
74
74
  end
75
75
 
76
+ class Dummy2 < Fluent::Plugin::TestBase
77
+ helpers :storage
78
+ config_section :storage do
79
+ config_set_default :@type, 'ex2'
80
+ config_set_default :dummy_path, '/tmp/yay'
81
+ end
82
+ end
83
+
76
84
  setup do
77
85
  @d = nil
78
86
  end
@@ -91,6 +99,41 @@ class StorageHelperTest < Test::Unit::TestCase
91
99
  assert_equal 0, d._storages.size
92
100
  end
93
101
 
102
+ test 'can override default configuration parameters, but not overwrite whole definition' do
103
+ d = Dummy.new
104
+ d.configure(config_element())
105
+ assert_equal [], d.storage_configs
106
+
107
+ d = Dummy2.new
108
+ d.configure(config_element('ROOT', '', {}, [config_element('storage', '', {}, [])]))
109
+ assert_raise NoMethodError do
110
+ d.storage
111
+ end
112
+ assert_equal 1, d.storage_configs.size
113
+ assert_equal 'ex2', d.storage_configs.first[:@type]
114
+ assert_equal '/tmp/yay', d.storage_configs.first.dummy_path
115
+ end
116
+
117
+ test 'creates instance of type specified by conf, or default_type if @type is missing in conf' do
118
+ d = Dummy2.new
119
+ d.configure(config_element())
120
+ i = d.storage_create(conf: config_element('format', '', {'@type' => 'example'}), default_type: 'ex2')
121
+ assert{ i.is_a?(Fluent::PluginHelper::Storage::SynchronizeWrapper) && i.instance_eval{ @storage }.is_a?(ExampleStorage) }
122
+
123
+ d = Dummy2.new
124
+ d.configure(config_element())
125
+ i = d.storage_create(conf: nil, default_type: 'ex2')
126
+ assert{ i.is_a?(Fluent::PluginHelper::Storage::SynchronizeWrapper) && i.instance_eval{ @storage }.is_a?(Example2Storage) }
127
+ end
128
+
129
+ test 'raises config error if config section is specified, but @type is not specified' do
130
+ d = Dummy2.new
131
+ d.configure(config_element())
132
+ assert_raise Fluent::ConfigError.new("@type is required in <storage>") do
133
+ d.storage_create(conf: config_element('storage', '', {}), default_type: 'ex2')
134
+ end
135
+ end
136
+
94
137
  test 'can be configured without storage sections' do
95
138
  d = Dummy.new
96
139
  assert_nothing_raised do
@@ -114,6 +114,35 @@ module EventTest
114
114
  assert_true ArrayEventStream.new([]).empty?
115
115
  end
116
116
 
117
+ test 'size' do
118
+ assert_equal 2, @es.size
119
+ assert_equal 0, ArrayEventStream.new([]).size
120
+ end
121
+
122
+ test 'slice' do
123
+ sliced = @es.slice(1,1)
124
+ assert_kind_of EventStream, sliced
125
+ assert_equal 1, sliced.size
126
+
127
+ sliced.each do |time, record|
128
+ assert_equal @times[1], time
129
+ assert_equal 'v2', record['k']
130
+ assert_equal 2, record['n']
131
+ end
132
+
133
+ sliced = @es.slice(0,2)
134
+ assert_kind_of EventStream, sliced
135
+ assert_equal 2, sliced.size
136
+
137
+ counter = 0
138
+ sliced.each do |time, record|
139
+ assert_equal @times[counter], time
140
+ assert_equal @records[counter]['k'], record['k']
141
+ assert_equal @records[counter]['n'], record['n']
142
+ counter += 1
143
+ end
144
+ end
145
+
117
146
  test 'each' do
118
147
  i = 0
119
148
  @es.each { |time, record|
@@ -164,6 +193,35 @@ module EventTest
164
193
  assert_true MultiEventStream.new.empty?
165
194
  end
166
195
 
196
+ test 'size' do
197
+ assert_equal 2, @es.size
198
+ assert_equal 0, MultiEventStream.new.size
199
+ end
200
+
201
+ test 'slice' do
202
+ sliced = @es.slice(1,1)
203
+ assert_kind_of EventStream, sliced
204
+ assert_equal 1, sliced.size
205
+
206
+ sliced.each do |time, record|
207
+ assert_equal @times[1], time
208
+ assert_equal 'v2', record['k']
209
+ assert_equal 2, record['n']
210
+ end
211
+
212
+ sliced = @es.slice(0,2)
213
+ assert_kind_of EventStream, sliced
214
+ assert_equal 2, sliced.size
215
+
216
+ counter = 0
217
+ sliced.each do |time, record|
218
+ assert_equal @times[counter], time
219
+ assert_equal @records[counter]['k'], record['k']
220
+ assert_equal @records[counter]['n'], record['n']
221
+ counter += 1
222
+ end
223
+ end
224
+
167
225
  test 'each' do
168
226
  i = 0
169
227
  @es.each { |time, record|
@@ -204,16 +262,51 @@ module EventTest
204
262
  assert_kind_of MessagePackEventStream, dupped
205
263
  assert_not_equal @es.object_id, dupped.object_id
206
264
  assert_duplicated_records @es, dupped
265
+
266
+ # After iteration of events (done in assert_duplicated_records),
267
+ # duplicated event stream still has unpacked objects and correct size
268
+ dupped = @es.dup
269
+ assert_equal 2, dupped.instance_eval{ @size }
207
270
  end
208
271
 
209
272
  test 'empty?' do
210
273
  assert_false @es.empty?
274
+ assert_true MessagePackEventStream.new('', 0).empty?
275
+ end
276
+
277
+ test 'size' do
278
+ assert_equal 2, @es.size
279
+ assert_equal 0, MessagePackEventStream.new('').size
211
280
  end
212
281
 
213
282
  test 'repeatable?' do
214
283
  assert_true @es.repeatable?
215
284
  end
216
285
 
286
+ test 'slice' do
287
+ sliced = @es.slice(1,1)
288
+ assert_kind_of EventStream, sliced
289
+ assert_equal 1, sliced.size
290
+
291
+ sliced.each do |time, record|
292
+ assert_equal @times[1], time
293
+ assert_equal 'v2', record['k']
294
+ assert_equal 2, record['n']
295
+ end
296
+
297
+ sliced = @es.slice(0,2)
298
+ assert_kind_of EventStream, sliced
299
+ assert_equal 2, sliced.size
300
+
301
+ counter = 0
302
+ sliced.each do |time, record|
303
+ assert_equal @times[counter], time
304
+ assert_equal @records[counter]['k'], record['k']
305
+ assert_equal @records[counter]['n'], record['n']
306
+ counter += 1
307
+ end
308
+ end
309
+
217
310
  test 'each' do
218
311
  i = 0
219
312
  @es.each { |time, record|
@@ -9,6 +9,7 @@ class EventRouterTest < ::Test::Unit::TestCase
9
9
  teardown do
10
10
  @output = nil
11
11
  @filter = nil
12
+ @compat_filter = nil
12
13
  @error_output = nil
13
14
  @emit_handler = nil
14
15
  @default_collector = nil
@@ -22,6 +23,10 @@ class EventRouterTest < ::Test::Unit::TestCase
22
23
  @filter ||= FluentTestFilter.new
23
24
  end
24
25
 
26
+ def compat_filter
27
+ @compat_filter ||= FluentCompatTestFilter.new
28
+ end
29
+
25
30
  def error_output
26
31
  @error_output ||= FluentTestErrorOutput.new
27
32
  end
@@ -107,16 +112,20 @@ class EventRouterTest < ::Test::Unit::TestCase
107
112
  @pipeline.set_output(output)
108
113
  end
109
114
 
110
- test 'set one filer' do
111
- @pipeline.add_filter(filter)
115
+ data('Filter plugin' => 'filter',
116
+ 'Compat::Filter plugin' => 'compat_filter')
117
+ test 'set one filer' do |filter_type|
118
+ @pipeline.add_filter(filter_type == 'filter' ? filter : compat_filter)
112
119
  @pipeline.emit_events('test', @es)
113
120
  assert_equal 1, output.events.size
114
121
  assert_equal 'value', output.events['test'].first['key']
115
122
  assert_equal 0, output.events['test'].first['__test__']
116
123
  end
117
124
 
118
- test 'set one filer with multi events' do
119
- @pipeline.add_filter(filter)
125
+ data('Filter plugin' => 'filter',
126
+ 'Compat::Filter plugin' => 'compat_filter')
127
+ test 'set one filer with multi events' do |filter_type|
128
+ @pipeline.add_filter(filter_type == 'filter' ? filter : compat_filter)
120
129
  @pipeline.emit_events('test', events)
121
130
  assert_equal 1, output.events.size
122
131
  assert_equal 5, output.events['test'].size
@@ -45,21 +45,18 @@ class EventTimeTest < Test::Unit::TestCase
45
45
 
46
46
  test 'JSON.dump' do
47
47
  time = Fluent::EventTime.new(100)
48
- assert_equal('100', JSON.dump(time))
49
48
  assert_equal('{"time":100}', JSON.dump({'time' => time}))
50
49
  assert_equal('["tag",100,{"key":"value"}]', JSON.dump(["tag", time, {"key" => "value"}]))
51
50
  end
52
51
 
53
52
  test 'Oj.dump' do
54
53
  time = Fluent::EventTime.new(100)
55
- assert_equal('100', Oj.dump(time, mode: :compat))
56
54
  assert_equal('{"time":100}', Oj.dump({'time' => time}, mode: :compat))
57
55
  assert_equal('["tag",100,{"key":"value"}]', Oj.dump(["tag", time, {"key" => "value"}], mode: :compat))
58
56
  end
59
57
 
60
58
  test 'Yajl.dump' do
61
59
  time = Fluent::EventTime.new(100)
62
- assert_equal('100', Yajl.dump(time))
63
60
  assert_equal('{"time":100}', Yajl.dump({'time' => time}))
64
61
  assert_equal('["tag",100,{"key":"value"}]', Yajl.dump(["tag", time, {"key" => "value"}]))
65
62
  end
@@ -5,28 +5,12 @@ require 'fluent/formatter'
5
5
  module FormatterTest
6
6
  include Fluent
7
7
 
8
- def time2str(time, localtime = false, format = nil)
9
- if format
10
- if localtime
11
- Time.at(time).strftime(format)
12
- else
13
- Time.at(time).utc.strftime(format)
14
- end
15
- else
16
- if localtime
17
- Time.at(time).iso8601
18
- else
19
- Time.at(time).utc.iso8601
20
- end
21
- end
22
- end
23
-
24
8
  def tag
25
9
  'tag'
26
10
  end
27
11
 
28
12
  def record
29
- {'message' => 'awesome'}
13
+ {'message' => 'awesome', 'greeting' => 'hello'}
30
14
  end
31
15
 
32
16
  def with_timezone(tz)
@@ -137,36 +121,6 @@ module FormatterTest
137
121
 
138
122
  assert_equal("#{Yajl.dump(record)}\n", formatted)
139
123
  end
140
-
141
- data('oj' => 'oj', 'yajl' => 'yajl')
142
- def test_format_with_include_tag(data)
143
- @formatter.configure('include_tag_key' => 'true', 'tag_key' => 'foo', 'json_parser' => data)
144
- formatted = @formatter.format(tag, @time, record.dup)
145
-
146
- r = record
147
- r['foo'] = tag
148
- assert_equal("#{Yajl.dump(r)}\n", formatted)
149
- end
150
-
151
- data('oj' => 'oj', 'yajl' => 'yajl')
152
- def test_format_with_include_time(data)
153
- @formatter.configure('include_time_key' => 'true', 'localtime' => '', 'json_parser' => data)
154
- formatted = @formatter.format(tag, @time, record.dup)
155
-
156
- r = record
157
- r['time'] = time2str(@time, true)
158
- assert_equal("#{Yajl.dump(r)}\n", formatted)
159
- end
160
-
161
- data('oj' => 'oj', 'yajl' => 'yajl')
162
- def test_format_with_include_time_as_number(data)
163
- @formatter.configure('include_time_key' => 'true', 'time_as_epoch' => 'true', 'time_key' => 'epoch', 'json_parser' => data)
164
- formatted = @formatter.format(tag, @time, record.dup)
165
-
166
- r = record
167
- r['epoch'] = @time
168
- assert_equal("#{Yajl.dump(r)}\n", formatted)
169
- end
170
124
  end
171
125
 
172
126
  class MessagePackFormatterTest < ::Test::Unit::TestCase
@@ -183,33 +137,6 @@ module FormatterTest
183
137
 
184
138
  assert_equal(record.to_msgpack, formatted)
185
139
  end
186
-
187
- def test_format_with_include_tag
188
- @formatter.configure('include_tag_key' => 'true', 'tag_key' => 'foo')
189
- formatted = @formatter.format(tag, @time, record.dup)
190
-
191
- r = record
192
- r['foo'] = tag
193
- assert_equal(r.to_msgpack, formatted)
194
- end
195
-
196
- def test_format_with_include_time
197
- @formatter.configure('include_time_key' => 'true', 'localtime' => '')
198
- formatted = @formatter.format(tag, @time, record.dup)
199
-
200
- r = record
201
- r['time'] = time2str(@time, true)
202
- assert_equal(r.to_msgpack, formatted)
203
- end
204
-
205
- def test_format_with_include_time_as_number
206
- @formatter.configure('include_time_key' => 'true', 'time_as_epoch' => 'true', 'time_key' => 'epoch')
207
- formatted = @formatter.format(tag, @time, record.dup)
208
-
209
- r = record
210
- r['epoch'] = @time
211
- assert_equal(r.to_msgpack, formatted)
212
- end
213
140
  end
214
141
 
215
142
  class LabeledTSVFormatterTest < ::Test::Unit::TestCase
@@ -237,32 +164,17 @@ module FormatterTest
237
164
  @formatter.configure({})
238
165
  formatted = @formatter.format(tag, @time, record)
239
166
 
240
- assert_equal("message:awesome\n", formatted)
241
- end
242
-
243
- def test_format_with_tag
244
- @formatter.configure('include_tag_key' => 'true')
245
- formatted = @formatter.format(tag, @time, record)
246
-
247
- assert_equal("message:awesome\ttag:tag\n", formatted)
248
- end
249
-
250
- def test_format_with_time
251
- @formatter.configure('include_time_key' => 'true', 'time_format' => '%Y')
252
- formatted = @formatter.format(tag, @time, record)
253
-
254
- assert_equal("message:awesome\ttime:#{Time.now.year}\n", formatted)
167
+ assert_equal("message:awesome\tgreeting:hello\n", formatted)
255
168
  end
256
169
 
257
170
  def test_format_with_customized_delimiters
258
171
  @formatter.configure(
259
- 'include_tag_key' => 'true',
260
172
  'delimiter' => ',',
261
173
  'label_delimiter' => '=',
262
174
  )
263
175
  formatted = @formatter.format(tag, @time, record)
264
176
 
265
- assert_equal("message=awesome,tag=tag\n", formatted)
177
+ assert_equal("message=awesome,greeting=hello\n", formatted)
266
178
  end
267
179
  end
268
180
 
@@ -273,11 +185,11 @@ module FormatterTest
273
185
  @formatter = TextFormatter::CsvFormatter.new
274
186
  @time = Engine.now
275
187
  end
276
-
188
+
277
189
  def test_config_params
278
190
  assert_equal ',', @formatter.delimiter
279
191
  assert_equal true, @formatter.force_quotes
280
- assert_equal [], @formatter.fields
192
+ assert_nil @formatter.fields
281
193
  end
282
194
 
283
195
  data(
@@ -286,8 +198,9 @@ module FormatterTest
286
198
  'pipe' => ['|', '|'])
287
199
  def test_config_params_with_customized_delimiters(data)
288
200
  expected, target = data
289
- @formatter.configure('delimiter' => target)
201
+ @formatter.configure('delimiter' => target, 'fields' => 'a,b,c')
290
202
  assert_equal expected, @formatter.delimiter
203
+ assert_equal ['a', 'b', 'c'], @formatter.fields
291
204
  end
292
205
 
293
206
  def test_format
@@ -299,32 +212,6 @@ module FormatterTest
299
212
  assert_equal("\"awesome\",\"awesome2\"\n", formatted)
300
213
  end
301
214
 
302
- def test_format_with_tag
303
- @formatter.configure(
304
- 'fields' => 'tag,message,message2',
305
- 'include_tag_key' => 'true'
306
- )
307
- formatted = @formatter.format(tag, @time, {
308
- 'message' => 'awesome',
309
- 'message2' => 'awesome2'
310
- })
311
- assert_equal("\"tag\",\"awesome\",\"awesome2\"\n", formatted)
312
- end
313
-
314
- def test_format_with_time
315
- @formatter.configure(
316
- 'fields' => 'time,message,message2',
317
- 'include_time_key' => 'true',
318
- 'time_format' => '%Y'
319
- )
320
- formatted = @formatter.format(tag, @time, {
321
- 'message' => 'awesome',
322
- 'message2' => 'awesome2'
323
- })
324
- assert_equal("\"#{Time.now.year}\",\"awesome\",\"awesome2\"\n",
325
- formatted)
326
- end
327
-
328
215
  def test_format_with_customized_delimiters
329
216
  @formatter.configure(
330
217
  'fields' => 'message,message2',
@@ -429,48 +316,4 @@ module FormatterTest
429
316
  $LOAD_PATH.shift
430
317
  end
431
318
  end
432
-
433
- class TimeConfigTest < ::Test::Unit::TestCase
434
- include FormatterTest
435
-
436
- def setup
437
- @formatter = TextFormatter::LabeledTSVFormatter.new
438
- @time = Time.new(2014, 9, 27, 0, 0, 0, 0).to_i
439
- end
440
-
441
- def format(conf)
442
- @formatter.configure({'include_time_key' => true}.merge(conf))
443
- formatted = @formatter.format("tag", @time, {})
444
- # Drop the leading "time:" and the trailing "\n".
445
- formatted[5..-2]
446
- end
447
-
448
- def test_none
449
- with_timezone("UTC-01") do
450
- # 'localtime' is true by default.
451
- assert_equal("2014-09-27T01:00:00+01:00", format({}))
452
- end
453
- end
454
-
455
- def test_utc
456
- with_timezone("UTC-01") do
457
- # 'utc' takes precedence over 'localtime'.
458
- assert_equal("2014-09-27T00:00:00Z", format("utc" => true))
459
- end
460
- end
461
-
462
- def test_timezone
463
- with_timezone("UTC-01") do
464
- # 'timezone' takes precedence over 'localtime'.
465
- assert_equal("2014-09-27T02:00:00+02:00", format("timezone" => "+02"))
466
- end
467
- end
468
-
469
- def test_utc_timezone
470
- with_timezone("UTC-01") do
471
- # 'timezone' takes precedence over 'utc'.
472
- assert_equal("2014-09-27T09:00:00+09:00", format("utc" => true, "timezone" => "Asia/Tokyo"))
473
- end
474
- end
475
- end
476
319
  end