mirror of
https://github.com/elastic/logstash.git
synced 2025-04-23 22:27:21 -04:00
Make multiline tests feasible with the new test framework
This commit is contained in:
parent
4c74190a51
commit
87bbb3efd8
2 changed files with 48 additions and 8 deletions
25
spec/filters/multiline.rb
Normal file
25
spec/filters/multiline.rb
Normal file
|
@ -0,0 +1,25 @@
|
|||
require "test_utils"
|
||||
require "logstash/filters/multiline"
|
||||
|
||||
describe LogStash::Filters::Multiline do
|
||||
extend LogStash::RSpec
|
||||
|
||||
describe "simple multiline" do
|
||||
# The logstash config goes here.
|
||||
# At this time, only filters are supported.
|
||||
config <<-CONFIG
|
||||
filter {
|
||||
multiline {
|
||||
pattern => "^\\s"
|
||||
what => previous
|
||||
}
|
||||
}
|
||||
CONFIG
|
||||
|
||||
sample [ "hello world", " second line", "another first line" ] do
|
||||
insist { subject.length } == 2
|
||||
insist { subject[0].message } == "hello world\n second line"
|
||||
insist { subject[1].message } == "another first line"
|
||||
end
|
||||
end
|
||||
end
|
|
@ -29,17 +29,32 @@ module LogStash
|
|||
|
||||
filters = @filters
|
||||
describe event do
|
||||
if event.is_a?(String)
|
||||
subject { LogStash::Event.new("@message" => [event]) }
|
||||
else
|
||||
subject { LogStash::Event.new(event) }
|
||||
end
|
||||
|
||||
before :all do
|
||||
filters.each do |filter|
|
||||
filter.filter(subject)
|
||||
# Coerce to an array of LogStash::Event
|
||||
event = [event] unless event.is_a?(Array)
|
||||
event = event.collect do |e|
|
||||
if e.is_a?(String)
|
||||
LogStash::Event.new("@message" => e)
|
||||
else
|
||||
LogStash::Event.new(e)
|
||||
end
|
||||
end
|
||||
|
||||
results = []
|
||||
event.each do |e|
|
||||
filters.each do |filter|
|
||||
filter.filter(e)
|
||||
results << e unless e.cancelled?
|
||||
end
|
||||
end
|
||||
filters.select { |f| f.respond_to?(:flush) }.each do |filter|
|
||||
event = filter.flush
|
||||
results += event if event
|
||||
end
|
||||
|
||||
@results = results
|
||||
end
|
||||
subject { @results }
|
||||
it("when processed", &block)
|
||||
end
|
||||
end # def sample
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue