fluentd 1.11.2-x64-mingw32 → 1.12.1-x64-mingw32

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 (81) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
  3. data/.github/ISSUE_TEMPLATE/config.yml +5 -0
  4. data/.github/workflows/build.yaml +29 -0
  5. data/.github/workflows/stale-actions.yml +22 -0
  6. data/.travis.yml +22 -2
  7. data/CHANGELOG.md +114 -0
  8. data/README.md +2 -2
  9. data/appveyor.yml +3 -0
  10. data/bin/fluent-cap-ctl +7 -0
  11. data/bin/fluent-ctl +7 -0
  12. data/fluentd.gemspec +8 -8
  13. data/lib/fluent/capability.rb +87 -0
  14. data/lib/fluent/command/ca_generate.rb +6 -3
  15. data/lib/fluent/command/cap_ctl.rb +174 -0
  16. data/lib/fluent/command/ctl.rb +177 -0
  17. data/lib/fluent/command/fluentd.rb +4 -0
  18. data/lib/fluent/command/plugin_config_formatter.rb +17 -2
  19. data/lib/fluent/config/section.rb +1 -1
  20. data/lib/fluent/env.rb +4 -0
  21. data/lib/fluent/log.rb +33 -3
  22. data/lib/fluent/plugin.rb +5 -0
  23. data/lib/fluent/plugin/buffer.rb +27 -57
  24. data/lib/fluent/plugin/buffer/chunk.rb +2 -1
  25. data/lib/fluent/plugin/formatter.rb +24 -0
  26. data/lib/fluent/plugin/formatter_csv.rb +1 -1
  27. data/lib/fluent/plugin/formatter_hash.rb +3 -1
  28. data/lib/fluent/plugin/formatter_json.rb +3 -1
  29. data/lib/fluent/plugin/formatter_ltsv.rb +5 -3
  30. data/lib/fluent/plugin/formatter_out_file.rb +6 -4
  31. data/lib/fluent/plugin/formatter_single_value.rb +4 -2
  32. data/lib/fluent/plugin/formatter_tsv.rb +4 -2
  33. data/lib/fluent/plugin/in_exec.rb +4 -2
  34. data/lib/fluent/plugin/in_http.rb +23 -2
  35. data/lib/fluent/plugin/in_tail.rb +109 -41
  36. data/lib/fluent/plugin/in_tail/position_file.rb +39 -14
  37. data/lib/fluent/plugin/in_tcp.rb +1 -0
  38. data/lib/fluent/plugin/out_http.rb +29 -4
  39. data/lib/fluent/plugin/output.rb +15 -6
  40. data/lib/fluent/plugin/parser_json.rb +5 -2
  41. data/lib/fluent/plugin_helper/http_server/compat/server.rb +1 -1
  42. data/lib/fluent/plugin_helper/inject.rb +4 -1
  43. data/lib/fluent/plugin_helper/retry_state.rb +4 -0
  44. data/lib/fluent/supervisor.rb +162 -51
  45. data/lib/fluent/system_config.rb +4 -2
  46. data/lib/fluent/time.rb +1 -0
  47. data/lib/fluent/version.rb +1 -1
  48. data/lib/fluent/winsvc.rb +22 -4
  49. data/templates/plugin_config_formatter/param.md-table.erb +10 -0
  50. data/test/command/test_binlog_reader.rb +22 -6
  51. data/test/command/test_cap_ctl.rb +100 -0
  52. data/test/command/test_ctl.rb +57 -0
  53. data/test/command/test_fluentd.rb +30 -0
  54. data/test/command/test_plugin_config_formatter.rb +124 -2
  55. data/test/plugin/in_tail/test_position_file.rb +46 -26
  56. data/test/plugin/test_buffer.rb +4 -0
  57. data/test/plugin/test_filter_stdout.rb +6 -1
  58. data/test/plugin/test_formatter_hash.rb +6 -3
  59. data/test/plugin/test_formatter_json.rb +14 -4
  60. data/test/plugin/test_formatter_ltsv.rb +13 -5
  61. data/test/plugin/test_formatter_out_file.rb +35 -14
  62. data/test/plugin/test_formatter_single_value.rb +12 -6
  63. data/test/plugin/test_formatter_tsv.rb +12 -4
  64. data/test/plugin/test_in_exec.rb +18 -0
  65. data/test/plugin/test_in_http.rb +25 -0
  66. data/test/plugin/test_in_tail.rb +433 -30
  67. data/test/plugin/test_out_file.rb +23 -18
  68. data/test/plugin/test_out_http.rb +19 -0
  69. data/test/plugin/test_output.rb +12 -0
  70. data/test/plugin/test_parser_syslog.rb +2 -2
  71. data/test/plugin/test_sd_file.rb +1 -1
  72. data/test/plugin_helper/test_compat_parameters.rb +7 -2
  73. data/test/plugin_helper/test_http_server_helper.rb +8 -1
  74. data/test/plugin_helper/test_inject.rb +42 -0
  75. data/test/plugin_helper/test_server.rb +18 -5
  76. data/test/test_capability.rb +74 -0
  77. data/test/test_formatter.rb +34 -10
  78. data/test/test_log.rb +44 -0
  79. data/test/test_output.rb +6 -1
  80. data/test/test_supervisor.rb +150 -1
  81. metadata +49 -37
