fluent-plugin-http-pull 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3de0f90b59370bd0d780479ad4326cb3f1cb7a4d
4
- data.tar.gz: 5bea27b0f9b1c3fb5e3a593b40c9366f4a651e2a
3
+ metadata.gz: 533830e127ee4cbc297f6dcfd1c4a3a08882ca9d
4
+ data.tar.gz: a689af041c24cc88e64fd61b14c54b42dbfe6450
5
5
  SHA512:
6
- metadata.gz: f832e52834daa32d1be42df2be0cd836526dadf149a5c9973cc44eb3225b16217ca1926037a2553fdd024450e0eed748c9c02fecb94e1e5f901cc7ab42c031fa
7
- data.tar.gz: dca6fe53b789b3b6ed8eb277af015461b0216d2804bf9720244dccfbd8cb817386e46ee520f40c63af7f8dfe192743bbd744f623167e7591000c5a5e2d804f55
6
+ metadata.gz: a813fd4dbee8607a9188676e0fa01f477aee8747064f848767a06949825973a09c1f233d767dd410911d6471c0d73714d586cf6cc2d0d518a9e63adb6342de5d
7
+ data.tar.gz: 616f089b1f0ebacc78fe871c21f4ee9131c6746e1bc88a905dee489f835f8cb5ffac409863b0f930b0235099926a9b115b8def19deb8c8a78585b3d6cf44f002
data/.gitignore CHANGED
@@ -4,3 +4,4 @@ TODO
4
4
  Gemfile.lock
5
5
  coverage/**/*
6
6
  *.gem
7
+ *.log
data/README.md CHANGED
@@ -139,6 +139,18 @@ If status_only is true, body is not parsed.
139
139
 
140
140
  The timeout of each request.
141
141
 
142
+ ### proxy (string) (optional, default: nil)
143
+
144
+ The HTTP proxy URL to use for each requests
145
+
146
+ ### user (string) (optional, default: nil)
147
+
148
+ The user for basic auth
149
+
150
+ ### password (string) (optional, default: nil)
151
+
152
+ The password for basic auth
153
+
142
154
  ## In case of remote error
143
155
 
144
156
  ### Can receive response from remote
data/Rakefile CHANGED
@@ -1,13 +1,24 @@
1
- require "bundler"
2
- Bundler::GemHelper.install_tasks
3
-
4
- require "rake/testtask"
5
-
6
- Rake::TestTask.new(:test) do |t|
7
- t.libs.push("lib", "test")
8
- t.test_files = FileList["test/**/test_*.rb"]
9
- t.verbose = true
10
- t.warning = true
11
- end
12
-
13
- task default: [:test]
1
+ require "bundler"
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require "rake/testtask"
5
+ require "fileutils"
6
+
7
+ Rake::TestTask.new(:test) do |t|
8
+ if File.exists? "stub_server.log"
9
+ puts "clear stub_server.log"
10
+ FileUtils.rm "stub_server.log"
11
+ end
12
+
13
+ if File.exists? "stub_proxy.log"
14
+ puts "clear stub_proxy.log"
15
+ FileUtils.rm "stub_proxy.log"
16
+ end
17
+
18
+ t.libs.push("lib", "test")
19
+ t.test_files = FileList["test/**/test_*.rb"]
20
+ t.verbose = true
21
+ t.warning = true
22
+ end
23
+
24
+ task default: [:test]
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = "fluent-plugin-http-pull"
6
- spec.version = "0.3.0"
6
+ spec.version = "0.4.0"
7
7
  spec.authors = ["filepang"]
8
8
  spec.email = ["filepang@gmail.com"]
9
9
 
@@ -20,6 +20,8 @@ Gem::Specification.new do |spec|
20
20
  spec.test_files = test_files
21
21
  spec.require_paths = ["lib"]
22
22
 
23
+ spec.required_ruby_version = '>= 2.1'
24
+
23
25
  spec.add_development_dependency "rake", "~> 12.0"
24
26
  spec.add_development_dependency "simplecov", "~> 0.7"
