|
1 | 1 | require "helper" |
2 | | -require "fluent/plugin/filter_obsolete_plugins.rb" |
| 2 | +require "fluent/plugin/filter_obsolete_plugins" |
3 | 3 |
|
4 | 4 | class ObsoletePluginsFilterTest < Test::Unit::TestCase |
5 | 5 |
|
@@ -61,6 +61,7 @@ class ObsoletePluginsFilterTest < Test::Unit::TestCase |
61 | 61 |
|
62 | 62 | ex = assert_raise(Fluent::ConfigError) do |
63 | 63 | create_driver(CONFIG_YAML + "raise_error yes") |
| 64 | + sleep 0.5 |
64 | 65 | end |
65 | 66 | assert_equal("Detected obsolete plugins", ex.message) |
66 | 67 | end |
@@ -109,14 +110,61 @@ class ObsoletePluginsFilterTest < Test::Unit::TestCase |
109 | 110 |
|
110 | 111 | ex = assert_raise(Fluent::ConfigError) do |
111 | 112 | create_driver(CONFIG_JSON + "raise_error yes") |
| 113 | + sleep 0.5 |
112 | 114 | end |
113 | 115 | assert_equal("Detected obsolete plugins", ex.message) |
114 | 116 | end |
115 | 117 | end |
116 | 118 |
|
| 119 | + sub_test_case "error handling" do |
| 120 | + test "ignore error with invalid json" do |
| 121 | + assert_nothing_raised { |
| 122 | + create_driver("plugins_json #{fixture_path('invalid.json')}") |
| 123 | + sleep 0.5 |
| 124 | + } |
| 125 | + end |
| 126 | + |
| 127 | + test "timeout with slow server and skip detecting obsolete plugins" do |
| 128 | + server = create_slow_webserver(port: 12345) |
| 129 | + |
| 130 | + mock(Fluent::Plugin::ObsoletePluginsUtils).notify.never |
| 131 | + |
| 132 | + d = create_driver(%[ |
| 133 | + plugins_json http://localhost:12345/plugins.json |
| 134 | + timeout 1 |
| 135 | + ]) |
| 136 | + |
| 137 | + d.run(default_tag: "test") do |
| 138 | + d.feed({ message: "This is test message." }) |
| 139 | + end |
| 140 | + assert_equal([{ message: "This is test message." }], d.filtered_records) |
| 141 | + |
| 142 | + sleep 2 |
| 143 | + |
| 144 | + assert_equal([], d.logs) |
| 145 | + ensure |
| 146 | + server.shutdown |
| 147 | + end |
| 148 | + |
| 149 | + end |
| 150 | + |
117 | 151 | private |
118 | 152 |
|
119 | 153 | def create_driver(conf) |
120 | 154 | Fluent::Test::Driver::Filter.new(Fluent::Plugin::ObsoletePluginsFilter).configure(conf) |
121 | 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 |
122 | 170 | end |
0 commit comments