fluentd 0.14.8 → 0.14.9

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.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/CONTRIBUTING.md +6 -1
  4. data/ChangeLog +38 -0
  5. data/Rakefile +21 -0
  6. data/example/out_exec_filter.conf +42 -0
  7. data/lib/fluent/agent.rb +2 -2
  8. data/lib/fluent/command/binlog_reader.rb +1 -1
  9. data/lib/fluent/command/cat.rb +5 -2
  10. data/lib/fluent/compat/output.rb +7 -8
  11. data/lib/fluent/compat/parser.rb +139 -11
  12. data/lib/fluent/config/configure_proxy.rb +2 -11
  13. data/lib/fluent/config/section.rb +7 -0
  14. data/lib/fluent/configurable.rb +1 -3
  15. data/lib/fluent/log.rb +1 -1
  16. data/lib/fluent/plugin/base.rb +17 -0
  17. data/lib/fluent/plugin/filter_parser.rb +108 -0
  18. data/lib/fluent/plugin/filter_record_transformer.rb +4 -7
  19. data/lib/fluent/plugin/filter_stdout.rb +1 -1
  20. data/lib/fluent/plugin/formatter.rb +5 -0
  21. data/lib/fluent/plugin/formatter_msgpack.rb +4 -0
  22. data/lib/fluent/plugin/formatter_stdout.rb +3 -2
  23. data/lib/fluent/plugin/formatter_tsv.rb +34 -0
  24. data/lib/fluent/plugin/in_exec.rb +48 -93
  25. data/lib/fluent/plugin/in_forward.rb +25 -105
  26. data/lib/fluent/plugin/in_http.rb +68 -65
  27. data/lib/fluent/plugin/in_syslog.rb +29 -51
  28. data/lib/fluent/plugin/multi_output.rb +1 -3
  29. data/lib/fluent/plugin/out_exec.rb +58 -71
  30. data/lib/fluent/plugin/out_exec_filter.rb +199 -279
  31. data/lib/fluent/plugin/out_file.rb +155 -80
  32. data/lib/fluent/plugin/out_forward.rb +44 -47
  33. data/lib/fluent/plugin/out_stdout.rb +6 -21
  34. data/lib/fluent/plugin/output.rb +23 -17
  35. data/lib/fluent/plugin/parser.rb +121 -61
  36. data/lib/fluent/plugin/parser_csv.rb +9 -3
  37. data/lib/fluent/plugin/parser_json.rb +37 -35
  38. data/lib/fluent/plugin/parser_ltsv.rb +11 -19
  39. data/lib/fluent/plugin/parser_msgpack.rb +50 -0
  40. data/lib/fluent/plugin/parser_regexp.rb +15 -42
  41. data/lib/fluent/plugin/parser_tsv.rb +8 -3
  42. data/lib/fluent/plugin_helper.rb +8 -1
  43. data/lib/fluent/plugin_helper/child_process.rb +139 -73
  44. data/lib/fluent/plugin_helper/compat_parameters.rb +93 -4
  45. data/lib/fluent/plugin_helper/event_emitter.rb +14 -1
  46. data/lib/fluent/plugin_helper/extract.rb +16 -4
  47. data/lib/fluent/plugin_helper/formatter.rb +9 -11
  48. data/lib/fluent/plugin_helper/inject.rb +4 -0
  49. data/lib/fluent/plugin_helper/parser.rb +3 -3
  50. data/lib/fluent/root_agent.rb +1 -1
  51. data/lib/fluent/test/driver/base.rb +51 -37
  52. data/lib/fluent/test/driver/base_owner.rb +18 -8
  53. data/lib/fluent/test/driver/multi_output.rb +2 -1
  54. data/lib/fluent/test/driver/output.rb +29 -6
  55. data/lib/fluent/test/helpers.rb +3 -1
  56. data/lib/fluent/test/log.rb +4 -0
  57. data/lib/fluent/test/startup_shutdown.rb +13 -0
  58. data/lib/fluent/time.rb +14 -8
  59. data/lib/fluent/version.rb +1 -1
  60. data/test/command/test_binlog_reader.rb +5 -1
  61. data/test/config/test_configurable.rb +173 -0
  62. data/test/config/test_configure_proxy.rb +0 -43
  63. data/test/plugin/test_base.rb +16 -0
  64. data/test/plugin/test_filter_parser.rb +665 -0
  65. data/test/plugin/test_filter_record_transformer.rb +11 -3
  66. data/test/plugin/test_filter_stdout.rb +18 -27
  67. data/test/plugin/test_in_dummy.rb +1 -1
  68. data/test/plugin/test_in_exec.rb +206 -94
  69. data/test/plugin/test_in_forward.rb +310 -327
  70. data/test/plugin/test_in_http.rb +310 -186
  71. data/test/plugin/test_out_exec.rb +223 -68
  72. data/test/plugin/test_out_exec_filter.rb +520 -169
  73. data/test/plugin/test_out_file.rb +620 -177
  74. data/test/plugin/test_out_forward.rb +110 -132
  75. data/test/plugin/test_out_null.rb +1 -1
  76. data/test/plugin/test_out_secondary_file.rb +4 -2
  77. data/test/plugin/test_out_stdout.rb +14 -35
  78. data/test/plugin/test_parser.rb +359 -0
  79. data/test/plugin/test_parser_csv.rb +1 -2
  80. data/test/plugin/test_parser_json.rb +3 -4
  81. data/test/plugin/test_parser_labeled_tsv.rb +1 -2
  82. data/test/plugin/test_parser_none.rb +1 -2
  83. data/test/plugin/test_parser_regexp.rb +8 -4
  84. data/test/plugin/test_parser_tsv.rb +4 -3
  85. data/test/plugin_helper/test_child_process.rb +184 -0
  86. data/test/plugin_helper/test_compat_parameters.rb +88 -1
  87. data/test/plugin_helper/test_extract.rb +0 -1
  88. data/test/plugin_helper/test_formatter.rb +5 -2
  89. data/test/plugin_helper/test_parser.rb +6 -5
  90. data/test/test_output.rb +24 -2
  91. data/test/test_plugin_classes.rb +20 -0
  92. data/test/test_root_agent.rb +139 -0
  93. data/test/test_test_drivers.rb +132 -0
  94. metadata +12 -4
  95. data/test/plugin/test_parser_base.rb +0 -32
