Skip to content

Commit d7897d8

Browse files
authored
Check whether obsolete for installed plugins (#9)
Currently, it will checks only loaded plugins. The plugins loaded after fluent-plugin-obsolete-plugins will not be checked. fluent-plugin-obsolete-plugins is not always be loaded at last. So, this PR will check the installed plugins instead of loaded.
1 parent 5226862 commit d7897d8

File tree

3 files changed

+32
-31
lines changed

3 files changed

+32
-31
lines changed

lib/fluent/plugin/obsolete_plugins_utils.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,12 @@ def self.obsolete_plugins_from_json(url, timeout: 5)
2828
end
2929
end
3030

31+
def self.installed_plugins
32+
Gem::Specification.find_all.select { |x| x.name =~ /^fluent(d|-(plugin|mixin)-.*)$/ }.map(&:name)
33+
end
34+
3135
def self.notify(logger, obsolete_plugins, raise_error: false)
32-
plugins = Gem.loaded_specs.keys & obsolete_plugins.keys
36+
plugins = Fluent::Plugin::ObsoletePluginsUtils.installed_plugins & obsolete_plugins.keys
3337
plugins.each do |name|
3438
logger.warn("#{name} is obsolete: #{obsolete_plugins[name].chomp}")
3539
end

test/plugin/test_filter_obsolete_plugins.rb

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ class ObsoletePluginsFilterTest < Test::Unit::TestCase
2020
]
2121

2222
test "no obsolete plugins" do
23+
stub(Fluent::Plugin::ObsoletePluginsUtils).installed_plugins do
24+
[]
25+
end
26+
2327
d = create_driver(CONFIG_YAML)
2428
d.run(default_tag: "test") do
2529
d.feed({ message: "This is test message." })
@@ -32,12 +36,10 @@ class ObsoletePluginsFilterTest < Test::Unit::TestCase
3236
end
3337

3438
test "obsolete plugins" do
35-
mock(Gem).loaded_specs do
36-
{
37-
"fluent-plugin-tail-multiline" => nil,
38-
"fluent-plugin-hostname" => nil
39-
}
39+
stub(Fluent::Plugin::ObsoletePluginsUtils).installed_plugins do
40+
["fluent-plugin-tail-multiline", "fluent-plugin-hostname"]
4041
end
42+
4143
d = create_driver(CONFIG_YAML)
4244
d.run(default_tag: "test") do
4345
d.feed({ message: "This is test message." })
@@ -52,11 +54,8 @@ class ObsoletePluginsFilterTest < Test::Unit::TestCase
5254
end
5355

5456
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-
}
57+
stub(Fluent::Plugin::ObsoletePluginsUtils).installed_plugins do
58+
["fluent-plugin-tail-multiline", "fluent-plugin-hostname"]
6059
end
6160

6261
ex = assert_raise(Fluent::ConfigError) do
@@ -72,6 +71,10 @@ class ObsoletePluginsFilterTest < Test::Unit::TestCase
7271
]
7372

7473
test "no obsolete plugins" do
74+
stub(Fluent::Plugin::ObsoletePluginsUtils).installed_plugins do
75+
[]
76+
end
77+
7578
d = create_driver(CONFIG_JSON)
7679
d.run(default_tag: "test") do
7780
d.feed({ message: "This is test message." })
@@ -81,12 +84,10 @@ class ObsoletePluginsFilterTest < Test::Unit::TestCase
8184
end
8285

8386
test "obsolete plugins" do
84-
mock(Gem).loaded_specs do
85-
{
86-
"fluent-plugin-tail-multiline" => nil,
87-
"fluent-plugin-hostname" => nil
88-
}
87+
stub(Fluent::Plugin::ObsoletePluginsUtils).installed_plugins do
88+
["fluent-plugin-tail-multiline", "fluent-plugin-hostname"]
8989
end
90+
9091
d = create_driver(CONFIG_JSON)
9192
d.run(default_tag: "test") do
9293
d.feed({ message: "This is test message." })
@@ -100,11 +101,8 @@ class ObsoletePluginsFilterTest < Test::Unit::TestCase
100101
end
101102

102103
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-
}
104+
stub(Fluent::Plugin::ObsoletePluginsUtils).installed_plugins do
105+
["fluent-plugin-tail-multiline", "fluent-plugin-hostname"]
108106
end
109107

110108
ex = assert_raise(Fluent::ConfigError) do

test/plugin/test_in_obsolete_plugins.rb

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,21 @@ class ObsoletePluginsInputTest < Test::Unit::TestCase
2121
]
2222

2323
test "no obsolete plugins" do
24+
stub(Fluent::Plugin::ObsoletePluginsUtils).installed_plugins do
25+
[]
26+
end
27+
2428
d = create_driver(CONFIG_JSON)
2529
d.run
2630
assert_equal([], d.events)
2731
assert_equal([], d.logs)
2832
end
2933

3034
test "obsolete plugins" do
31-
stub(Gem).loaded_specs do
32-
{
33-
"fluent-plugin-tail-multiline" => nil,
34-
"fluent-plugin-hostname" => nil
35-
}
35+
stub(Fluent::Plugin::ObsoletePluginsUtils).installed_plugins do
36+
["fluent-plugin-tail-multiline", "fluent-plugin-hostname"]
3637
end
38+
3739
d = create_driver(CONFIG_JSON)
3840
d.run
3941
assert_equal([], d.events)
@@ -45,11 +47,8 @@ class ObsoletePluginsInputTest < Test::Unit::TestCase
4547
end
4648

4749
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-
}
50+
stub(Fluent::Plugin::ObsoletePluginsUtils).installed_plugins do
51+
["fluent-plugin-tail-multiline", "fluent-plugin-hostname"]
5352
end
5453

5554
ex = assert_raise(Fluent::ConfigError) do

0 commit comments

Comments
 (0)