fluent-plugin-http-pull 0.7.0 → 0.8.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.
- checksums.yaml +4 -4
- data/.coveralls.yml +1 -1
- data/.gitignore +8 -8
- data/.travis.yml +10 -10
- data/Gemfile +3 -3
- data/LICENSE +202 -202
- data/README.md +227 -204
- data/Rakefile +24 -24
- data/appveyor.yml +23 -23
- data/fluent-plugin-http-pull.gemspec +33 -33
- data/lib/fluent/plugin/in_http_pull.rb +168 -147
- data/test/helper.rb +29 -29
- data/test/helper/.ssl/README +25 -0
- data/test/helper/.ssl/server.crt +19 -0
- data/test/helper/.ssl/server.csr +16 -0
- data/test/helper/.ssl/server.key +27 -0
- data/test/helper/.ssl/server.key.org +30 -0
- data/test/helper/stub_proxy.rb +39 -39
- data/test/helper/stub_server.rb +134 -119
- data/test/plugin/test_in_http_pull.rb +92 -71
- data/test/plugin/test_in_http_pull_auth.rb +116 -116
- data/test/plugin/test_in_http_pull_basic.rb +228 -227
- data/test/plugin/test_in_http_pull_http_header.rb +126 -126
- data/test/plugin/test_in_http_pull_proxy.rb +119 -119
- data/test/plugin/test_in_http_pull_request_method.rb +79 -79
- data/test/plugin/test_in_http_pull_ssl.rb +173 -0
- metadata +14 -2
@@ -1,71 +1,92 @@
|
|
1
|
-
require "helper"
|
2
|
-
require "fluent/plugin/in_http_pull.rb"
|
3
|
-
|
4
|
-
require 'ostruct'
|
5
|
-
|
6
|
-
class HttpPullInputTestDefaultOptions < Test::Unit::TestCase
|
7
|
-
sub_test_case "default value of each options" do
|
8
|
-
TEST_DEFAULT_VALUE_CONFIG = %[
|
9
|
-
tag test
|
10
|
-
url http://
|
11
|
-
|
12
|
-
interval 3s
|
13
|
-
format json
|
14
|
-
]
|
15
|
-
|
16
|
-
test 'status_only' do
|
17
|
-
d = create_driver TEST_DEFAULT_VALUE_CONFIG
|
18
|
-
assert_equal("test", d.instance.tag)
|
19
|
-
|
20
|
-
assert_equal(false, d.instance.status_only)
|
21
|
-
end
|
22
|
-
|
23
|
-
test 'timeout' do
|
24
|
-
d = create_driver TEST_DEFAULT_VALUE_CONFIG
|
25
|
-
assert_equal("test", d.instance.tag)
|
26
|
-
|
27
|
-
assert_equal(10, d.instance.timeout)
|
28
|
-
end
|
29
|
-
|
30
|
-
test 'user' do
|
31
|
-
d = create_driver TEST_DEFAULT_VALUE_CONFIG
|
32
|
-
assert_equal("test", d.instance.tag)
|
33
|
-
|
34
|
-
assert_equal(nil, d.instance.user)
|
35
|
-
end
|
36
|
-
|
37
|
-
test 'password' do
|
38
|
-
d = create_driver TEST_DEFAULT_VALUE_CONFIG
|
39
|
-
assert_equal("test", d.instance.tag)
|
40
|
-
|
41
|
-
assert_equal(nil, d.instance.password)
|
42
|
-
end
|
43
|
-
|
44
|
-
test 'proxy' do
|
45
|
-
d = create_driver TEST_DEFAULT_VALUE_CONFIG
|
46
|
-
assert_equal("test", d.instance.tag)
|
47
|
-
|
48
|
-
assert_equal(nil, d.instance.proxy)
|
49
|
-
end
|
50
|
-
|
51
|
-
test 'http_method' do
|
52
|
-
d = create_driver TEST_DEFAULT_VALUE_CONFIG
|
53
|
-
assert_equal("test", d.instance.tag)
|
54
|
-
|
55
|
-
assert_equal(:get, d.instance.http_method)
|
56
|
-
end
|
57
|
-
|
58
|
-
test 'agent' do
|
59
|
-
d = create_driver TEST_DEFAULT_VALUE_CONFIG
|
60
|
-
assert_equal("test", d.instance.tag)
|
61
|
-
|
62
|
-
assert_equal("fluent-plugin-http-pull", d.instance.agent)
|
63
|
-
end
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
1
|
+
require "helper"
|
2
|
+
require "fluent/plugin/in_http_pull.rb"
|
3
|
+
|
4
|
+
require 'ostruct'
|
5
|
+
|
6
|
+
class HttpPullInputTestDefaultOptions < Test::Unit::TestCase
|
7
|
+
sub_test_case "default value of each options" do
|
8
|
+
TEST_DEFAULT_VALUE_CONFIG = %[
|
9
|
+
tag test
|
10
|
+
url http://localhost:3939
|
11
|
+
|
12
|
+
interval 3s
|
13
|
+
format json
|
14
|
+
]
|
15
|
+
|
16
|
+
test 'status_only' do
|
17
|
+
d = create_driver TEST_DEFAULT_VALUE_CONFIG
|
18
|
+
assert_equal("test", d.instance.tag)
|
19
|
+
|
20
|
+
assert_equal(false, d.instance.status_only)
|
21
|
+
end
|
22
|
+
|
23
|
+
test 'timeout' do
|
24
|
+
d = create_driver TEST_DEFAULT_VALUE_CONFIG
|
25
|
+
assert_equal("test", d.instance.tag)
|
26
|
+
|
27
|
+
assert_equal(10, d.instance.timeout)
|
28
|
+
end
|
29
|
+
|
30
|
+
test 'user' do
|
31
|
+
d = create_driver TEST_DEFAULT_VALUE_CONFIG
|
32
|
+
assert_equal("test", d.instance.tag)
|
33
|
+
|
34
|
+
assert_equal(nil, d.instance.user)
|
35
|
+
end
|
36
|
+
|
37
|
+
test 'password' do
|
38
|
+
d = create_driver TEST_DEFAULT_VALUE_CONFIG
|
39
|
+
assert_equal("test", d.instance.tag)
|
40
|
+
|
41
|
+
assert_equal(nil, d.instance.password)
|
42
|
+
end
|
43
|
+
|
44
|
+
test 'proxy' do
|
45
|
+
d = create_driver TEST_DEFAULT_VALUE_CONFIG
|
46
|
+
assert_equal("test", d.instance.tag)
|
47
|
+
|
48
|
+
assert_equal(nil, d.instance.proxy)
|
49
|
+
end
|
50
|
+
|
51
|
+
test 'http_method' do
|
52
|
+
d = create_driver TEST_DEFAULT_VALUE_CONFIG
|
53
|
+
assert_equal("test", d.instance.tag)
|
54
|
+
|
55
|
+
assert_equal(:get, d.instance.http_method)
|
56
|
+
end
|
57
|
+
|
58
|
+
test 'agent' do
|
59
|
+
d = create_driver TEST_DEFAULT_VALUE_CONFIG
|
60
|
+
assert_equal("test", d.instance.tag)
|
61
|
+
|
62
|
+
assert_equal("fluent-plugin-http-pull", d.instance.agent)
|
63
|
+
end
|
64
|
+
|
65
|
+
test 'verify_ssl' do
|
66
|
+
d = create_driver TEST_DEFAULT_VALUE_CONFIG
|
67
|
+
assert_equal("test", d.instance.tag)
|
68
|
+
|
69
|
+
assert_equal(true, d.instance.verify_ssl)
|
70
|
+
end
|
71
|
+
|
72
|
+
test 'ca_path' do
|
73
|
+
d = create_driver TEST_DEFAULT_VALUE_CONFIG
|
74
|
+
assert_equal("test", d.instance.tag)
|
75
|
+
|
76
|
+
assert_equal(nil, d.instance.ca_path)
|
77
|
+
end
|
78
|
+
|
79
|
+
test 'ca_file' do
|
80
|
+
d = create_driver TEST_DEFAULT_VALUE_CONFIG
|
81
|
+
assert_equal("test", d.instance.tag)
|
82
|
+
|
83
|
+
assert_equal(nil, d.instance.ca_file)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
private
|
88
|
+
|
89
|
+
def create_driver(conf)
|
90
|
+
Fluent::Test::Driver::Input.new(Fluent::Plugin::HttpPullInput).configure(conf)
|
91
|
+
end
|
92
|
+
end
|
@@ -1,116 +1,116 @@
|
|
1
|
-
require "helper"
|
2
|
-
require "fluent/plugin/in_http_pull.rb"
|
3
|
-
|
4
|
-
require 'ostruct'
|
5
|
-
|
6
|
-
class HttpPullInputTestAuth < Test::Unit::TestCase
|
7
|
-
@stub_server = nil
|
8
|
-
|
9
|
-
setup do
|
10
|
-
@stub_server = StubServer.new
|
11
|
-
@stub_server.start
|
12
|
-
end
|
13
|
-
|
14
|
-
teardown do
|
15
|
-
@stub_server.shutdown
|
16
|
-
end
|
17
|
-
|
18
|
-
sub_test_case "remote is prtected by basic auth" do
|
19
|
-
TEST_AUTH_SUCCESS_CONFIG = %[
|
20
|
-
tag test
|
21
|
-
url http://
|
22
|
-
timeout 2s
|
23
|
-
user HatsuneMiku
|
24
|
-
password 3939
|
25
|
-
|
26
|
-
interval 3s
|
27
|
-
format json
|
28
|
-
]
|
29
|
-
|
30
|
-
TEST_AUTH_FAIL_CONFIG = %[
|
31
|
-
tag test
|
32
|
-
url http://
|
33
|
-
timeout 2s
|
34
|
-
user HatsuneMiku
|
35
|
-
password wrong_password
|
36
|
-
|
37
|
-
interval 3s
|
38
|
-
format json
|
39
|
-
]
|
40
|
-
|
41
|
-
TEST_AUTH_FAIL_NOT_GIVEN_CONFIG = %[
|
42
|
-
tag test
|
43
|
-
url http://
|
44
|
-
timeout 2s
|
45
|
-
|
46
|
-
interval 3s
|
47
|
-
format json
|
48
|
-
]
|
49
|
-
|
50
|
-
test 'interval 3 with corrent password' do
|
51
|
-
d = create_driver TEST_AUTH_SUCCESS_CONFIG
|
52
|
-
assert_equal("test", d.instance.tag)
|
53
|
-
assert_equal(3, d.instance.interval)
|
54
|
-
|
55
|
-
d.run(timeout: 8) do
|
56
|
-
sleep 7
|
57
|
-
end
|
58
|
-
assert_equal(2, d.events.size)
|
59
|
-
|
60
|
-
d.events.each do |tag, time, record|
|
61
|
-
assert_equal("test", tag)
|
62
|
-
|
63
|
-
assert_equal({"url"=>"http://
|
64
|
-
assert(time.is_a?(Fluent::EventTime))
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
test 'interval 3 with wrong password' do
|
69
|
-
d = create_driver TEST_AUTH_FAIL_CONFIG
|
70
|
-
assert_equal("test", d.instance.tag)
|
71
|
-
assert_equal(3, d.instance.interval)
|
72
|
-
|
73
|
-
d.run(timeout: 8) do
|
74
|
-
sleep 7
|
75
|
-
end
|
76
|
-
assert_equal(2, d.events.size)
|
77
|
-
|
78
|
-
d.events.each do |tag, time, record|
|
79
|
-
assert_equal("test", tag)
|
80
|
-
|
81
|
-
assert_equal("http://
|
82
|
-
assert(time.is_a?(Fluent::EventTime))
|
83
|
-
|
84
|
-
assert_equal(401, record["status"])
|
85
|
-
assert_not_nil(record["error"])
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
test 'interval 3 without auth info' do
|
90
|
-
d = create_driver TEST_AUTH_FAIL_CONFIG
|
91
|
-
assert_equal("test", d.instance.tag)
|
92
|
-
assert_equal(3, d.instance.interval)
|
93
|
-
|
94
|
-
d.run(timeout: 8) do
|
95
|
-
sleep 7
|
96
|
-
end
|
97
|
-
assert_equal(2, d.events.size)
|
98
|
-
|
99
|
-
d.events.each do |tag, time, record|
|
100
|
-
assert_equal("test", tag)
|
101
|
-
|
102
|
-
assert_equal("http://
|
103
|
-
assert(time.is_a?(Fluent::EventTime))
|
104
|
-
|
105
|
-
assert_equal(401, record["status"])
|
106
|
-
assert_not_nil(record["error"])
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
private
|
112
|
-
|
113
|
-
def create_driver(conf)
|
114
|
-
Fluent::Test::Driver::Input.new(Fluent::Plugin::HttpPullInput).configure(conf)
|
115
|
-
end
|
116
|
-
end
|
1
|
+
require "helper"
|
2
|
+
require "fluent/plugin/in_http_pull.rb"
|
3
|
+
|
4
|
+
require 'ostruct'
|
5
|
+
|
6
|
+
class HttpPullInputTestAuth < Test::Unit::TestCase
|
7
|
+
@stub_server = nil
|
8
|
+
|
9
|
+
setup do
|
10
|
+
@stub_server = StubServer.new
|
11
|
+
@stub_server.start
|
12
|
+
end
|
13
|
+
|
14
|
+
teardown do
|
15
|
+
@stub_server.shutdown
|
16
|
+
end
|
17
|
+
|
18
|
+
sub_test_case "remote is prtected by basic auth" do
|
19
|
+
TEST_AUTH_SUCCESS_CONFIG = %[
|
20
|
+
tag test
|
21
|
+
url http://localhost:3939/protected
|
22
|
+
timeout 2s
|
23
|
+
user HatsuneMiku
|
24
|
+
password 3939
|
25
|
+
|
26
|
+
interval 3s
|
27
|
+
format json
|
28
|
+
]
|
29
|
+
|
30
|
+
TEST_AUTH_FAIL_CONFIG = %[
|
31
|
+
tag test
|
32
|
+
url http://localhost:3939/protected
|
33
|
+
timeout 2s
|
34
|
+
user HatsuneMiku
|
35
|
+
password wrong_password
|
36
|
+
|
37
|
+
interval 3s
|
38
|
+
format json
|
39
|
+
]
|
40
|
+
|
41
|
+
TEST_AUTH_FAIL_NOT_GIVEN_CONFIG = %[
|
42
|
+
tag test
|
43
|
+
url http://localhost:3939/protected
|
44
|
+
timeout 2s
|
45
|
+
|
46
|
+
interval 3s
|
47
|
+
format json
|
48
|
+
]
|
49
|
+
|
50
|
+
test 'interval 3 with corrent password' do
|
51
|
+
d = create_driver TEST_AUTH_SUCCESS_CONFIG
|
52
|
+
assert_equal("test", d.instance.tag)
|
53
|
+
assert_equal(3, d.instance.interval)
|
54
|
+
|
55
|
+
d.run(timeout: 8) do
|
56
|
+
sleep 7
|
57
|
+
end
|
58
|
+
assert_equal(2, d.events.size)
|
59
|
+
|
60
|
+
d.events.each do |tag, time, record|
|
61
|
+
assert_equal("test", tag)
|
62
|
+
|
63
|
+
assert_equal({"url"=>"http://localhost:3939/protected","status"=>200, "message"=>{"status"=>"OK"}}, record)
|
64
|
+
assert(time.is_a?(Fluent::EventTime))
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
test 'interval 3 with wrong password' do
|
69
|
+
d = create_driver TEST_AUTH_FAIL_CONFIG
|
70
|
+
assert_equal("test", d.instance.tag)
|
71
|
+
assert_equal(3, d.instance.interval)
|
72
|
+
|
73
|
+
d.run(timeout: 8) do
|
74
|
+
sleep 7
|
75
|
+
end
|
76
|
+
assert_equal(2, d.events.size)
|
77
|
+
|
78
|
+
d.events.each do |tag, time, record|
|
79
|
+
assert_equal("test", tag)
|
80
|
+
|
81
|
+
assert_equal("http://localhost:3939/protected", record["url"])
|
82
|
+
assert(time.is_a?(Fluent::EventTime))
|
83
|
+
|
84
|
+
assert_equal(401, record["status"])
|
85
|
+
assert_not_nil(record["error"])
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
test 'interval 3 without auth info' do
|
90
|
+
d = create_driver TEST_AUTH_FAIL_CONFIG
|
91
|
+
assert_equal("test", d.instance.tag)
|
92
|
+
assert_equal(3, d.instance.interval)
|
93
|
+
|
94
|
+
d.run(timeout: 8) do
|
95
|
+
sleep 7
|
96
|
+
end
|
97
|
+
assert_equal(2, d.events.size)
|
98
|
+
|
99
|
+
d.events.each do |tag, time, record|
|
100
|
+
assert_equal("test", tag)
|
101
|
+
|
102
|
+
assert_equal("http://localhost:3939/protected", record["url"])
|
103
|
+
assert(time.is_a?(Fluent::EventTime))
|
104
|
+
|
105
|
+
assert_equal(401, record["status"])
|
106
|
+
assert_not_nil(record["error"])
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
private
|
112
|
+
|
113
|
+
def create_driver(conf)
|
114
|
+
Fluent::Test::Driver::Input.new(Fluent::Plugin::HttpPullInput).configure(conf)
|
115
|
+
end
|
116
|
+
end
|
@@ -1,227 +1,228 @@
|
|
1
|
-
require "helper"
|
2
|
-
require "fluent/plugin/in_http_pull.rb"
|
3
|
-
|
4
|
-
require 'ostruct'
|
5
|
-
|
6
|
-
class HttpPullInputTestBasic < Test::Unit::TestCase
|
7
|
-
@stub_server = nil
|
8
|
-
|
9
|
-
setup do
|
10
|
-
@stub_server = StubServer.new
|
11
|
-
@stub_server.start
|
12
|
-
end
|
13
|
-
|
14
|
-
teardown do
|
15
|
-
@stub_server.shutdown
|
16
|
-
end
|
17
|
-
|
18
|
-
sub_test_case "success case" do
|
19
|
-
TEST_INTERVAL_3_CONFIG = %[
|
20
|
-
tag test
|
21
|
-
url http://
|
22
|
-
|
23
|
-
interval 3s
|
24
|
-
format none
|
25
|
-
status_only true
|
26
|
-
]
|
27
|
-
|
28
|
-
TEST_INTERVAL_5_CONFIG = %[
|
29
|
-
tag test
|
30
|
-
url http://
|
31
|
-
|
32
|
-
interval 5s
|
33
|
-
format json
|
34
|
-
]
|
35
|
-
|
36
|
-
TEST_INTERVAL_3_REDIRECT_CONFIG = %[
|
37
|
-
tag test
|
38
|
-
url http://
|
39
|
-
|
40
|
-
interval 3s
|
41
|
-
format json
|
42
|
-
]
|
43
|
-
|
44
|
-
test 'interval 3 with status_only' do
|
45
|
-
d = create_driver TEST_INTERVAL_3_CONFIG
|
46
|
-
assert_equal("test", d.instance.tag)
|
47
|
-
assert_equal(3, d.instance.interval)
|
48
|
-
|
49
|
-
d.run(timeout: 8) do
|
50
|
-
sleep 7
|
51
|
-
end
|
52
|
-
assert_equal(2, d.events.size)
|
53
|
-
|
54
|
-
d.events.each do |tag, time, record|
|
55
|
-
assert_equal("test", tag)
|
56
|
-
|
57
|
-
assert_equal({"url"=>"http://
|
58
|
-
assert(time.is_a?(Fluent::EventTime))
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
test 'interval 5' do
|
63
|
-
d = create_driver TEST_INTERVAL_5_CONFIG
|
64
|
-
assert_equal("test", d.instance.tag)
|
65
|
-
assert_equal(5, d.instance.interval)
|
66
|
-
|
67
|
-
d.run(timeout: 12) do
|
68
|
-
sleep 11
|
69
|
-
end
|
70
|
-
assert_equal(2, d.events.size)
|
71
|
-
|
72
|
-
d.events.each do |tag, time, record|
|
73
|
-
assert_equal("test", tag)
|
74
|
-
|
75
|
-
assert_equal({"url"=>"http://
|
76
|
-
assert(time.is_a?(Fluent::EventTime))
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
test 'interval 3 with redirect' do
|
81
|
-
d = create_driver TEST_INTERVAL_3_REDIRECT_CONFIG
|
82
|
-
assert_equal("test", d.instance.tag)
|
83
|
-
assert_equal(3, d.instance.interval)
|
84
|
-
|
85
|
-
d.run(timeout: 8) do
|
86
|
-
sleep 7
|
87
|
-
end
|
88
|
-
assert_equal(2, d.events.size)
|
89
|
-
|
90
|
-
d.events.each do |tag, time, record|
|
91
|
-
assert_equal("test", tag)
|
92
|
-
|
93
|
-
assert_equal({"url"=>"http://
|
94
|
-
assert(time.is_a?(Fluent::EventTime))
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
sub_test_case "fail when not 200 OK" do
|
100
|
-
TEST_404_INTERVAL_3_CONFIG = %[
|
101
|
-
tag test
|
102
|
-
url http://
|
103
|
-
|
104
|
-
interval 3s
|
105
|
-
format none
|
106
|
-
status_only true
|
107
|
-
]
|
108
|
-
|
109
|
-
TEST_500_INTERVAL_3_CONFIG = %[
|
110
|
-
tag test
|
111
|
-
url http://
|
112
|
-
|
113
|
-
interval 3s
|
114
|
-
format none
|
115
|
-
status_only true
|
116
|
-
]
|
117
|
-
|
118
|
-
test '404' do
|
119
|
-
d = create_driver TEST_404_INTERVAL_3_CONFIG
|
120
|
-
assert_equal("test", d.instance.tag)
|
121
|
-
assert_equal(3, d.instance.interval)
|
122
|
-
|
123
|
-
d.run(timeout: 8) do
|
124
|
-
sleep 7
|
125
|
-
end
|
126
|
-
assert_equal(2, d.events.size)
|
127
|
-
|
128
|
-
d.events.each do |tag, time, record|
|
129
|
-
assert_equal("test", tag)
|
130
|
-
|
131
|
-
assert_equal("http://
|
132
|
-
assert(time.is_a?(Fluent::EventTime))
|
133
|
-
|
134
|
-
assert_equal(404, record["status"])
|
135
|
-
assert_not_nil(record["error"])
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
test '500' do
|
140
|
-
d = create_driver TEST_500_INTERVAL_3_CONFIG
|
141
|
-
assert_equal("test", d.instance.tag)
|
142
|
-
assert_equal(3, d.instance.interval)
|
143
|
-
|
144
|
-
d.run(timeout: 8) do
|
145
|
-
sleep 7
|
146
|
-
end
|
147
|
-
assert_equal(2, d.events.size)
|
148
|
-
|
149
|
-
d.events.each do |tag, time, record|
|
150
|
-
assert_equal("test", tag)
|
151
|
-
|
152
|
-
assert_equal("http://
|
153
|
-
assert(time.is_a?(Fluent::EventTime))
|
154
|
-
|
155
|
-
assert_equal(500, record["status"])
|
156
|
-
assert_not_nil(record["error"])
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
|
-
sub_test_case "fail when remote down" do
|
162
|
-
TEST_REFUSED_CONFIG = %[
|
163
|
-
tag test
|
164
|
-
url http://
|
165
|
-
interval 1s
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
d.events.
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
timeout
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
assert_equal(
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
end
|
1
|
+
require "helper"
|
2
|
+
require "fluent/plugin/in_http_pull.rb"
|
3
|
+
|
4
|
+
require 'ostruct'
|
5
|
+
|
6
|
+
class HttpPullInputTestBasic < Test::Unit::TestCase
|
7
|
+
@stub_server = nil
|
8
|
+
|
9
|
+
setup do
|
10
|
+
@stub_server = StubServer.new
|
11
|
+
@stub_server.start
|
12
|
+
end
|
13
|
+
|
14
|
+
teardown do
|
15
|
+
@stub_server.shutdown
|
16
|
+
end
|
17
|
+
|
18
|
+
sub_test_case "success case" do
|
19
|
+
TEST_INTERVAL_3_CONFIG = %[
|
20
|
+
tag test
|
21
|
+
url http://localhost:3939
|
22
|
+
|
23
|
+
interval 3s
|
24
|
+
format none
|
25
|
+
status_only true
|
26
|
+
]
|
27
|
+
|
28
|
+
TEST_INTERVAL_5_CONFIG = %[
|
29
|
+
tag test
|
30
|
+
url http://localhost:3939
|
31
|
+
|
32
|
+
interval 5s
|
33
|
+
format json
|
34
|
+
]
|
35
|
+
|
36
|
+
TEST_INTERVAL_3_REDIRECT_CONFIG = %[
|
37
|
+
tag test
|
38
|
+
url http://localhost:3939/redirect
|
39
|
+
|
40
|
+
interval 3s
|
41
|
+
format json
|
42
|
+
]
|
43
|
+
|
44
|
+
test 'interval 3 with status_only' do
|
45
|
+
d = create_driver TEST_INTERVAL_3_CONFIG
|
46
|
+
assert_equal("test", d.instance.tag)
|
47
|
+
assert_equal(3, d.instance.interval)
|
48
|
+
|
49
|
+
d.run(timeout: 8) do
|
50
|
+
sleep 7
|
51
|
+
end
|
52
|
+
assert_equal(2, d.events.size)
|
53
|
+
|
54
|
+
d.events.each do |tag, time, record|
|
55
|
+
assert_equal("test", tag)
|
56
|
+
|
57
|
+
assert_equal({"url"=>"http://localhost:3939","status"=>200}, record)
|
58
|
+
assert(time.is_a?(Fluent::EventTime))
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
test 'interval 5' do
|
63
|
+
d = create_driver TEST_INTERVAL_5_CONFIG
|
64
|
+
assert_equal("test", d.instance.tag)
|
65
|
+
assert_equal(5, d.instance.interval)
|
66
|
+
|
67
|
+
d.run(timeout: 12) do
|
68
|
+
sleep 11
|
69
|
+
end
|
70
|
+
assert_equal(2, d.events.size)
|
71
|
+
|
72
|
+
d.events.each do |tag, time, record|
|
73
|
+
assert_equal("test", tag)
|
74
|
+
|
75
|
+
assert_equal({"url"=>"http://localhost:3939","status"=>200, "message"=>{"status"=>"OK"}}, record)
|
76
|
+
assert(time.is_a?(Fluent::EventTime))
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
test 'interval 3 with redirect' do
|
81
|
+
d = create_driver TEST_INTERVAL_3_REDIRECT_CONFIG
|
82
|
+
assert_equal("test", d.instance.tag)
|
83
|
+
assert_equal(3, d.instance.interval)
|
84
|
+
|
85
|
+
d.run(timeout: 8) do
|
86
|
+
sleep 7
|
87
|
+
end
|
88
|
+
assert_equal(2, d.events.size)
|
89
|
+
|
90
|
+
d.events.each do |tag, time, record|
|
91
|
+
assert_equal("test", tag)
|
92
|
+
|
93
|
+
assert_equal({"url"=>"http://localhost:3939/redirect","status"=>200, "message"=>{"status"=>"OK"}}, record)
|
94
|
+
assert(time.is_a?(Fluent::EventTime))
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
sub_test_case "fail when not 200 OK" do
|
100
|
+
TEST_404_INTERVAL_3_CONFIG = %[
|
101
|
+
tag test
|
102
|
+
url http://localhost:3939/not_exist
|
103
|
+
|
104
|
+
interval 3s
|
105
|
+
format none
|
106
|
+
status_only true
|
107
|
+
]
|
108
|
+
|
109
|
+
TEST_500_INTERVAL_3_CONFIG = %[
|
110
|
+
tag test
|
111
|
+
url http://localhost:3939/internal_error
|
112
|
+
|
113
|
+
interval 3s
|
114
|
+
format none
|
115
|
+
status_only true
|
116
|
+
]
|
117
|
+
|
118
|
+
test '404' do
|
119
|
+
d = create_driver TEST_404_INTERVAL_3_CONFIG
|
120
|
+
assert_equal("test", d.instance.tag)
|
121
|
+
assert_equal(3, d.instance.interval)
|
122
|
+
|
123
|
+
d.run(timeout: 8) do
|
124
|
+
sleep 7
|
125
|
+
end
|
126
|
+
assert_equal(2, d.events.size)
|
127
|
+
|
128
|
+
d.events.each do |tag, time, record|
|
129
|
+
assert_equal("test", tag)
|
130
|
+
|
131
|
+
assert_equal("http://localhost:3939/not_exist", record["url"])
|
132
|
+
assert(time.is_a?(Fluent::EventTime))
|
133
|
+
|
134
|
+
assert_equal(404, record["status"])
|
135
|
+
assert_not_nil(record["error"])
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
test '500' do
|
140
|
+
d = create_driver TEST_500_INTERVAL_3_CONFIG
|
141
|
+
assert_equal("test", d.instance.tag)
|
142
|
+
assert_equal(3, d.instance.interval)
|
143
|
+
|
144
|
+
d.run(timeout: 8) do
|
145
|
+
sleep 7
|
146
|
+
end
|
147
|
+
assert_equal(2, d.events.size)
|
148
|
+
|
149
|
+
d.events.each do |tag, time, record|
|
150
|
+
assert_equal("test", tag)
|
151
|
+
|
152
|
+
assert_equal("http://localhost:3939/internal_error", record["url"])
|
153
|
+
assert(time.is_a?(Fluent::EventTime))
|
154
|
+
|
155
|
+
assert_equal(500, record["status"])
|
156
|
+
assert_not_nil(record["error"])
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
sub_test_case "fail when remote down" do
|
162
|
+
TEST_REFUSED_CONFIG = %[
|
163
|
+
tag test
|
164
|
+
url http://localhost:5927
|
165
|
+
interval 1s
|
166
|
+
timeout 1s
|
167
|
+
|
168
|
+
format json
|
169
|
+
]
|
170
|
+
test "connection refused by remote" do
|
171
|
+
d = create_driver TEST_REFUSED_CONFIG
|
172
|
+
assert_equal("test", d.instance.tag)
|
173
|
+
|
174
|
+
d.run(timeout: 4) do
|
175
|
+
sleep 3
|
176
|
+
end
|
177
|
+
|
178
|
+
assert_equal(3, d.events.size)
|
179
|
+
d.events.each do |tag, time, record|
|
180
|
+
assert_equal("test", tag)
|
181
|
+
|
182
|
+
assert_equal("http://localhost:5927", record["url"])
|
183
|
+
assert(time.is_a?(Fluent::EventTime))
|
184
|
+
|
185
|
+
assert_equal(0, record["status"])
|
186
|
+
assert_not_nil(record["error"])
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
sub_test_case "fail when remote timeout" do
|
192
|
+
TEST_TIMEOUT_FAIL_CONFIG = %[
|
193
|
+
tag test
|
194
|
+
url http://localhost:3939/timeout
|
195
|
+
timeout 2s
|
196
|
+
|
197
|
+
interval 3s
|
198
|
+
format json
|
199
|
+
]
|
200
|
+
|
201
|
+
test "timeout" do
|
202
|
+
d = create_driver TEST_TIMEOUT_FAIL_CONFIG
|
203
|
+
assert_equal("test", d.instance.tag)
|
204
|
+
assert_equal(2, d.instance.timeout)
|
205
|
+
|
206
|
+
d.run(timeout: 8) do
|
207
|
+
sleep 7
|
208
|
+
end
|
209
|
+
assert_equal(2, d.events.size)
|
210
|
+
|
211
|
+
d.events.each do |tag, time, record|
|
212
|
+
assert_equal("test", tag)
|
213
|
+
|
214
|
+
assert_equal("http://localhost:3939/timeout", record["url"])
|
215
|
+
assert(time.is_a?(Fluent::EventTime))
|
216
|
+
|
217
|
+
assert_equal(0, record["status"])
|
218
|
+
assert_not_nil(record["error"])
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
private
|
224
|
+
|
225
|
+
def create_driver(conf)
|
226
|
+
Fluent::Test::Driver::Input.new(Fluent::Plugin::HttpPullInput).configure(conf)
|
227
|
+
end
|
228
|
+
end
|