logstash-devutils 2.0.0-java → 2.1.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: 9529292d4be6bf7ae845758206433d9fff38a8fdf068d4eee49581a595022563
4
- data.tar.gz: '09bac2f78a40a15e156f893929a0113bb815234f5e24dacd0b806d94a7db7784'
3
+ metadata.gz: 337f5f3afb2fb0f3cdadd3638a51544ae9ef9341d1e0b85c2e04e73d57444b95
4
+ data.tar.gz: e22d45719fec1178d3b8ddf37f74143079f966284d20bd0e62bebb3705ee57ca
5
5
  SHA512:
6
- metadata.gz: 2c1f07ee224a06900492e5421031b1f8e4a15705edf0feb91bfe4279853cb30a3bd248933209e20e16d91e19c65f7b8dd6e29b5a75ee293b80c5e3c5032aa4b9
7
- data.tar.gz: 1b151df23dd77671425a0874a4b0903de5460d10f93a8b521c8019ff4f71965b8ff52089d2978eebe3dfd0b91e1342dac9ecaffbde6a3fa3735a7a938482b81e
6
+ metadata.gz: ca692d8bf918ed22d32a931807fd1c3b1d6803f6ef651c68d450fdcf60740fe171ab1c7e217b4fb53c79d4090f9de45232afd1459529b3f08d96452236b5ef04
7
+ data.tar.gz: 63db7429bda9155d9dc8ccb50aa8b94550ce11c642b4af926277ebaaf7a30fdbfdbb59bddfa4671edb680acfa8f289cd3c1febfa1d194598aa1c180cdadfc55d
@@ -1,3 +1,19 @@
1
+ ## 2.1.0
2
+ - Remove ruby pipeline dependency
3
+
4
+ ## 2.0.4
5
+ - Fix: avoid double registering filters on `sample` spec helper
6
+
7
+ ## 2.0.3
8
+ - Fix: add missing `events` method to QueuedBatchDelegator, which was causing test failures
9
+ after https://github.com/elastic/logstash/pull/11737 was committed.
10
+
11
+ ## 2.0.2
12
+ - Fix: add plain codec as runtime dependency for TestPipeline helper
13
+
14
+ ## 2.0.1
15
+ - Fix: unwrap output and refactor test sink (#82)
16
+
1
17
  ## 2.0.0
2
18
  - Reinvented helpers using Java pipeline, only LS >= 6.x (JRuby >= 9.1) is supported.
3
19
  - [BREAKING] changes:
data/Gemfile CHANGED
@@ -3,4 +3,5 @@ gemspec
3
3
 
4
4
  if Dir.exist?(logstash_path = ENV["LOGSTASH_PATH"])
5
5
  gem 'logstash-core', path: "#{logstash_path}/logstash-core"
6
+ gem 'logstash-core-plugin-api', path: "#{logstash_path}/logstash-core-plugin-api"
6
7
  end
@@ -67,8 +67,7 @@ module LogStashHelper
67
67
  end
68
68
 
69
69
  let(:results) do
70
- pipeline.filters.each(&:register)
71
-
70
+ # Java pipeline (since 6.1) registers filters from start_workers
72
71
  pipeline.run_with(event)
73
72
 
74
73
  # flush makes sure to empty any buffered events in the filter
@@ -88,16 +87,21 @@ module LogStashHelper
88
87
  end
89
88
  end # def sample
90
89
 
90
+ org.logstash.config.ir.compiler.OutputStrategyExt::SimpleAbstractOutputStrategyExt.class_eval do
91
+ field_reader :output # available since LS 6.3
92
+ end
93
+
91
94
  def input(config_string, test_sink: {}, &block); require 'logstash/outputs/test_sink'
92
95
  config_parts = [ config_source(config_string), test_sink_output_source(**test_sink) ]
93
96
 
94
- # TODO unwrapping output from LogStash::OutputDelegator is cumbersome
95
- instances = LogStash::Outputs::TestSink::TRACKER.keys.to_a
96
97
  pipeline = new_pipeline(config_parts)
97
98
 
98
- start_thread = pipeline.start_and_wait
99
+ output_delegator = pipeline.outputs.last # LogStash::OutputDelegator
100
+ fail('test_sink output expected') unless output_delegator.config_name.eql?('test_sink')
101
+ test_sink_output = output_delegator.strategy.to_java.output
102
+ queue = test_sink_output.init_event_store
99
103
 
100
- queue = (LogStash::Outputs::TestSink::TRACKER.keys.to_a - instances).first.event_store
104
+ start_thread = pipeline.start_and_wait
101
105
 
102
106
  # NOTE: we used to pass a Queue here, now its a Java List/Queue collection
103
107
  result = block.call(pipeline, queue)
@@ -29,7 +29,7 @@ if RUBY_VERSION < "2.3"
29
29
  raise LoadError.new("Ruby >= 2.3.0 or later is required. (You are running: " + RUBY_VERSION + ")")
30
30
  end
31
31
 
32
- if level = (ENV["TEST_DEBUG"] || ENV['LOGGER_LEVEL'])
32
+ if level = (ENV['LOG_LEVEL'] || ENV['LOGGER_LEVEL'] || ENV["TEST_DEBUG"])
33
33
  logger, level = level.split('=') # 'logstash.filters.grok=DEBUG'
34
34
  level, logger = logger, nil if level.nil? # only level given e.g. 'DEBUG'
35
35
  level = org.apache.logging.log4j.Level.toLevel(level, org.apache.logging.log4j.Level::WARN)
@@ -22,7 +22,7 @@ class LogStash::Outputs::TestSink < LogStash::Outputs::Base
22
22
 
23
23
  # @override plugin hook
24
24
  def register
25
- TRACKER[self] = Queue.new(@event_poll_timeout.to_f * 1000)
25
+ TRACKER[self] = @_event_store || init_event_store
26
26
  end
27
27
 
28
28
  # @override plugin impl
@@ -32,7 +32,8 @@ class LogStash::Outputs::TestSink < LogStash::Outputs::Base
32
32
 
33
33
  # @override plugin hook
34
34
  def close
35
- TRACKER.delete(self) if release_on_close?
35
+ TRACKER.delete(self)
36
+ @_event_store = false if release_on_close?
36
37
  end
37
38
 
38
39
  def store_events?
@@ -50,7 +51,24 @@ class LogStash::Outputs::TestSink < LogStash::Outputs::Base
50
51
 
51
52
  # @return [Queue] (enumerable) event store
52
53
  def event_store
53
- TRACKER[self] || raise("#{self} not registered; please call plugin.register before use")
54
+ if @_event_store.nil?
55
+ warn("#{self} event store not initialized (call plugin.register to initialize)", caller_locations(2))
56
+ return init_event_store
57
+ elsif @_event_store.eql?(false)
58
+ warn("#{self} closed - event store no longer available (release_on_close => false if you need to retain events)", caller_locations(2))
59
+ return nil
60
+ end
61
+ @_event_store
62
+ end
63
+
64
+ def init_event_store
65
+ @_event_store = Queue.new(@event_poll_timeout.to_f * 1000)
66
+ end
67
+
68
+ private
69
+
70
+ def warn(msg, callstack = nil)
71
+ Kernel.warn("#{msg}#{callstack ? " called from #{callstack.first}" : nil}")
54
72
  end
55
73
 
56
74
  # TODO refactor to java.util.concurrent.ConcurrentLinkedQueue
@@ -1,4 +1,3 @@
1
- require "logstash/pipeline"
2
1
  require "logstash/java_pipeline"
3
2
 
4
3
  module LogStash
@@ -151,6 +150,13 @@ module LogStash
151
150
  @delegate.to_java.filtered_size
152
151
  end
153
152
 
153
+ def events
154
+ @delegate.events.tap do |events|
155
+ # filters out rogue (cancelled) events
156
+ @event_tracker.filtered_events events
157
+ end
158
+ end
159
+
154
160
  # @override void merge(IRubyObject event);
155
161
  def merge(event)
156
162
  @delegate.merge(event)
@@ -4,7 +4,7 @@ Gem::Specification.new do |spec|
4
4
  files = %x{git ls-files}.split("\n")
5
5
 
6
6
  spec.name = "logstash-devutils"
7
- spec.version = "2.0.0"
7
+ spec.version = "2.1.0"
8
8
  spec.license = "Apache-2.0"
9
9
  spec.authors = ["Elastic"]
10
10
  spec.email = "info@elastic.co"
@@ -45,4 +45,5 @@ Gem::Specification.new do |spec|
45
45
  spec.add_runtime_dependency "kramdown", '1.14.0'
46
46
  spec.add_runtime_dependency "stud", " >= 0.0.20"
47
47
  spec.add_runtime_dependency "fivemat"
48
+ spec.add_runtime_dependency "logstash-codec-plain"
48
49
  end
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: 2.0.0
4
+ version: 2.1.0
5
5
  platform: java
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-11 00:00:00.000000000 Z
11
+ date: 2020-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ name: logstash-codec-plain
146
+ prerelease: false
147
+ type: :runtime
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  description: logstash-devutils gem is meant to be used as a development dependency
140
154
  from other plugins/gems.
141
155
  email: info@elastic.co