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

Version Path
logstash-filter-mutate-2.0.6 spec/filters/integration/multi_stage_spec.rb
logstash-filter-mutate-2.0.5 spec/filters/integration/multi_stage_spec.rb
logstash-filter-mutate-2.0.3 spec/filters/integration/multi_stage_spec.rb
logstash-filter-mutate-2.0.2 spec/filters/integration/multi_stage_spec.rb
logstash-filter-mutate-2.0.1 spec/filters/integration/multi_stage_spec.rb
logstash-filter-mutate-2.0.0 spec/filters/integration/multi_stage_spec.rb
logstash-filter-mutate-1.0.2 spec/filters/integration/multi_stage_spec.rb