@@ -178,12 +178,24 @@ module FluentOutputTest
178
178
 
179
179
  CONFIG = %[
180
180
  buffer_path #{TMP_DIR}/foo
181
- time_slice_format %Y%m%d
181
+ time_slice_format %Y%m%d%H
182
182
  ]
183
183
 
184
184
  class TimeSlicedOutputTestPlugin < Fluent::TimeSlicedOutput
185
+ attr_reader :written_chunk_keys, :errors_in_write
186
+ def initialize
187
+ super
188
+ @written_chunk_keys = []
189
+ @errors_in_write = []
190
+ end
185
191
  def format(tag, time, record)
186
- ''
192
+ [tag, time, record].to_json + "\n"
193
+ end
194
+ def write(chunk)
195
+ @written_chunk_keys << chunk.key
196
+ true
197
+ rescue => e
198
+ @errors_in_write << e
187
199
  end
188
200
  end
189
201
 
@@ -209,6 +221,16 @@ module FluentOutputTest
209
221
  d.instance.emit_events('test', OneEventStream.new('string', 10))
210
222
  end
211
223
  end
224
+
225
+ test "plugin can get key of chunk in #write" do
226
+ d = create_driver
227
+ d.instance.start
228
+ d.instance.after_start
229
+ d.instance.emit_events('test', OneEventStream.new(event_time("2016-11-08 17:44:30 +0900"), {"message" => "yay"}))
230
+ d.instance.force_flush
231
+ assert_equal [], d.instance.errors_in_write
232
+ assert_equal ["2016110808"], d.instance.written_chunk_keys # default timezone is UTC
233
+ end
212
234
  end
213
235
  end
214
236
  end
@@ -110,6 +110,26 @@ module FluentTest
110
110
  end
111
111
  end
112
112
 
