logstash-core 5.4.3-java → 5.5.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/logstash-core/logstash-core.jar +0 -0
- data/lib/logstash-core/version.rb +1 -1
- data/lib/logstash/api/commands/hot_threads_reporter.rb +2 -2
- data/lib/logstash/api/commands/node.rb +0 -1
- data/lib/logstash/api/commands/stats.rb +0 -1
- data/lib/logstash/config/mixin.rb +5 -43
- data/lib/logstash/config/modules_common.rb +71 -0
- data/lib/logstash/elasticsearch_client.rb +120 -0
- data/lib/logstash/environment.rb +14 -3
- data/lib/logstash/errors.rb +1 -0
- data/lib/logstash/execution_context.rb +11 -3
- data/lib/logstash/inputs/base.rb +2 -0
- data/lib/logstash/instrument/global_metrics.rb +13 -0
- data/lib/logstash/instrument/metric_type/mean.rb +5 -0
- data/lib/logstash/instrument/periodic_poller/jvm.rb +5 -5
- data/lib/logstash/logging/logger.rb +26 -1
- data/lib/logstash/modules/cli_parser.rb +74 -0
- data/lib/logstash/modules/elasticsearch_config.rb +22 -0
- data/lib/logstash/modules/elasticsearch_resource.rb +10 -0
- data/lib/logstash/modules/file_reader.rb +36 -0
- data/lib/logstash/modules/importer.rb +37 -0
- data/lib/logstash/modules/kibana_base_resource.rb +10 -0
- data/lib/logstash/modules/kibana_config.rb +104 -0
- data/lib/logstash/modules/kibana_resource.rb +10 -0
- data/lib/logstash/modules/logstash_config.rb +48 -0
- data/lib/logstash/modules/resource_base.rb +37 -0
- data/lib/logstash/modules/scaffold.rb +44 -0
- data/lib/logstash/namespace.rb +1 -0
- data/lib/logstash/outputs/base.rb +2 -0
- data/lib/logstash/pipeline.rb +18 -4
- data/lib/logstash/plugin.rb +1 -0
- data/lib/logstash/plugins/registry.rb +5 -0
- data/lib/logstash/runner.rb +42 -2
- data/lib/logstash/settings.rb +7 -1
- data/lib/logstash/timestamp.rb +4 -0
- data/lib/logstash/util/dead_letter_queue_manager.rb +61 -0
- data/lib/logstash/util/safe_uri.rb +130 -11
- data/lib/logstash/util/thread_dump.rb +3 -1
- data/lib/logstash/util/wrapped_acked_queue.rb +24 -6
- data/lib/logstash/util/wrapped_synchronous_queue.rb +19 -5
- data/lib/logstash/version.rb +1 -1
- data/locales/en.yml +46 -0
- data/logstash-core.gemspec +7 -2
- data/spec/{api/lib/commands/stats.rb → logstash/api/commands/stats_spec.rb} +7 -2
- data/spec/{api/lib → logstash/api}/errors_spec.rb +1 -1
- data/spec/{api/lib/api → logstash/api/modules}/logging_spec.rb +1 -10
- data/spec/{api/lib/api → logstash/api/modules}/node_plugins_spec.rb +2 -3
- data/spec/{api/lib/api → logstash/api/modules}/node_spec.rb +6 -7
- data/spec/{api/lib/api → logstash/api/modules}/node_stats_spec.rb +2 -2
- data/spec/{api/lib/api → logstash/api/modules}/plugins_spec.rb +4 -3
- data/spec/{api/lib/api → logstash/api/modules}/root_spec.rb +3 -3
- data/spec/{api/lib → logstash/api}/rack_app_spec.rb +0 -0
- data/spec/logstash/config/mixin_spec.rb +2 -2
- data/spec/logstash/execution_context_spec.rb +20 -1
- data/spec/logstash/filter_delegator_spec.rb +2 -1
- data/spec/logstash/inputs/base_spec.rb +1 -1
- data/spec/logstash/output_delegator_spec.rb +2 -1
- data/spec/logstash/outputs/base_spec.rb +1 -1
- data/spec/logstash/pipeline_dlq_commit_spec.rb +107 -0
- data/spec/logstash/pipeline_pq_file_spec.rb +1 -1
- data/spec/logstash/plugin_spec.rb +1 -1
- data/spec/logstash/plugins/registry_spec.rb +22 -5
- data/spec/logstash/runner_spec.rb +122 -19
- data/spec/logstash/settings_spec.rb +91 -0
- data/spec/logstash/timestamp_spec.rb +6 -0
- data/spec/support/helpers.rb +80 -1
- data/spec/support/matchers.rb +13 -0
- data/spec/support/shared_contexts.rb +38 -0
- data/spec/support/shared_examples.rb +1 -1
- metadata +95 -40
- data/spec/api/lib/api/support/resource_dsl_methods.rb +0 -87
- data/spec/api/spec_helper.rb +0 -111
@@ -1,4 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
java_import 'org.logstash.instrument.reports.ThreadsReport'
|
3
|
+
|
2
4
|
module LogStash
|
3
5
|
module Util
|
4
6
|
class ThreadDump
|
@@ -10,7 +12,7 @@ module LogStash
|
|
10
12
|
|
11
13
|
def initialize(options={})
|
12
14
|
@options = options
|
13
|
-
@dump = options.fetch(:dump,
|
15
|
+
@dump = options.fetch(:dump, ThreadsReport.generate({}))
|
14
16
|
@top_count = options.fetch(:threads, THREADS_COUNT_DEFAULT)
|
15
17
|
@ignore = options.fetch(:ignore_idle_threads, IGNORE_IDLE_THREADS_DEFAULT)
|
16
18
|
end
|
@@ -127,7 +127,12 @@ module LogStash; module Util
|
|
127
127
|
end
|
128
128
|
|
129
129
|
def empty?
|
130
|
-
@mutex.
|
130
|
+
@mutex.lock
|
131
|
+
begin
|
132
|
+
@queue.is_fully_acked?
|
133
|
+
ensure
|
134
|
+
@mutex.unlock
|
135
|
+
end
|
131
136
|
end
|
132
137
|
|
133
138
|
def set_batch_dimensions(batch_size, wait_for)
|
@@ -152,8 +157,11 @@ module LogStash; module Util
|
|
152
157
|
end
|
153
158
|
|
154
159
|
def inflight_batches
|
155
|
-
@mutex.
|
160
|
+
@mutex.lock
|
161
|
+
begin
|
156
162
|
yield(@inflight_batches)
|
163
|
+
ensure
|
164
|
+
@mutex.unlock
|
157
165
|
end
|
158
166
|
end
|
159
167
|
|
@@ -173,16 +181,24 @@ module LogStash; module Util
|
|
173
181
|
end
|
174
182
|
|
175
183
|
batch = new_batch
|
176
|
-
@mutex.
|
184
|
+
@mutex.lock
|
185
|
+
begin
|
186
|
+
batch.read_next
|
187
|
+
ensure
|
188
|
+
@mutex.unlock
|
189
|
+
end
|
177
190
|
start_metrics(batch)
|
178
191
|
batch
|
179
192
|
end
|
180
193
|
|
181
194
|
def start_metrics(batch)
|
182
|
-
@mutex.
|
195
|
+
@mutex.lock
|
196
|
+
begin
|
183
197
|
# there seems to be concurrency issues with metrics, keep it in the mutex
|
184
198
|
set_current_thread_inflight_batch(batch)
|
185
199
|
start_clock
|
200
|
+
ensure
|
201
|
+
@mutex.unlock
|
186
202
|
end
|
187
203
|
end
|
188
204
|
|
@@ -191,12 +207,14 @@ module LogStash; module Util
|
|
191
207
|
end
|
192
208
|
|
193
209
|
def close_batch(batch)
|
194
|
-
@mutex.
|
210
|
+
@mutex.lock
|
211
|
+
begin
|
195
212
|
batch.close
|
196
|
-
|
197
213
|
# there seems to be concurrency issues with metrics, keep it in the mutex
|
198
214
|
@inflight_batches.delete(Thread.current)
|
199
215
|
stop_clock(batch)
|
216
|
+
ensure
|
217
|
+
@mutex.unlock
|
200
218
|
end
|
201
219
|
end
|
202
220
|
|
@@ -98,8 +98,11 @@ module LogStash; module Util
|
|
98
98
|
end
|
99
99
|
|
100
100
|
def inflight_batches
|
101
|
-
@mutex.
|
101
|
+
@mutex.lock
|
102
|
+
begin
|
102
103
|
yield(@inflight_batches)
|
104
|
+
ensure
|
105
|
+
@mutex.unlock
|
103
106
|
end
|
104
107
|
end
|
105
108
|
|
@@ -115,16 +118,24 @@ module LogStash; module Util
|
|
115
118
|
|
116
119
|
def read_batch
|
117
120
|
batch = new_batch
|
118
|
-
@mutex.
|
121
|
+
@mutex.lock
|
122
|
+
begin
|
123
|
+
batch.read_next
|
124
|
+
ensure
|
125
|
+
@mutex.unlock
|
126
|
+
end
|
119
127
|
start_metrics(batch)
|
120
128
|
batch
|
121
129
|
end
|
122
130
|
|
123
131
|
def start_metrics(batch)
|
124
|
-
@mutex.
|
125
|
-
|
132
|
+
@mutex.lock
|
133
|
+
# there seems to be concurrency issues with metrics, keep it in the mutex
|
134
|
+
begin
|
126
135
|
set_current_thread_inflight_batch(batch)
|
127
136
|
start_clock
|
137
|
+
ensure
|
138
|
+
@mutex.unlock
|
128
139
|
end
|
129
140
|
end
|
130
141
|
|
@@ -133,10 +144,13 @@ module LogStash; module Util
|
|
133
144
|
end
|
134
145
|
|
135
146
|
def close_batch(batch)
|
136
|
-
@mutex.
|
147
|
+
@mutex.lock
|
148
|
+
begin
|
137
149
|
# there seems to be concurrency issues with metrics, keep it in the mutex
|
138
150
|
@inflight_batches.delete(Thread.current)
|
139
151
|
stop_clock(batch)
|
152
|
+
ensure
|
153
|
+
@mutex.unlock
|
140
154
|
end
|
141
155
|
end
|
142
156
|
|
data/lib/logstash/version.rb
CHANGED
data/locales/en.yml
CHANGED
@@ -83,10 +83,31 @@ en:
|
|
83
83
|
logging:
|
84
84
|
unrecognized_option: |-
|
85
85
|
unrecognized option [%{option}]
|
86
|
+
modules:
|
87
|
+
configuration:
|
88
|
+
parse-failed: |-
|
89
|
+
Failed to parse the module configuration: [%{error}]
|
90
|
+
modules-must-be-unique: >-
|
91
|
+
Only a single instance of any module can be run at a time. Duplicate
|
92
|
+
modules: %{duplicate_modules}
|
93
|
+
modules-invalid-name: >-
|
94
|
+
Invalid module name: %{module_name}
|
95
|
+
modules-variables-malformed: >-
|
96
|
+
Failed to parse module variable %{rawvar}. Must be in -M
|
97
|
+
"MODULE_NAME.KEY.SUBKEY=VALUE" format
|
98
|
+
modules-unavailable: >-
|
99
|
+
The modules specified are not available yet.
|
100
|
+
Specified modules: %{specified_modules}
|
101
|
+
Available modules: %{available_modules}
|
102
|
+
elasticsearch_connection_failed: >-
|
103
|
+
Failed to import module configurations to Elasticsearch.
|
104
|
+
Module: %{module_name} has hosts: %{hosts}
|
105
|
+
|
86
106
|
runner:
|
87
107
|
short-help: |-
|
88
108
|
usage:
|
89
109
|
bin/logstash -f CONFIG_PATH [-t] [-r] [] [-w COUNT] [-l LOG]
|
110
|
+
bin/logstash --modules MODULE_NAME [-M "MODULE_NAME.var.PLUGIN_TYPE.PLUGIN_NAME.VARIABLE_NAME=VALUE"] [-t] [-w COUNT] [-l LOG]
|
90
111
|
bin/logstash -e CONFIG_STR [-t] [--log.level fatal|error|warn|info|debug|trace] [-w COUNT] [-l LOG]
|
91
112
|
bin/logstash -i SHELL [--log.level fatal|error|warn|info|debug|trace]
|
92
113
|
bin/logstash -V [--log.level fatal|error|warn|info|debug|trace]
|
@@ -96,6 +117,13 @@ en:
|
|
96
117
|
missing-configuration: >-
|
97
118
|
No configuration file was specified. Perhaps you forgot to provide
|
98
119
|
the '-f yourlogstash.conf' flag?
|
120
|
+
config-module-exclusive: >-
|
121
|
+
Settings 'path.config' (-f) or 'config.string' (-e) can't be used in conjunction with
|
122
|
+
(--modules) or the "modules:" block in the logstash.yml file.
|
123
|
+
cli-module-override: >-
|
124
|
+
Both command-line and logstash.yml modules configurations detected.
|
125
|
+
Using command-line module configuration and ignoring logstash.yml module
|
126
|
+
configuration.
|
99
127
|
reload-without-config-path: >-
|
100
128
|
Configuration reloading also requires passing a configuration path with '-f yourlogstash.conf'
|
101
129
|
locked-data-path: >-
|
@@ -181,6 +209,24 @@ en:
|
|
181
209
|
"%{default_output}"
|
182
210
|
If you wish to use both defaults, please use
|
183
211
|
the empty string for the '-e' flag.
|
212
|
+
modules: |+
|
213
|
+
Load Logstash modules.
|
214
|
+
Modules can be defined using multiple instances
|
215
|
+
'--modules module1 --modules module2',
|
216
|
+
or comma-separated syntax
|
217
|
+
'--modules=module1,module2'
|
218
|
+
Cannot be used in conjunction with '-e' or '-f'
|
219
|
+
Use of '--modules' will override modules declared
|
220
|
+
in the 'logstash.yml' file.
|
221
|
+
modules_variable: |+
|
222
|
+
Load variables for module template.
|
223
|
+
Multiple instances of '-M' or
|
224
|
+
'--modules.variable' are supported.
|
225
|
+
Ignored if '--modules' flag is not used.
|
226
|
+
Should be in the format of
|
227
|
+
'-M "MODULE_NAME.var.PLUGIN_TYPE.PLUGIN_NAME.VARIABLE_NAME=VALUE"'
|
228
|
+
as in
|
229
|
+
'-M "example.var.filter.mutate.fieldname=fieldvalue"'
|
184
230
|
configtest: |+
|
185
231
|
Check configuration for valid syntax and then exit.
|
186
232
|
http_host: Web API binding host
|
data/logstash-core.gemspec
CHANGED
@@ -25,11 +25,14 @@ Gem::Specification.new do |gem|
|
|
25
25
|
gem.add_runtime_dependency "filesize", "0.0.4" #(MIT license) for :bytes config validator
|
26
26
|
gem.add_runtime_dependency "gems", "~> 0.8.3" #(MIT license)
|
27
27
|
gem.add_runtime_dependency "concurrent-ruby", "~> 1.0", ">= 1.0.5"
|
28
|
+
|
29
|
+
# Later versions are ruby 2.0 only. We should remove the rack dep once we support 9k
|
30
|
+
gem.add_runtime_dependency "rack", '1.6.6'
|
31
|
+
|
28
32
|
gem.add_runtime_dependency "sinatra", '~> 1.4', '>= 1.4.6'
|
29
33
|
gem.add_runtime_dependency 'puma', '~> 2.16'
|
30
|
-
gem.add_runtime_dependency "jruby-openssl", "0.9.
|
34
|
+
gem.add_runtime_dependency "jruby-openssl", "0.9.19" # >= 0.9.13 Required to support TLSv1.2
|
31
35
|
gem.add_runtime_dependency "chronic_duration", "0.10.6"
|
32
|
-
gem.add_runtime_dependency "jrmonitor", '~> 0.4.2'
|
33
36
|
|
34
37
|
# TODO(sissel): Treetop 1.5.x doesn't seem to work well, but I haven't
|
35
38
|
# investigated what the cause might be. -Jordan
|
@@ -50,6 +53,8 @@ Gem::Specification.new do |gem|
|
|
50
53
|
# has an rdoc problem that causes a bundler exception. 3.3.9 is the current latest version
|
51
54
|
# which does not have this problem.
|
52
55
|
gem.add_runtime_dependency "ruby-maven", "~> 3.3.9"
|
56
|
+
gem.add_runtime_dependency "elasticsearch", "~> 5.0", ">= 5.0.4" # Ruby client for ES (Apache 2.0 license)
|
57
|
+
gem.add_runtime_dependency "manticore", '>= 0.5.4', '< 1.0.0'
|
53
58
|
|
54
59
|
eval(File.read(File.expand_path("../gemspec_jars.rb", __FILE__)))
|
55
60
|
end
|
@@ -1,10 +1,15 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
|
2
|
+
require "spec_helper"
|
3
3
|
|
4
4
|
describe LogStash::Api::Commands::Stats do
|
5
|
+
include_context "api setup"
|
5
6
|
|
6
7
|
let(:report_method) { :run }
|
7
|
-
subject(:report)
|
8
|
+
subject(:report) do
|
9
|
+
factory = ::LogStash::Api::CommandFactory.new(LogStash::Api::Service.new(@agent))
|
10
|
+
|
11
|
+
factory.build(:stats).send(report_method)
|
12
|
+
end
|
8
13
|
|
9
14
|
let(:report_class) { described_class }
|
10
15
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
|
2
|
+
require "spec_helper"
|
3
3
|
require "sinatra"
|
4
4
|
require "logstash/api/modules/logging"
|
5
5
|
require "logstash/json"
|
@@ -10,15 +10,6 @@ describe LogStash::Api::Modules::Logging do
|
|
10
10
|
describe "#logging" do
|
11
11
|
|
12
12
|
context "when setting a logger's log level" do
|
13
|
-
before(:all) do
|
14
|
-
@runner = LogStashRunner.new
|
15
|
-
@runner.start
|
16
|
-
end
|
17
|
-
|
18
|
-
after(:all) do
|
19
|
-
@runner.stop
|
20
|
-
end
|
21
|
-
|
22
13
|
it "should return a positive acknowledgement on success" do
|
23
14
|
put '/', '{"logger.logstash": "ERROR"}'
|
24
15
|
payload = LogStash::Json.load(last_response.body)
|
@@ -1,6 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
|
3
|
-
require_relative "../../spec_helper"
|
2
|
+
require "spec_helper"
|
4
3
|
require "sinatra"
|
5
4
|
require "logstash/api/modules/plugins"
|
6
5
|
require "logstash/json"
|
@@ -12,7 +11,7 @@ describe LogStash::Api::Modules::Plugins do
|
|
12
11
|
extend ResourceDSLMethods
|
13
12
|
|
14
13
|
before(:each) do
|
15
|
-
|
14
|
+
get "/"
|
16
15
|
end
|
17
16
|
|
18
17
|
let(:payload) { LogStash::Json.load(last_response.body) }
|
@@ -1,6 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
|
3
|
-
require_relative "../../../support/shared_examples"
|
2
|
+
require "spec_helper"
|
4
3
|
require "sinatra"
|
5
4
|
require "logstash/api/modules/node"
|
6
5
|
require "logstash/json"
|
@@ -12,7 +11,7 @@ describe LogStash::Api::Modules::Node do
|
|
12
11
|
describe "#hot threads" do
|
13
12
|
|
14
13
|
before(:all) do
|
15
|
-
|
14
|
+
get "/hot_threads"
|
16
15
|
end
|
17
16
|
|
18
17
|
it "respond OK" do
|
@@ -26,7 +25,7 @@ describe LogStash::Api::Modules::Node do
|
|
26
25
|
context "#threads count" do
|
27
26
|
|
28
27
|
before(:all) do
|
29
|
-
|
28
|
+
get "/hot_threads?threads=5"
|
30
29
|
end
|
31
30
|
|
32
31
|
let(:payload) { LogStash::Json.load(last_response.body) }
|
@@ -49,7 +48,7 @@ describe LogStash::Api::Modules::Node do
|
|
49
48
|
].each do |path|
|
50
49
|
|
51
50
|
before(:all) do
|
52
|
-
|
51
|
+
get path
|
53
52
|
end
|
54
53
|
|
55
54
|
let(:payload) { last_response.body }
|
@@ -70,7 +69,7 @@ describe LogStash::Api::Modules::Node do
|
|
70
69
|
@threads = []
|
71
70
|
5.times { @threads << Thread.new { loop {} } }
|
72
71
|
|
73
|
-
|
72
|
+
get "/hot_threads?human=t&threads=2"
|
74
73
|
end
|
75
74
|
|
76
75
|
after(:all) do
|
@@ -91,7 +90,7 @@ describe LogStash::Api::Modules::Node do
|
|
91
90
|
"/hot_threads?human=f",
|
92
91
|
].each do |path|
|
93
92
|
before(:all) do
|
94
|
-
|
93
|
+
get path
|
95
94
|
end
|
96
95
|
|
97
96
|
it "should return a json payload content type" do
|
@@ -1,6 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
|
3
|
-
require_relative "../../../support/shared_examples"
|
2
|
+
require "spec_helper"
|
4
3
|
require "sinatra"
|
5
4
|
require "logstash/api/modules/plugins"
|
6
5
|
require "logstash/json"
|
@@ -40,7 +39,9 @@ describe LogStash::Api::Modules::Plugins do
|
|
40
39
|
|
41
40
|
it "return a list of available plugins" do
|
42
41
|
payload["plugins"].each do |plugin|
|
43
|
-
expect
|
42
|
+
expect do
|
43
|
+
Gem::Specification.find_by_name(plugin["name"])
|
44
|
+
end.not_to raise_error
|
44
45
|
end
|
45
46
|
end
|
46
47
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
|
3
|
-
|
2
|
+
require "spec_helper"
|
3
|
+
|
4
4
|
require "sinatra"
|
5
5
|
require "logstash/api/modules/root"
|
6
6
|
require "logstash/json"
|
@@ -9,7 +9,7 @@ describe LogStash::Api::Modules::Root do
|
|
9
9
|
include_context "api setup"
|
10
10
|
|
11
11
|
it "should respond to root resource" do
|
12
|
-
|
12
|
+
get "/"
|
13
13
|
expect(last_response).to be_ok
|
14
14
|
end
|
15
15
|
|
File without changes
|
@@ -192,8 +192,8 @@ describe LogStash::Config::Mixin do
|
|
192
192
|
expect(clone.uri.to_s).to eql(uri_hidden)
|
193
193
|
end
|
194
194
|
|
195
|
-
it "should make the real URI object available under #uri" do
|
196
|
-
expect(subject.uri.uri).to be_a(
|
195
|
+
it "should make the real java.net.URI object available under #uri" do
|
196
|
+
expect(subject.uri.uri).to be_a(java.net.URI)
|
197
197
|
end
|
198
198
|
|
199
199
|
it "should obfuscate original_params" do
|
@@ -1,13 +1,32 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require "spec_helper"
|
3
|
+
require "logstash/util/dead_letter_queue_manager"
|
3
4
|
require "logstash/execution_context"
|
4
5
|
|
5
6
|
describe LogStash::ExecutionContext do
|
7
|
+
let(:pipeline) { double("pipeline") }
|
6
8
|
let(:pipeline_id) { :main }
|
9
|
+
let(:plugin_id) { "plugin_id" }
|
10
|
+
let(:plugin_type) { "plugin_type" }
|
11
|
+
let(:dlq_writer) { LogStash::Util::DummyDeadLetterQueueWriter.new }
|
7
12
|
|
8
|
-
|
13
|
+
before do
|
14
|
+
allow(pipeline).to receive(:pipeline_id).and_return(pipeline_id)
|
15
|
+
end
|
16
|
+
|
17
|
+
subject { described_class.new(pipeline, plugin_id, plugin_type, dlq_writer) }
|
9
18
|
|
10
19
|
it "returns the `pipeline_id`" do
|
11
20
|
expect(subject.pipeline_id).to eq(pipeline_id)
|
12
21
|
end
|
22
|
+
|
23
|
+
it "returns the pipeline" do
|
24
|
+
expect(subject.pipeline).to eq(pipeline)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "returns the plugin-specific dlq writer" do
|
28
|
+
expect(subject.dlq_writer.plugin_type).to eq(plugin_type)
|
29
|
+
expect(subject.dlq_writer.plugin_id).to eq(plugin_id)
|
30
|
+
expect(subject.dlq_writer.inner_writer).to eq(dlq_writer)
|
31
|
+
end
|
13
32
|
end
|