@@ -53,6 +53,11 @@ module FormatterTest
53
53
  def setup
54
54
  @formatter = Fluent::Test::FormatterTestDriver.new('out_file')
55
55
  @time = Engine.now
56
+ @newline = if Fluent.windows?
57
+ "\r\n"
58
+ else
59
+ "\n"
60
+ end
56
61
  end
57
62
 
58
63
  def configure(conf)
@@ -63,28 +68,28 @@ module FormatterTest
63
68
  configure({})
64
69
  formatted = @formatter.format(tag, @time, record)
65
70
 
66
- assert_equal("#{time2str(@time)}\t#{tag}\t#{Yajl.dump(record)}\n", formatted)
71
+ assert_equal("#{time2str(@time)}\t#{tag}\t#{Yajl.dump(record)}#{@newline}", formatted)
67
72
  end
68
73
 
69
74
  def test_format_without_time
70
75
  configure('output_time' => 'false')
71
76
  formatted = @formatter.format(tag, @time, record)
72
77
 
73
- assert_equal("#{tag}\t#{Yajl.dump(record)}\n", formatted)
78
+ assert_equal("#{tag}\t#{Yajl.dump(record)}#{@newline}", formatted)
74
79
  end
75
80
 
76
81
  def test_format_without_tag
77
82
  configure('output_tag' => 'false')
78
83
  formatted = @formatter.format(tag, @time, record)
79
84
 
80
- assert_equal("#{time2str(@time)}\t#{Yajl.dump(record)}\n", formatted)
85
+ assert_equal("#{time2str(@time)}\t#{Yajl.dump(record)}#{@newline}", formatted)
81
86
  end
82
87
 
83
88
  def test_format_without_time_and_tag
84
89
  configure('output_tag' => 'false', 'output_time' => 'false')
85
90
  formatted = @formatter.format('tag', @time, record)
86
91
 
87
- assert_equal("#{Yajl.dump(record)}\n", formatted)
92
+ assert_equal("#{Yajl.dump(record)}#{@newline}", formatted)
88
93
  end
89
94
 
90
95
  def test_format_without_time_and_tag_against_string_literal_configure
@@ -95,7 +100,7 @@ module FormatterTest
95
100
  ])
96
101
  formatted = @formatter.format('tag', @time, record)
97
102
 
98
- assert_equal("#{Yajl.dump(record)}\n", formatted)
103
+ assert_equal("#{Yajl.dump(record)}#{@newline}", formatted)
99
104
  end
100
105
  end
101
106
 
@@ -105,6 +110,11 @@ module FormatterTest
105
110
  def setup
106
111
  @formatter = Fluent::Test::FormatterTestDriver.new(TextFormatter::JSONFormatter)
107
112
  @time = Engine.now
113
+ @newline = if Fluent.windows?
114
+ "\r\n"
115
+ else
116
+ "\n"
117
+ end
108
118
  end
109
119
 
