Sha256: c2462a8cfdb3b3278455043e6a2133597c16b29bf80ddee3a7b6e1439d87b6e9
Contents?: true
Size: 1.99 KB
Versions: 7
Compression:
Stored size: 1.99 KB
Contents
# encoding: utf-8 require "logstash/devutils/rspec/spec_helper" require "logstash/filters/mutate" # running mutate which depends on grok outside a logstash package means # LOGSTASH_HOME will not be defined, so let's set it here # before requiring the grok filter unless LogStash::Environment.const_defined?(:LOGSTASH_HOME) LogStash::Environment::LOGSTASH_HOME = File.expand_path("../../../", __FILE__) end describe LogStash::Filters::Mutate do let(:pipeline) { LogStash::Pipeline.new(config) } let(:events) do arr = event.is_a?(Array) ? event : [event] arr.map do |evt| LogStash::Event.new(evt.is_a?(String) ? LogStash::Json.load(evt) : evt) end end let(:results) do pipeline.instance_eval { @filters.each(&:register) } results = [] events.each do |evt| # filter call the block on all filtered events, included new events added by the filter pipeline.filter(evt) do |filtered_event| results.push(filtered_event) end end pipeline.flush_filters(:final => true) { |flushed_event| results << flushed_event } results.select { |e| !e.cancelled? } end describe 'MUTATE-33: multi stage with json, grok and mutate, Case mutation' do let(:event) do "{\"message\":\"hello WORLD\",\"lower1\":\"PPQQRRSS\",\"lower2\":\"pppqqq\"}" end let(:config) do <<-CONFIG filter { grok { match => { "message" => "(?:hello) %{WORD:bar}" } break_on_match => false singles => true } mutate { lowercase => [ "bar", "lower1", "lower2" ] } } CONFIG end it 'change case of the target, bar value is lowercase' do result = results.first expect(result["bar"]).to eq('world') end it 'change case of the target, lower1 value is lowercase' do result = results.first expect(result["lower1"]).to eq("ppqqrrss") end it 'change case of the target, lower2 value is lowercase' do result = results.first expect(result["lower2"]).to eq("pppqqq") end end end
Version data entries
7 entries across 7 versions & 1 rubygems