113
+ class FluentTestBufferedOutput < ::Fluent::Plugin::Output
114
+ ::Fluent::Plugin.register_output('test_out_buffered', self)
115
+ def write(chunk)
116
+ # drop everything
117
+ end
118
+ end
119
+
120
+ class FluentTestEmitOutput < ::Fluent::Plugin::Output
121
+ ::Fluent::Plugin.register_output('test_out_emit', self)
122
+ helpers :event_emitter
123
+ def write(chunk)
124
+ tag = chunk.metadata.tag || 'test'
125
+ array = []
126
+ chunk.each do |time, record|
127
+ array << [time, record]
128
+ end
129
+ router.emit_array(tag, array)
130
+ end
131
+ end
132
+
113
133
  class FluentTestErrorOutput < ::Fluent::Plugin::Output
114
134
  ::Fluent::Plugin.register_output('test_out_error', self)
115
135
 
@@ -207,6 +207,145 @@ EOC
207
207
  end
208
208
  end
209
209
 
210
+ sub_test_case 'configured with label and secondary plugin' do
211
+ setup do
212
+ @ra = RootAgent.new(log: $log)
213
+ stub(Engine).root_agent{ @ra }
214
+ @ra.configure(Config.parse(<<-EOC, "(test)", "(test_dir)", true))
215
+ <source>
216
+ @type test_in
217
+ @label @route_a
218
+ </source>
219
+ <label @route_a>
220
+ <match a.**>
221
+ @type test_out_buffered
222
+ <secondary>
223
+ @type test_out_emit
224
+ </secondary>
225
+ </match>
226
+ </label>
227
+ <label @route_b>
228
+ <match b.**>
229
+ @type test_out
230
+ </match>
231
+ </label>
232
+ EOC
233
+ end
234
+
235
+ test 'secondary plugin has an event router for the label which the plugin is in' do
236
+ assert_equal 1, @ra.inputs.size
237
+ assert_equal 2, @ra.labels.size
238
+ assert_equal ['@route_a', '@route_b'], @ra.labels.keys
239
+ assert_equal '@route_a', @ra.labels['@route_a'].context
240
+ assert_equal '@route_b', @ra.labels['@route_b'].context
241
+
242
+ c1 = @ra.labels['@route_a']
243
+
244
+ assert_equal 1, c1.outputs.size
245
+ assert !c1.outputs.first.has_router?
246
+
247
+ assert c1.outputs.first.secondary
248
+ assert c1.outputs.first.secondary.has_router?
249
+ assert_equal c1.event_router, c1.outputs.first.secondary.router
250
+ end
251
+ end
252
+
253
+ sub_test_case 'configured with label and secondary plugin with @label specifier' do
254
+ setup do
255
+ @ra = RootAgent.new(log: $log)
256
+ stub(Engine).root_agent{ @ra }
257
+ @ra.configure(Config.parse(<<-EOC, "(test)", "(test_dir)", true))
258
+ <source>
259
+ @type test_in
260
+ @label @route_a
261
+ </source>
262
+ <label @route_a>
263
+ <match a.**>
264
+ @type test_out_buffered
265
+ <secondary>
266
+ @type test_out_emit
267
+ @label @route_b
268
+ </secondary>
269
+ </match>
270
+ </label>
271
+ <label @route_b>
272
+ <match b.**>
273
+ @type test_out
274
+ </match>
275
+ </label>
276
+ EOC
277
+ end
278
+
279
+ test 'secondary plugin has an event router for the label specified in secondary section' do
280
+ assert_equal 1, @ra.inputs.size
281
+ assert_equal 2, @ra.labels.size
282
+ assert_equal ['@route_a', '@route_b'], @ra.labels.keys
283
+ assert_equal '@route_a', @ra.labels['@route_a'].context
284
+ assert_equal '@route_b', @ra.labels['@route_b'].context
285
+
286
+ c1 = @ra.labels['@route_a']
287
+ c2 = @ra.labels['@route_b']
288
+
289
+ assert_equal 1, c1.outputs.size
290
+ assert !c1.outputs.first.has_router?
291
+
292
+ assert c1.outputs.first.secondary
293
+ assert c1.outputs.first.secondary.has_router?
294
+ assert_equal c2.event_router, c1.outputs.first.secondary.router
295
+ end
296
+ end
297
+
298
+ sub_test_case 'configured with label and secondary plugin with @label specifier in primary output' do
299
+ setup do
300
+ @ra = RootAgent.new(log: $log)
301
+ stub(Engine).root_agent{ @ra }
302
+ @ra.configure(Config.parse(<<-EOC, "(test)", "(test_dir)", true))
303
+ <source>
304
+ @type test_in
305
+ @label @route_a
306
+ </source>
307
+ <label @route_a>
308
+ <match a.**>
309
+ @type test_out_emit
310
+ @label @route_b
311
+ <secondary>
312
+ @type test_out_emit
313
+ </secondary>
314
+ </match>
315
+ </label>
316
+ <label @route_b>
317
+ <match b.**>
318
+ @type test_out
319
+ </match>
320
+ </label>
321
+ EOC
322
+ end
323
+
324
+ test 'secondary plugin has an event router for the label specified in secondary section' do
325
+ assert_equal 1, @ra.inputs.size
326
+ assert_equal 2, @ra.labels.size
327
+ assert_equal ['@route_a', '@route_b'], @ra.labels.keys
328
+ assert_equal '@route_a', @ra.labels['@route_a'].context
329
+ assert_equal '@route_b', @ra.labels['@route_b'].context
330
+
331
+ c1 = @ra.labels['@route_a']
332
+ c2 = @ra.labels['@route_b']
333
+
334
+ assert_equal 1, c1.outputs.size
335
+ assert c1.outputs.first.secondary
336
+
337
+ p1 = c1.outputs.first
338
+ assert p1.has_router?
339
+ assert_equal c1.event_router, p1.context_router
340
+ assert_equal c2.event_router, p1.router
341
+
342
+ s1 = p1.secondary
343
+ assert s1.has_router?
344
+ assert_equal c1.event_router, s1.context_router
345
+ assert_equal c2.event_router, s1.router
346
+ end
347
+ end
348
+
210
349
  sub_test_case 'configured with MultiOutput plugins' do
211
350
  setup do
212
351
  @ra = RootAgent.new(log: $log)
@@ -0,0 +1,132 @@
1
+ require_relative 'helper'
2
+ require 'fluent/plugin/input'
3
+ require 'fluent/test/driver/input'
4
+ require 'fluent/plugin/output'
5
+ require 'fluent/test/driver/output'
6
+ require 'fluent/plugin/filter'
7
+ require 'fluent/test/driver/filter'
8
+ require 'fluent/plugin/multi_output'
9
+ require 'fluent/test/driver/multi_output'
10
+ require 'fluent/plugin/parser'
11
+ require 'fluent/test/driver/parser'
12
+ require 'fluent/plugin/formatter'
13
+ require 'fluent/test/driver/formatter'
14
+
15
+ require 'timecop'
16
+
17
+ class TestDriverTest < ::Test::Unit::TestCase
18
+ def setup
19
+ Fluent::Test.setup
20
+ end
21
+
22
+ sub_test_case 'plugin test driver' do
23
+ data(
24
+ 'input plugin test driver' => [Fluent::Test::Driver::Input, Fluent::Plugin::Input],
25
+ 'multi_output plugin test driver' => [Fluent::Test::Driver::MultiOutput, Fluent::Plugin::MultiOutput],
26
+ 'parser plugin test driver' => [Fluent::Test::Driver::Parser, Fluent::Plugin::Parser],
27
+ 'formatter plugin test driver' => [Fluent::Test::Driver::Formatter, Fluent::Plugin::Formatter],
28
+ )
29
+ test 'returns the block value as the return value of #run' do |args|
30
+ driver_class, plugin_class = args
31
+ d = driver_class.new(Class.new(plugin_class))
32
+ v = d.run do
33
+ x = 1 + 2
34
+ y = 2 + 4
35
+ 3 || x || y
36
+ end
37
+ assert_equal 3, v
38
+ end
39
+
40
+ data(
41
+ 'input plugin test driver' => [Fluent::Test::Driver::Input, Fluent::Plugin::Input],
42
+ 'multi_output plugin test driver' => [Fluent::Test::Driver::MultiOutput, Fluent::Plugin::MultiOutput],
43
+ 'parser plugin test driver' => [Fluent::Test::Driver::Parser, Fluent::Plugin::Parser],
44
+ 'formatter plugin test driver' => [Fluent::Test::Driver::Formatter, Fluent::Plugin::Formatter],
45
+ )
46
+ test 'raises error for hard timeout' do |args|
47
+ driver_class, plugin_class = args
48
+ d = driver_class.new(Class.new(plugin_class))
49
+ assert_raise Fluent::Test::Driver::TestTimedOut do
50
+ d.run(timeout: 1) do
51
+ sleep 5
52
+ end
53
+ end
54
+ end
55
+
56
+ data(
57
+ 'input plugin test driver' => [Fluent::Test::Driver::Input, Fluent::Plugin::Input],
58
+ 'multi_output plugin test driver' => [Fluent::Test::Driver::MultiOutput, Fluent::Plugin::MultiOutput],
59
+ 'parser plugin test driver' => [Fluent::Test::Driver::Parser, Fluent::Plugin::Parser],
60
+ 'formatter plugin test driver' => [Fluent::Test::Driver::Formatter, Fluent::Plugin::Formatter],
61
+ )
62
+ test 'can stop with soft timeout for blocks never stops, even with Timecop' do |args|
63
+ Timecop.freeze(Time.parse("2016-11-04 18:49:00"))
64
+ begin
65
+ driver_class, plugin_class = args
66
+ d = driver_class.new(Class.new(plugin_class))
67
+ assert_nothing_raised do
68
+ before = Process.clock_gettime(Process::CLOCK_MONOTONIC)
69
+ d.end_if{ false }
70
+ d.run(timeout: 1) do
71
+ sleep 0.1 until d.stop?
72
+ end
73
+ after = Process.clock_gettime(Process::CLOCK_MONOTONIC)
74
+ assert{ after >= before + 1.0 }
75
+ end
76
+ ensure
77
+ Timecop.return
78
+ end
79
+ end
80
+
81
+ test 'raise errors raised in threads' do
82
+ d = Fluent::Test::Driver::Input.new(Fluent::Plugin::Input) do
83
+ helpers :thread
84
+ def start
85
+ super
86
+ thread_create(:input_thread_for_test_driver_test) do
87
+ sleep 0.5
88
+ raise "yaaaaaaaaaay!"
89
+ end
90
+ end
91
+ end
92
+ assert_raise "yaaaaaaaaaay!" do
93
+ d.end_if{ false }
94
+ d.run(timeout: 3) do
95
+ sleep 0.1 until d.stop?
96
+ end
97
+ end
98
+ end
99
+ end
100
+
101
+ sub_test_case 'output plugin test driver' do
102
+ test 'returns the block value as the return value of #run' do
103
+ d = Fluent::Test::Driver::Output.new(Class.new(Fluent::Plugin::Output)) do
104
+ def process(tag, es)
105
+ # drop
106
+ end
107
+ end
108
+ v = d.run do
109
+ x = 1 + 2
110
+ y = 2 + 4
111
+ 3 || x || y
112
+ end
113
+ assert_equal 3, v
114
+ end
115
+ end
116
+
117
+ sub_test_case 'filter plugin test driver' do
118
+ test 'returns the block value as the return value of #run' do
119
+ d = Fluent::Test::Driver::Filter.new(Class.new(Fluent::Plugin::Filter)) do
120
+ def filter(tag, time, record)
121
+ record
122
+ end
123
+ end
124
+ v = d.run do
125
+ x = 1 + 2
126
+ y = 2 + 4
127
+ 3 || x || y
128
+ end
129
+ assert_equal 3, v
130
+ end
131
+ end
132
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluentd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.8
4
+ version: 0.14.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sadayuki Furuhashi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-13 00:00:00.000000000 Z
11
+ date: 2016-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -319,6 +319,7 @@ files:
319
319
  - example/in_udp.conf