110
120
  data('oj' => 'oj', 'yajl' => 'yajl')
@@ -112,7 +122,7 @@ module FormatterTest
112
122
  @formatter.configure('json_parser' => data)
113
123
  formatted = @formatter.format(tag, @time, record)
114
124
 
115
- assert_equal("#{Yajl.dump(record)}\n", formatted)
125
+ assert_equal("#{Yajl.dump(record)}#{@newline}", formatted)
116
126
  end
117
127
  end
118
128
 
@@ -138,6 +148,11 @@ module FormatterTest
138
148
  def setup
139
149
  @formatter = TextFormatter::LabeledTSVFormatter.new
140
150
  @time = Engine.now
151
+ @newline = if Fluent.windows?
152
+ "\r\n"
153
+ else
154
+ "\n"
155
+ end
141
156
  end
142
157
 
143
158
  def test_config_params
@@ -157,7 +172,7 @@ module FormatterTest
157
172
  @formatter.configure({})
158
173
  formatted = @formatter.format(tag, @time, record)
159
174
 
160
- assert_equal("message:awesome\tgreeting:hello\n", formatted)
175
+ assert_equal("message:awesome\tgreeting:hello#{@newline}", formatted)
161
176
  end
162
177
 
163
178
  def test_format_with_customized_delimiters
@@ -167,7 +182,7 @@ module FormatterTest
167
182
  )
168
183
  formatted = @formatter.format(tag, @time, record)
169
184
 
170
- assert_equal("message=awesome,greeting=hello\n", formatted)
185
+ assert_equal("message=awesome,greeting=hello#{@newline}", formatted)
171
186
  end
172
187
  end
173
188
 
@@ -260,6 +275,14 @@ module FormatterTest
260
275
 
261
276
  class SingleValueFormatterTest < ::Test::Unit::TestCase
262
277
  include FormatterTest
278
+ def setup
279
+ @newline = if Fluent.windows?
280
+ "\r\n"
281
+ else
282
+ "\n"
283
+ end
284
+ end
285
+
263
286
 
264
287
  def test_config_params
265
288
  formatter = TextFormatter::SingleValueFormatter.new
@@ -271,8 +294,9 @@ module FormatterTest
271
294
 
272
295
  def test_format
273
296
  formatter = Fluent::Plugin.new_formatter('single_value')
297
+ formatter.configure({})
274
298
  formatted = formatter.format('tag', Engine.now, {'message' => 'awesome'})
275
- assert_equal("awesome\n", formatted)
299
+ assert_equal("awesome#{@newline}", formatted)
276
300
  end
277
301
 
278
302
  def test_format_without_newline
@@ -287,7 +311,7 @@ module FormatterTest
287
311
  formatter.configure('message_key' => 'foobar')
288
312
  formatted = formatter.format('tag', Engine.now, {'foobar' => 'foo'})
289
313
 
290
- assert_equal("foo\n", formatted)
314
+ assert_equal("foo#{@newline}", formatted)
291
315
  end
292
316
  end
293
317
 
data/test/test_log.rb CHANGED
@@ -411,6 +411,50 @@ class LogTest < Test::Unit::TestCase
411
411
  end
412
412
  end
413
413
 
414
+ sub_test_case "ignore_same_log_interval" do
415
+ teardown do
416
+ Thread.current[:last_same_log] = nil
417
+ end
418
+
419
+ def test_same_message
420
+ message = "This is test"
421
+ logger = ServerEngine::DaemonLogger.new(@log_device, {log_level: ServerEngine::DaemonLogger::INFO})
422
+ log = Fluent::Log.new(logger, {ignore_same_log_interval: 5})
423
+
424
+ log.error message
425
+ 10.times { |i|
426
+ Timecop.freeze(@timestamp + i + 1)
427
+ log.error message
428
+ }
429
+
430
+ expected = [
431
+ "2016-04-21 02:58:41 +0000 [error]: This is test\n",
432
+ "2016-04-21 02:58:47 +0000 [error]: This is test\n"
433
+ ]
434
+ assert_equal(expected, log.out.logs)
435
+ end
436
+
437
+ def test_different_message
438
+ message = "This is test"
439
+ logger = ServerEngine::DaemonLogger.new(@log_device, {log_level: ServerEngine::DaemonLogger::INFO})
440
+ log = Fluent::Log.new(logger, {ignore_same_log_interval: 10})
441
+
442
+ log.error message
443
+ 3.times { |i|
444
+ Timecop.freeze(@timestamp + i)
445
+ log.error message
446
+ log.error message
447
+ log.info "Hello! " + message
448
+ }
449
+
450
+ expected = [
451
+ "2016-04-21 02:58:41 +0000 [error]: This is test\n",
452
+ "2016-04-21 02:58:41 +0000 [info]: Hello! This is test\n",
453
+ ]
454
+ assert_equal(expected, log.out.logs)
455
+ end
456
+ end
457
+
414
458
  def test_dup
