fluent-plugin-obsolete-plugins 0.1.0 → 0.2.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 +5 -5
- data/.github/workflows/ci.yml +32 -0
- data/README.md +40 -4
- data/fluent-plugin-obsolete-plugins.gemspec +2 -2
- data/lib/fluent/plugin/filter_obsolete_plugins.rb +19 -15
- data/lib/fluent/plugin/in_obsolete_plugins.rb +30 -0
- data/lib/fluent/plugin/obsolete_plugins_utils.rb +40 -0
- data/test/fixtures/invalid.json +11 -0
- data/test/fixtures/plugins.json +13147 -0
- data/test/helper.rb +0 -1
- data/test/plugin/test_filter_obsolete_plugins.rb +139 -41
- data/test/plugin/test_in_obsolete_plugins.rb +115 -0
- metadata +14 -10
- data/.travis.yml +0 -9
data/test/helper.rb
CHANGED
@@ -1,14 +1,11 @@
|
|
1
1
|
require "helper"
|
2
|
-
require "fluent/
|
2
|
+
require "fluent/test/driver/filter"
|
3
|
+
require "fluent/plugin/filter_obsolete_plugins"
|
3
4
|
|
4
5
|
class ObsoletePluginsFilterTest < Test::Unit::TestCase
|
5
|
-
CONFIG = %[
|
6
|
-
obsolete_plugins_yml #{fixture_path("obsolete-plugins.yml")}
|
7
|
-
]
|
8
6
|
|
9
7
|
setup do
|
10
8
|
Fluent::Test.setup
|
11
|
-
$log = Fluent::Test::TestLogger.new
|
12
9
|
@time = Time.now
|
13
10
|
Timecop.freeze(@time)
|
14
11
|
end
|
@@ -17,51 +14,138 @@ class ObsoletePluginsFilterTest < Test::Unit::TestCase
|
|
17
14
|
Timecop.return
|
18
15
|
end
|
19
16
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
17
|
+
sub_test_case "obsolete_plugins_yml" do
|
18
|
+
CONFIG_YAML = %[
|
19
|
+
obsolete_plugins_yml #{fixture_path("obsolete-plugins.yml")}
|
20
|
+
]
|
21
|
+
|
22
|
+
test "no obsolete plugins" do
|
23
|
+
d = create_driver(CONFIG_YAML)
|
24
|
+
d.run(default_tag: "test") do
|
25
|
+
d.feed({ message: "This is test message." })
|
26
|
+
end
|
27
|
+
assert_equal([{ message: "This is test message." }], d.filtered_records)
|
28
|
+
expected_logs = [
|
29
|
+
"#{@time} [warn]: 'obsolete_plugins_yml' parameter is deprecated: use plugins_json parameter instead\n",
|
30
|
+
]
|
31
|
+
assert_equal(expected_logs, d.logs)
|
24
32
|
end
|
25
|
-
assert_equal([{ message: "This is test message." }], d.filtered_records)
|
26
|
-
assert_equal([], $log.logs)
|
27
|
-
end
|
28
33
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
34
|
+
test "obsolete plugins" do
|
35
|
+
mock(Gem).loaded_specs do
|
36
|
+
{
|
37
|
+
"fluent-plugin-tail-multiline" => nil,
|
38
|
+
"fluent-plugin-hostname" => nil
|
39
|
+
}
|
40
|
+
end
|
41
|
+
d = create_driver(CONFIG_YAML)
|
42
|
+
d.run(default_tag: "test") do
|
43
|
+
d.feed({ message: "This is test message." })
|
44
|
+
end
|
45
|
+
assert_equal([{ message: "This is test message." }], d.filtered_records)
|
46
|
+
expected_logs = [
|
47
|
+
"#{@time} [warn]: 'obsolete_plugins_yml' parameter is deprecated: use plugins_json parameter instead\n",
|
48
|
+
"#{@time} [warn]: fluent-plugin-tail-multiline is obsolete: Merged in in_tail in Fluentd v0.10.45. [fluent/fluentd#269](https://github.com/fluent/fluentd/issues/269)\n",
|
49
|
+
"#{@time} [warn]: fluent-plugin-hostname is obsolete: Use [filter\\_record\\_transformer](http://docs.fluentd.org/v0.12/articles/filter_record_transformer) instead.\n"
|
50
|
+
]
|
51
|
+
assert_equal(expected_logs, d.logs)
|
35
52
|
end
|
36
|
-
|
37
|
-
|
38
|
-
|
53
|
+
|
54
|
+
test "raise error when detect obsolete plugins" do
|
55
|
+
mock(Gem).loaded_specs do
|
56
|
+
{
|
57
|
+
"fluent-plugin-tail-multiline" => nil,
|
58
|
+
"fluent-plugin-hostname" => nil
|
59
|
+
}
|
60
|
+
end
|
61
|
+
|
62
|
+
ex = assert_raise(Fluent::ConfigError) do
|
63
|
+
create_driver(CONFIG_YAML + "raise_error yes")
|
64
|
+
end
|
65
|
+
assert_equal("Detected obsolete plugins", ex.message)
|
39
66
|
end
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
67
|
+
end
|
68
|
+
|
69
|
+
sub_test_case "plugins_json" do
|
70
|
+
CONFIG_JSON = %[
|
71
|
+
plugins_json #{fixture_path("plugins.json")}
|
44
72
|
]
|
45
|
-
|
73
|
+
|
74
|
+
test "no obsolete plugins" do
|
75
|
+
d = create_driver(CONFIG_JSON)
|
76
|
+
d.run(default_tag: "test") do
|
77
|
+
d.feed({ message: "This is test message." })
|
78
|
+
end
|
79
|
+
assert_equal([{ message: "This is test message." }], d.filtered_records)
|
80
|
+
assert_equal([], d.logs)
|
81
|
+
end
|
82
|
+
|
83
|
+
test "obsolete plugins" do
|
84
|
+
mock(Gem).loaded_specs do
|
85
|
+
{
|
86
|
+
"fluent-plugin-tail-multiline" => nil,
|
87
|
+
"fluent-plugin-hostname" => nil
|
88
|
+
}
|
89
|
+
end
|
90
|
+
d = create_driver(CONFIG_JSON)
|
91
|
+
d.run(default_tag: "test") do
|
92
|
+
d.feed({ message: "This is test message." })
|
93
|
+
end
|
94
|
+
assert_equal([{ message: "This is test message." }], d.filtered_records)
|
95
|
+
expected_logs = [
|
96
|
+
"#{@time} [warn]: fluent-plugin-tail-multiline is obsolete: Merged in in_tail in Fluentd v0.10.45. [fluent/fluentd#269](https://github.com/fluent/fluentd/issues/269)\n",
|
97
|
+
"#{@time} [warn]: fluent-plugin-hostname is obsolete: Use [filter\\_record\\_transformer](http://docs.fluentd.org/v0.12/articles/filter_record_transformer) instead.\n"
|
98
|
+
]
|
99
|
+
assert_equal(expected_logs, d.logs)
|
100
|
+
end
|
101
|
+
|
102
|
+
test "raise error when detect obsolete plugins" do
|
103
|
+
mock(Gem).loaded_specs do
|
104
|
+
{
|
105
|
+
"fluent-plugin-tail-multiline" => nil,
|
106
|
+
"fluent-plugin-hostname" => nil
|
107
|
+
}
|
108
|
+
end
|
109
|
+
|
110
|
+
ex = assert_raise(Fluent::ConfigError) do
|
111
|
+
create_driver(CONFIG_JSON + "raise_error yes")
|
112
|
+
end
|
113
|
+
assert_equal("Detected obsolete plugins", ex.message)
|
114
|
+
end
|
46
115
|
end
|
47
116
|
|
48
|
-
|
49
|
-
|
50
|
-
{
|
51
|
-
|
52
|
-
|
53
|
-
|
117
|
+
sub_test_case "error handling" do
|
118
|
+
test "invalid json" do
|
119
|
+
d = create_driver("plugins_json #{fixture_path('invalid.json')}")
|
120
|
+
|
121
|
+
expected_logs = [
|
122
|
+
"#{@time} [info]: Failed to notify obsolete plugins error_class=JSON::ParserError error=\"expected ',' or '}' after object value, got: EOF at line 11 column 1\"\n",
|
123
|
+
]
|
124
|
+
|
125
|
+
assert_equal(expected_logs, d.logs)
|
54
126
|
end
|
55
|
-
|
56
|
-
|
57
|
-
|
127
|
+
|
128
|
+
test "timeout with slow server" do
|
129
|
+
server = create_slow_webserver(port: 12345)
|
130
|
+
|
131
|
+
mock(Fluent::Plugin::ObsoletePluginsUtils).notify.never
|
132
|
+
|
133
|
+
d = create_driver(%[
|
134
|
+
plugins_json http://localhost:12345/plugins.json
|
135
|
+
timeout 1
|
136
|
+
])
|
137
|
+
|
138
|
+
sleep 2
|
139
|
+
|
140
|
+
expected_logs = [
|
141
|
+
"#{@time} [info]: Failed to notify obsolete plugins error_class=Timeout::Error error=\"execution expired\"\n",
|
142
|
+
]
|
143
|
+
|
144
|
+
assert_equal(expected_logs, d.logs)
|
145
|
+
ensure
|
146
|
+
server.shutdown
|
58
147
|
end
|
59
|
-
|
60
|
-
"#{@time} [warn]: fluent-plugin-tail-multiline is obsolete: Merged in in_tail in Fluentd v0.10.45. [fluent/fluentd#269](https://github.com/fluent/fluentd/issues/269)\n",
|
61
|
-
"#{@time} [warn]: fluent-plugin-hostname is obsolete: Use [filter\\_record\\_transformer](http://docs.fluentd.org/v0.12/articles/filter_record_transformer) instead.\n"
|
62
|
-
]
|
63
|
-
assert_equal(expected_logs, $log.logs)
|
64
|
-
assert_equal("Detected obsolete plugins", ex.message)
|
148
|
+
|
65
149
|
end
|
66
150
|
|
67
151
|
private
|
@@ -69,4 +153,18 @@ class ObsoletePluginsFilterTest < Test::Unit::TestCase
|
|
69
153
|
def create_driver(conf)
|
70
154
|
Fluent::Test::Driver::Filter.new(Fluent::Plugin::ObsoletePluginsFilter).configure(conf)
|
71
155
|
end
|
156
|
+
|
157
|
+
def create_slow_webserver(port: 12345)
|
158
|
+
require "webrick"
|
159
|
+
|
160
|
+
server = WEBrick::HTTPServer.new(Port: port)
|
161
|
+
server.mount_proc '/' do |req, res|
|
162
|
+
sleep 60
|
163
|
+
|
164
|
+
res['Content-Type'] = 'application/json'
|
165
|
+
res.body = File.read(fixture_path("plugins.json"))
|
166
|
+
end
|
167
|
+
|
168
|
+
server
|
169
|
+
end
|
72
170
|
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
require "helper"
|
2
|
+
require "fluent/test/driver/input"
|
3
|
+
require "fluent/plugin/in_obsolete_plugins"
|
4
|
+
require "fluent/plugin/obsolete_plugins_utils"
|
5
|
+
|
6
|
+
class ObsoletePluginsInputTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
setup do
|
9
|
+
Fluent::Test.setup
|
10
|
+
@time = Time.now
|
11
|
+
Timecop.freeze(@time)
|
12
|
+
end
|
13
|
+
|
14
|
+
teardown do
|
15
|
+
Timecop.return
|
16
|
+
end
|
17
|
+
|
18
|
+
sub_test_case "plugins_json" do
|
19
|
+
CONFIG_JSON = %[
|
20
|
+
plugins_json #{fixture_path("plugins.json")}
|
21
|
+
]
|
22
|
+
|
23
|
+
test "no obsolete plugins" do
|
24
|
+
d = create_driver(CONFIG_JSON)
|
25
|
+
d.run
|
26
|
+
assert_equal([], d.events)
|
27
|
+
assert_equal([], d.logs)
|
28
|
+
end
|
29
|
+
|
30
|
+
test "obsolete plugins" do
|
31
|
+
stub(Gem).loaded_specs do
|
32
|
+
{
|
33
|
+
"fluent-plugin-tail-multiline" => nil,
|
34
|
+
"fluent-plugin-hostname" => nil
|
35
|
+
}
|
36
|
+
end
|
37
|
+
d = create_driver(CONFIG_JSON)
|
38
|
+
d.run
|
39
|
+
assert_equal([], d.events)
|
40
|
+
expected_logs = [
|
41
|
+
"#{@time} [warn]: fluent-plugin-tail-multiline is obsolete: Merged in in_tail in Fluentd v0.10.45. [fluent/fluentd#269](https://github.com/fluent/fluentd/issues/269)\n",
|
42
|
+
"#{@time} [warn]: fluent-plugin-hostname is obsolete: Use [filter\\_record\\_transformer](http://docs.fluentd.org/v0.12/articles/filter_record_transformer) instead.\n"
|
43
|
+
]
|
44
|
+
assert_equal(expected_logs, d.logs)
|
45
|
+
end
|
46
|
+
|
47
|
+
test "raise error when detect obsolete plugins" do
|
48
|
+
stub(Gem).loaded_specs do
|
49
|
+
{
|
50
|
+
"fluent-plugin-tail-multiline" => nil,
|
51
|
+
"fluent-plugin-hostname" => nil
|
52
|
+
}
|
53
|
+
end
|
54
|
+
|
55
|
+
ex = assert_raise(Fluent::ConfigError) do
|
56
|
+
create_driver(CONFIG_JSON + "raise_error yes")
|
57
|
+
end
|
58
|
+
assert_equal("Detected obsolete plugins", ex.message)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
sub_test_case "error handling" do
|
63
|
+
test "invalid json" do
|
64
|
+
d = create_driver("plugins_json #{fixture_path('invalid.json')}")
|
65
|
+
|
66
|
+
expected_logs = [
|
67
|
+
"#{@time} [info]: Failed to notify obsolete plugins error_class=JSON::ParserError error=\"expected ',' or '}' after object value, got: EOF at line 11 column 1\"\n",
|
68
|
+
]
|
69
|
+
|
70
|
+
assert_equal(expected_logs, d.logs)
|
71
|
+
end
|
72
|
+
|
73
|
+
test "timeout with slow server" do
|
74
|
+
server = create_slow_webserver(port: 12345)
|
75
|
+
|
76
|
+
mock(Fluent::Plugin::ObsoletePluginsUtils).notify.never
|
77
|
+
|
78
|
+
d = create_driver(%[
|
79
|
+
plugins_json http://localhost:12345/plugins.json
|
80
|
+
timeout 1
|
81
|
+
])
|
82
|
+
|
83
|
+
sleep 2
|
84
|
+
|
85
|
+
expected_logs = [
|
86
|
+
"#{@time} [info]: Failed to notify obsolete plugins error_class=Timeout::Error error=\"execution expired\"\n",
|
87
|
+
]
|
88
|
+
|
89
|
+
assert_equal(expected_logs, d.logs)
|
90
|
+
ensure
|
91
|
+
server.shutdown
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
private
|
97
|
+
|
98
|
+
def create_driver(conf)
|
99
|
+
Fluent::Test::Driver::Input.new(Fluent::Plugin::ObsoletePluginsInput).configure(conf)
|
100
|
+
end
|
101
|
+
|
102
|
+
def create_slow_webserver(port: 12345)
|
103
|
+
require "webrick"
|
104
|
+
|
105
|
+
server = WEBrick::HTTPServer.new(Port: port)
|
106
|
+
server.mount_proc '/' do |req, res|
|
107
|
+
sleep 60
|
108
|
+
|
109
|
+
res['Content-Type'] = 'application/json'
|
110
|
+
res.body = File.read(fixture_path("plugins.json"))
|
111
|
+
end
|
112
|
+
|
113
|
+
server
|
114
|
+
end
|
115
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-obsolete-plugins
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- okkez
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: bundler
|
@@ -16,14 +15,14 @@ dependencies:
|
|
16
15
|
requirements:
|
17
16
|
- - "~>"
|
18
17
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
18
|
+
version: '2.4'
|
20
19
|
type: :development
|
21
20
|
prerelease: false
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
23
22
|
requirements:
|
24
23
|
- - "~>"
|
25
24
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
25
|
+
version: '2.4'
|
27
26
|
- !ruby/object:Gem::Dependency
|
28
27
|
name: rake
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
@@ -107,22 +106,26 @@ executables: []
|
|
107
106
|
extensions: []
|
108
107
|
extra_rdoc_files: []
|
109
108
|
files:
|
109
|
+
- ".github/workflows/ci.yml"
|
110
110
|
- ".gitignore"
|
111
|
-
- ".travis.yml"
|
112
111
|
- Gemfile
|
113
112
|
- LICENSE
|
114
113
|
- README.md
|
115
114
|
- Rakefile
|
116
115
|
- fluent-plugin-obsolete-plugins.gemspec
|
117
116
|
- lib/fluent/plugin/filter_obsolete_plugins.rb
|
117
|
+
- lib/fluent/plugin/in_obsolete_plugins.rb
|
118
|
+
- lib/fluent/plugin/obsolete_plugins_utils.rb
|
119
|
+
- test/fixtures/invalid.json
|
118
120
|
- test/fixtures/obsolete-plugins.yml
|
121
|
+
- test/fixtures/plugins.json
|
119
122
|
- test/helper.rb
|
120
123
|
- test/plugin/test_filter_obsolete_plugins.rb
|
124
|
+
- test/plugin/test_in_obsolete_plugins.rb
|
121
125
|
homepage: https://github.com/okkez/fluent-plugin-obsolete-plugins
|
122
126
|
licenses:
|
123
127
|
- Apache-2.0
|
124
128
|
metadata: {}
|
125
|
-
post_install_message:
|
126
129
|
rdoc_options: []
|
127
130
|
require_paths:
|
128
131
|
- lib
|
@@ -137,12 +140,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
140
|
- !ruby/object:Gem::Version
|
138
141
|
version: '0'
|
139
142
|
requirements: []
|
140
|
-
|
141
|
-
rubygems_version: 2.6.11
|
142
|
-
signing_key:
|
143
|
+
rubygems_version: 3.7.0
|
143
144
|
specification_version: 4
|
144
145
|
summary: Report obsolete plugins on boot
|
145
146
|
test_files:
|
147
|
+
- test/fixtures/invalid.json
|
146
148
|
- test/fixtures/obsolete-plugins.yml
|
149
|
+
- test/fixtures/plugins.json
|
147
150
|
- test/helper.rb
|
148
151
|
- test/plugin/test_filter_obsolete_plugins.rb
|
152
|
+
- test/plugin/test_in_obsolete_plugins.rb
|