320
320
  - example/multi_filters.conf
321
321
  - example/out_copy.conf
322
+ - example/out_exec_filter.conf
322
323
  - example/out_file.conf
323
324
  - example/out_forward.conf
324
325
  - example/out_forward_buf_file.conf
@@ -402,6 +403,7 @@ files:
402
403
  - lib/fluent/plugin/file_wrapper.rb
403
404
  - lib/fluent/plugin/filter.rb
404
405
  - lib/fluent/plugin/filter_grep.rb
406
+ - lib/fluent/plugin/filter_parser.rb
405
407
  - lib/fluent/plugin/filter_record_transformer.rb
406
408
  - lib/fluent/plugin/filter_stdout.rb
407
409
  - lib/fluent/plugin/formatter.rb
@@ -413,6 +415,7 @@ files:
413
415
  - lib/fluent/plugin/formatter_out_file.rb
414
416
  - lib/fluent/plugin/formatter_single_value.rb
415
417
  - lib/fluent/plugin/formatter_stdout.rb
418
+ - lib/fluent/plugin/formatter_tsv.rb
416
419
  - lib/fluent/plugin/in_debug_agent.rb
417
420
  - lib/fluent/plugin/in_dummy.rb
418
421
  - lib/fluent/plugin/in_exec.rb