25
27
  spec.add_development_dependency "test-unit", "~> 3.0"
@@ -35,8 +35,15 @@ module Fluent
35
35
  config_param :interval, :time
36
36
  desc 'status_only'
37
37
  config_param :status_only, :bool, default: false
38
- desc 'timeout second of each request'
38
+ desc 'The timeout stime of each request'
39
39
  config_param :timeout, :time, default: 10
40
+ desc 'The HTTP proxy URL to use for each requests'
41
+ config_param :proxy, :string, default: nil
42
+
43
+ desc 'user of basic auth'
44
+ config_param :user, :string, default: nil
45
+ desc 'password of basic auth'
46
+ config_param :password, :string, default: nil
40
47
 
41
48
  def configure(conf)
42
49
  compat_parameters_convert(conf, :parser)
@@ -55,9 +62,13 @@ module Fluent
55
62
  record = { "url" => @url }
56
63
 
57
64
  begin
58
- res = RestClient::Request.execute(method: :get,
59
- url: @url,
60
- timeout: @timeout)
65
+ request_options = { method: :get, url: @url, timeout: @timeout }
66
+
67
+ request_options[:proxy] = @proxy if @proxy
68
+ request_options[:user] = @user if @user
69
+ request_options[:password] = @password if @password
70
+
71
+ res = RestClient::Request.execute request_options
61
72
  record["status"] = res.code
62
73
  record["body"] = res.body
63
74
  rescue StandardError => err
@@ -21,5 +21,9 @@ require "fluent/test/helpers"
21
21
 
22
22
  require "test/unit/rr"
23
23
 
24
+ # require stub_server
25
+ require "test/helper/stub_server"
26
+ require "test/helper/stub_proxy"
27
+
24
28
  Test::Unit::TestCase.include(Fluent::Test::Helpers)
25
29
  Test::Unit::TestCase.extend(Fluent::Test::Helpers)
@@ -0,0 +1,39 @@
1
+ require 'webrick'
2
+ require 'webrick/httpproxy'
3
+
4
+ class StubProxy
5
+ def initialize
6
+ create_proxy
7
+ end
8
+
9
+ def start
10
+ @thread = Thread.new { @proxy.start }
11
+ end
12
+
13
+ def shutdown
14
+ @proxy.shutdown
15
+
16
+ # wait until webrick was shutting down
17
+ while true
18
+ break if @thread.status == false
19
+
20
+ # issue webrick shutdown once more
21
+ @proxy.shutdown
22
+ sleep 1
23
+ end
24
+
25
+ # then exit thread
26
+ @thread.exit
27
+ end
28
+
29
+ private
30
+ def create_proxy
31
+ @log_file = File.open("stub_proxy.log", "a+")
32
+ @log = WEBrick::Log.new @log_file
33
+ @access_log = [
34
+ [@log_file, WEBrick::AccessLog::COMBINED_LOG_FORMAT],
35
+ ]
36
+
37
+ @proxy = WEBrick::HTTPProxyServer.new :Port => 4040, :Logger => @log, :AccessLog => @access_log
38
+ end
39
+ end
@@ -0,0 +1,84 @@
1
+ require 'webrick'
2
+
3
+ class StubServer
4
+ def initialize
5
+ create_server
6
+
7
+ # mount handler
8
+ @server.mount_proc '/', &method(:ok)
9
+ @server.mount_proc '/not_exist', &method(:not_exist)
10
+ @server.mount_proc '/timeout', &method(:timeout)
11
+ @server.mount_proc '/internal_error', &method(:internal_error)
12
+ @server.mount_proc '/redirect', &method(:redirect)
13
+ @server.mount_proc '/protected', &method(:protected)
14
+ end
15
+
16
+ def start
17
+ @thread = Thread.new { @server.start }
18
+ end
19
+
20
+ def shutdown
21
+ @server.shutdown
22
+
23
+ # wait until webrick was shutting down
24
+ while true
25
+ break if @thread.status == false
26
+
27
+ # issue webrick shutdown once more
28
+ @server.shutdown
29
+ sleep 1
30
+ end
31
+
32
+ # then exit thread
33
+ @thread.exit
34
+ end
35
+
36
+ private
37
+ def create_server
38
+ @log_file = File.open("stub_server.log", "a+")
39
+ @log = WEBrick::Log.new @log_file
40
+ @access_log = [
41
+ [@log_file, WEBrick::AccessLog::COMBINED_LOG_FORMAT],
42
+ ]
43
+
44
+ @server = WEBrick::HTTPServer.new :Port => 3939, :Logger => @log, :AccessLog => @access_log
45
+ end
46
+
47
+ def ok(req, res)
48
+ res.status = 200
49
+ res['Content-Type'] = 'application/json'
50
+ res.body = '{ "status": "OK" }'
51
+ end
52
+
53
+ def not_exist(req, res)
54
+ res.status = 404
55
+ res.body = ''
56
+ end
57
+
58
+ def timeout(req, res)
59
+ sleep 3
60
+
61
+ res.status = 200
62
+ res['Content-Type'] = 'application/json'
63
+ res.body = '{ "status": "OK" }'
64
+ end
65
+
66
+ def internal_error(req, res)
67
+ res.status = 500
68
+ res.body = ''
69
+ end
70
+
71
+ def redirect(req, res)
72
+ res.set_redirect WEBrick::HTTPStatus::TemporaryRedirect, "http://127.0.0.1:3939/"
73
+ end
74
+
75
+ def protected(req, res)
76
+ WEBrick::HTTPAuth.basic_auth(req, res, 'protected') do |user, password|
77
+ user == 'HatsuneMiku' && password == '3939'
78
+ end
79
+
80
+ res.status = 200
81
+ res['Content-Type'] = 'application/json'
82
+ res.body = '{ "status": "OK" }'
83
+ end
84
+ end
@@ -4,14 +4,21 @@ require "fluent/plugin/in_http_pull.rb"
4
4
  require 'ostruct'
