fluent-plugin-splunk-hec 1.1.2 → 1.2.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 +4 -4
- data/Gemfile +2 -0
- data/Gemfile.lock +125 -14
- data/README.md +136 -74
- data/Rakefile +6 -1
- data/VERSION +1 -1
- data/fluent-plugin-splunk-hec.gemspec +9 -3
- data/lib/fluent/plugin/out_splunk.rb +313 -0
- data/lib/fluent/plugin/{out_splunk_hec → out_splunk}/match_formatter.rb +5 -3
- data/lib/fluent/plugin/out_splunk/version.rb +3 -0
- data/lib/fluent/plugin/out_splunk_hec.rb +130 -190
- data/lib/fluent/plugin/out_splunk_hec/version.rb +2 -0
- data/lib/fluent/plugin/out_splunk_ingest_api.rb +109 -0
- data/test/fluent/plugin/out_splunk_hec_test.rb +232 -221
- data/test/fluent/plugin/out_splunk_ingest_api_test.rb +244 -0
- data/test/test_helper.rb +10 -7
- metadata +82 -23
- data/test/lib/webmock/http_lib_adapters/httpclient_adapter.rb +0 -0
@@ -0,0 +1,244 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
describe Fluent::Plugin::SplunkIngestApiOutput do
|
6
|
+
include Fluent::Test::Helpers
|
7
|
+
include PluginTestHelper
|
8
|
+
|
9
|
+
INGEST_API_ENDPOINT = 'https://api.splunkbeta.com/tenant_name/ingest/v1beta2/events'
|
10
|
+
AUTH_TOKEN_ENDPOINT = 'https://api.splunkbeta.com/system/identity/v1/token'
|
11
|
+
|
12
|
+
before { Fluent::Test.setup } # setup router and others
|
13
|
+
|
14
|
+
it { expect(::Fluent::Plugin::SplunkIngestApiOutput::VERSION).wont_be_nil }
|
15
|
+
|
16
|
+
describe 'Required configs validation' do
|
17
|
+
it 'should have required fields' do
|
18
|
+
expect { create_api_output_driver }.must_raise Fluent::ConfigError
|
19
|
+
end
|
20
|
+
|
21
|
+
describe 'good_config' do
|
22
|
+
it {
|
23
|
+
instance = create_api_output_driver('service_client_identifier service_client_id',
|
24
|
+
'service_client_secret_key secret_key',
|
25
|
+
'ingest_api_tenant tenant_name').instance
|
26
|
+
expect(instance.service_client_identifier).must_equal 'service_client_id'
|
27
|
+
expect(instance.service_client_secret_key).must_equal 'secret_key'
|
28
|
+
expect(instance.ingest_api_tenant).must_equal 'tenant_name'
|
29
|
+
}
|
30
|
+
end
|
31
|
+
describe 'invalid host' do
|
32
|
+
it {
|
33
|
+
expect do
|
34
|
+
create_api_output_driver('ingest_api_host %bad-host%',
|
35
|
+
'service_client_identifier service_client_id',
|
36
|
+
'service_client_secret_key secret_key',
|
37
|
+
'ingest_api_tenant tenant_name')
|
38
|
+
end.must_raise Fluent::ConfigError
|
39
|
+
}
|
40
|
+
end
|
41
|
+
describe 'missing tenant name' do
|
42
|
+
it {
|
43
|
+
expect do
|
44
|
+
create_api_output_driver('ingest_api_host %bad-host%',
|
45
|
+
'service_client_identifier service_client_id',
|
46
|
+
'service_client_secret_key secret_key',
|
47
|
+
'ingest_api_tenant tenant_name')
|
48
|
+
end.must_raise Fluent::ConfigError
|
49
|
+
}
|
50
|
+
end
|
51
|
+
describe 'missing client identifier' do
|
52
|
+
it {
|
53
|
+
expect do
|
54
|
+
create_api_output_driver('ingest_api_host %bad-host%',
|
55
|
+
'service_client_secret_key secret_key',
|
56
|
+
'ingest_api_tenant tenant_name')
|
57
|
+
end.must_raise Fluent::ConfigError
|
58
|
+
}
|
59
|
+
end
|
60
|
+
|
61
|
+
describe 'missing secret key' do
|
62
|
+
it {
|
63
|
+
expect do
|
64
|
+
create_api_output_driver('ingest_api_host %bad-host%',
|
65
|
+
'service_client_identifier service_client_id',
|
66
|
+
'ingest_api_tenant tenant_name')
|
67
|
+
end.must_raise Fluent::ConfigError
|
68
|
+
}
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'should not fail to start when provided bad auth' do
|
73
|
+
stub_failed_auth
|
74
|
+
driver = create_api_output_driver('service_client_identifier service_client_id',
|
75
|
+
'service_client_secret_key secret_key',
|
76
|
+
'ingest_api_tenant tenant_name')
|
77
|
+
driver.run
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'should send request to Splunk' do
|
81
|
+
req = verify_sent_events do |batch|
|
82
|
+
expect(batch.size).must_equal 2
|
83
|
+
end
|
84
|
+
expect(req).must_be_requested times: 1
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'should have an index in the attributes slot' do
|
88
|
+
verify_sent_events(conf: %(
|
89
|
+
index my_index
|
90
|
+
)) do |batch|
|
91
|
+
batch.each do |item|
|
92
|
+
expect(item['attributes']['index']).must_equal 'my_index'
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'should have attrbutes not fields' do
|
98
|
+
verify_sent_events do |batch|
|
99
|
+
batch.each do |item|
|
100
|
+
expect(item).wont_include :fields
|
101
|
+
expect(item).includes :attributes
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'should have body not event' do
|
107
|
+
verify_sent_events do |batch|
|
108
|
+
batch.each do |item|
|
109
|
+
expect(item).wont_include :event
|
110
|
+
expect(item).includes :body
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'should have a timestamp and nanos' do
|
116
|
+
verify_sent_events do |batch|
|
117
|
+
batch.each do |item|
|
118
|
+
expect(item).wont_include :time
|
119
|
+
expect(item).includes :timestamp
|
120
|
+
expect(item).includes :nanos
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
it 'should raise error on 401/429 to force retry' do
|
126
|
+
# Try to quiet this down some.
|
127
|
+
report_on_exception = Thread.report_on_exception
|
128
|
+
Thread.report_on_exception = false
|
129
|
+
begin
|
130
|
+
expect do
|
131
|
+
verify_sent_events status: 429
|
132
|
+
end.must_raise RuntimeError
|
133
|
+
|
134
|
+
expect do
|
135
|
+
verify_sent_events status: 401
|
136
|
+
end.must_raise RuntimeError
|
137
|
+
ensure
|
138
|
+
Thread.report_on_exception = report_on_exception
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
it 'should not send an empty log message' do
|
143
|
+
verify_sent_events conf: %(
|
144
|
+
<format>
|
145
|
+
@type single_value
|
146
|
+
message_key log
|
147
|
+
add_newline false
|
148
|
+
</format>), event: { 'log' => "\n" } do |batch|
|
149
|
+
batch.each do |_item|
|
150
|
+
raise 'No message should be sent'
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
# it 'should send index from filters' do
|
156
|
+
# verify_sent_events conf: %[
|
157
|
+
# <filter>
|
158
|
+
# @type record_transformer
|
159
|
+
# enable_ruby
|
160
|
+
# <record>
|
161
|
+
# index ${ENV['SPLUNK_INDEX']}
|
162
|
+
# </record>
|
163
|
+
# </filter>
|
164
|
+
# ], event: {"log" => "This is the log", "index" => "indexname"} do |batch|
|
165
|
+
# batch.each do |item|
|
166
|
+
# item[:attrbutes][:index].
|
167
|
+
# fail "No message should be sent"
|
168
|
+
# end
|
169
|
+
# end
|
170
|
+
# end
|
171
|
+
|
172
|
+
def create_api_output_driver(*configs)
|
173
|
+
Fluent::Test::Driver::Output.new(Fluent::Plugin::SplunkIngestApiOutput).tap do |d|
|
174
|
+
d.configure(configs.join("\n"))
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
DEFAULT_EVENT = {
|
179
|
+
log: 'everything is good',
|
180
|
+
level: 'info',
|
181
|
+
from: 'my_machine',
|
182
|
+
file: 'cool.log',
|
183
|
+
value: 100,
|
184
|
+
agent: {
|
185
|
+
name: 'test',
|
186
|
+
version: '1.0.0'
|
187
|
+
}
|
188
|
+
}.freeze
|
189
|
+
|
190
|
+
def verify_sent_events(args = {})
|
191
|
+
conf = args[:conf] || ''
|
192
|
+
event = args[:event] || DEFAULT_EVENT
|
193
|
+
status = args[:status] || 200
|
194
|
+
|
195
|
+
events = [
|
196
|
+
['tag.event1', event_time, { id: '1st' }.merge(Marshal.load(Marshal.dump(event)))],
|
197
|
+
['tag.event2', event_time, { id: '2nd' }.merge(Marshal.load(Marshal.dump(event)))]
|
198
|
+
]
|
199
|
+
|
200
|
+
@driver = create_api_output_driver('service_client_identifier service_client_id',
|
201
|
+
'service_client_secret_key secret_key',
|
202
|
+
'ingest_api_tenant tenant_name',
|
203
|
+
conf)
|
204
|
+
|
205
|
+
api_req = if status == 200
|
206
|
+
stub_successful_api_request.with do |r|
|
207
|
+
yield r.body.split(/(?={)\s*(?<=})/).map { |item| JSON.load item }.first
|
208
|
+
end
|
209
|
+
else
|
210
|
+
stub_failed_api_request status
|
211
|
+
end
|
212
|
+
|
213
|
+
@driver.run do
|
214
|
+
events.each { |evt| @driver.feed *evt }
|
215
|
+
end
|
216
|
+
|
217
|
+
api_req
|
218
|
+
end
|
219
|
+
|
220
|
+
def stub_successful_auth
|
221
|
+
stub_request(:post, AUTH_TOKEN_ENDPOINT)
|
222
|
+
.to_return(body: '{"access_token":"bearer token","token_type":"Bearer","expires_in":432000,"scope":"client_credentials"}')
|
223
|
+
end
|
224
|
+
|
225
|
+
def stub_failed_auth
|
226
|
+
stub_request(:post, AUTH_TOKEN_ENDPOINT)
|
227
|
+
.to_return(status: 401,
|
228
|
+
body: '{"error":"invalid_client","error_description":"The client secret supplied for a confidential client is invalid."}')
|
229
|
+
end
|
230
|
+
|
231
|
+
def stub_successful_api_request
|
232
|
+
stub_successful_auth
|
233
|
+
|
234
|
+
stub_request(:post, INGEST_API_ENDPOINT)
|
235
|
+
.to_return(body: '{"message":"Success","code":"SUCCESS"}')
|
236
|
+
end
|
237
|
+
|
238
|
+
def stub_failed_api_request(status)
|
239
|
+
stub_successful_auth
|
240
|
+
|
241
|
+
stub_request(:post, INGEST_API_ENDPOINT)
|
242
|
+
.to_return(body: '', status: status)
|
243
|
+
end
|
244
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'simplecov'
|
2
4
|
SimpleCov.start
|
3
5
|
|
4
|
-
$LOAD_PATH.unshift File.expand_path('
|
5
|
-
$LOAD_PATH.unshift File.expand_path('
|
6
|
+
$LOAD_PATH.unshift File.expand_path('../lib', __dir__)
|
7
|
+
$LOAD_PATH.unshift File.expand_path('lib', __dir__)
|
6
8
|
require 'fluent/plugin/out_splunk_hec'
|
9
|
+
require 'fluent/plugin/out_splunk_ingest_api'
|
7
10
|
|
8
11
|
require 'fluent/test'
|
9
12
|
require 'fluent/test/driver/output'
|
@@ -17,7 +20,7 @@ module Minitest::Expectations
|
|
17
20
|
infect_an_assertion :assert_not_requested, :wont_be_requested, :reverse
|
18
21
|
end
|
19
22
|
|
20
|
-
TEST_HEC_TOKEN = 'some-token'
|
23
|
+
TEST_HEC_TOKEN = 'some-token'
|
21
24
|
|
22
25
|
module PluginTestHelper
|
23
26
|
def fluentd_conf_for(*lines)
|
@@ -27,16 +30,16 @@ module PluginTestHelper
|
|
27
30
|
(basic_config + lines).join("\n")
|
28
31
|
end
|
29
32
|
|
30
|
-
def
|
31
|
-
Fluent::Test::Driver::Output.new(Fluent::Plugin::SplunkHecOutput).tap
|
33
|
+
def create_hec_output_driver(*configs)
|
34
|
+
Fluent::Test::Driver::Output.new(Fluent::Plugin::SplunkHecOutput).tap do |d|
|
32
35
|
d.configure(fluentd_conf_for(*configs))
|
33
|
-
|
36
|
+
end
|
34
37
|
end
|
35
38
|
|
36
39
|
def stub_hec_request(endpoint)
|
37
40
|
stub_request(:post, "#{endpoint}/services/collector")
|
38
41
|
.with(headers: { 'Authorization' => "Splunk #{TEST_HEC_TOKEN}",
|
39
|
-
|
42
|
+
'User-Agent' => "fluent-plugin-splunk_hec_out/#{Fluent::Plugin::SplunkHecOutput::VERSION}" })
|
40
43
|
.to_return(body: '{"text":"Success","code":0}')
|
41
44
|
end
|
42
45
|
end
|
metadata
CHANGED
@@ -1,27 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-splunk-hec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Splunk Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: fluent-plugin-kubernetes_metadata_filter
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.1.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.1.2
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: fluentd
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
|
-
- -
|
31
|
+
- - '='
|
18
32
|
- !ruby/object:Gem::Version
|
19
33
|
version: '1.4'
|
20
34
|
type: :runtime
|
21
35
|
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
|
-
- -
|
38
|
+
- - '='
|
25
39
|
- !ruby/object:Gem::Version
|
26
40
|
version: '1.4'
|
27
41
|
- !ruby/object:Gem::Dependency
|
@@ -52,6 +66,34 @@ dependencies:
|
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: openid_connect
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.1.6
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.1.6
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: prometheus-client
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.9.0
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.9.0
|
55
97
|
- !ruby/object:Gem::Dependency
|
56
98
|
name: bundler
|
57
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,61 +123,75 @@ dependencies:
|
|
81
123
|
- !ruby/object:Gem::Version
|
82
124
|
version: '12.0'
|
83
125
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
126
|
+
name: minitest
|
85
127
|
requirement: !ruby/object:Gem::Requirement
|
86
128
|
requirements:
|
87
129
|
- - "~>"
|
88
130
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
131
|
+
version: '5.0'
|
90
132
|
type: :development
|
91
133
|
prerelease: false
|
92
134
|
version_requirements: !ruby/object:Gem::Requirement
|
93
135
|
requirements:
|
94
136
|
- - "~>"
|
95
137
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
138
|
+
version: '5.0'
|
97
139
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
140
|
+
name: rubocop
|
99
141
|
requirement: !ruby/object:Gem::Requirement
|
100
142
|
requirements:
|
101
143
|
- - "~>"
|
102
144
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
145
|
+
version: 0.63.1
|
104
146
|
type: :development
|
105
147
|
prerelease: false
|
106
148
|
version_requirements: !ruby/object:Gem::Requirement
|
107
149
|
requirements:
|
108
150
|
- - "~>"
|
109
151
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
152
|
+
version: 0.63.1
|
111
153
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
154
|
+
name: simplecov
|
113
155
|
requirement: !ruby/object:Gem::Requirement
|
114
156
|
requirements:
|
115
157
|
- - "~>"
|
116
158
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
159
|
+
version: 0.16.1
|
118
160
|
type: :development
|
119
161
|
prerelease: false
|
120
162
|
version_requirements: !ruby/object:Gem::Requirement
|
121
163
|
requirements:
|
122
164
|
- - "~>"
|
123
165
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
166
|
+
version: 0.16.1
|
125
167
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
168
|
+
name: test-unit
|
127
169
|
requirement: !ruby/object:Gem::Requirement
|
128
170
|
requirements:
|
129
171
|
- - "~>"
|
130
172
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0
|
173
|
+
version: '3.0'
|
132
174
|
type: :development
|
133
175
|
prerelease: false
|
134
176
|
version_requirements: !ruby/object:Gem::Requirement
|
135
177
|
requirements:
|
136
178
|
- - "~>"
|
137
179
|
- !ruby/object:Gem::Version
|
138
|
-
version: 0
|
180
|
+
version: '3.0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: webmock
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 3.5.0
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 3.5.0
|
139
195
|
description: |-
|
140
196
|
A fluentd output plugin created by Splunk
|
141
197
|
that writes events to splunk indexers over HTTP Event Collector API.
|
@@ -153,15 +209,18 @@ files:
|
|
153
209
|
- Rakefile
|
154
210
|
- VERSION
|
155
211
|
- fluent-plugin-splunk-hec.gemspec
|
212
|
+
- lib/fluent/plugin/out_splunk.rb
|
213
|
+
- lib/fluent/plugin/out_splunk/match_formatter.rb
|
214
|
+
- lib/fluent/plugin/out_splunk/version.rb
|
156
215
|
- lib/fluent/plugin/out_splunk_hec.rb
|
157
|
-
- lib/fluent/plugin/out_splunk_hec/match_formatter.rb
|
158
216
|
- lib/fluent/plugin/out_splunk_hec/version.rb
|
217
|
+
- lib/fluent/plugin/out_splunk_ingest_api.rb
|
159
218
|
- test/fluent/plugin/out_splunk_hec_test.rb
|
219
|
+
- test/fluent/plugin/out_splunk_ingest_api_test.rb
|
160
220
|
- test/lib/webmock/http_lib_adapters/curb_adapter.rb
|
161
221
|
- test/lib/webmock/http_lib_adapters/em_http_request_adapter.rb
|
162
222
|
- test/lib/webmock/http_lib_adapters/excon_adapter.rb
|
163
223
|
- test/lib/webmock/http_lib_adapters/http_rb_adapter.rb
|
164
|
-
- test/lib/webmock/http_lib_adapters/httpclient_adapter.rb
|
165
224
|
- test/lib/webmock/http_lib_adapters/manticore_adapter.rb
|
166
225
|
- test/lib/webmock/http_lib_adapters/patron_adapter.rb
|
167
226
|
- test/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb
|
@@ -185,18 +244,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
185
244
|
- !ruby/object:Gem::Version
|
186
245
|
version: '0'
|
187
246
|
requirements: []
|
188
|
-
rubygems_version: 3.0.
|
247
|
+
rubygems_version: 3.0.6
|
189
248
|
signing_key:
|
190
249
|
specification_version: 4
|
191
250
|
summary: Fluentd plugin for Splunk HEC.
|
192
251
|
test_files:
|
193
|
-
- test/fluent/plugin/out_splunk_hec_test.rb
|
194
|
-
- test/lib/webmock/http_lib_adapters/patron_adapter.rb
|
195
|
-
- test/lib/webmock/http_lib_adapters/manticore_adapter.rb
|
196
252
|
- test/lib/webmock/http_lib_adapters/em_http_request_adapter.rb
|
197
253
|
- test/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb
|
254
|
+
- test/lib/webmock/http_lib_adapters/patron_adapter.rb
|
198
255
|
- test/lib/webmock/http_lib_adapters/curb_adapter.rb
|
199
|
-
- test/lib/webmock/http_lib_adapters/
|
256
|
+
- test/lib/webmock/http_lib_adapters/manticore_adapter.rb
|
200
257
|
- test/lib/webmock/http_lib_adapters/http_rb_adapter.rb
|
201
258
|
- test/lib/webmock/http_lib_adapters/excon_adapter.rb
|
259
|
+
- test/fluent/plugin/out_splunk_ingest_api_test.rb
|
260
|
+
- test/fluent/plugin/out_splunk_hec_test.rb
|
202
261
|
- test/test_helper.rb
|