fluentd 1.16.3 → 1.17.0
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 +4 -4
- data/.github/DISCUSSION_TEMPLATE/q-a-japanese.yml +50 -0
- data/.github/DISCUSSION_TEMPLATE/q-a.yml +47 -0
- data/.github/workflows/test-ruby-head.yml +31 -0
- data/.github/workflows/{linux-test.yaml → test.yml} +9 -13
- data/CHANGELOG.md +66 -0
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/fluentd.gemspec +9 -1
- data/lib/fluent/command/binlog_reader.rb +1 -1
- data/lib/fluent/config/configure_proxy.rb +2 -2
- data/lib/fluent/config/types.rb +1 -1
- data/lib/fluent/configurable.rb +2 -2
- data/lib/fluent/counter/mutex_hash.rb +1 -1
- data/lib/fluent/fluent_log_event_router.rb +0 -2
- data/lib/fluent/plugin/buf_file.rb +1 -1
- data/lib/fluent/plugin/buffer/file_chunk.rb +1 -1
- data/lib/fluent/plugin/buffer/file_single_chunk.rb +2 -3
- data/lib/fluent/plugin/buffer.rb +95 -86
- data/lib/fluent/plugin/filter_parser.rb +26 -8
- data/lib/fluent/plugin/in_http.rb +18 -53
- data/lib/fluent/plugin/in_tail.rb +52 -8
- data/lib/fluent/plugin/out_http.rb +125 -13
- data/lib/fluent/plugin/owned_by_mixin.rb +0 -1
- data/lib/fluent/plugin/parser_json.rb +22 -5
- data/lib/fluent/plugin/parser_msgpack.rb +24 -3
- data/lib/fluent/plugin_helper/metrics.rb +2 -2
- data/lib/fluent/registry.rb +6 -6
- data/lib/fluent/test/output_test.rb +1 -1
- data/lib/fluent/unique_id.rb +1 -1
- data/lib/fluent/version.rb +1 -1
- data/test/command/test_fluentd.rb +8 -2
- data/test/log/test_console_adapter.rb +10 -3
- data/test/plugin/data/log_numeric/01.log +0 -0
- data/test/plugin/data/log_numeric/02.log +0 -0
- data/test/plugin/data/log_numeric/12.log +0 -0
- data/test/plugin/data/log_numeric/14.log +0 -0
- data/test/plugin/test_buffer.rb +110 -0
- data/test/plugin/test_in_http.rb +23 -1
- data/test/plugin/test_in_tail.rb +307 -3
- data/test/plugin/test_out_forward.rb +34 -39
- data/test/plugin/test_out_http.rb +128 -0
- data/test/plugin/test_owned_by.rb +0 -1
- data/test/plugin/test_parser_json.rb +106 -0
- data/test/plugin/test_parser_msgpack.rb +127 -0
- data/test/plugin/test_storage.rb +0 -1
- data/test/plugin_helper/test_child_process.rb +17 -7
- metadata +104 -9
- data/.github/workflows/macos-test.yaml +0 -34
- data/.github/workflows/windows-test.yaml +0 -49
- /data/.github/ISSUE_TEMPLATE/{bug_report.yaml → bug_report.yml} +0 -0
- /data/.github/ISSUE_TEMPLATE/{feature_request.yaml → feature_request.yml} +0 -0
|
@@ -135,4 +135,110 @@ class JsonParserTest < ::Test::Unit::TestCase
|
|
|
135
135
|
end
|
|
136
136
|
end
|
|
137
137
|
end
|
|
138
|
+
|
|
139
|
+
sub_test_case "various record pattern" do
|
|
140
|
+
data("Only string", { record: '"message"', expected: [nil] }, keep: true)
|
|
141
|
+
data("Only string without quotation", { record: "message", expected: [nil] }, keep: true)
|
|
142
|
+
data("Only number", { record: "0", expected: [nil] }, keep: true)
|
|
143
|
+
data(
|
|
144
|
+
"Array of Hash",
|
|
145
|
+
{
|
|
146
|
+
record: '[{"k1": 1}, {"k2": 2}]',
|
|
147
|
+
expected: [{"k1" => 1}, {"k2" => 2}]
|
|
148
|
+
},
|
|
149
|
+
keep: true,
|
|
150
|
+
)
|
|
151
|
+
data(
|
|
152
|
+
"Array of both Hash and invalid",
|
|
153
|
+
{
|
|
154
|
+
record: '[{"k1": 1}, "string", {"k2": 2}, 0]',
|
|
155
|
+
expected: [{"k1" => 1}, nil, {"k2" => 2}, nil]
|
|
156
|
+
},
|
|
157
|
+
keep: true,
|
|
158
|
+
)
|
|
159
|
+
data(
|
|
160
|
+
"Array of all invalid",
|
|
161
|
+
{
|
|
162
|
+
record: '["string", 0, [{"k": 0}]]',
|
|
163
|
+
expected: [nil, nil, nil]
|
|
164
|
+
},
|
|
165
|
+
keep: true,
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
def test_oj(data)
|
|
169
|
+
parsed_records = []
|
|
170
|
+
@parser.configure("json_parser" => "oj")
|
|
171
|
+
@parser.instance.parse(data[:record]) { |time, record|
|
|
172
|
+
parsed_records.append(record)
|
|
173
|
+
}
|
|
174
|
+
assert_equal(data[:expected], parsed_records)
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
def test_yajl(data)
|
|
178
|
+
parsed_records = []
|
|
179
|
+
@parser.configure("json_parser" => "yajl")
|
|
180
|
+
@parser.instance.parse(data[:record]) { |time, record|
|
|
181
|
+
parsed_records.append(record)
|
|
182
|
+
}
|
|
183
|
+
assert_equal(data[:expected], parsed_records)
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def test_json(json)
|
|
187
|
+
parsed_records = []
|
|
188
|
+
@parser.configure("json_parser" => "json")
|
|
189
|
+
@parser.instance.parse(data[:record]) { |time, record|
|
|
190
|
+
parsed_records.append(record)
|
|
191
|
+
}
|
|
192
|
+
assert_equal(data[:expected], parsed_records)
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
# This becomes NoMethodError if a non-Hash object is passed to convert_values.
|
|
197
|
+
# https://github.com/fluent/fluentd/issues/4100
|
|
198
|
+
sub_test_case "execute_convert_values with null_empty_string" do
|
|
199
|
+
data("Only string", { record: '"message"', expected: [nil] }, keep: true)
|
|
200
|
+
data(
|
|
201
|
+
"Hash",
|
|
202
|
+
{
|
|
203
|
+
record: '{"k1": 1, "k2": ""}',
|
|
204
|
+
expected: [{"k1" => 1, "k2" => nil}]
|
|
205
|
+
},
|
|
206
|
+
keep: true,
|
|
207
|
+
)
|
|
208
|
+
data(
|
|
209
|
+
"Array of Hash",
|
|
210
|
+
{
|
|
211
|
+
record: '[{"k1": 1}, {"k2": ""}]',
|
|
212
|
+
expected: [{"k1" => 1}, {"k2" => nil}]
|
|
213
|
+
},
|
|
214
|
+
keep: true,
|
|
215
|
+
)
|
|
216
|
+
|
|
217
|
+
def test_oj(data)
|
|
218
|
+
parsed_records = []
|
|
219
|
+
@parser.configure("json_parser" => "oj", "null_empty_string" => true)
|
|
220
|
+
@parser.instance.parse(data[:record]) { |time, record|
|
|
221
|
+
parsed_records.append(record)
|
|
222
|
+
}
|
|
223
|
+
assert_equal(data[:expected], parsed_records)
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
def test_yajl(data)
|
|
227
|
+
parsed_records = []
|
|
228
|
+
@parser.configure("json_parser" => "yajl", "null_empty_string" => true)
|
|
229
|
+
@parser.instance.parse(data[:record]) { |time, record|
|
|
230
|
+
parsed_records.append(record)
|
|
231
|
+
}
|
|
232
|
+
assert_equal(data[:expected], parsed_records)
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
def test_json(json)
|
|
236
|
+
parsed_records = []
|
|
237
|
+
@parser.configure("json_parser" => "json", "null_empty_string" => true)
|
|
238
|
+
@parser.instance.parse(data[:record]) { |time, record|
|
|
239
|
+
parsed_records.append(record)
|
|
240
|
+
}
|
|
241
|
+
assert_equal(data[:expected], parsed_records)
|
|
242
|
+
end
|
|
243
|
+
end
|
|
138
244
|
end
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
require_relative '../helper'
|
|
2
|
+
require 'fluent/test/driver/parser'
|
|
3
|
+
require 'fluent/plugin/parser_msgpack'
|
|
4
|
+
|
|
5
|
+
class MessagePackParserTest < ::Test::Unit::TestCase
|
|
6
|
+
def setup
|
|
7
|
+
Fluent::Test.setup
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def create_driver(conf)
|
|
11
|
+
Fluent::Test::Driver::Parser.new(Fluent::Plugin::MessagePackParser).configure(conf)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
sub_test_case "simple setting" do
|
|
15
|
+
data(
|
|
16
|
+
"Normal Hash",
|
|
17
|
+
{
|
|
18
|
+
input: "\x82\xA7message\xADHello msgpack\xA3numd",
|
|
19
|
+
expected: [{"message" => "Hello msgpack", "num" => 100}]
|
|
20
|
+
},
|
|
21
|
+
keep: true
|
|
22
|
+
)
|
|
23
|
+
data(
|
|
24
|
+
"Array of multiple Hash",
|
|
25
|
+
{
|
|
26
|
+
input: "\x92\x81\xA7message\xA3foo\x81\xA7message\xA3bar",
|
|
27
|
+
expected: [{"message"=>"foo"}, {"message"=>"bar"}]
|
|
28
|
+
},
|
|
29
|
+
keep: true
|
|
30
|
+
)
|
|
31
|
+
data(
|
|
32
|
+
"String",
|
|
33
|
+
{
|
|
34
|
+
# "Hello msgpack".to_msgpack
|
|
35
|
+
input: "\xADHello msgpack",
|
|
36
|
+
expected: [nil]
|
|
37
|
+
},
|
|
38
|
+
keep: true
|
|
39
|
+
)
|
|
40
|
+
data(
|
|
41
|
+
"Array of String",
|
|
42
|
+
{
|
|
43
|
+
# ["foo", "bar"].to_msgpack
|
|
44
|
+
input: "\x92\xA3foo\xA3bar",
|
|
45
|
+
expected: [nil, nil]
|
|
46
|
+
},
|
|
47
|
+
keep: true
|
|
48
|
+
)
|
|
49
|
+
data(
|
|
50
|
+
"Array of String and Hash",
|
|
51
|
+
{
|
|
52
|
+
# ["foo", {message: "bar"}].to_msgpack
|
|
53
|
+
input: "\x92\xA3foo\x81\xA7message\xA3bar",
|
|
54
|
+
expected: [nil, {"message"=>"bar"}]
|
|
55
|
+
},
|
|
56
|
+
keep: true
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
def test_parse(data)
|
|
60
|
+
parsed_records = []
|
|
61
|
+
create_driver("").instance.parse(data[:input]) do |time, record|
|
|
62
|
+
parsed_records.append(record)
|
|
63
|
+
end
|
|
64
|
+
assert_equal(data[:expected], parsed_records)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_parse_io(data)
|
|
68
|
+
parsed_records = []
|
|
69
|
+
StringIO.open(data[:input]) do |io|
|
|
70
|
+
create_driver("").instance.parse_io(io) do |time, record|
|
|
71
|
+
parsed_records.append(record)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
assert_equal(data[:expected], parsed_records)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# This becomes NoMethodError if a non-Hash object is passed to convert_values.
|
|
79
|
+
# https://github.com/fluent/fluentd/issues/4100
|
|
80
|
+
sub_test_case "execute_convert_values with null_empty_string" do
|
|
81
|
+
data(
|
|
82
|
+
"Normal hash",
|
|
83
|
+
{
|
|
84
|
+
# {message: "foo", empty: ""}.to_msgpack
|
|
85
|
+
input: "\x82\xA7message\xA3foo\xA5empty\xA0",
|
|
86
|
+
expected: [{"message" => "foo", "empty" => nil}]
|
|
87
|
+
},
|
|
88
|
+
keep: true
|
|
89
|
+
)
|
|
90
|
+
data(
|
|
91
|
+
"Array of multiple Hash",
|
|
92
|
+
{
|
|
93
|
+
# [{message: "foo", empty: ""}, {message: "bar", empty: ""}].to_msgpack
|
|
94
|
+
input: "\x92\x82\xA7message\xA3foo\xA5empty\xA0\x82\xA7message\xA3bar\xA5empty\xA0",
|
|
95
|
+
expected: [{"message"=>"foo", "empty" => nil}, {"message"=>"bar", "empty" => nil}]
|
|
96
|
+
},
|
|
97
|
+
keep: true
|
|
98
|
+
)
|
|
99
|
+
data(
|
|
100
|
+
"String",
|
|
101
|
+
{
|
|
102
|
+
# "Hello msgpack".to_msgpack
|
|
103
|
+
input: "\xADHello msgpack",
|
|
104
|
+
expected: [nil]
|
|
105
|
+
},
|
|
106
|
+
keep: true
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
def test_parse(data)
|
|
110
|
+
parsed_records = []
|
|
111
|
+
create_driver("null_empty_string").instance.parse(data[:input]) do |time, record|
|
|
112
|
+
parsed_records.append(record)
|
|
113
|
+
end
|
|
114
|
+
assert_equal(data[:expected], parsed_records)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def test_parse_io(data)
|
|
118
|
+
parsed_records = []
|
|
119
|
+
StringIO.open(data[:input]) do |io|
|
|
120
|
+
create_driver("null_empty_string").instance.parse_io(io) do |time, record|
|
|
121
|
+
parsed_records.append(record)
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
assert_equal(data[:expected], parsed_records)
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
data/test/plugin/test_storage.rb
CHANGED
|
@@ -68,7 +68,6 @@ class StorageTest < Test::Unit::TestCase
|
|
|
68
68
|
|
|
69
69
|
assert_equal 'mytest', s.owner.system_config.process_name
|
|
70
70
|
assert_equal '1', s.instance_eval{ @_plugin_id }
|
|
71
|
-
assert_equal true, s.instance_eval{ @_plugin_id_configured }
|
|
72
71
|
end
|
|
73
72
|
|
|
74
73
|
test 'does NOT have features for high-performance/high-consistent storages' do
|
|
@@ -515,6 +515,9 @@ class ChildProcessTest < Test::Unit::TestCase
|
|
|
515
515
|
end
|
|
516
516
|
|
|
517
517
|
test 'can scrub characters without exceptions' do
|
|
518
|
+
if Gem::Version.create(RUBY_VERSION) >= Gem::Version.create('3.3.0')
|
|
519
|
+
pend "Behaviour of IO#set_encoding is changed as of Ruby 3.3 (#4058)"
|
|
520
|
+
end
|
|
518
521
|
m = Mutex.new
|
|
519
522
|
str = nil
|
|
520
523
|
Timeout.timeout(TEST_DEADLOCK_TIMEOUT) do
|
|
@@ -529,19 +532,25 @@ class ChildProcessTest < Test::Unit::TestCase
|
|
|
529
532
|
sleep TEST_WAIT_INTERVAL_FOR_BLOCK_RUNNING until m.locked? || ran
|
|
530
533
|
m.lock
|
|
531
534
|
assert_equal Encoding.find('utf-8'), str.encoding
|
|
532
|
-
|
|
535
|
+
replacement = "\uFFFD" # U+FFFD (REPLACEMENT CHARACTER)
|
|
536
|
+
nul = "\x00" # U+0000 (NUL)
|
|
537
|
+
expected = replacement * 2 + nul + replacement * 2
|
|
533
538
|
assert_equal expected, str
|
|
534
539
|
@d.stop; @d.shutdown; @d.close; @d.terminate
|
|
535
540
|
end
|
|
536
541
|
end
|
|
537
542
|
|
|
538
543
|
test 'can scrub characters without exceptions and replace specified chars' do
|
|
544
|
+
if Gem::Version.create(RUBY_VERSION) >= Gem::Version.create('3.3.0')
|
|
545
|
+
pend "Behaviour of IO#set_encoding is changed as of Ruby 3.3 (#4058)"
|
|
546
|
+
end
|
|
539
547
|
m = Mutex.new
|
|
540
548
|
str = nil
|
|
549
|
+
replacement = "?"
|
|
541
550
|
Timeout.timeout(TEST_DEADLOCK_TIMEOUT) do
|
|
542
551
|
ran = false
|
|
543
552
|
args = ['-e', 'STDOUT.set_encoding("ascii-8bit"); STDOUT.write "\xFF\xFF\x00\xF0\xF0"']
|
|
544
|
-
@d.child_process_execute(:t13b, "ruby", arguments: args, mode: [:read], scrub: true, replace_string:
|
|
553
|
+
@d.child_process_execute(:t13b, "ruby", arguments: args, mode: [:read], scrub: true, replace_string: replacement) do |io|
|
|
545
554
|
m.lock
|
|
546
555
|
ran = true
|
|
547
556
|
str = io.read
|
|
@@ -550,7 +559,8 @@ class ChildProcessTest < Test::Unit::TestCase
|
|
|
550
559
|
sleep TEST_WAIT_INTERVAL_FOR_BLOCK_RUNNING until m.locked? || ran
|
|
551
560
|
m.lock
|
|
552
561
|
assert_equal Encoding.find('utf-8'), str.encoding
|
|
553
|
-
|
|
562
|
+
nul = "\x00" # U+0000 (NUL)
|
|
563
|
+
expected = replacement * 2 + nul + replacement * 2
|
|
554
564
|
assert_equal expected, str
|
|
555
565
|
@d.stop; @d.shutdown; @d.close; @d.terminate
|
|
556
566
|
end
|
|
@@ -559,7 +569,7 @@ class ChildProcessTest < Test::Unit::TestCase
|
|
|
559
569
|
unless Fluent.windows?
|
|
560
570
|
test 'can specify subprocess name' do
|
|
561
571
|
io = IO.popen([["cat", "caaaaaaaaaaat"], '-'])
|
|
562
|
-
process_naming_enabled = (
|
|
572
|
+
process_naming_enabled = (IO.popen(["ps", "opid,cmd"]){|_io| _io.readlines }.count{|line| line.include?("caaaaaaaaaaat") } > 0)
|
|
563
573
|
Process.kill(:TERM, io.pid) rescue nil
|
|
564
574
|
io.close rescue nil
|
|
565
575
|
|
|
@@ -576,7 +586,7 @@ class ChildProcessTest < Test::Unit::TestCase
|
|
|
576
586
|
m.lock
|
|
577
587
|
ran = true
|
|
578
588
|
pids << @d.child_process_id
|
|
579
|
-
proc_lines +=
|
|
589
|
+
proc_lines += IO.popen(["ps", "opid,cmd"]){|_io| _io.readlines }
|
|
580
590
|
m.unlock
|
|
581
591
|
readio.read
|
|
582
592
|
end
|
|
@@ -635,8 +645,8 @@ class ChildProcessTest < Test::Unit::TestCase
|
|
|
635
645
|
unless Fluent.windows?
|
|
636
646
|
test 'can change working directory' do
|
|
637
647
|
# check my real /tmp directory (for mac)
|
|
638
|
-
cmd =
|
|
639
|
-
mytmpdir =
|
|
648
|
+
cmd = ['ruby', '-e', 'Dir.chdir("/tmp"); puts Dir.pwd']
|
|
649
|
+
mytmpdir = IO.popen(cmd){|io| io.read.chomp }
|
|
640
650
|
|
|
641
651
|
m = Mutex.new
|
|
642
652
|
str = nil
|
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.17.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:
|
|
11
|
+
date: 2024-04-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -200,6 +200,48 @@ dependencies:
|
|
|
200
200
|
- - "~>"
|
|
201
201
|
- !ruby/object:Gem::Version
|
|
202
202
|
version: '1.4'
|
|
203
|
+
- !ruby/object:Gem::Dependency
|
|
204
|
+
name: base64
|
|
205
|
+
requirement: !ruby/object:Gem::Requirement
|
|
206
|
+
requirements:
|
|
207
|
+
- - "~>"
|
|
208
|
+
- !ruby/object:Gem::Version
|
|
209
|
+
version: '0.2'
|
|
210
|
+
type: :runtime
|
|
211
|
+
prerelease: false
|
|
212
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
213
|
+
requirements:
|
|
214
|
+
- - "~>"
|
|
215
|
+
- !ruby/object:Gem::Version
|
|
216
|
+
version: '0.2'
|
|
217
|
+
- !ruby/object:Gem::Dependency
|
|
218
|
+
name: csv
|
|
219
|
+
requirement: !ruby/object:Gem::Requirement
|
|
220
|
+
requirements:
|
|
221
|
+
- - "~>"
|
|
222
|
+
- !ruby/object:Gem::Version
|
|
223
|
+
version: '3.2'
|
|
224
|
+
type: :runtime
|
|
225
|
+
prerelease: false
|
|
226
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
227
|
+
requirements:
|
|
228
|
+
- - "~>"
|
|
229
|
+
- !ruby/object:Gem::Version
|
|
230
|
+
version: '3.2'
|
|
231
|
+
- !ruby/object:Gem::Dependency
|
|
232
|
+
name: drb
|
|
233
|
+
requirement: !ruby/object:Gem::Requirement
|
|
234
|
+
requirements:
|
|
235
|
+
- - "~>"
|
|
236
|
+
- !ruby/object:Gem::Version
|
|
237
|
+
version: '2.2'
|
|
238
|
+
type: :runtime
|
|
239
|
+
prerelease: false
|
|
240
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
241
|
+
requirements:
|
|
242
|
+
- - "~>"
|
|
243
|
+
- !ruby/object:Gem::Version
|
|
244
|
+
version: '2.2'
|
|
203
245
|
- !ruby/object:Gem::Dependency
|
|
204
246
|
name: rake
|
|
205
247
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -360,6 +402,48 @@ dependencies:
|
|
|
360
402
|
- - ">="
|
|
361
403
|
- !ruby/object:Gem::Version
|
|
362
404
|
version: 0.50.0
|
|
405
|
+
- !ruby/object:Gem::Dependency
|
|
406
|
+
name: aws-sigv4
|
|
407
|
+
requirement: !ruby/object:Gem::Requirement
|
|
408
|
+
requirements:
|
|
409
|
+
- - "~>"
|
|
410
|
+
- !ruby/object:Gem::Version
|
|
411
|
+
version: '1.8'
|
|
412
|
+
type: :development
|
|
413
|
+
prerelease: false
|
|
414
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
415
|
+
requirements:
|
|
416
|
+
- - "~>"
|
|
417
|
+
- !ruby/object:Gem::Version
|
|
418
|
+
version: '1.8'
|
|
419
|
+
- !ruby/object:Gem::Dependency
|
|
420
|
+
name: aws-sdk-core
|
|
421
|
+
requirement: !ruby/object:Gem::Requirement
|
|
422
|
+
requirements:
|
|
423
|
+
- - "~>"
|
|
424
|
+
- !ruby/object:Gem::Version
|
|
425
|
+
version: '3.191'
|
|
426
|
+
type: :development
|
|
427
|
+
prerelease: false
|
|
428
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
429
|
+
requirements:
|
|
430
|
+
- - "~>"
|
|
431
|
+
- !ruby/object:Gem::Version
|
|
432
|
+
version: '3.191'
|
|
433
|
+
- !ruby/object:Gem::Dependency
|
|
434
|
+
name: rexml
|
|
435
|
+
requirement: !ruby/object:Gem::Requirement
|
|
436
|
+
requirements:
|
|
437
|
+
- - "~>"
|
|
438
|
+
- !ruby/object:Gem::Version
|
|
439
|
+
version: '3.2'
|
|
440
|
+
type: :development
|
|
441
|
+
prerelease: false
|
|
442
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
443
|
+
requirements:
|
|
444
|
+
- - "~>"
|
|
445
|
+
- !ruby/object:Gem::Version
|
|
446
|
+
version: '3.2'
|
|
363
447
|
description: Fluentd is an open source data collector designed to scale and simplify
|
|
364
448
|
log management. It can collect, process and ship many kinds of data in near real-time.
|
|
365
449
|
email:
|
|
@@ -379,15 +463,16 @@ extensions: []
|
|
|
379
463
|
extra_rdoc_files: []
|
|
380
464
|
files:
|
|
381
465
|
- ".deepsource.toml"
|
|
466
|
+
- ".github/DISCUSSION_TEMPLATE/q-a-japanese.yml"
|
|
467
|
+
- ".github/DISCUSSION_TEMPLATE/q-a.yml"
|
|
382
468
|
- ".github/ISSUE_TEMPLATE.md"
|
|
383
|
-
- ".github/ISSUE_TEMPLATE/bug_report.
|
|
469
|
+
- ".github/ISSUE_TEMPLATE/bug_report.yml"
|
|
384
470
|
- ".github/ISSUE_TEMPLATE/config.yml"
|
|
385
|
-
- ".github/ISSUE_TEMPLATE/feature_request.
|
|
471
|
+
- ".github/ISSUE_TEMPLATE/feature_request.yml"
|
|
386
472
|
- ".github/PULL_REQUEST_TEMPLATE.md"
|
|
387
|
-
- ".github/workflows/linux-test.yaml"
|
|
388
|
-
- ".github/workflows/macos-test.yaml"
|
|
389
473
|
- ".github/workflows/stale-actions.yml"
|
|
390
|
-
- ".github/workflows/
|
|
474
|
+
- ".github/workflows/test-ruby-head.yml"
|
|
475
|
+
- ".github/workflows/test.yml"
|
|
391
476
|
- ".gitignore"
|
|
392
477
|
- ADOPTERS.md
|
|
393
478
|
- AUTHORS
|
|
@@ -758,6 +843,10 @@ files:
|
|
|
758
843
|
- test/plugin/data/log/foo/bar.log
|
|
759
844
|
- test/plugin/data/log/foo/bar2
|
|
760
845
|
- test/plugin/data/log/test.log
|
|
846
|
+
- test/plugin/data/log_numeric/01.log
|
|
847
|
+
- test/plugin/data/log_numeric/02.log
|
|
848
|
+
- test/plugin/data/log_numeric/12.log
|
|
849
|
+
- test/plugin/data/log_numeric/14.log
|
|
761
850
|
- test/plugin/data/sd_file/config
|
|
762
851
|
- test/plugin/data/sd_file/config.json
|
|
763
852
|
- test/plugin/data/sd_file/config.yaml
|
|
@@ -842,6 +931,7 @@ files:
|
|
|
842
931
|
- test/plugin/test_parser_csv.rb
|
|
843
932
|
- test/plugin/test_parser_json.rb
|
|
844
933
|
- test/plugin/test_parser_labeled_tsv.rb
|
|
934
|
+
- test/plugin/test_parser_msgpack.rb
|
|
845
935
|
- test/plugin/test_parser_multiline.rb
|
|
846
936
|
- test/plugin/test_parser_nginx.rb
|
|
847
937
|
- test/plugin/test_parser_none.rb
|
|
@@ -951,14 +1041,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
951
1041
|
requirements:
|
|
952
1042
|
- - ">="
|
|
953
1043
|
- !ruby/object:Gem::Version
|
|
954
|
-
version: '2.
|
|
1044
|
+
version: '2.7'
|
|
955
1045
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
956
1046
|
requirements:
|
|
957
1047
|
- - ">="
|
|
958
1048
|
- !ruby/object:Gem::Version
|
|
959
1049
|
version: '0'
|
|
960
1050
|
requirements: []
|
|
961
|
-
rubygems_version: 3.4.
|
|
1051
|
+
rubygems_version: 3.4.13
|
|
962
1052
|
signing_key:
|
|
963
1053
|
specification_version: 4
|
|
964
1054
|
summary: Fluentd event collector
|
|
@@ -1001,6 +1091,10 @@ test_files:
|
|
|
1001
1091
|
- test/plugin/data/log/foo/bar.log
|
|
1002
1092
|
- test/plugin/data/log/foo/bar2
|
|
1003
1093
|
- test/plugin/data/log/test.log
|
|
1094
|
+
- test/plugin/data/log_numeric/01.log
|
|
1095
|
+
- test/plugin/data/log_numeric/02.log
|
|
1096
|
+
- test/plugin/data/log_numeric/12.log
|
|
1097
|
+
- test/plugin/data/log_numeric/14.log
|
|
1004
1098
|
- test/plugin/data/sd_file/config
|
|
1005
1099
|
- test/plugin/data/sd_file/config.json
|
|
1006
1100
|
- test/plugin/data/sd_file/config.yaml
|
|
@@ -1085,6 +1179,7 @@ test_files:
|
|
|
1085
1179
|
- test/plugin/test_parser_csv.rb
|
|
1086
1180
|
- test/plugin/test_parser_json.rb
|
|
1087
1181
|
- test/plugin/test_parser_labeled_tsv.rb
|
|
1182
|
+
- test/plugin/test_parser_msgpack.rb
|
|
1088
1183
|
- test/plugin/test_parser_multiline.rb
|
|
1089
1184
|
- test/plugin/test_parser_nginx.rb
|
|
1090
1185
|
- test/plugin/test_parser_none.rb
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
name: Testing on macOS
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [master, v1.16]
|
|
6
|
-
pull_request:
|
|
7
|
-
branches: [master, v1.16]
|
|
8
|
-
|
|
9
|
-
jobs:
|
|
10
|
-
test:
|
|
11
|
-
runs-on: ${{ matrix.os }}
|
|
12
|
-
continue-on-error: ${{ matrix.experimental }}
|
|
13
|
-
strategy:
|
|
14
|
-
fail-fast: false
|
|
15
|
-
matrix:
|
|
16
|
-
ruby-version: ['3.2', '3.1', '3.0', '2.7']
|
|
17
|
-
os: [macos-latest]
|
|
18
|
-
experimental: [true]
|
|
19
|
-
include:
|
|
20
|
-
- ruby-version: head
|
|
21
|
-
os: macos-latest
|
|
22
|
-
experimental: true
|
|
23
|
-
|
|
24
|
-
name: Unit testing with Ruby ${{ matrix.ruby-version }} on ${{ matrix.os }}
|
|
25
|
-
steps:
|
|
26
|
-
- uses: actions/checkout@v3
|
|
27
|
-
- name: Set up Ruby
|
|
28
|
-
uses: ruby/setup-ruby@v1
|
|
29
|
-
with:
|
|
30
|
-
ruby-version: ${{ matrix.ruby-version }}
|
|
31
|
-
- name: Install dependencies
|
|
32
|
-
run: bundle install
|
|
33
|
-
- name: Run tests
|
|
34
|
-
run: bundle exec rake test
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
name: Testing on Windows
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [master, v1.16]
|
|
6
|
-
pull_request:
|
|
7
|
-
branches: [master, v1.16]
|
|
8
|
-
|
|
9
|
-
jobs:
|
|
10
|
-
test:
|
|
11
|
-
runs-on: ${{ matrix.os }}
|
|
12
|
-
continue-on-error: ${{ matrix.experimental }}
|
|
13
|
-
strategy:
|
|
14
|
-
fail-fast: false
|
|
15
|
-
matrix:
|
|
16
|
-
ruby-version: ['3.2', '3.1', '2.7']
|
|
17
|
-
os:
|
|
18
|
-
- windows-latest
|
|
19
|
-
experimental: [false]
|
|
20
|
-
include:
|
|
21
|
-
- ruby-version: head
|
|
22
|
-
os: windows-latest
|
|
23
|
-
experimental: true
|
|
24
|
-
- ruby-version: '3.0.3'
|
|
25
|
-
os: windows-latest
|
|
26
|
-
experimental: false
|
|
27
|
-
# On Ruby 3.0, we need to use fiddle 1.0.8 or later to retrieve correct
|
|
28
|
-
# error code. In addition, we have to specify the path of fiddle by RUBYLIB
|
|
29
|
-
# because RubyInstaller loads Ruby's bundled fiddle before initializing gem.
|
|
30
|
-
# See also:
|
|
31
|
-
# * https://github.com/ruby/fiddle/issues/72
|
|
32
|
-
# * https://bugs.ruby-lang.org/issues/17813
|
|
33
|
-
# * https://github.com/oneclick/rubyinstaller2/blob/8225034c22152d8195bc0aabc42a956c79d6c712/lib/ruby_installer/build/dll_directory.rb
|
|
34
|
-
ruby-lib-opt: RUBYLIB=%RUNNER_TOOL_CACHE%/Ruby/3.0.3/x64/lib/ruby/gems/3.0.0/gems/fiddle-1.1.0/lib
|
|
35
|
-
|
|
36
|
-
name: Unit testing with Ruby ${{ matrix.ruby-version }} on ${{ matrix.os }}
|
|
37
|
-
steps:
|
|
38
|
-
- uses: actions/checkout@v3
|
|
39
|
-
- name: Set up Ruby
|
|
40
|
-
uses: ruby/setup-ruby@v1
|
|
41
|
-
with:
|
|
42
|
-
ruby-version: ${{ matrix.ruby-version }}
|
|
43
|
-
- name: Add Fiddle 1.1.0
|
|
44
|
-
if: ${{ matrix.ruby-version == '3.0.3' }}
|
|
45
|
-
run: gem install fiddle --version 1.1.0
|
|
46
|
-
- name: Install dependencies
|
|
47
|
-
run: ridk exec bundle install
|
|
48
|
-
- name: Run tests
|
|
49
|
-
run: bundle exec rake test TESTOPTS=-v ${{ matrix.ruby-lib-opt }}
|
|
File without changes
|
|
File without changes
|