mirror of
https://github.com/elastic/logstash.git
synced 2025-04-24 06:37:19 -04:00
Unique filter and spec.
This commit is contained in:
parent
24e012516b
commit
90d3c195ff
2 changed files with 53 additions and 0 deletions
28
lib/logstash/filters/unique.rb
Normal file
28
lib/logstash/filters/unique.rb
Normal file
|
@ -0,0 +1,28 @@
|
|||
require "logstash/filters/base"
|
||||
require "logstash/namespace"
|
||||
|
||||
class LogStash::Filters::Unique < LogStash::Filters::Base
|
||||
|
||||
config_name "unique"
|
||||
milestone 1
|
||||
|
||||
# The fields on which to run the unique filter.
|
||||
config :fields, :validate => :array, :required => true
|
||||
|
||||
public
|
||||
def register
|
||||
# Nothing to do
|
||||
end # def register
|
||||
|
||||
public
|
||||
def filter(event)
|
||||
return unless filter?(event)
|
||||
|
||||
@fields.each do |field|
|
||||
return unless event[field].class == Array
|
||||
|
||||
event[field] = event[field].uniq
|
||||
end
|
||||
end # def filter
|
||||
|
||||
end # class Logstash::Filters::Unique
|
25
spec/filters/unique.rb
Normal file
25
spec/filters/unique.rb
Normal file
|
@ -0,0 +1,25 @@
|
|||
require "test_utils"
|
||||
require "logstash/filters/unique"
|
||||
|
||||
describe LogStash::Filters::Unique do
|
||||
extend LogStash::RSpec
|
||||
|
||||
describe "unique when field is array" do
|
||||
config <<-CONFIG
|
||||
filter {
|
||||
unique {
|
||||
fields => ["noisy_field"]
|
||||
}
|
||||
}
|
||||
CONFIG
|
||||
|
||||
sample("noisy_field" => %w(cat dog cat cat)) do
|
||||
insist { subject["noisy_field"] } == %w(cat dog)
|
||||
end
|
||||
|
||||
sample("not_an_array" => "Hello, world!") do
|
||||
insist { subject["not_an_array"] } == "Hello, world!"
|
||||
end
|
||||
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue