From bf953f0f90f8d90eb8db3d5839d7139d0cf05b1a Mon Sep 17 00:00:00 2001 From: Tray Torrance Date: Mon, 4 Aug 2014 11:14:11 -0700 Subject: [PATCH] Fixes finterprint filter handling of timestamp field Fixes #1572 --- lib/logstash/filters/fingerprint.rb | 6 ++--- spec/filters/fingerprint.rb | 35 +++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/lib/logstash/filters/fingerprint.rb b/lib/logstash/filters/fingerprint.rb index ce39d3c69..2bb211a66 100644 --- a/lib/logstash/filters/fingerprint.rb +++ b/lib/logstash/filters/fingerprint.rb @@ -90,15 +90,15 @@ class LogStash::Filters::Fingerprint < LogStash::Filters::Base def anonymize_openssl(data) digest = encryption_algorithm() # in JRuby 1.7.11 outputs as ASCII-8BIT - OpenSSL::HMAC.hexdigest(digest, @key, data).force_encoding(Encoding::UTF_8) + OpenSSL::HMAC.hexdigest(digest, @key, data.to_s).force_encoding(Encoding::UTF_8) end def anonymize_murmur3(value) case value when Fixnum MurmurHash3::V32.int_hash(value) - when String - MurmurHash3::V32.str_hash(value) + else + MurmurHash3::V32.str_hash(value.to_s) end end diff --git a/spec/filters/fingerprint.rb b/spec/filters/fingerprint.rb index 22fe49543..d8973441f 100644 --- a/spec/filters/fingerprint.rb +++ b/spec/filters/fingerprint.rb @@ -164,4 +164,39 @@ describe LogStash::Filters::Fingerprint do end end + context 'Timestamps' do + epoch_time = Time.at(0).gmtime + + describe 'OpenSSL Fingerprinting' do + config <<-CONFIG + filter { + fingerprint { + source => ['@timestamp'] + key => '0123' + method => 'SHA1' + } + } + CONFIG + + sample("@timestamp" => epoch_time) do + insist { subject["fingerprint"] } == '1d5379ec92d86a67cfc642d55aa050ca312d3b9a' + end + end + + describe 'MURMUR3 Fingerprinting' do + config <<-CONFIG + filter { + fingerprint { + source => ['@timestamp'] + method => 'MURMUR3' + } + } + CONFIG + + sample("@timestamp" => epoch_time) do + insist { subject["fingerprint"] } == 743372282 + end + end + end + end