fluent-plugin-obsolete-plugins 0.1.1 → 0.2.1

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