mirror of
https://github.com/elastic/logstash.git
synced 2025-04-24 14:47:19 -04:00
Adding test-suite for alter plugin
Bugfix for using fallback values in coalesce LOGSTASH-891 Bugfix of typos in configuration logger.error string Small improvement allow sprintf in test value for condrewrite and condrewriteother
This commit is contained in:
parent
3cbab882d7
commit
415911f42d
2 changed files with 134 additions and 7 deletions
|
@ -61,7 +61,7 @@ class LogStash::Filters::Alter < LogStash::Filters::Base
|
||||||
@condrewrite_parsed = []
|
@condrewrite_parsed = []
|
||||||
@condrewrite.nil? or @condrewrite.each_slice(3) do |field, expected, replacement|
|
@condrewrite.nil? or @condrewrite.each_slice(3) do |field, expected, replacement|
|
||||||
if [field, expected, replacement].any? {|n| n.nil?}
|
if [field, expected, replacement].any? {|n| n.nil?}
|
||||||
@logger.error("Invalid condrewrte configuration. condrewrite has to define 3 elements per config entry", :file => file, :expected => expected, :replacement => replacement)
|
@logger.error("Invalid condrewrte configuration. condrewrite has to define 3 elements per config entry", :field => field, :expected => expected, :replacement => replacement)
|
||||||
raise "Bad configuration, aborting."
|
raise "Bad configuration, aborting."
|
||||||
end
|
end
|
||||||
@condrewrite_parsed << {
|
@condrewrite_parsed << {
|
||||||
|
@ -74,7 +74,7 @@ class LogStash::Filters::Alter < LogStash::Filters::Base
|
||||||
@condrewriteother_parsed = []
|
@condrewriteother_parsed = []
|
||||||
@condrewriteother.nil? or @condrewriteother.each_slice(4) do |field, expected, replacement_field, replacement_value|
|
@condrewriteother.nil? or @condrewriteother.each_slice(4) do |field, expected, replacement_field, replacement_value|
|
||||||
if [field, expected, replacement_field, replacement_value].any? {|n| n.nil?}
|
if [field, expected, replacement_field, replacement_value].any? {|n| n.nil?}
|
||||||
@logger.error("Invalid condrewrteother configuration. condrewriteother has to define 4 elements per config entry", :file => file, :expected => expected, :replacement_field => replacementfield, :replacement_value => replacementvalue)
|
@logger.error("Invalid condrewrteother configuration. condrewriteother has to define 4 elements per config entry", :field => field, :expected => expected, :replacement_field => replacement_field, :replacement_value => replacement_value)
|
||||||
raise "Bad configuration, aborting."
|
raise "Bad configuration, aborting."
|
||||||
end
|
end
|
||||||
@condrewriteother_parsed << {
|
@condrewriteother_parsed << {
|
||||||
|
@ -119,14 +119,14 @@ class LogStash::Filters::Alter < LogStash::Filters::Base
|
||||||
|
|
||||||
if event[field].is_a?(Array)
|
if event[field].is_a?(Array)
|
||||||
event[field] = event[field].map do |v|
|
event[field] = event[field].map do |v|
|
||||||
if v == expected
|
if v == event.sprintf(expected)
|
||||||
v = event.sprintf(replacement)
|
v = event.sprintf(replacement)
|
||||||
else
|
else
|
||||||
v
|
v
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if event[field] == expected
|
if event[field] == event.sprintf(expected)
|
||||||
event[field] = event.sprintf(replacement)
|
event[field] = event.sprintf(replacement)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -143,12 +143,12 @@ class LogStash::Filters::Alter < LogStash::Filters::Base
|
||||||
|
|
||||||
if event[field].is_a?(Array)
|
if event[field].is_a?(Array)
|
||||||
event[field].each do |v|
|
event[field].each do |v|
|
||||||
if v == expected
|
if v == event.sprintf(expected)
|
||||||
event[replacement_field] = event.sprintf(replacement_value)
|
event[replacement_field] = event.sprintf(replacement_value)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if event[field] == expected
|
if event[field] == event.sprintf(expected)
|
||||||
event[replacement_field] = event.sprintf(replacement_value)
|
event[replacement_field] = event.sprintf(replacement_value)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -162,7 +162,7 @@ class LogStash::Filters::Alter < LogStash::Filters::Base
|
||||||
subst_array = config[:subst_array]
|
subst_array = config[:subst_array]
|
||||||
|
|
||||||
substitution_parsed = subst_array.map { |x| event.sprintf(x) }
|
substitution_parsed = subst_array.map { |x| event.sprintf(x) }
|
||||||
not_nul_index = substitution_parsed.find_index { |x| not x.nil? and not x.eql?("nil") }
|
not_nul_index = substitution_parsed.find_index { |x| not x.nil? and not x.eql?("nil") and not (not x.index("%").nil? && x.match(/%\{[^}]\}/).nil?) }
|
||||||
if not not_nul_index.nil?
|
if not not_nul_index.nil?
|
||||||
event[field] = substitution_parsed[not_nul_index]
|
event[field] = substitution_parsed[not_nul_index]
|
||||||
end
|
end
|
||||||
|
|
127
spec/filters/alter.rb
Normal file
127
spec/filters/alter.rb
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
require "test_utils"
|
||||||
|
require "logstash/filters/alter"
|
||||||
|
|
||||||
|
describe LogStash::Filters::Alter do
|
||||||
|
extend LogStash::RSpec
|
||||||
|
|
||||||
|
describe "condrewrite with static values" do
|
||||||
|
config <<-CONFIG
|
||||||
|
filter {
|
||||||
|
alter {
|
||||||
|
condrewrite => ["rewrite-me", "hello", "goodbye"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CONFIG
|
||||||
|
|
||||||
|
sample "@fields" => {
|
||||||
|
"rewrite-me" => "hello"
|
||||||
|
} do
|
||||||
|
insist { subject["rewrite-me"] } == "goodbye"
|
||||||
|
end
|
||||||
|
|
||||||
|
sample "@fields" => {
|
||||||
|
"rewrite-me" => "greetings"
|
||||||
|
} do
|
||||||
|
insist { subject["rewrite-me"] } == "greetings"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "condrewrite with dynamic values" do
|
||||||
|
config <<-CONFIG
|
||||||
|
filter {
|
||||||
|
alter {
|
||||||
|
condrewrite => ["rewrite-me", "%{test}", "%{rewrite-value}"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CONFIG
|
||||||
|
|
||||||
|
sample "@fields" => {
|
||||||
|
"rewrite-me" => "hello",
|
||||||
|
"test" => "hello",
|
||||||
|
"rewrite-value" => "goodbye"
|
||||||
|
} do
|
||||||
|
insist { subject["rewrite-me"] } == "goodbye"
|
||||||
|
end
|
||||||
|
|
||||||
|
sample "@fields" => {
|
||||||
|
"rewrite-me" => "hello"
|
||||||
|
#Missing test and rewrite fields
|
||||||
|
} do
|
||||||
|
insist { subject["rewrite-me"] } == "hello"
|
||||||
|
end
|
||||||
|
|
||||||
|
sample "@fields" => {
|
||||||
|
"rewrite-me" => "%{test}"
|
||||||
|
#Missing test and rewrite fields
|
||||||
|
} do
|
||||||
|
insist { subject["rewrite-me"] } == "%{rewrite-value}"
|
||||||
|
end
|
||||||
|
|
||||||
|
sample "@fields" => {
|
||||||
|
"rewrite-me" => "hello",
|
||||||
|
"test" => "hello"
|
||||||
|
#Missing rewrite value
|
||||||
|
} do
|
||||||
|
insist { subject["rewrite-me"] } == "%{rewrite-value}"
|
||||||
|
end
|
||||||
|
|
||||||
|
sample "@fields" => {
|
||||||
|
"rewrite-me" => "greetings",
|
||||||
|
"test" => "hello"
|
||||||
|
} do
|
||||||
|
insist { subject["rewrite-me"] } == "greetings"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "condrewriteother" do
|
||||||
|
config <<-CONFIG
|
||||||
|
filter {
|
||||||
|
alter {
|
||||||
|
condrewriteother => ["test-me", "hello", "rewrite-me","goodbye"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CONFIG
|
||||||
|
|
||||||
|
sample "@fields" => {
|
||||||
|
"test-me" => "hello"
|
||||||
|
} do
|
||||||
|
insist { subject["rewrite-me"] } == "goodbye"
|
||||||
|
end
|
||||||
|
|
||||||
|
sample "@fields" => {
|
||||||
|
"test-me" => "hello",
|
||||||
|
"rewrite-me" => "hello2"
|
||||||
|
} do
|
||||||
|
insist { subject["rewrite-me"] } == "goodbye"
|
||||||
|
end
|
||||||
|
|
||||||
|
sample "@fields" => {
|
||||||
|
"test-me" => "greetings"
|
||||||
|
} do
|
||||||
|
insist { subject["rewrite-me"] }.nil?
|
||||||
|
end
|
||||||
|
|
||||||
|
sample "@fields" => {
|
||||||
|
"test-me" => "greetings",
|
||||||
|
"rewrite-me" => "hello2"
|
||||||
|
} do
|
||||||
|
insist { subject["rewrite-me"] } == "hello2"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "coalesce" do
|
||||||
|
config <<-CONFIG
|
||||||
|
filter {
|
||||||
|
alter {
|
||||||
|
coalesce => ["coalesce-me", "%{non-existing-field}", "mydefault"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CONFIG
|
||||||
|
|
||||||
|
sample "@fields" => {
|
||||||
|
"coalesce-me" => "Hello"
|
||||||
|
} do
|
||||||
|
insist { subject["coalesce-me"] } == "mydefault"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Add table
Add a link
Reference in a new issue