logstash-devutils 1.3.6-java → 2.0.0-java

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
  SHA256:
3
- metadata.gz: f974a7823953f6c66b9e88fbba39f8b920c41c3226363bc241072e57ce55fab3
4
- data.tar.gz: d22e06e09082adb9b93d93aa8c5fafdf88638544625396a832fafa7bb5befc4d
3
+ metadata.gz: 9529292d4be6bf7ae845758206433d9fff38a8fdf068d4eee49581a595022563
4
+ data.tar.gz: '09bac2f78a40a15e156f893929a0113bb815234f5e24dacd0b806d94a7db7784'
5
5
  SHA512:
6
- metadata.gz: 52f7e7169fd63718caf9dcfed7b594784cf639d4fca4534f68eaaef41aff38ad7415cc17b13c8d1bd2e3fe354f0d00996f757d999cdbf1ad217f177bbd87c29b
7
- data.tar.gz: 22564997b310028d25d0ad22a9500a3998bf19130c9eafc92c329fd95a87464f60ee5aeab0387ec34a1ffdef50f35e710d8e40f27b5e022831e67fb01669e42d
6
+ metadata.gz: 2c1f07ee224a06900492e5421031b1f8e4a15705edf0feb91bfe4279853cb30a3bd248933209e20e16d91e19c65f7b8dd6e29b5a75ee293b80c5e3c5032aa4b9
7
+ data.tar.gz: 1b151df23dd77671425a0874a4b0903de5460d10f93a8b521c8019ff4f71965b8ff52089d2978eebe3dfd0b91e1342dac9ecaffbde6a3fa3735a7a938482b81e
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## 2.0.0
2
+ - Reinvented helpers using Java pipeline, only LS >= 6.x (JRuby >= 9.1) is supported.
3
+ - [BREAKING] changes:
4
+ * `plugin_input` helper no longer works - simply fails with a not implemented error
5
+ * `type` and `tags` helpers have no effect - they will print a deprecation warning
6
+ * using gem **insist** is discouraged and has to be pulled in manually
7
+ (in *plugin.gemspec* `add_development_dependency 'insist'` and `require "insist"`)
8
+ * shared examples need to be explicitly required, as they are not re-used that much
9
+ (in spec_helper.rb `require "logstash/devutils/rspec/shared_examples"'`)
10
+ * `input` helper now yields a Queue-like collection (with `Queue#pop` blocking semantics)
11
+ with a default timeout polling mechanism to guard against potential dead-locks
12
+
1
13
  ## 1.3.6
2
14
  - Revert the removal (e.g. add back) of the log4j spec helper. It is still needed for 5.x builds.
3
15
 
data/Gemfile CHANGED
@@ -1,2 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec
3
+
4
+ if Dir.exist?(logstash_path = ENV["LOGSTASH_PATH"])
5
+ gem 'logstash-core', path: "#{logstash_path}/logstash-core"
6
+ end
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ raise "only JRuby is supported" unless defined? JRUBY_VERSION
2
+ require 'bundler/gem_tasks'
@@ -1,16 +1,37 @@
1
1
  require "logstash/agent"
2
- require "logstash/pipeline"
3
2
  require "logstash/event"
3
+ require "logstash/test_pipeline"
4
+
4
5
  require "stud/try"
5
6
  require "rspec/expectations"
6
- require "thread"
7
+
8
+ require "logstash/environment"
7
9
 
8
10
  module LogStashHelper
9
- class TestPipeline < LogStash::Pipeline
10
- public :filter
11
- public :flush_filters
11
+
12
+ @@excluded_tags = {
13
+ :integration => true,
14
+ :redis => true,
15
+ :socket => true,
16
+ :performance => true,
17
+ :couchdb => true,
18
+ :elasticsearch => true,
19
+ :elasticsearch_secure => true,
20
+ :export_cypher => true
21
+ }
22
+
23
+ if LogStash::Environment.windows?
24
+ @@excluded_tags[:unix] = true
25
+ else
26
+ @@excluded_tags[:windows] = true
27
+ end
28
+
29
+ def self.excluded_tags
30
+ @@excluded_tags
12
31
  end
13
32
 
33
+ TestPipeline = LogStash::TestPipeline
34
+
14
35
  DEFAULT_NUMBER_OF_TRY = 5
15
36
  DEFAULT_EXCEPTIONS_FOR_TRY = [RSpec::Expectations::ExpectationNotMetError]
16
37
 
@@ -23,12 +44,12 @@ module LogStashHelper
23
44
  end # def config
24
45
 
25
46
  def type(default_type)
26
- let(:default_type) { default_type }
47
+ deprecated "type(#{default_type.inspect}) no longer has any effect"
27
48
  end
28
49
 
29
50
  def tags(*tags)
30
51
  let(:default_tags) { tags }
31
- puts "Setting default tags: #{tags}"
52
+ deprecated "tags(#{tags.inspect}) - let(:default_tags) are not used"
32
53
  end
33
54
 
34
55
  def sample(sample_event, &block)
@@ -46,18 +67,14 @@ module LogStashHelper
46
67
  end
47
68
 
48
69
  let(:results) do
49
- results = []
50
- pipeline.instance_eval { @filters.each(&:register) }
70
+ pipeline.filters.each(&:register)
51
71
 
52
- event.each do |e|
53
- # filter call the block on all filtered events, included new events added by the filter
54
- pipeline.filter(e) { |filtered_event| results << filtered_event }
55
- end
72
+ pipeline.run_with(event)
56
73
 
57
74
  # flush makes sure to empty any buffered events in the filter
58
75
  pipeline.flush_filters(:final => true) { |flushed_event| results << flushed_event }
59
76
 
60
- results.select { |e| !e.cancelled? }
77
+ pipeline.filter_queue_client.processed_events
61
78
  end
62
79
 
63
80
  # starting at logstash-core 5.3 an initialized pipeline need to be closed
@@ -71,68 +88,97 @@ module LogStashHelper
71
88
  end
72
89
  end # def sample
73
90
 
74
- def input(config, &block)
75
- pipeline = new_pipeline_from_string(config)
76
- queue = Queue.new
77
-
78
- pipeline.instance_eval do
79
- # create closure to capture queue
80
- @output_func = lambda { |event| queue << event }
81
-
82
- # output_func is now a method, call closure
83
- def output_func(event)
84
- @output_func.call(event)
85
- # We want to return nil or [] since outputs aren't used here
86
- # NOTE: In Ruby 1.9.x, Queue#<< returned nil, but in 2.x it returns the queue itself
87
- # So we need to be explicit about the return
88
- []
89
- end
90
- end
91
+ def input(config_string, test_sink: {}, &block); require 'logstash/outputs/test_sink'
92
+ config_parts = [ config_source(config_string), test_sink_output_source(**test_sink) ]
93
+
94
+ # TODO unwrapping output from LogStash::OutputDelegator is cumbersome
95
+ instances = LogStash::Outputs::TestSink::TRACKER.keys.to_a
96
+ pipeline = new_pipeline(config_parts)
91
97
 
92
- pipeline_thread = Thread.new { pipeline.run }
93
- sleep 0.1 while !pipeline.ready?
98
+ start_thread = pipeline.start_and_wait
94
99
 
100
+ queue = (LogStash::Outputs::TestSink::TRACKER.keys.to_a - instances).first.event_store
101
+
102
+ # NOTE: we used to pass a Queue here, now its a Java List/Queue collection
95
103
  result = block.call(pipeline, queue)
96
104
 
97
105
  pipeline.shutdown
98
- pipeline_thread.join
106
+ start_thread.join if start_thread.alive?
99
107
 
100
108
  result
101
- end # def input
109
+ end
102
110
 
111
+ # @deprecated
103
112
  def plugin_input(plugin, &block)
104
- queue = Queue.new
105
-
106
- input_thread = Thread.new do
107
- plugin.run(queue)
108
- end
109
- result = block.call(queue)
110
-
111
- plugin.do_stop
112
- input_thread.join
113
- result
113
+ raise NotImplementedError.new("#{__method__} no longer supported; please refactor")
114
114
  end
115
115
 
116
116
  def agent(&block)
117
-
118
117
  it("agent(#{caller[0].gsub(/ .*/, "")}) runs") do
119
118
  pipeline = new_pipeline_from_string(config)
120
119
  pipeline.run
121
120
  block.call
122
121
  end
123
- end # def agent
122
+ end
124
123
 
125
- def new_pipeline_from_string(string)
126
- if TestPipeline.instance_methods.include?(:pipeline_config)
127
- settings = ::LogStash::SETTINGS.clone
124
+ def new_pipeline_from_string(config_string, pipeline_id: :main, test_sink: {})
125
+ config_parts = [ config_source(config_string) ]
128
126
 
129
- config_part = org.logstash.common.SourceWithMetadata.new("config_string", "config_string", string)
127
+ # include a default test_sink output if no outputs given -> we're using it to track processed events
128
+ # NOTE: a output is required with the JavaPipeline otherwise no processing happen (despite filters being defined)
129
+ if !OUTPUT_BLOCK_RE.match(config_string)
130
+ config_parts << test_sink_output_source(**test_sink)
131
+ elsif test_sink && !test_sink.empty?
132
+ warn "#{__method__} test_sink: #{test_sink.inspect} options have no effect as config_string has an output"
133
+ end
130
134
 
131
- pipeline_config = LogStash::Config::PipelineConfig.new(LogStash::Config::Source::Local, :main, config_part, settings)
132
- TestPipeline.new(pipeline_config)
133
- else
134
- TestPipeline.new(string)
135
+ if !INPUT_BLOCK_RE.match(config_string)
136
+ # NOTE: currently using manual batch to push events down the pipe, so an input isn't required
135
137
  end
