fluentd 1.14.6 → 1.15.0
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.
- checksums.yaml +4 -4
- data/.github/workflows/linux-test.yaml +1 -1
- data/.github/workflows/windows-test.yaml +4 -1
- data/CHANGELOG.md +53 -1
- data/fluentd.gemspec +2 -1
- data/lib/fluent/command/ctl.rb +4 -1
- data/lib/fluent/command/fluentd.rb +10 -0
- data/lib/fluent/config/literal_parser.rb +2 -2
- data/lib/fluent/config/yaml_parser/fluent_value.rb +47 -0
- data/lib/fluent/config/yaml_parser/loader.rb +91 -0
- data/lib/fluent/config/yaml_parser/parser.rb +166 -0
- data/lib/fluent/config/yaml_parser/section_builder.rb +107 -0
- data/lib/fluent/config/yaml_parser.rb +56 -0
- data/lib/fluent/config.rb +14 -1
- data/lib/fluent/plugin/file_wrapper.rb +52 -107
- data/lib/fluent/plugin/in_tail/group_watch.rb +204 -0
- data/lib/fluent/plugin/in_tail/position_file.rb +1 -15
- data/lib/fluent/plugin/in_tail.rb +66 -47
- data/lib/fluent/plugin/out_forward/socket_cache.rb +2 -0
- data/lib/fluent/plugin/output.rb +2 -1
- data/lib/fluent/plugin/parser_syslog.rb +1 -1
- data/lib/fluent/plugin_helper/server.rb +3 -1
- data/lib/fluent/plugin_helper/service_discovery.rb +2 -2
- data/lib/fluent/supervisor.rb +109 -25
- data/lib/fluent/system_config.rb +2 -1
- data/lib/fluent/version.rb +1 -1
- data/lib/fluent/winsvc.rb +2 -0
- data/test/command/test_ctl.rb +0 -1
- data/test/command/test_fluentd.rb +33 -0
- data/test/config/test_system_config.rb +3 -1
- data/test/config/test_types.rb +1 -1
- data/test/plugin/in_tail/test_io_handler.rb +14 -4
- data/test/plugin/in_tail/test_position_file.rb +0 -63
- data/test/plugin/out_forward/test_socket_cache.rb +26 -1
- data/test/plugin/test_file_wrapper.rb +0 -68
- data/test/plugin/test_in_object_space.rb +9 -3
- data/test/plugin/test_in_syslog.rb +1 -1
- data/test/plugin/test_in_tail.rb +629 -353
- data/test/plugin/test_out_forward.rb +30 -20
- data/test/plugin/test_parser_syslog.rb +1 -1
- data/test/plugin_helper/test_cert_option.rb +1 -1
- data/test/plugin_helper/test_child_process.rb +16 -4
- data/test/test_config.rb +135 -4
- data/test/test_supervisor.rb +155 -0
- metadata +11 -5
@@ -431,10 +431,12 @@ EOL
|
|
431
431
|
]
|
432
432
|
|
433
433
|
stub(d.instance.ack_handler).read_ack_from_sock(anything).never
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
434
|
+
assert_rr do
|
435
|
+
target_input_driver.run(expect_records: 2) do
|
436
|
+
d.run do
|
437
|
+
emit_events.each do |tag, t, record|
|
438
|
+
d.feed(tag, t, record)
|
439
|
+
end
|
438
440
|
end
|
439
441
|
end
|
440
442
|
end
|
@@ -461,10 +463,12 @@ EOL
|
|
461
463
|
]
|
462
464
|
|
463
465
|
stub(d.instance.ack_handler).read_ack_from_sock(anything).never
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
466
|
+
assert_rr do
|
467
|
+
target_input_driver.run(expect_records: 2) do
|
468
|
+
d.run(default_tag: 'test') do
|
469
|
+
records.each do |record|
|
470
|
+
d.feed(time, record)
|
471
|
+
end
|
468
472
|
end
|
469
473
|
end
|
470
474
|
end
|
@@ -491,10 +495,12 @@ EOL
|
|
491
495
|
{"a" => 2}
|
492
496
|
]
|
493
497
|
stub(d.instance.ack_handler).read_ack_from_sock(anything).never
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
+
assert_rr do
|
499
|
+
target_input_driver.run(expect_records: 2) do
|
500
|
+
d.run(default_tag: 'test') do
|
501
|
+
records.each do |record|
|
502
|
+
d.feed(time, record)
|
503
|
+
end
|
498
504
|
end
|
499
505
|
end
|
500
506
|
end
|
@@ -549,10 +555,12 @@ EOL
|
|
549
555
|
]
|
550
556
|
# not attempt to receive responses
|
551
557
|
stub(d.instance.ack_handler).read_ack_from_sock(anything).never
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
558
|
+
assert_rr do
|
559
|
+
target_input_driver.run(expect_records: 2) do
|
560
|
+
d.run(default_tag: 'test') do
|
561
|
+
records.each do |record|
|
562
|
+
d.feed(time, record)
|
563
|
+
end
|
556
564
|
end
|
557
565
|
end
|
558
566
|
end
|
@@ -575,10 +583,12 @@ EOL
|
|
575
583
|
]
|
576
584
|
# not attempt to receive responses
|
577
585
|
stub(d.instance.ack_handler).read_ack_from_sock(anything).never
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
586
|
+
assert_rr do
|
587
|
+
target_input_driver.run(expect_records: 2) do
|
588
|
+
d.run(default_tag: 'test') do
|
589
|
+
records.each do |record|
|
590
|
+
d.feed(time, record)
|
591
|
+
end
|
582
592
|
end
|
583
593
|
end
|
584
594
|
end
|
@@ -644,7 +644,7 @@ class SyslogParserTest < ::Test::Unit::TestCase
|
|
644
644
|
|
645
645
|
data('regexp' => :regexp, 'string' => :string)
|
646
646
|
def test_parser_engine(engine)
|
647
|
-
|
647
|
+
@parser.configure({'parser_engine' => engine.to_s})
|
648
648
|
assert_equal(engine, @parser.instance.parser_engine)
|
649
649
|
end
|
650
650
|
end
|
@@ -19,7 +19,7 @@ class CertOptionPluginHelperTest < Test::Unit::TestCase
|
|
19
19
|
test 'raise an error for broken certificates_from_file file' do
|
20
20
|
d = Dummy.new
|
21
21
|
assert_raise Fluent::ConfigError do
|
22
|
-
|
22
|
+
d.cert_option_certificates_from_file("test/plugin_helper/data/cert/empty.pem")
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -321,15 +321,21 @@ class ChildProcessTest < Test::Unit::TestCase
|
|
321
321
|
ary = []
|
322
322
|
arguments = ["okay"]
|
323
323
|
Timeout.timeout(TEST_DEADLOCK_TIMEOUT) do
|
324
|
+
start_time = Fluent::Clock.now
|
324
325
|
@d.child_process_execute(:t5, "echo", arguments: arguments, interval: 1, mode: [:read]) do |io|
|
325
326
|
ary << io.read.split("\n").map(&:chomp).join
|
326
327
|
end
|
327
|
-
|
328
|
+
1.upto(2) do |i|
|
329
|
+
sleep 0.1 while ary.size < i
|
330
|
+
elapsed = Fluent::Clock.now - start_time
|
331
|
+
assert_equal(i, ary.size)
|
332
|
+
assert_true(elapsed > i && elapsed < i + 0.5,
|
333
|
+
"actual elapsed: #{elapsed}")
|
334
|
+
end
|
328
335
|
assert_equal [], @d.log.out.logs
|
329
336
|
@d.stop
|
330
337
|
assert_equal [], @d.log.out.logs
|
331
338
|
@d.shutdown; @d.close; @d.terminate
|
332
|
-
assert_equal 2, ary.size
|
333
339
|
end
|
334
340
|
end
|
335
341
|
|
@@ -337,12 +343,18 @@ class ChildProcessTest < Test::Unit::TestCase
|
|
337
343
|
ary = []
|
338
344
|
arguments = ["okay"]
|
339
345
|
Timeout.timeout(TEST_DEADLOCK_TIMEOUT) do
|
346
|
+
start_time = Fluent::Clock.now
|
340
347
|
@d.child_process_execute(:t6, "echo", arguments: arguments, interval: 1, immediate: true, mode: [:read]) do |io|
|
341
348
|
ary << io.read.split("\n").map(&:chomp).join
|
342
349
|
end
|
343
|
-
|
350
|
+
0.upto(1) do |i|
|
351
|
+
sleep 0.1 while ary.size < i + 1
|
352
|
+
elapsed = Fluent::Clock.now - start_time
|
353
|
+
assert_equal(i + 1, ary.size)
|
354
|
+
assert_true(elapsed > i && elapsed < i + 0.5,
|
355
|
+
"actual elapsed: #{elapsed}")
|
356
|
+
end
|
344
357
|
@d.stop; @d.shutdown; @d.close; @d.terminate
|
345
|
-
assert_equal 2, ary.size
|
346
358
|
assert_equal [], @d.log.out.logs
|
347
359
|
end
|
348
360
|
end
|
data/test/test_config.rb
CHANGED
@@ -10,11 +10,18 @@ class ConfigTest < Test::Unit::TestCase
|
|
10
10
|
|
11
11
|
TMP_DIR = File.dirname(__FILE__) + "/tmp/config#{ENV['TEST_ENV_NUMBER']}"
|
12
12
|
|
13
|
-
def read_config(path)
|
13
|
+
def read_config(path, use_yaml: false)
|
14
14
|
path = File.expand_path(path)
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
if use_yaml
|
16
|
+
context = Kernel.binding
|
17
|
+
|
18
|
+
s = Fluent::Config::YamlParser::Loader.new(context).load(Pathname.new(path))
|
19
|
+
Fluent::Config::YamlParser::Parser.new(s).build.to_element
|
20
|
+
else
|
21
|
+
File.open(path) { |io|
|
22
|
+
Fluent::Config::Parser.parse(io, File.basename(path), File.dirname(path))
|
23
|
+
}
|
24
|
+
end
|
18
25
|
end
|
19
26
|
|
20
27
|
def prepare_config
|
@@ -151,6 +158,130 @@ class ConfigTest < Test::Unit::TestCase
|
|
151
158
|
assert_equal before_size, match_conf.unused.size
|
152
159
|
end
|
153
160
|
|
161
|
+
sub_test_case "yaml config" do
|
162
|
+
def test_included
|
163
|
+
write_config "#{TMP_DIR}/config_test_not_fetched.yaml", <<-EOS
|
164
|
+
config:
|
165
|
+
- source:
|
166
|
+
$type: dummy
|
167
|
+
tag: tag.dummy
|
168
|
+
- source:
|
169
|
+
$type: tcp
|
170
|
+
tag: tag.tcp
|
171
|
+
parse:
|
172
|
+
$arg:
|
173
|
+
- why.parse.section.doesnot.have.arg
|
174
|
+
- huh
|
175
|
+
$type: none
|
176
|
+
- match:
|
177
|
+
$tag: tag.*
|
178
|
+
$type: stdout
|
179
|
+
buffer:
|
180
|
+
$type: memory
|
181
|
+
flush_interval: 1s
|
182
|
+
- !include fluent-included.yaml
|
183
|
+
EOS
|
184
|
+
write_config "#{TMP_DIR}/fluent-included.yaml", <<-EOS
|
185
|
+
- label:
|
186
|
+
$name: '@FLUENT_LOG'
|
187
|
+
config:
|
188
|
+
- match:
|
189
|
+
$type: "null"
|
190
|
+
$tag: "**"
|
191
|
+
buffer:
|
192
|
+
$type: memory
|
193
|
+
flush_mode: interval
|
194
|
+
flush_interval: 1s
|
195
|
+
EOS
|
196
|
+
root_conf = read_config("#{TMP_DIR}/config_test_not_fetched.yaml", use_yaml: true)
|
197
|
+
dummy_source_conf = root_conf.elements.first
|
198
|
+
tcp_source_conf = root_conf.elements[1]
|
199
|
+
parse_tcp_conf = tcp_source_conf.elements.first
|
200
|
+
match_conf = root_conf.elements[2]
|
201
|
+
label_conf = root_conf.elements[3]
|
202
|
+
fluent_log_conf = label_conf.elements.first
|
203
|
+
fluent_log_buffer_conf = fluent_log_conf.elements.first
|
204
|
+
|
205
|
+
assert_equal(
|
206
|
+
[
|
207
|
+
'dummy',
|
208
|
+
'tag.dummy',
|
209
|
+
'tcp',
|
210
|
+
'tag.tcp',
|
211
|
+
'none',
|
212
|
+
'why.parse.section.doesnot.have.arg,huh',
|
213
|
+
'stdout',
|
214
|
+
'tag.*',
|
215
|
+
'null',
|
216
|
+
'**',
|
217
|
+
'@FLUENT_LOG',
|
218
|
+
'memory',
|
219
|
+
'interval',
|
220
|
+
'1s',
|
221
|
+
],
|
222
|
+
[
|
223
|
+
dummy_source_conf['@type'],
|
224
|
+
dummy_source_conf['tag'],
|
225
|
+
tcp_source_conf['@type'],
|
226
|
+
tcp_source_conf['tag'],
|
227
|
+
parse_tcp_conf['@type'],
|
228
|
+
parse_tcp_conf.arg,
|
229
|
+
match_conf['@type'],
|
230
|
+
match_conf.arg,
|
231
|
+
fluent_log_conf['@type'],
|
232
|
+
fluent_log_conf.arg,
|
233
|
+
label_conf.arg,
|
234
|
+
fluent_log_buffer_conf['@type'],
|
235
|
+
fluent_log_buffer_conf['flush_mode'],
|
236
|
+
fluent_log_buffer_conf['flush_interval'],
|
237
|
+
])
|
238
|
+
end
|
239
|
+
|
240
|
+
def test_check_not_fetchd
|
241
|
+
write_config "#{TMP_DIR}/config_test_not_fetched.yaml", <<-EOS
|
242
|
+
config:
|
243
|
+
- match:
|
244
|
+
$arg: dummy
|
245
|
+
$type: rewrite
|
246
|
+
add_prefix: filtered
|
247
|
+
rule:
|
248
|
+
key: path
|
249
|
+
pattern: "^[A-Z]+"
|
250
|
+
replace: true
|
251
|
+
EOS
|
252
|
+
root_conf = read_config("#{TMP_DIR}/config_test_not_fetched.yaml", use_yaml: true)
|
253
|
+
match_conf = root_conf.elements.first
|
254
|
+
rule_conf = match_conf.elements.first
|
255
|
+
|
256
|
+
not_fetched = []; root_conf.check_not_fetched {|key, e| not_fetched << key }
|
257
|
+
assert_equal %w[@type $arg add_prefix key pattern replace], not_fetched
|
258
|
+
|
259
|
+
not_fetched = []; match_conf.check_not_fetched {|key, e| not_fetched << key }
|
260
|
+
assert_equal %w[@type $arg add_prefix key pattern replace], not_fetched
|
261
|
+
|
262
|
+
not_fetched = []; rule_conf.check_not_fetched {|key, e| not_fetched << key }
|
263
|
+
assert_equal %w[key pattern replace], not_fetched
|
264
|
+
|
265
|
+
# accessing should delete
|
266
|
+
match_conf['type']
|
267
|
+
rule_conf['key']
|
268
|
+
|
269
|
+
not_fetched = []; root_conf.check_not_fetched {|key, e| not_fetched << key }
|
270
|
+
assert_equal %w[@type $arg add_prefix pattern replace], not_fetched
|
271
|
+
|
272
|
+
not_fetched = []; match_conf.check_not_fetched {|key, e| not_fetched << key }
|
273
|
+
assert_equal %w[@type $arg add_prefix pattern replace], not_fetched
|
274
|
+
|
275
|
+
not_fetched = []; rule_conf.check_not_fetched {|key, e| not_fetched << key }
|
276
|
+
assert_equal %w[pattern replace], not_fetched
|
277
|
+
|
278
|
+
# repeatedly accessing should not grow memory usage
|
279
|
+
before_size = match_conf.unused.size
|
280
|
+
10.times { match_conf['type'] }
|
281
|
+
assert_equal before_size, match_conf.unused.size
|
282
|
+
end
|
283
|
+
end
|
284
|
+
|
154
285
|
def write_config(path, data, encoding: 'utf-8')
|
155
286
|
FileUtils.mkdir_p(File.dirname(path))
|
156
287
|
File.open(path, "w:#{encoding}:utf-8") {|f| f.write data }
|
data/test/test_supervisor.rb
CHANGED
@@ -90,6 +90,93 @@ class SupervisorTest < ::Test::Unit::TestCase
|
|
90
90
|
assert_equal 2, counter_client.timeout
|
91
91
|
end
|
92
92
|
|
93
|
+
sub_test_case "yaml config" do
|
94
|
+
def parse_yaml(yaml)
|
95
|
+
context = Kernel.binding
|
96
|
+
|
97
|
+
config = nil
|
98
|
+
Tempfile.open do |file|
|
99
|
+
file.puts(yaml)
|
100
|
+
file.flush
|
101
|
+
s = Fluent::Config::YamlParser::Loader.new(context).load(Pathname.new(file))
|
102
|
+
config = Fluent::Config::YamlParser::Parser.new(s).build.to_element
|
103
|
+
end
|
104
|
+
config
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_system_config
|
108
|
+
opts = Fluent::Supervisor.default_options
|
109
|
+
sv = Fluent::Supervisor.new(opts)
|
110
|
+
conf_data = <<-EOC
|
111
|
+
system:
|
112
|
+
rpc_endpoint: 127.0.0.1:24445
|
113
|
+
suppress_repeated_stacktrace: true
|
114
|
+
suppress_config_dump: true
|
115
|
+
without_source: true
|
116
|
+
enable_get_dump: true
|
117
|
+
process_name: "process_name"
|
118
|
+
log_level: info
|
119
|
+
root_dir: !fluent/s "#{TMP_ROOT_DIR}"
|
120
|
+
log:
|
121
|
+
format: json
|
122
|
+
time_format: "%Y"
|
123
|
+
counter_server:
|
124
|
+
bind: 127.0.0.1
|
125
|
+
port: 24321
|
126
|
+
scope: server1
|
127
|
+
backup_path: /tmp/backup
|
128
|
+
counter_client:
|
129
|
+
host: 127.0.0.1
|
130
|
+
port: 24321
|
131
|
+
timeout: 2
|
132
|
+
EOC
|
133
|
+
conf = parse_yaml(conf_data)
|
134
|
+
sys_conf = sv.__send__(:build_system_config, conf)
|
135
|
+
|
136
|
+
counter_client = sys_conf.counter_client
|
137
|
+
counter_server = sys_conf.counter_server
|
138
|
+
assert_equal(
|
139
|
+
[
|
140
|
+
'127.0.0.1:24445',
|
141
|
+
true,
|
142
|
+
true,
|
143
|
+
true,
|
144
|
+
true,
|
145
|
+
"process_name",
|
146
|
+
2,
|
147
|
+
TMP_ROOT_DIR,
|
148
|
+
:json,
|
149
|
+
'%Y',
|
150
|
+
'127.0.0.1',
|
151
|
+
24321,
|
152
|
+
'server1',
|
153
|
+
'/tmp/backup',
|
154
|
+
'127.0.0.1',
|
155
|
+
24321,
|
156
|
+
2,
|
157
|
+
],
|
158
|
+
[
|
159
|
+
sys_conf.rpc_endpoint,
|
160
|
+
sys_conf.suppress_repeated_stacktrace,
|
161
|
+
sys_conf.suppress_config_dump,
|
162
|
+
sys_conf.without_source,
|
163
|
+
sys_conf.enable_get_dump,
|
164
|
+
sys_conf.process_name,
|
165
|
+
sys_conf.log_level,
|
166
|
+
sys_conf.root_dir,
|
167
|
+
sys_conf.log.format,
|
168
|
+
sys_conf.log.time_format,
|
169
|
+
counter_server.bind,
|
170
|
+
counter_server.port,
|
171
|
+
counter_server.scope,
|
172
|
+
counter_server.backup_path,
|
173
|
+
counter_client.host,
|
174
|
+
counter_client.port,
|
175
|
+
counter_client.timeout,
|
176
|
+
])
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
93
180
|
def test_main_process_signal_handlers
|
94
181
|
omit "Windows cannot handle signals" if Fluent.windows?
|
95
182
|
|
@@ -213,6 +300,49 @@ class SupervisorTest < ::Test::Unit::TestCase
|
|
213
300
|
$log.out.reset if $log && $log.out && $log.out.respond_to?(:reset)
|
214
301
|
end
|
215
302
|
|
303
|
+
data("Normal", {raw_path: "C:\\Windows\\Temp\\sigdump.log", expected: "C:\\Windows\\Temp\\sigdump-#{$$}.log"})
|
304
|
+
data("UNIX style", {raw_path: "/Windows/Temp/sigdump.log", expected: "/Windows/Temp/sigdump-#{$$}.log"})
|
305
|
+
data("No extension", {raw_path: "C:\\Windows\\Temp\\sigdump", expected: "C:\\Windows\\Temp\\sigdump-#{$$}"})
|
306
|
+
data("Multi-extension", {raw_path: "C:\\Windows\\Temp\\sig.dump.bk", expected: "C:\\Windows\\Temp\\sig.dump-#{$$}.bk"})
|
307
|
+
def test_fluentsigdump_get_path_with_pid(data)
|
308
|
+
p data
|
309
|
+
path = Fluent::FluentSigdump.get_path_with_pid(data[:raw_path])
|
310
|
+
assert_equal(data[:expected], path)
|
311
|
+
end
|
312
|
+
|
313
|
+
def test_supervisor_event_dump_windows
|
314
|
+
omit "Only for Windows, alternative to UNIX signals" unless Fluent.windows?
|
315
|
+
|
316
|
+
server = DummyServer.new
|
317
|
+
def server.config
|
318
|
+
{:signame => "TestFluentdEvent"}
|
319
|
+
end
|
320
|
+
server.install_windows_event_handler
|
321
|
+
|
322
|
+
assert_rr do
|
323
|
+
# Have to use mock because `Sigdump.dump` seems to be somehow incompatible with RR.
|
324
|
+
# The `mock(server).restart(true) { nil }` line in `test_rpc_server_windows` cause the next error.
|
325
|
+
# Failure: test_supervisor_event_dump_windows(SupervisorTest):
|
326
|
+
# class()
|
327
|
+
# Called 0 times.
|
328
|
+
# Expected 1 times.
|
329
|
+
# .../Ruby26-x64/lib/ruby/gems/2.6.0/gems/sigdump-0.2.4/lib/sigdump.rb:74:in `block in dump_object_count'
|
330
|
+
# 73: ObjectSpace.each_object {|o|
|
331
|
+
# 74: c = o.class <-- HERE!
|
332
|
+
mock(Sigdump).dump(anything)
|
333
|
+
|
334
|
+
begin
|
335
|
+
sleep 0.1 # Wait for starting windows event thread
|
336
|
+
event = Win32::Event.open("TestFluentdEvent_CONT")
|
337
|
+
event.set
|
338
|
+
event.close
|
339
|
+
sleep 1.0 # Wait for dumping
|
340
|
+
ensure
|
341
|
+
server.stop_windows_event_thread
|
342
|
+
end
|
343
|
+
end
|
344
|
+
end
|
345
|
+
|
216
346
|
data(:ipv4 => ["0.0.0.0", "127.0.0.1", false],
|
217
347
|
:ipv6 => ["[::]", "[::1]", true],
|
218
348
|
:localhost_ipv4 => ["localhost", "127.0.0.1", false])
|
@@ -557,6 +687,31 @@ class SupervisorTest < ::Test::Unit::TestCase
|
|
557
687
|
logger.instance_variable_get(:@rotate_size)])
|
558
688
|
end
|
559
689
|
end
|
690
|
+
|
691
|
+
def test_override_default_log_rotate_with_yaml_config
|
692
|
+
Tempfile.open do |file|
|
693
|
+
config = <<-EOS
|
694
|
+
system:
|
695
|
+
log:
|
696
|
+
rotate_age: 3
|
697
|
+
rotate_size: 300
|
698
|
+
EOS
|
699
|
+
file.puts(config)
|
700
|
+
file.flush
|
701
|
+
opts = Fluent::Supervisor.default_options.merge(
|
702
|
+
log_path: "#{TMP_DIR}/test.log", config_path: file.path, config_file_type: :yaml,
|
703
|
+
)
|
704
|
+
sv = Fluent::Supervisor.new(opts)
|
705
|
+
|
706
|
+
log = sv.instance_variable_get(:@log)
|
707
|
+
log.init(:standalone, 0)
|
708
|
+
logger = $log.instance_variable_get(:@logger)
|
709
|
+
|
710
|
+
assert_equal([3, 300],
|
711
|
+
[logger.instance_variable_get(:@rotate_age),
|
712
|
+
logger.instance_variable_get(:@rotate_size)])
|
713
|
+
end
|
714
|
+
end
|
560
715
|
end
|
561
716
|
|
562
717
|
def test_inline_config
|
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: 1.
|
4
|
+
version: 1.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sadayuki Furuhashi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -84,7 +84,7 @@ dependencies:
|
|
84
84
|
requirements:
|
85
85
|
- - ">="
|
86
86
|
- !ruby/object:Gem::Version
|
87
|
-
version: 2.
|
87
|
+
version: 2.3.0
|
88
88
|
- - "<"
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: 3.0.0
|
@@ -94,7 +94,7 @@ dependencies:
|
|
94
94
|
requirements:
|
95
95
|
- - ">="
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: 2.
|
97
|
+
version: 2.3.0
|
98
98
|
- - "<"
|
99
99
|
- !ruby/object:Gem::Version
|
100
100
|
version: 3.0.0
|
@@ -507,6 +507,11 @@ files:
|
|
507
507
|
- lib/fluent/config/section.rb
|
508
508
|
- lib/fluent/config/types.rb
|
509
509
|
- lib/fluent/config/v1_parser.rb
|
510
|
+
- lib/fluent/config/yaml_parser.rb
|
511
|
+
- lib/fluent/config/yaml_parser/fluent_value.rb
|
512
|
+
- lib/fluent/config/yaml_parser/loader.rb
|
513
|
+
- lib/fluent/config/yaml_parser/parser.rb
|
514
|
+
- lib/fluent/config/yaml_parser/section_builder.rb
|
510
515
|
- lib/fluent/configurable.rb
|
511
516
|
- lib/fluent/counter.rb
|
512
517
|
- lib/fluent/counter/base_socket.rb
|
@@ -579,6 +584,7 @@ files:
|
|
579
584
|
- lib/fluent/plugin/in_sample.rb
|
580
585
|
- lib/fluent/plugin/in_syslog.rb
|
581
586
|
- lib/fluent/plugin/in_tail.rb
|
587
|
+
- lib/fluent/plugin/in_tail/group_watch.rb
|
582
588
|
- lib/fluent/plugin/in_tail/position_file.rb
|
583
589
|
- lib/fluent/plugin/in_tcp.rb
|
584
590
|
- lib/fluent/plugin/in_udp.rb
|
@@ -959,7 +965,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
959
965
|
- !ruby/object:Gem::Version
|
960
966
|
version: '0'
|
961
967
|
requirements: []
|
962
|
-
rubygems_version: 3.3.
|
968
|
+
rubygems_version: 3.3.5
|
963
969
|
signing_key:
|
964
970
|
specification_version: 4
|
965
971
|
summary: Fluentd event collector
|