5
5
 
6
6
  class HttpPullInputTest < Test::Unit::TestCase
7
+ @stub_server = nil
8
+
7
9
  setup do
8
- Fluent::Test.setup
10
+ @stub_server = StubServer.new
11
+ @stub_server.start
12
+ end
13
+
14
+ teardown do
15
+ @stub_server.shutdown
9
16
  end
10
17
 
11
18
  sub_test_case "default value of each options" do
12
19
  TEST_DEFAULT_VALUE_CONFIG = %[
13
20
  tag test
14
- url http://127.0.0.1
21
+ url http://127.0.0.1:3939
15
22
 
16
23
  interval 3s
17
24
  format json
@@ -30,13 +37,33 @@ class HttpPullInputTest < Test::Unit::TestCase
30
37
 
31
38
  assert_equal(10, d.instance.timeout)
32
39
  end
40
+
41
+ test 'user' do
42
+ d = create_driver TEST_DEFAULT_VALUE_CONFIG
43
+ assert_equal("test", d.instance.tag)
44
+
45
+ assert_equal(nil, d.instance.user)
46
+ end
47
+
48
+ test 'password' do
49
+ d = create_driver TEST_DEFAULT_VALUE_CONFIG
50
+ assert_equal("test", d.instance.tag)
51
+
52
+ assert_equal(nil, d.instance.password)
53
+ end
54
+
55
+ test 'proxy' do
56
+ d = create_driver TEST_DEFAULT_VALUE_CONFIG
57
+ assert_equal("test", d.instance.tag)
58
+
59
+ assert_equal(nil, d.instance.proxy)
60
+ end
33
61
  end
34
62
 
35
- sub_test_case "success case with status only" do
63
+ sub_test_case "success case" do
36
64
  TEST_INTERVAL_3_CONFIG = %[
37
65
  tag test
38
- url http://127.0.0.1
39
- timeout 10
66
+ url http://127.0.0.1:3939
40
67
 
41
68
  interval 3s
42
69
  format none
@@ -45,29 +72,26 @@ class HttpPullInputTest < Test::Unit::TestCase
45
72
 
46
73
  TEST_INTERVAL_5_CONFIG = %[
47
74
  tag test
48
- url http://127.0.0.1
49
- timeout 10
75
+ url http://127.0.0.1:3939
50
76
 
51
77
  interval 5s
52
78
  format json
53
79
  ]
54
80
 
55
- setup do
56
- mock(RestClient::Request).
57
- execute(method: :get,
58
- url: "http://127.0.0.1",
59
- timeout: 10).
60
- times(2) do
61
- OpenStruct.new({code: 200, body: '{"status": "OK"}'})
62
- end
63
- end
81
+ TEST_INTERVAL_3_REDIRECT_CONFIG = %[
82
+ tag test
83
+ url http://127.0.0.1:3939/redirect
84
+
85
+ interval 3s
86
+ format json
87
+ ]
64
88
 
65
89
  test 'interval 3 with status_only' do
66
90
  d = create_driver TEST_INTERVAL_3_CONFIG
67
91
  assert_equal("test", d.instance.tag)
68
92
  assert_equal(3, d.instance.interval)
69
93
 
70
- d.run(timeout: 5) do
94
+ d.run(timeout: 8) do
71
95
  sleep 7
72
96
  end
73
97
  assert_equal(2, d.events.size)
@@ -75,7 +99,7 @@ class HttpPullInputTest < Test::Unit::TestCase
75
99
  d.events.each do |tag, time, record|
76
100
  assert_equal("test", tag)
77
101
 
78
- assert_equal({"url"=>"http://127.0.0.1","status"=>200}, record)
102
+ assert_equal({"url"=>"http://127.0.0.1:3939","status"=>200}, record)
79
103
  assert(time.is_a?(Fluent::EventTime))
80
104
  end
81
105
  end
@@ -85,7 +109,7 @@ class HttpPullInputTest < Test::Unit::TestCase
85
109
  assert_equal("test", d.instance.tag)
86
110
  assert_equal(5, d.instance.interval)
87
111
 
88
- d.run(timeout: 7) do
112
+ d.run(timeout: 12) do
89
113
  sleep 11
90
114
  end
91
115
  assert_equal(2, d.events.size)
@@ -93,12 +117,92 @@ class HttpPullInputTest < Test::Unit::TestCase
93
117
  d.events.each do |tag, time, record|
94
118
  assert_equal("test", tag)
95
119
 
96
- assert_equal({"url"=>"http://127.0.0.1","status"=>200, "message"=>{"status"=>"OK"}}, record)
120
+ assert_equal({"url"=>"http://127.0.0.1:3939","status"=>200, "message"=>{"status"=>"OK"}}, record)
121
+ assert(time.is_a?(Fluent::EventTime))
122
+ end
123
+ end
124
+
125
+ test 'interval 3 with redirect' do
126
+ d = create_driver TEST_INTERVAL_3_REDIRECT_CONFIG
127
+ assert_equal("test", d.instance.tag)
128
+ assert_equal(3, d.instance.interval)
129
+
130
+ d.run(timeout: 8) do
131
+ sleep 7
132
+ end
133
+ assert_equal(2, d.events.size)
134
+
135
+ d.events.each do |tag, time, record|
136
+ assert_equal("test", tag)
137
+
138
+ assert_equal({"url"=>"http://127.0.0.1:3939/redirect","status"=>200, "message"=>{"status"=>"OK"}}, record)
97
139
  assert(time.is_a?(Fluent::EventTime))
98
140
  end
99
141
  end
100
142
  end
101
143
 
144
+ sub_test_case "fail when not 200 OK" do
145
+ TEST_404_INTERVAL_3_CONFIG = %[
146
+ tag test
147
+ url http://127.0.0.1:3939/not_exist
148
+
149
+ interval 3s
150
+ format none
151
+ status_only true
152
+ ]
153
+
154
+ TEST_500_INTERVAL_3_CONFIG = %[
155
+ tag test
156
+ url http://127.0.0.1:3939/internal_error
157
+
158
+ interval 3s
159
+ format none
160
+ status_only true
161
+ ]
162
+
163
+ test '404' do
164
+ d = create_driver TEST_404_INTERVAL_3_CONFIG
165
+ assert_equal("test", d.instance.tag)
166
+ assert_equal(3, d.instance.interval)
167
+
168
+ d.run(timeout: 8) do
169
+ sleep 7
170
+ end
171
+ assert_equal(2, d.events.size)
172
+
173
+ d.events.each do |tag, time, record|
174
+ assert_equal("test", tag)
175
+
176
+ assert_equal("http://127.0.0.1:3939/not_exist", record["url"])
177
+ assert(time.is_a?(Fluent::EventTime))
178
+
179
+ assert_equal(404, record["status"])
180
+ assert_not_nil(record["error"])
181
+ end
182
+ end
183
+
184
+ test '500' do
185
+ d = create_driver TEST_500_INTERVAL_3_CONFIG
186
+ assert_equal("test", d.instance.tag)
187
+ assert_equal(3, d.instance.interval)
188
+
189
+ d.run(timeout: 8) do
190
+ sleep 7
191
+ end
192
+ assert_equal(2, d.events.size)
193
+
194
+ d.events.each do |tag, time, record|
195
+ assert_equal("test", tag)
196
+
197
+ assert_equal("http://127.0.0.1:3939/internal_error", record["url"])
198
+ assert(time.is_a?(Fluent::EventTime))
199
+
200
+ assert_equal(500, record["status"])
201
+ assert_not_nil(record["error"])
202
+ end
203
+ end
204
+ end
205
+
102
206
  sub_test_case "fail when remote down" do
103
207
  TEST_REFUSED_CONFIG = %[
104
208
  tag test
@@ -111,7 +215,7 @@ class HttpPullInputTest < Test::Unit::TestCase
111
215
  d = create_driver TEST_REFUSED_CONFIG
112
216
  assert_equal("test", d.instance.tag)
113
217
 
114
- d.run(timeout: 2) do
218
+ d.run(timeout: 4) do
115
219
  sleep 3
116
220
  end
117
221
 
@@ -131,30 +235,19 @@ class HttpPullInputTest < Test::Unit::TestCase
131
235
  sub_test_case "fail when remote timeout" do
132
236
  TEST_TIMEOUT_FAIL_CONFIG = %[
133
237
  tag test
134
- url http://127.0.0.1
238
+ url http://127.0.0.1:3939/timeout
135
239
  timeout 2s
136
240
 
137
241
  interval 3s
138
242
  format json
139
243
  ]
140
244
 
141
- setup do
142
- mock(RestClient::Request).
143
- execute(method: :get,
144
- url: "http://127.0.0.1",
145
- timeout: 2).
146
- times(2) do
147
- sleep 2
148
- raise RestClient::Exceptions::Timeout.new
149
- end
150
- end
151
-
152
245
  test "timeout" do
153
246
  d = create_driver TEST_TIMEOUT_FAIL_CONFIG
154
247
  assert_equal("test", d.instance.tag)
155
248
  assert_equal(2, d.instance.timeout)
156
249
 
157
- d.run(timeout: 5) do
250
+ d.run(timeout: 8) do
158
251
  sleep 7
159
252
  end
160
253
  assert_equal(2, d.events.size)
@@ -162,7 +255,7 @@ class HttpPullInputTest < Test::Unit::TestCase
162
255
  d.events.each do |tag, time, record|
163
256
  assert_equal("test", tag)
164
257
 
165
- assert_equal("http://127.0.0.1", record["url"])
258
+ assert_equal("http://127.0.0.1:3939/timeout", record["url"])
166
259
  assert(time.is_a?(Fluent::EventTime))
167
260
 
168
261
  assert_equal(0, record["status"])
@@ -171,6 +264,195 @@ class HttpPullInputTest < Test::Unit::TestCase
171
264
  end
172
265
  end
173
266
 
267
+ sub_test_case "remote is prtected by basic auth" do
268
+ TEST_AUTH_SUCCESS_CONFIG = %[
269
+ tag test
270
+ url http://127.0.0.1:3939/protected
271
+ timeout 2s
272
+ user HatsuneMiku
273
+ password 3939
274
+
275
+ interval 3s
276
+ format json
277
+ ]
278
+
279
+ TEST_AUTH_FAIL_CONFIG = %[
280
+ tag test
281
+ url http://127.0.0.1:3939/protected
282
+ timeout 2s
283
+ user HatsuneMiku
284
+ password wrong_password
285
+
286
+ interval 3s
287
+ format json
288
+ ]
289
+
290
+ TEST_AUTH_FAIL_NOT_GIVEN_CONFIG = %[
291
+ tag test
292
+ url http://127.0.0.1:3939/protected
293
+ timeout 2s
294
+
295
+ interval 3s
296
+ format json
297
+ ]
298
+
299
+ test 'interval 3 with corrent password' do
300
+ d = create_driver TEST_AUTH_SUCCESS_CONFIG
301
+ assert_equal("test", d.instance.tag)
302
+ assert_equal(3, d.instance.interval)
303
+
304
+ d.run(timeout: 8) do
305
+ sleep 7
306
+ end
307
+ assert_equal(2, d.events.size)
308
+
309
+ d.events.each do |tag, time, record|
310
+ assert_equal("test", tag)
311
+
312
+ assert_equal({"url"=>"http://127.0.0.1:3939/protected","status"=>200, "message"=>{"status"=>"OK"}}, record)
313
+ assert(time.is_a?(Fluent::EventTime))
314
+ end
315
+ end
316
+
317
+ test 'interval 3 with wrong password' do
318
+ d = create_driver TEST_AUTH_FAIL_CONFIG
319
+ assert_equal("test", d.instance.tag)
320
+ assert_equal(3, d.instance.interval)
321
+
322
+ d.run(timeout: 8) do
323
+ sleep 7
324
+ end
325
+ assert_equal(2, d.events.size)
326
+
327
+ d.events.each do |tag, time, record|
328
+ assert_equal("test", tag)
329
+
330
+ assert_equal("http://127.0.0.1:3939/protected", record["url"])
331
+ assert(time.is_a?(Fluent::EventTime))
332
+
333
+ assert_equal(401, record["status"])
334
+ assert_not_nil(record["error"])
335
+ end
336
+ end
337
+
338
+ test 'interval 3 without auth info' do
339
+ d = create_driver TEST_AUTH_FAIL_CONFIG
340
+ assert_equal("test", d.instance.tag)
341
+ assert_equal(3, d.instance.interval)
342
+
343
+ d.run(timeout: 8) do
344
+ sleep 7
345
+ end
346
+ assert_equal(2, d.events.size)
347
+
348
+ d.events.each do |tag, time, record|
349
+ assert_equal("test", tag)
350
+
351
+ assert_equal("http://127.0.0.1:3939/protected", record["url"])
352
+ assert(time.is_a?(Fluent::EventTime))
353
+
354
+ assert_equal(401, record["status"])
355
+ assert_not_nil(record["error"])
356
+ end
357
+ end
358
+ end
359
+
360
+ sub_test_case "success case behind proxy" do
361
+ TEST_INTERVAL_3_PROXY_CONFIG = %[
362
+ tag test
363
+ url http://127.0.0.1:3939
364
+ proxy http://127.0.0.1:4040
365
+
366
+ interval 3s
367
+ format none
368
+ status_only true
369
+ ]
370
+
371
+ TEST_INTERVAL_3_REDIRECT_PROXY_CONFIG = %[
372
+ tag test
373
+ url http://127.0.0.1:3939/redirect
374
+ proxy http://127.0.0.1:4040
375
+
376
+ interval 3s
377
+ format json
378
+ ]
379
+
380
+ TEST_AUTH_SUCCESS_PROXY_CONFIG = %[
381
+ tag test
382
+ url http://127.0.0.1:3939/protected
383
+ proxy http://127.0.0.1:4040
384
+ timeout 2s
385
+ user HatsuneMiku
386
+ password 3939
387
+
388
+ interval 3s
389
+ format json
390
+ ]
391
+
392
+ setup do
393
+ @proxy_server = StubProxy.new
394
+ @proxy_server.start
395
+ end
396
+
397
+ teardown do
398
+ @proxy_server.shutdown
399
+ end
400
+
401
+ test 'interval 3 with status_only' do
402
+ d = create_driver TEST_INTERVAL_3_PROXY_CONFIG
403
+ assert_equal("test", d.instance.tag)
404
+ assert_equal(3, d.instance.interval)
405
+
406
+ d.run(timeout: 8) do
407
+ sleep 7
408
+ end
409
+ assert_equal(2, d.events.size)
410
+
411
+ d.events.each do |tag, time, record|
412
+ assert_equal("test", tag)
413
+
414
+ assert_equal({"url"=>"http://127.0.0.1:3939","status"=>200}, record)
415
+ assert(time.is_a?(Fluent::EventTime))
416
+ end
417
+ end
418
+
419
+ test 'interval 3 with redirect' do
420
+ d = create_driver TEST_INTERVAL_3_REDIRECT_PROXY_CONFIG
421
+ assert_equal("test", d.instance.tag)
422
+ assert_equal(3, d.instance.interval)
423
+
424
+ d.run(timeout: 8) do
425
+ sleep 7
426
+ end
427
+ assert_equal(2, d.events.size)
428
+
429
+ d.events.each do |tag, time, record|
430
+ assert_equal("test", tag)
431
+
432
+ assert_equal({"url"=>"http://127.0.0.1:3939/redirect","status"=>200, "message"=>{"status"=>"OK"}}, record)
433
+ assert(time.is_a?(Fluent::EventTime))
434
+ end
435
+ end
436
+
437
+ test 'interval 3 with corrent password' do
438
+ d = create_driver TEST_AUTH_SUCCESS_PROXY_CONFIG
439
+ assert_equal("test", d.instance.tag)
440
+ assert_equal(3, d.instance.interval)
441
+
442
+ d.run(timeout: 8) do
443
+ sleep 7
444
+ end
445
+ assert_equal(2, d.events.size)
446
+
447
+ d.events.each do |tag, time, record|
448
+ assert_equal("test", tag)
449
+
450
+ assert_equal({"url"=>"http://127.0.0.1:3939/protected","status"=>200, "message"=>{"status"=>"OK"}}, record)
451
+ assert(time.is_a?(Fluent::EventTime))
452
+ end
453
+ end
454
+ end
455
+
174
456
  private
175
457
 
176
458
  def create_driver(conf)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-http-pull
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - filepang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-30 00:00:00.000000000 Z
11
+ date: 2017-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -144,6 +144,8 @@ files:
144
144
  - fluent-plugin-http-pull.gemspec
145
145
  - lib/fluent/plugin/in_http_pull.rb
146
146
  - test/helper.rb
147
+ - test/helper/stub_proxy.rb
148
+ - test/helper/stub_server.rb
147
149
  - test/plugin/test_in_http_pull.rb
148
150
  homepage: https://github.com/HatsuneMiku3939/fluent-plugin-http-pull
149
151
  licenses:
@@ -157,7 +159,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
157
159
  requirements:
158
160
  - - ">="
159
161
  - !ruby/object:Gem::Version
160
- version: '0'
162
+ version: '2.1'
161
163
  required_rubygems_version: !ruby/object:Gem::Requirement
162
164
  requirements:
163
165
  - - ">="
@@ -171,4 +173,6 @@ specification_version: 4
171
173
  summary: fluent-plugin-http-pull
172
174
  test_files:
173
175
  - test/helper.rb
176
+ - test/helper/stub_proxy.rb
177
+ - test/helper/stub_server.rb
174
178
  - test/plugin/test_in_http_pull.rb