138
+
139
+ new_pipeline(config_parts, pipeline_id)
140
+ end
141
+
142
+ def new_pipeline(config_parts, pipeline_id = :main, settings = ::LogStash::SETTINGS.clone)
143
+ pipeline_config = LogStash::Config::PipelineConfig.new(LogStash::Config::Source::Local, pipeline_id, config_parts, settings)
144
+ TestPipeline.new(pipeline_config)
145
+ end
146
+
147
+ OUTPUT_BLOCK_RE = defined?(LogStash::Config::Source::Local::ConfigStringLoader::OUTPUT_BLOCK_RE) ?
148
+ LogStash::Config::Source::Local::ConfigStringLoader::OUTPUT_BLOCK_RE : /output *{/
149
+ private_constant :OUTPUT_BLOCK_RE
150
+
151
+
152
+ INPUT_BLOCK_RE = defined?(LogStash::Config::Source::Local::ConfigStringLoader::INPUT_BLOCK_RE) ?
153
+ LogStash::Config::Source::Local::ConfigStringLoader::INPUT_BLOCK_RE : /input *{/
154
+ private_constant :INPUT_BLOCK_RE
155
+
156
+ private
157
+
158
+ def config_source(config_string)
159
+ org.logstash.common.SourceWithMetadata.new("string", "config_string", config_string)
136
160
  end
161
+
162
+ def test_sink_output_source(**config)
163
+ config = { id: current_spec_id }.merge(config).map { |k, v| "#{k} => #{v.is_a?(String) ? v.inspect : v}" }.join(' ')
164
+ output_string = "output { test_sink { #{config} } }" # TODO opts for performance store_events: false
165
+ org.logstash.common.SourceWithMetadata.new("string", "test_sink_output", output_string)
166
+ end
167
+
168
+ def current_spec_id
169
+ @__current_example_metadata&.[](:location) || 'spec-sample'
170
+ end
171
+
172
+ if RUBY_VERSION > '2.5'
173
+ def deprecated(msg)
174
+ Kernel.warn(msg, uplevel: 1)
175
+ end
176
+ else # due JRuby 9.1 (Ruby 2.3)
177
+ def deprecated(msg)
178
+ loc = caller_locations[1]
179
+ Kernel.warn("#{loc.path}:#{loc.lineno}: warning: #{msg}")
180
+ end
181
+ end
182
+
137
183
  end # module LogStash
138
184
 
@@ -14,10 +14,7 @@ end
14
14
 
15
15
  require "logstash-core"
16
16
  require "logstash/logging"
17
- require "logstash/environment"
18
17
  require "logstash/devutils/rspec/logstash_helpers"
19
- require "logstash/devutils/rspec/shared_examples"
20
- require "insist"
21
18
 
22
19
  Thread.abort_on_exception = true
23
20
 
@@ -28,35 +25,32 @@ unless java.lang.System.getProperty("log4j.configurationFile")
28
25
  end
29
26
 
30
27
  $TESTING = true
31
- if RUBY_VERSION < "1.9.2"
32
- $stderr.puts "Ruby 1.9.2 or later is required. (You are running: " + RUBY_VERSION + ")"
33
- raise LoadError
28
+ if RUBY_VERSION < "2.3"
29
+ raise LoadError.new("Ruby >= 2.3.0 or later is required. (You are running: " + RUBY_VERSION + ")")
34
30
  end
35
31
 
36
- if ENV["TEST_DEBUG"]
37
- LogStash::Logging::Logger::configure_logging("WARN")
32
+ if level = (ENV["TEST_DEBUG"] || ENV['LOGGER_LEVEL'])
33
+ logger, level = level.split('=') # 'logstash.filters.grok=DEBUG'
34
+ level, logger = logger, nil if level.nil? # only level given e.g. 'DEBUG'
35
+ level = org.apache.logging.log4j.Level.toLevel(level, org.apache.logging.log4j.Level::WARN)
36
+ LogStash::Logging::Logger::configure_logging(level.to_s, logger)
38
37
  else
39
- LogStash::Logging::Logger::configure_logging("OFF")
38
+ LogStash::Logging::Logger::configure_logging('ERROR')
40
39
  end
41
40
 
42
- # removed the strictness check, it did not seem to catch anything
43
-
44
41
  RSpec.configure do |config|
45
42
  # for now both include and extend are required because the newly refactored "input" helper method need to be visible in a "it" block
46
43
  # and this is only possible by calling include on LogStashHelper
47
44
  config.include LogStashHelper
48
45
  config.extend LogStashHelper
49
46
 
50
- exclude_tags = { :redis => true, :socket => true, :performance => true, :couchdb => true, :elasticsearch => true, :elasticsearch_secure => true, :export_cypher => true, :integration => true }
47
+ config.filter_run_excluding LogStashHelper.excluded_tags
51
48
 
52
- if LogStash::Environment.windows?
53
- exclude_tags[:unix] = true
54
- else
55
- exclude_tags[:windows] = true
49
+ config.around(:each) do |example|
50
+ @__current_example_metadata = example.metadata
51
+ example.run
56
52
  end
57
53
 
58
- config.filter_run_excluding exclude_tags
59
-
60
54
  # Run specs in random order to surface order dependencies. If you find an
61
55
  # order dependency and want to debug it, you can fix the order by providing
62
56
  # the seed, which is printed after each run.
@@ -0,0 +1,90 @@
1
+ # encoding: utf-8
2
+ require "logstash/namespace"
3
+ require "logstash/outputs/base"
4
+ require "logstash/errors"
5
+
6
+ # This output simply discards (but tracks) received events.
7
+ class LogStash::Outputs::TestSink < LogStash::Outputs::Base
8
+
9
+ concurrency :shared
10
+
11
+ config_name "test_sink"
12
+
13
+ # Whether we're tracking events received or simply act as a true sink.
14
+ config :store_events, :validate => :boolean, :default => true
15
+ # Plugin could not release itself (on close) if needed to keep its events around.
16
+ config :release_on_close, :validate => :boolean, :default => true
17
+ # Even poll timeout in milliseconds (for input plugin tests consuming events).
18
+ # HINT: set to 0 (null) to wait forever.
19
+ config :event_poll_timeout, :default => 5 * 1000
20
+
21
+ TRACKER = java.util.WeakHashMap.new
22
+
23
+ # @override plugin hook
24
+ def register
25
+ TRACKER[self] = Queue.new(@event_poll_timeout.to_f * 1000)
26
+ end
27
+
28
+ # @override plugin impl
29
+ def receive(event)
30
+ event_store << event if store_events?
31
+ end
32
+
33
+ # @override plugin hook
34
+ def close
35
+ TRACKER.delete(self) if release_on_close?
36
+ end
37
+
38
+ def store_events?
39
+ !!@store_events
40
+ end
41
+
42
+ def release_on_close?
43
+ !!@release_on_close
44
+ end
45
+
46
+ # Clears the event store.
47
+ def clear!
48
+ event_store.clear
49
+ end
50
+
51
+ # @return [Queue] (enumerable) event store
52
+ def event_store
53
+ TRACKER[self] || raise("#{self} not registered; please call plugin.register before use")
54
+ end
55
+
56
+ # TODO refactor to java.util.concurrent.ConcurrentLinkedQueue
57
+ # Interestingly, using a ConcurrentLinkedQueue gets specs that depend on pop-ing events
58
+ # from the output (e.g. syslog input plugin) passing fine with the old Ruby pipeline.
59
+ # The Java pipeline seems to reach a shutdown before the input yielded events are to be consumed.
60
+
61
+ class Queue < java.util.concurrent.LinkedBlockingQueue
62
+
63
+ java_import java.util.concurrent.TimeoutException
64
+
65
+ MILLISECONDS = java.util.concurrent.TimeUnit::MILLISECONDS
66
+ private_constant :MILLISECONDS
67
+
68
+ def initialize(poll_timeout = nil)
69
+ super()
70
+ @timeout = poll_timeout.to_i
71
+ end
72
+
73
+ # Ruby Queue like pop-er with (default) blocking.
74
+ # @see Queue#pop
75
+ def pop(non_block = nil)
76
+ # for compatibility we're making it behave like Ruby's Queue
77
+ return poll if non_block
78
+ @timeout.zero? ? take :
79
+ (poll(@timeout, MILLISECONDS) || timeout!(__method__))
80
+ end
81
+ alias deq pop
82
+ alias shift pop
83
+
84
+ private
85
+
86
+ def timeout!(op)
87
+ raise TimeoutException.new("#{op.inspect} did not complete (in #{@timeout}ms)")
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,166 @@
1
+ require "logstash/pipeline"
2
+ require "logstash/java_pipeline"
3
+
4
+ module LogStash
5
+ class TestPipeline < LogStash::JavaPipeline
6
+ public :flush_filters
7
+
8
+ def run_with(events)
9
+ if inputs&.any? # will work but might be unintended
10
+ config = "\n #{config_str}" if $VERBOSE
11
+ warn "#{self} pipeline is getting events pushed manually while having inputs: #{inputs.inspect} #{config}"
12
+ end
13
+ # TODO could we handle a generator (Enumerator) ?
14
+ queue.write_client.push_batch events.to_a
15
+ queue_read_client = filter_queue_client
16
+ # potentially handle run_with called multiple times (re-use the same instance) :
17
+ if queue_read_client.is_a?(EventTrackingQueueReadClientDelegator)
18
+ queue_read_client.reset_events!
19
+ else
20
+ # start_worker using @filter_queue_client on 6.3, since 6.4 a reader method is used
21
+ # to make things compatible with 6.3 we're assigning the @filter_queue_client ivar
22
+ @filter_queue_client = EventTrackingQueueReadClientDelegator.new queue_read_client
23
+ end
24
+ run
25
+ end
26
+
27
+ # @override for WorkerLoop to pick it up
28
+ # @note only works since LS 6.4 (need to use tha actual ivar for 6.3)
29
+ def filter_queue_client
30
+ @filter_queue_client || super
31
+ end
32
+
33
+ java_import org.apache.logging.log4j.ThreadContext unless const_defined?(:ThreadContext)
34
+
35
+ def start_and_wait
36
+ parent_thread = Thread.current
37
+ @finished_execution.make_false
38
+ @finished_run&.make_false # only since 6.5
39
+
40
+ @thread = Thread.new do
41
+ begin
42
+ LogStash::Util.set_thread_name("pipeline.#{pipeline_id}")
43
+ ThreadContext.put("pipeline.id", pipeline_id)
44
+ run
45
+ @finished_run&.make_true
46
+ rescue => e
47
+ close
48
+ parent_thread.raise(e)
49
+ ensure
50
+ @finished_execution.make_true
51
+ end
52
+ end
53
+
54
+ unless wait_until_started
55
+ raise "failed to start pipeline: #{self}\n with config: #{config_str.inspect}"
56
+ end
57
+
58
+ @thread
59
+ end
60
+
61
+ class EventTrackingQueueReadClientDelegator
62
+ include org.logstash.execution.QueueReadClient
63
+ java_import org.logstash.execution.QueueReadClient
64
+
65
+ attr_reader :processed_events
66
+
67
+ def initialize(delegate)
68
+ # NOTE: can not use LogStash::MemoryReadClient#read_batch due its JavaObject wrapping
69
+ @delegate = delegate.to_java(QueueReadClient)
70
+ @processed_events = []
71
+ end
72
+
73
+ # @override QueueBatch readBatch() throws InterruptedException;
74
+ def readBatch
75
+ QueueBatchDelegator.new(self, @delegate.read_batch)
76
+ end
77
+
78
+ # @override void closeBatch(QueueBatch batch) throws IOException;
79
+ def closeBatch(batch)
80
+ @delegate.close_batch(batch)
81
+ end
82
+
83
+ # @override boolean isEmpty();
84
+ def isEmpty
85
+ @delegate.empty?
86
+ end
87
+
88
+ # @override QueueBatch newBatch();
89
+ def newBatch
90
+ @delegate.new_batch
91
+ end
92
+
93
+ # @override void startMetrics(QueueBatch batch);
94
+ def startMetrics(batch)
95
+ @delegate.start_metrics(batch)
96
+ end
97
+
98
+ # @override void addOutputMetrics(int filteredSize);
99
+ def addOutputMetrics(filteredSize)
100
+ @delegate.add_output_metrics(filteredSize)
101
+ end
102
+
103
+ # @override void addFilteredMetrics(int filteredSize);
104
+ def addFilteredMetrics(filteredSize)
105
+ @delegate.add_filtered_metrics(filteredSize)
106
+ end
107
+
108
+ # @override
109
+ def set_batch_dimensions(batch_size, batch_delay)
110
+ @delegate.set_batch_dimensions(batch_size, batch_delay)
111
+ end
112
+
113
+ # @override
114
+ def close
115
+ @delegate.close
116
+ end
117
+
118
+ # @override dispatch to delegate
119
+ def method_missing(method, *args)
120
+ @delegate.public_send(method, *args)
121
+ end
122
+
123
+ def filtered_events(events)
124
+ @processed_events.concat(events)
125
+ end
126
+
127
+ def reset_events!
128
+ @processed_events = []
129
+ end
130
+
131
+ end
132
+
133
+ class QueueBatchDelegator
134
+ include org.logstash.execution.QueueBatch
135
+
136
+ def initialize(event_tracker, delegate)
137
+ @event_tracker = event_tracker
138
+ @delegate = delegate
139
+ end
140
+
141
+ # @override RubyArray to_a();
142
+ def to_a
143
+ @delegate.to_a.tap do |events|
144
+ # filters out rogue (cancelled) events
145
+ @event_tracker.filtered_events events
146
+ end
147
+ end
148
+
149
+ # @override int filteredSize();
150
+ def filteredSize
151
+ @delegate.to_java.filtered_size
152
+ end
153
+
154
+ # @override void merge(IRubyObject event);
155
+ def merge(event)
156
+ @delegate.merge(event)
157
+ end
158
+
159
+ # @override void close() throws IOException;
160
+ def close
161
+ @delegate.close
162
+ end
163
+
164
+ end
165
+ end
166
+ end
@@ -1,28 +1,30 @@
1
- if RUBY_PLATFORM != "java"
2
- raise "Only JRuby is supported"
3
- end
1
+ raise "Only JRuby is supported" if RUBY_PLATFORM != "java"
4
2
 
5
3
  Gem::Specification.new do |spec|
6
4
  files = %x{git ls-files}.split("\n")
7
5
 
8
6
  spec.name = "logstash-devutils"
9
- spec.version = "1.3.6"
10
- spec.licenses = ["Apache License (2.0)"]
11
- spec.summary = "logstash-devutils"
12
- spec.description = "logstash-devutils"
7
+ spec.version = "2.0.0"
8
+ spec.license = "Apache-2.0"
13
9
  spec.authors = ["Elastic"]
14
10
  spec.email = "info@elastic.co"
15
11
  spec.homepage = "http://www.elastic.co/guide/en/logstash/current/index.html"
16
12
 
13
+ spec.summary = %q{An assortment of tooling/libraries to make Logstash plugin development and releasing a bit easier.}
14
+ spec.description = %q{logstash-devutils gem is meant to be used as a development dependency from other plugins/gems.}
15
+
17
16
  spec.files = files
18
17
  spec.require_paths << "lib"
19
18
 
20
19
  spec.platform = "java"
21
20
 
22
- # Please note that devutils is meant to be used as a developement dependency from other
23
- # plugins/gems. As such, devutils OWN development dependencies (any add_development_dependency)
24
- # will be ignored when bundling a plugin/gem which uses/depends on devutils. This is
25
- # why all devutils own dependencies should normally be specified as add_runtime_dependency.
21
+ spec.required_ruby_version = '>= 2.3'
22
+
23
+ # Please note that devutils is meant to be used as a development dependency from other plugins/gems.
24
+ # As such, devutils' OWN development dependencies (any add_development_dependency) will be ignored when
25
+ # bundling a plugin/gem which uses/depends on devutils.
26
+ #
27
+ # This is why all devutils own dependencies should normally be specified as add_runtime_dependency.
26
28
 
27
29
  # It is important to specify rspec "~> 3.0" and not "~> 3.0.0" (or any other version to the patch level)
28
30
  # otherwise the version constrain will have to be met up to the minor release version and only allow
@@ -35,12 +37,11 @@ Gem::Specification.new do |spec|
35
37
  spec.add_runtime_dependency "rake" # MIT License
36
38
  spec.add_runtime_dependency "gem_publisher" # MIT License
37
39
  spec.add_runtime_dependency "minitar" # GPL2|Ruby License
38
- spec.add_runtime_dependency "logstash-core-plugin-api", "<= 2.99", ">= 2.0"
39
40
 
40
- # Should be removed as soon as the plugins are using insist by their
41
- # own, and not relying on being required by the spec helper.
42
- # (some plugins does it, some use insist throw spec_helper)
43
- spec.add_runtime_dependency "insist", "1.0.0" # (Apache 2.0 license)
41
+ spec.add_runtime_dependency "logstash-core", ">= 6.3"
42
+
43
+ # Some plugins are (still) using insist by their own, but we no longer force this dependency on others.
44
+ #spec.add_runtime_dependency "insist" # (Apache 2.0 license)
44
45
  spec.add_runtime_dependency "kramdown", '1.14.0'
45
46
  spec.add_runtime_dependency "stud", " >= 0.0.20"
46
47
  spec.add_runtime_dependency "fivemat"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-devutils
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.6
4
+ version: 2.0.0
5
5
  platform: java
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-03 00:00:00.000000000 Z
11
+ date: 2020-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -83,37 +83,17 @@ dependencies:
83
83
  - !ruby/object:Gem::Dependency
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "<="
87
- - !ruby/object:Gem::Version
88
- version: '2.99'
89
86
  - - ">="
90
87
  - !ruby/object:Gem::Version
91
- version: '2.0'
92
- name: logstash-core-plugin-api
88
+ version: '6.3'
89
+ name: logstash-core
93
90
  prerelease: false
94
91
  type: :runtime
95
92
  version_requirements: !ruby/object:Gem::Requirement
96
93
  requirements:
97
- - - "<="
98
- - !ruby/object:Gem::Version
99
- version: '2.99'
100
94
  - - ">="
101
95
  - !ruby/object:Gem::Version
102
- version: '2.0'
103
- - !ruby/object:Gem::Dependency
104
- requirement: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - '='
107
- - !ruby/object:Gem::Version
108
- version: 1.0.0
109
- name: insist
110
- prerelease: false
111
- type: :runtime
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - '='
115
- - !ruby/object:Gem::Version
116
- version: 1.0.0
96
+ version: '6.3'
117
97
  - !ruby/object:Gem::Dependency
118
98
  requirement: !ruby/object:Gem::Requirement
119
99
  requirements:
@@ -156,7 +136,8 @@ dependencies:
156
136
  - - ">="
157
137
  - !ruby/object:Gem::Version
158
138
  version: '0'
159
- description: logstash-devutils
139
+ description: logstash-devutils gem is meant to be used as a development dependency
140
+ from other plugins/gems.
160
141
  email: info@elastic.co
161
142
  executables: []
162
143
  extensions: []
@@ -165,6 +146,7 @@ files:
165
146
  - CHANGELOG.md
166
147
  - Gemfile
167
148
  - LICENSE
149
+ - Rakefile
168
150
  - lib/logstash/devutils/rake.rb
169
151
  - lib/logstash/devutils/rake/publish.rake
170
152
  - lib/logstash/devutils/rake/vendor.rake
@@ -172,10 +154,12 @@ files:
172
154
  - lib/logstash/devutils/rspec/logstash_helpers.rb
173
155
  - lib/logstash/devutils/rspec/shared_examples.rb
174
156
  - lib/logstash/devutils/rspec/spec_helper.rb
157
+ - lib/logstash/outputs/test_sink.rb
158
+ - lib/logstash/test_pipeline.rb
175
159
  - logstash-devutils.gemspec
176
160
  homepage: http://www.elastic.co/guide/en/logstash/current/index.html
177
161
  licenses:
178
- - Apache License (2.0)
162
+ - Apache-2.0
179
163
  metadata: {}
180
164
  post_install_message:
181
165
  rdoc_options: []
@@ -186,7 +170,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
186
170
  requirements:
187
171
  - - ">="
188
172
  - !ruby/object:Gem::Version
189
- version: '0'
173
+ version: '2.3'
190
174
  required_rubygems_version: !ruby/object:Gem::Requirement
191
175
  requirements:
192
176
  - - ">="
@@ -197,5 +181,6 @@ rubyforge_project:
197
181
  rubygems_version: 2.6.13
198
182
  signing_key:
199
183
  specification_version: 4
200
- summary: logstash-devutils
184
+ summary: An assortment of tooling/libraries to make Logstash plugin development and
185
+ releasing a bit easier.
201
186
  test_files: []