415
459
  dl_opts = {}
416
460
  dl_opts[:log_level] = ServerEngine::DaemonLogger::TRACE
data/test/test_output.rb CHANGED
@@ -230,6 +230,11 @@ module FluentOutputTest
230
230
  setup do
231
231
  @time = Time.parse("2011-01-02 13:14:15 UTC")
232
232
  Timecop.freeze(@time)
233
+ @newline = if Fluent.windows?
234
+ "\r\n"
235
+ else
236
+ "\n"
237
+ end
233
238
  end
234
239
 
235
240
  teardown do
@@ -265,7 +270,7 @@ module FluentOutputTest
265
270
  ])
266
271
  time = Time.parse("2016-11-08 12:00:00 UTC").to_i
267
272
  d.emit({"a" => 1}, time)
268
- d.expect_format %[2016-11-08T12:00:00Z\ttest\t{"a":1,"time":"2016-11-08T12:00:00Z"}\n]
273
+ d.expect_format %[2016-11-08T12:00:00Z\ttest\t{"a":1,"time":"2016-11-08T12:00:00Z"}#{@newline}]
269
274
  d.run
270
275
  end
271
276
  end
@@ -8,6 +8,10 @@ require 'net/http'
8
8
  require 'uri'
9
9
  require 'fileutils'
10
10
 
11
+ if Fluent.windows?
12
+ require 'win32/event'
13
+ end
14
+
11
15
  class SupervisorTest < ::Test::Unit::TestCase
12
16
  class DummyServer
13
17
  include Fluent::ServerModule
@@ -107,6 +111,32 @@ class SupervisorTest < ::Test::Unit::TestCase
107
111
  $log.out.reset if $log && $log.out && $log.out.respond_to?(:reset)
108
112
  end
109
113
 
114
+ def test_main_process_command_handlers
115
+ omit "Only for Windows, alternative to UNIX signals" unless Fluent.windows?
116
+
117
+ create_info_dummy_logger
118
+
119
+ opts = Fluent::Supervisor.default_options
120
+ sv = Fluent::Supervisor.new(opts)
121
+ r, w = IO.pipe
122
+ $stdin = r
123
+ sv.send(:install_main_process_signal_handlers)
124
+
125
+ begin
126
+ w.write("GRACEFUL_RESTART\n")
127
+ w.flush
128
+ ensure
129
+ $stdin = STDIN
130
+ end
131
+
132
+ sleep 1
133
+
134
+ info_msg = '[info]: force flushing buffered events' + "\n"
135
+ assert{ $log.out.logs.first.end_with?(info_msg) }
136
+ ensure
137
+ $log.out.reset if $log && $log.out && $log.out.respond_to?(:reset)
138
+ end
139
+
110
140
  def test_supervisor_signal_handler
111
141
  omit "Windows cannot handle signals" if Fluent.windows?
112
142
 
@@ -128,6 +158,60 @@ class SupervisorTest < ::Test::Unit::TestCase
128
158
  $log.out.reset if $log && $log.out && $log.out.respond_to?(:reset)
129
159
  end
130
160
 
161
+ def test_windows_shutdown_event
162
+ omit "Only for Windows platform" unless Fluent.windows?
163
+
164
+ server = DummyServer.new
165
+ def server.config
166
+ {:signame => "TestFluentdEvent"}
167
+ end
168
+
169
+ mock(server).stop(true)
170
+ stub(Process).kill.times(0)
171
+
172
+ server.install_windows_event_handler
173
+ begin
174
+ sleep 0.1 # Wait for starting windows event thread
175
+ event = Win32::Event.open("TestFluentdEvent")
176
+ event.set
177
+ event.close
178
+ ensure
179
+ server.stop_windows_event_thread
180
+ end
181
+
182
+ debug_msg = '[debug]: Got Win32 event "TestFluentdEvent"'
183
+ logs = $log.out.logs
184
+ assert{ logs.any?{|log| log.include?(debug_msg) } }
185
+ ensure
186
+ $log.out.reset if $log && $log.out && $log.out.respond_to?(:reset)
187
+ end
188
+
189
+ def test_supervisor_event_handler
190
+ omit "Only for Windows, alternative to UNIX signals" unless Fluent.windows?
191
+
192
+ create_debug_dummy_logger
193
+
194
+ server = DummyServer.new
195
+ def server.config
196
+ {:signame => "TestFluentdEvent"}
197
+ end
198
+ server.install_windows_event_handler
199
+ begin
200
+ sleep 0.1 # Wait for starting windows event thread
201
+ event = Win32::Event.open("TestFluentdEvent_USR1")
202
+ event.set
203
+ event.close
204
+ ensure
205
+ server.stop_windows_event_thread
206
+ end
207
+
208
+ debug_msg = '[debug]: Got Win32 event "TestFluentdEvent_USR1"'
209
+ logs = $log.out.logs
210
+ assert{ logs.any?{|log| log.include?(debug_msg) } }
211
+ ensure
212
+ $log.out.reset if $log && $log.out && $log.out.respond_to?(:reset)
213
+ end
214
+
131
215
  def test_rpc_server
132
216
  omit "Windows cannot handle signals" if Fluent.windows?
133
217
 
@@ -150,7 +234,7 @@ class SupervisorTest < ::Test::Unit::TestCase
150
234
  server.run_rpc_server
151
235
 
152
236
  sv.send(:install_main_process_signal_handlers)
153
- Net::HTTP.get URI.parse('http://0.0.0.0:24447/api/plugins.flushBuffers')
237
+ response = Net::HTTP.get(URI.parse('http://127.0.0.1:24447/api/plugins.flushBuffers'))
154
238
  info_msg = '[info]: force flushing buffered events' + "\n"
155
239
 
156
240
  server.stop_rpc_server
@@ -159,11 +243,45 @@ class SupervisorTest < ::Test::Unit::TestCase
159
243
  # This test will be passed in such environment.
160
244
  pend unless $log.out.logs.first
161
245
 
246
+ assert_equal('{"ok":true}', response)
162
247
  assert{ $log.out.logs.first.end_with?(info_msg) }
163
248
  ensure
164
249
  $log.out.reset if $log.out.is_a?(Fluent::Test::DummyLogDevice)
165
250
  end
166
251
 
252
+ def test_rpc_server_windows
253
+ omit "Only for windows platform" unless Fluent.windows?
254
+
255
+ create_info_dummy_logger
256
+
257
+ opts = Fluent::Supervisor.default_options
258
+ sv = Fluent::Supervisor.new(opts)
259
+ conf_data = <<-EOC
260
+ <system>
261
+ rpc_endpoint 0.0.0.0:24447
262
+ </system>
263
+ EOC
264
+ conf = Fluent::Config.parse(conf_data, "(test)", "(test_dir)", true)
265
+ sys_conf = sv.__send__(:build_system_config, conf)
266
+
267
+ server = DummyServer.new
268
+ def server.config
269
+ {
270
+ :signame => "TestFluentdEvent",
271
+ :worker_pid => 5963,
272
+ }
273
+ end
274
+ server.rpc_endpoint = sys_conf.rpc_endpoint
275
+
276
+ server.run_rpc_server
277
+
278
+ mock(server).restart(true) { nil }
279
+ response = Net::HTTP.get(URI.parse('http://127.0.0.1:24447/api/plugins.flushBuffers'))
280
+
281
+ server.stop_rpc_server
282
+ assert_equal('{"ok":true}', response)
283
+ end
284
+
167
285
  def test_load_config
168
286
  tmp_dir = "#{TMP_DIR}/dir/test_load_config.conf"
169
287
  conf_info_str = %[
@@ -399,6 +517,37 @@ class SupervisorTest < ::Test::Unit::TestCase
399
517
  assert_equal Fluent::Log::LEVEL_ERROR, $log.level
400
518
  end
401
519
 
520
+ def test_enable_shared_socket
521
+ server = DummyServer.new
522
+ begin
523
+ ENV.delete('SERVERENGINE_SOCKETMANAGER_PATH')
524
+ server.before_run
525
+ sleep 0.1 if Fluent.windows? # Wait for starting windows event thread
526
+ assert_not_nil(ENV['SERVERENGINE_SOCKETMANAGER_PATH'])
527
+ ensure
528
+ server.after_run
529
+ ENV.delete('SERVERENGINE_SOCKETMANAGER_PATH')
530
+ end
531
+ end
532
+
533
+ def test_disable_shared_socket
534
+ server = DummyServer.new
535
+ def server.config
536
+ {
537
+ :disable_shared_socket => true,
538
+ }
539
+ end
540
+ begin
541
+ ENV.delete('SERVERENGINE_SOCKETMANAGER_PATH')
542
+ server.before_run
543
+ sleep 0.1 if Fluent.windows? # Wait for starting windows event thread
544
+ assert_nil(ENV['SERVERENGINE_SOCKETMANAGER_PATH'])
545
+ ensure
546
+ server.after_run
547
+ ENV.delete('SERVERENGINE_SOCKETMANAGER_PATH')
548
+ end
549
+ end
550
+
402
551
  def create_debug_dummy_logger
403
552
  dl_opts = {}
404
553
  dl_opts[:log_level] = ServerEngine::DaemonLogger::DEBUG
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluentd
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.2
4
+ version: 1.12.1
5
5
  platform: x64-mingw32
6
6
  authors:
7
7
  - Sadayuki Furuhashi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-04 00:00:00.000000000 Z
11
+ date: 2021-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: msgpack
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -70,7 +84,7 @@ dependencies:
70
84
  requirements:
71
85
  - - ">="
72
86
  - !ruby/object:Gem::Version
73
- version: 2.0.4
87
+ version: 2.2.2
74
88
  - - "<"
75
89
  - !ruby/object:Gem::Version
76
90
  version: 3.0.0
@@ -80,7 +94,7 @@ dependencies:
80
94
  requirements:
81
95
  - - ">="
82
96
  - !ruby/object:Gem::Version
83
- version: 2.0.4
97
+ version: 2.2.2
84
98
  - - "<"
85
99
  - !ruby/object:Gem::Version
86
100
  version: 3.0.0
@@ -178,70 +192,70 @@ dependencies:
178
192
  requirements:
179
193
  - - "~>"
180
194
  - !ruby/object:Gem::Version
181
- version: 0.8.3
195
+ version: 2.1.5
182
196
  type: :runtime
183
197
  prerelease: false
184
198
  version_requirements: !ruby/object:Gem::Requirement
185
199
  requirements:
186
200
  - - "~>"
187
201
  - !ruby/object:Gem::Version
188
- version: 0.8.3
202
+ version: 2.1.5
189
203
  - !ruby/object:Gem::Dependency
190
204
  name: win32-ipc
191
205
  requirement: !ruby/object:Gem::Requirement
192
206
  requirements:
193
207
  - - "~>"
194
208
  - !ruby/object:Gem::Version
195
- version: 0.6.1
209
+ version: 0.7.0
196
210
  type: :runtime
197
211
  prerelease: false
198
212
  version_requirements: !ruby/object:Gem::Requirement
199
213
  requirements:
200
214
  - - "~>"
201
215
  - !ruby/object:Gem::Version
202
- version: 0.6.1
216
+ version: 0.7.0
203
217
  - !ruby/object:Gem::Dependency
204
218
  name: win32-event
205
219
  requirement: !ruby/object:Gem::Requirement
206
220
  requirements:
207
221
  - - "~>"
208
222
  - !ruby/object:Gem::Version
209
- version: 0.6.1
223
+ version: 0.6.3
210
224
  type: :runtime
211
225
  prerelease: false
212
226
  version_requirements: !ruby/object:Gem::Requirement
213
227
  requirements:
214
228
  - - "~>"
215
229
  - !ruby/object:Gem::Version
216
- version: 0.6.1
230
+ version: 0.6.3
217
231
  - !ruby/object:Gem::Dependency
218
232
  name: windows-pr
219
233
  requirement: !ruby/object:Gem::Requirement
220
234
  requirements:
221
235
  - - "~>"
222
236
  - !ruby/object:Gem::Version
223
- version: 1.2.5
237
+ version: 1.2.6
224
238
  type: :runtime
225
239
  prerelease: false
226
240
  version_requirements: !ruby/object:Gem::Requirement
227
241
  requirements:
228
242
  - - "~>"
229
243
  - !ruby/object:Gem::Version
230
- version: 1.2.5
244
+ version: 1.2.6
231
245
  - !ruby/object:Gem::Dependency
232
246
  name: certstore_c
233
247
  requirement: !ruby/object:Gem::Requirement
234
248
  requirements:
235
249
  - - "~>"
236
250
  - !ruby/object:Gem::Version
237
- version: 0.1.2
251
+ version: 0.1.7
238
252
  type: :runtime
239
253
  prerelease: false
240
254
  version_requirements: !ruby/object:Gem::Requirement
241
255
  requirements:
242
256
  - - "~>"
243
257
  - !ruby/object:Gem::Version
244
- version: 0.1.2
258
+ version: 0.1.7
245
259
  - !ruby/object:Gem::Dependency
246
260
  name: rake
247
261
  requirement: !ruby/object:Gem::Requirement
@@ -374,40 +388,20 @@ dependencies:
374
388
  - - "<"
375
389
  - !ruby/object:Gem::Version
376
390
  version: '4'
377
- - !ruby/object:Gem::Dependency
378
- name: ext_monitor
379
- requirement: !ruby/object:Gem::Requirement
380
- requirements:
381
- - - ">="
382
- - !ruby/object:Gem::Version
383
- version: 0.1.2
384
- - - "<"
385
- - !ruby/object:Gem::Version
386
- version: '0.2'
387
- type: :development
388
- prerelease: false
389
- version_requirements: !ruby/object:Gem::Requirement
390
- requirements:
391
- - - ">="
392
- - !ruby/object:Gem::Version
393
- version: 0.1.2
394
- - - "<"
395
- - !ruby/object:Gem::Version
396
- version: '0.2'
397
391
  - !ruby/object:Gem::Dependency
398
392
  name: async-http
399
393
  requirement: !ruby/object:Gem::Requirement
400
394
  requirements:
401
395
  - - ">="
402
396
  - !ruby/object:Gem::Version
403
- version: '0'
397
+ version: 0.50.0
404
398
  type: :development
405
399
  prerelease: false
406
400
  version_requirements: !ruby/object:Gem::Requirement
407
401
  requirements:
408
402
  - - ">="
409
403
  - !ruby/object:Gem::Version
410
- version: '0'
404
+ version: 0.50.0
411
405
  description: Fluentd is an open source data collector designed to scale and simplify
412
406
  log management. It can collect, process and ship many kinds of data in near real-time.
413
407
  email:
@@ -415,7 +409,9 @@ email:
415
409
  executables:
416
410
  - fluent-binlog-reader
417
411
  - fluent-ca-generate
412
+ - fluent-cap-ctl
418
413
  - fluent-cat
414
+ - fluent-ctl
419
415
  - fluent-debug
420
416
  - fluent-gem
421
417
  - fluent-plugin-config-format
@@ -427,9 +423,12 @@ files:
427
423
  - ".drone.yml"
428
424
  - ".github/ISSUE_TEMPLATE.md"
429
425
  - ".github/ISSUE_TEMPLATE/bug_report.md"
426
+ - ".github/ISSUE_TEMPLATE/config.yml"
430
427
  - ".github/ISSUE_TEMPLATE/feature_request.md"
431
428
  - ".github/PULL_REQUEST_TEMPLATE.md"
429
+ - ".github/workflows/build.yaml"
432
430
  - ".github/workflows/issue-auto-closer.yml"
431
+ - ".github/workflows/stale-actions.yml"
433
432
  - ".gitignore"
434
433
  - ".gitlab-ci.yml"
435
434
  - ".travis.yml"
@@ -447,7 +446,9 @@ files:
447
446
  - appveyor.yml
448
447
  - bin/fluent-binlog-reader
449
448
  - bin/fluent-ca-generate
449
+ - bin/fluent-cap-ctl
450
450
  - bin/fluent-cat
451
+ - bin/fluent-ctl
451
452
  - bin/fluent-debug
452
453
  - bin/fluent-gem
453
454
  - bin/fluent-plugin-config-format
@@ -495,11 +496,14 @@ files:
495
496
  - fluent.conf
496
497
  - fluentd.gemspec
497
498
  - lib/fluent/agent.rb
499
+ - lib/fluent/capability.rb
498
500
  - lib/fluent/clock.rb
499
501
  - lib/fluent/command/binlog_reader.rb
500
502
  - lib/fluent/command/bundler_injection.rb
501
503
  - lib/fluent/command/ca_generate.rb
504
+ - lib/fluent/command/cap_ctl.rb
502
505
  - lib/fluent/command/cat.rb
506
+ - lib/fluent/command/ctl.rb
503
507
  - lib/fluent/command/debug.rb
504
508
  - lib/fluent/command/fluentd.rb
505
509
  - lib/fluent/command/plugin_config_formatter.rb
@@ -741,10 +745,13 @@ files:
741
745
  - templates/new_gem/test/plugin/test_output.rb.erb
742
746
  - templates/new_gem/test/plugin/test_parser.rb.erb
743
747
  - templates/plugin_config_formatter/param.md-compact.erb
748
+ - templates/plugin_config_formatter/param.md-table.erb
744
749
  - templates/plugin_config_formatter/param.md.erb
745
750
  - templates/plugin_config_formatter/section.md.erb
746
751
  - test/command/test_binlog_reader.rb
747
752
  - test/command/test_ca_generate.rb
753
+ - test/command/test_cap_ctl.rb
754
+ - test/command/test_ctl.rb
748
755
  - test/command/test_fluentd.rb
749
756
  - test/command/test_plugin_config_formatter.rb
750
757
  - test/command/test_plugin_generator.rb
@@ -921,6 +928,7 @@ files:
921
928
  - test/scripts/fluent/plugin/out_test.rb
922
929
  - test/scripts/fluent/plugin/out_test2.rb
923
930
  - test/scripts/fluent/plugin/parser_known.rb
931
+ - test/test_capability.rb
924
932
  - test/test_clock.rb
925
933
  - test/test_config.rb
926
934
  - test/test_configdsl.rb
@@ -972,13 +980,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
972
980
  - !ruby/object:Gem::Version
973
981
  version: '0'
974
982
  requirements: []
975
- rubygems_version: 3.0.3
983
+ rubyforge_project:
984
+ rubygems_version: 2.7.6.2
976
985
  signing_key:
977
986
  specification_version: 4
978
987
  summary: Fluentd event collector
979
988
  test_files:
980
989
  - test/command/test_binlog_reader.rb
981
990
  - test/command/test_ca_generate.rb
991
+ - test/command/test_cap_ctl.rb
992
+ - test/command/test_ctl.rb
982
993
  - test/command/test_fluentd.rb
983
994
  - test/command/test_plugin_config_formatter.rb
984
995
  - test/command/test_plugin_generator.rb
@@ -1155,6 +1166,7 @@ test_files:
1155
1166
  - test/scripts/fluent/plugin/out_test.rb
1156
1167
  - test/scripts/fluent/plugin/out_test2.rb
1157
1168
  - test/scripts/fluent/plugin/parser_known.rb
1169
+ - test/test_capability.rb
1158
1170
  - test/test_clock.rb
1159
1171
  - test/test_config.rb
1160
1172
  - test/test_configdsl.rb