@@ -448,6 +451,7 @@ files:
448
451
  - lib/fluent/plugin/parser_csv.rb
449
452
  - lib/fluent/plugin/parser_json.rb
450
453
  - lib/fluent/plugin/parser_ltsv.rb
454
+ - lib/fluent/plugin/parser_msgpack.rb
451
455
  - lib/fluent/plugin/parser_multiline.rb
452
456
  - lib/fluent/plugin/parser_nginx.rb
453
457
  - lib/fluent/plugin/parser_none.rb
@@ -536,6 +540,7 @@ files:
536
540
  - test/plugin/test_file_util.rb
537
541
  - test/plugin/test_filter.rb
538
542
  - test/plugin/test_filter_grep.rb
543
+ - test/plugin/test_filter_parser.rb
539
544
  - test/plugin/test_filter_record_transformer.rb
540
545
  - test/plugin/test_filter_stdout.rb
541
546
  - test/plugin/test_formatter_csv.rb
@@ -578,10 +583,10 @@ files:
578
583
  - test/plugin/test_output_as_buffered_secondary.rb
579
584
  - test/plugin/test_output_as_standard.rb
580
585
  - test/plugin/test_owned_by.rb
586
+ - test/plugin/test_parser.rb
581
587
  - test/plugin/test_parser_apache.rb
582
588
  - test/plugin/test_parser_apache2.rb
583
589
  - test/plugin/test_parser_apache_error.rb
584
- - test/plugin/test_parser_base.rb
585
590
  - test/plugin/test_parser_csv.rb
586
591
  - test/plugin/test_parser_json.rb
587
592
  - test/plugin/test_parser_labeled_tsv.rb
@@ -630,6 +635,7 @@ files:
630
635
  - test/test_process.rb
631
636
  - test/test_root_agent.rb
632
637
  - test/test_supervisor.rb
638
+ - test/test_test_drivers.rb
633
639
  - test/test_time_formatter.rb
634
640
  - test/test_time_parser.rb
635
641
  - test/test_unique_id.rb
@@ -690,6 +696,7 @@ test_files:
690
696
  - test/plugin/test_file_util.rb
691
697
  - test/plugin/test_filter.rb
692
698
  - test/plugin/test_filter_grep.rb
699
+ - test/plugin/test_filter_parser.rb
693
700
  - test/plugin/test_filter_record_transformer.rb
694
701
  - test/plugin/test_filter_stdout.rb
695
702
  - test/plugin/test_formatter_csv.rb
@@ -732,10 +739,10 @@ test_files:
732
739
  - test/plugin/test_output_as_buffered_secondary.rb
733
740
  - test/plugin/test_output_as_standard.rb
734
741
  - test/plugin/test_owned_by.rb
742
+ - test/plugin/test_parser.rb
735
743
  - test/plugin/test_parser_apache.rb
736
744
  - test/plugin/test_parser_apache2.rb
737
745
  - test/plugin/test_parser_apache_error.rb
738
- - test/plugin/test_parser_base.rb
739
746
  - test/plugin/test_parser_csv.rb
740
747
  - test/plugin/test_parser_json.rb
741
748
  - test/plugin/test_parser_labeled_tsv.rb
@@ -784,6 +791,7 @@ test_files:
784
791
  - test/test_process.rb
785
792
  - test/test_root_agent.rb
786
793
  - test/test_supervisor.rb
794
+ - test/test_test_drivers.rb
787
795
  - test/test_time_formatter.rb
788
796
  - test/test_time_parser.rb
789
797
  - test/test_unique_id.rb