logstash-devutils 2.2.0-java → 2.4.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -3
- data/lib/logstash/devutils/rake/publish.rake +1 -1
- data/lib/logstash/devutils/rake/test.rake +17 -0
- data/lib/logstash/devutils/rake.rb +1 -0
- data/lib/logstash/devutils/rspec/logstash_helpers.rb +28 -4
- data/lib/logstash/devutils/rspec/spec_helper.rb +10 -1
- data/logstash-devutils.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f6acb50f9d6e040af22acda0163ef38f8bce77506f023dd8a58a4ee925d9df3c
|
4
|
+
data.tar.gz: 51c47c93c93335ed8cba0e0349dc712808051e77ca69ca8f79617eaa9442731a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8fa7d3f493f223e497c7877bfc9c6a9440a269367a02d7c6f468580f0ac6d4e6156600ba30fc2fcc831a27cef74a6e65cbfa7daebd29623042557b524a3423ff
|
7
|
+
data.tar.gz: a6530c6d9bd097ea6f081224a7ff6254e38f3d6abc400f3b4bbaca5cea7b354e4e37b60071755eef6d05bac2afce89601b53b72b4339ba15b97696dceb541cb1
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## 2.4.0
|
2
|
+
- Feat: shared test (spec) task for all! [#96](https://github.com/elastic/logstash-devutils/pull/96)
|
3
|
+
|
4
|
+
## 2.3.0
|
5
|
+
- Introduce `be_a_logstash_timestamp_equivalent_to` RSpec matcher to compare LogStash::Timestamp [#99](https://github.com/elastic/logstash-devutils/pull/99)
|
6
|
+
|
7
|
+
## 2.2.1
|
8
|
+
- Fixed `LogStashHelpers#sample` to work with pipelines whose filters add, clone, and cancel events.
|
9
|
+
|
1
10
|
## 2.2.0
|
2
11
|
- Add `allowed_lag` config for shared input interruptiblity spec
|
3
12
|
|
@@ -22,15 +31,15 @@
|
|
22
31
|
- [BREAKING] changes:
|
23
32
|
* `plugin_input` helper no longer works - simply fails with a not implemented error
|
24
33
|
* `type` and `tags` helpers have no effect - they will print a deprecation warning
|
25
|
-
* using gem **insist** is discouraged and has to be pulled in manually
|
34
|
+
* using gem **insist** is discouraged and has to be pulled in manually
|
26
35
|
(in *plugin.gemspec* `add_development_dependency 'insist'` and `require "insist"`)
|
27
36
|
* shared examples need to be explicitly required, as they are not re-used that much
|
28
37
|
(in spec_helper.rb `require "logstash/devutils/rspec/shared_examples"'`)
|
29
38
|
* `input` helper now yields a Queue-like collection (with `Queue#pop` blocking semantics)
|
30
|
-
with a default timeout polling mechanism to guard against potential dead-locks
|
39
|
+
with a default timeout polling mechanism to guard against potential dead-locks
|
31
40
|
|
32
41
|
## 1.3.6
|
33
|
-
- Revert the removal (e.g. add back) of the log4j spec helper. It is still needed for 5.x builds.
|
42
|
+
- Revert the removal (e.g. add back) of the log4j spec helper. It is still needed for 5.x builds.
|
34
43
|
|
35
44
|
## 1.3.5
|
36
45
|
- Fix spec helper method `input` generating an invalid `output_func` that returned `nil` instead of an array
|
@@ -10,7 +10,7 @@ if RUBY_PLATFORM == "java"
|
|
10
10
|
cmd = Shellwords.join(arguments)
|
11
11
|
Open3.popen3(cmd) do |_i, stdout, stderr, thr|
|
12
12
|
output = [stderr.read, stdout.read].join.strip
|
13
|
-
raise Error,
|
13
|
+
raise Error, output if thr.value.exitstatus > 0
|
14
14
|
return output
|
15
15
|
end
|
16
16
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
begin
|
2
|
+
require 'rspec/core/rake_task'
|
3
|
+
RSpec::Core::RakeTask.new(:spec) # default glob: 'spec/**{,/*/**}/*_spec.rb'
|
4
|
+
rescue LoadError
|
5
|
+
end
|
6
|
+
|
7
|
+
desc "Run tests including Java tests (if any)"
|
8
|
+
task :test => [ 'test:java', 'test:ruby' ]
|
9
|
+
namespace :test do
|
10
|
+
task :java do
|
11
|
+
gradlew = File.join(Dir.pwd, 'gradlew')
|
12
|
+
sh "#{gradlew} --no-daemon test" if File.exist?(gradlew)
|
13
|
+
end
|
14
|
+
task :ruby => :vendor do
|
15
|
+
Rake::Task[:spec].invoke
|
16
|
+
end
|
17
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require "logstash/agent"
|
2
2
|
require "logstash/event"
|
3
3
|
require "logstash/test_pipeline"
|
4
|
+
require "logstash/outputs/test_sink"
|
4
5
|
|
5
6
|
require "stud/try"
|
6
7
|
require "rspec/expectations"
|
@@ -52,11 +53,30 @@ module LogStashHelper
|
|
52
53
|
deprecated "tags(#{tags.inspect}) - let(:default_tags) are not used"
|
53
54
|
end
|
54
55
|
|
55
|
-
|
56
|
+
##
|
57
|
+
# Creates a single-example example group in the current rspec context to validate the results of filter operations.
|
58
|
+
# The current group is expected to use `LogStashHelpers#config` to provide a pipeline configuration.
|
59
|
+
#
|
60
|
+
# The provided block has access to an [Array] `results`, and also sets an unnamed `subject` that is either a
|
61
|
+
# single `LogStash::Event` or an `[Array[LogStash::Event]]` containing at least two entries.
|
62
|
+
#
|
63
|
+
# @param sample_event [String, #to_json]
|
64
|
+
# @param validation_source [:output, :queue]
|
65
|
+
# @yield creates an example with expectations provided by the block
|
66
|
+
# @return [void]
|
67
|
+
def sample(sample_event, validation_source: :output, &block)
|
68
|
+
validation_sources = [:output, :queue].freeze
|
69
|
+
fail(ArgumentError, "Unexpected source `#{validation_source.inspect}`, expected one of #{validation_sources.inspect}") unless validation_sources.include?(validation_source)
|
70
|
+
|
56
71
|
name = sample_event.is_a?(String) ? sample_event : LogStash::Json.dump(sample_event)
|
57
72
|
name = name[0..50] + "..." if name.length > 50
|
58
73
|
|
59
|
-
describe
|
74
|
+
describe name.inspect do
|
75
|
+
if validation_source == :output
|
76
|
+
let(:test_sink) { LogStash::Outputs::TestSink.new("release_on_close" => false, "store_events" => true) }
|
77
|
+
before { expect(LogStash::Outputs::TestSink).to receive(:new).and_return(test_sink) }
|
78
|
+
end
|
79
|
+
|
60
80
|
let(:pipeline) { new_pipeline_from_string(config) }
|
61
81
|
let(:event) do
|
62
82
|
sample_event = [sample_event] unless sample_event.is_a?(Array)
|
@@ -73,7 +93,11 @@ module LogStashHelper
|
|
73
93
|
# flush makes sure to empty any buffered events in the filter
|
74
94
|
pipeline.flush_filters(:final => true) { |flushed_event| results << flushed_event }
|
75
95
|
|
76
|
-
|
96
|
+
case validation_source
|
97
|
+
when :queue then pipeline.filter_queue_client.processed_events # legacy?
|
98
|
+
when :output then test_sink.event_store.to_a
|
99
|
+
else fail NotImplementedError("validation source `#{validation_source}` not implemented.")
|
100
|
+
end
|
77
101
|
end
|
78
102
|
|
79
103
|
# starting at logstash-core 5.3 an initialized pipeline need to be closed
|
@@ -83,7 +107,7 @@ module LogStashHelper
|
|
83
107
|
|
84
108
|
subject { results.length > 1 ? results : results.first }
|
85
109
|
|
86
|
-
it("
|
110
|
+
it("processes events as specified", &block)
|
87
111
|
end
|
88
112
|
end # def sample
|
89
113
|
|
@@ -38,6 +38,16 @@ else
|
|
38
38
|
LogStash::Logging::Logger::configure_logging('ERROR')
|
39
39
|
end
|
40
40
|
|
41
|
+
RSpec::Matchers.define :be_a_logstash_timestamp_equivalent_to do |expected|
|
42
|
+
# use the Timestamp compare to avoid suffering of precision loss of time format
|
43
|
+
expected = LogStash::Timestamp.new(expected) unless expected.kind_of?(LogStash::Timestamp)
|
44
|
+
description { "be a LogStash::Timestamp equivalent to #{expected}" }
|
45
|
+
|
46
|
+
match do |actual|
|
47
|
+
actual.kind_of?(LogStash::Timestamp) && actual == expected
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
41
51
|
RSpec.configure do |config|
|
42
52
|
# for now both include and extend are required because the newly refactored "input" helper method need to be visible in a "it" block
|
43
53
|
# and this is only possible by calling include on LogStashHelper
|
@@ -57,4 +67,3 @@ RSpec.configure do |config|
|
|
57
67
|
# --seed 1234
|
58
68
|
config.order = :random
|
59
69
|
end
|
60
|
-
|
data/logstash-devutils.gemspec
CHANGED
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.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-03-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -163,6 +163,7 @@ files:
|
|
163
163
|
- Rakefile
|
164
164
|
- lib/logstash/devutils/rake.rb
|
165
165
|
- lib/logstash/devutils/rake/publish.rake
|
166
|
+
- lib/logstash/devutils/rake/test.rake
|
166
167
|
- lib/logstash/devutils/rake/vendor.rake
|
167
168
|
- lib/logstash/devutils/rspec/log4j2.properties
|
168
169
|
- lib/logstash/devutils/rspec/logstash_helpers.rb
|
@@ -191,8 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
191
192
|
- !ruby/object:Gem::Version
|
192
193
|
version: '0'
|
193
194
|
requirements: []
|
194
|
-
|
195
|
-
rubygems_version: 2.7.10
|
195
|
+
rubygems_version: 3.1.6
|
196
196
|
signing_key:
|
197
197
|
specification_version: 4
|
198
198
|
summary: An assortment of tooling/libraries to make Logstash plugin development and
|