fluent-plugin-http-pull 0.3.0 → 0.4.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 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