logstash-filter-math 0.2 → 1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 37262009c86e48cd019b721d6bb269c0bfe52318
4
- data.tar.gz: 271fe236c1a90db7c3d1d8286140adf324f07892
3
+ metadata.gz: d4dbbbc58d14856fcd8e53f57c6897c2a2eb7221
4
+ data.tar.gz: c939090de8e97cfd20622fb6c84064f59c2e67ae
5
5
  SHA512:
6
- metadata.gz: a01b48cd38aeb46540f7ce4f1bbfb28fae2b89933f0369e9ecafa88ff34b3ad4ca351152e3f2def8e4058440bbe6eee4358a330170a5590c413a965f8fa087c4
7
- data.tar.gz: 09f83514974a21b6c35410df62ddf5d52769876fb77335a36d8bbeed64957c6f760ddf64095816fef3351af19e470e078978503cd2a234a7d9521b1041551439
6
+ metadata.gz: 4f9340a61978c42ef4c56436a4b29f15d38f1fffa433bb27bae632888b7b0e9d16232ae785752521cfa157fe4f05b0f6f5c7e47b525fda6cdbdd8ddec0090334
7
+ data.tar.gz: 4df67712a02104a781721991bf36221004056efad23a1e50c745fd8048691a8d126b9e8727001743c8b7ed93304869dc081f60b4cc857f431521e2a9f3663a37
data/Gemfile CHANGED
@@ -1,3 +1,2 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec
3
- #gem "logstash", :github => "elastic/logstash", :branch => "1.5"
@@ -46,19 +46,19 @@ class LogStash::Filters::Math < LogStash::Filters::Base
46
46
  # Check that all the fields exist and are numeric
47
47
  next unless event.include?(calculation[1])
48
48
  next unless event.include?(calculation[2])
49
- next unless event[calculation[1]] == 0 or event[calculation[1]].is_a? Float or event[calculation[1]].is_a? Integer
50
- next unless event[calculation[2]] == 0 or event[calculation[2]].is_a? Float or event[calculation[2]].is_a? Integer
49
+ next unless event.get(calculation[1]) == 0 or event.get(calculation[1]).is_a? Float or event.get(calculation[1]).is_a? Integer
50
+ next unless event.get(calculation[2]) == 0 or event.get(calculation[2]).is_a? Float or event.get(calculation[2]).is_a? Integer
51
51
  case calculation[0]
52
52
  when "add"
53
- event[calculation[3]] = event[calculation[1]] + event[calculation[2]]
53
+ event.set( calculation[3], event.get(calculation[1]) + event.get(calculation[2]) )
54
54
  when "sub"
55
- event[calculation[3]] = event[calculation[1]] - event[calculation[2]]
55
+ event.set(calculation[3], event.get(calculation[1]) - event.get(calculation[2]) )
56
56
  when "div"
57
57
  # Avoid division by zero
58
- next if event[calculation[2]] == 0
59
- event[calculation[3]] = event[calculation[1]].to_f / event[calculation[2]]
58
+ next if event.get( calculation[2] ) == 0
59
+ event.set( calculation[3], event.get( calculation[1]).to_f / event.get(calculation[2]) )
60
60
  when "mpx"
61
- event[calculation[3]] = event[calculation[1]] * event[calculation[2]]
61
+ event.set( calculation[3], event.get( calculation[1]) * event.get( calculation[2] ) )
62
62
  end # case calculation[0]
63
63
  end # for each calculate
64
64
  filter_matched(event)
@@ -1,26 +1,24 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-filter-math'
3
- s.version = '0.2'
3
+ s.version = '1.0'
4
4
  s.licenses = ['Apache License (2.0)']
5
5
  s.summary = "Do simple math functions on numeric fields."
6
6
  s.description = "This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program"
7
- s.authors = ["Elastics.co"]
8
- s.email = 'info@elastics.co'
7
+ s.authors = ["Robin Clarke"]
8
+ s.email = 'robin@robinclarke.net'
9
9
  s.homepage = "http://www.elastics.co/guide/en/logstash/current/index.html"
10
10
  s.require_paths = ["lib"]
11
11
 
12
- # Files
13
- s.files = `git ls-files`.split($\)
14
12
 
15
- # Tests
13
+ # Files
14
+ s.files = Dir['lib/**/*','spec/**/*','vendor/**/*','*.gemspec','*.md','CONTRIBUTORS','Gemfile','LICENSE','NOTICE.TXT']
15
+ # Tests
16
16
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
17
17
 
18
18
  # Special flag to let us know this is actually a logstash plugin
19
19
  s.metadata = { "logstash_plugin" => "true", "logstash_group" => "filter" }
20
20
 
21
21
  # Gem dependencies
22
- s.add_runtime_dependency "logstash-core", '>= 1.4.0', '< 3.0.0'
23
-
24
- s.add_development_dependency 'logstash-devutils', '~> 0'
22
+ s.add_runtime_dependency "logstash-core-plugin-api", "~> 2.0"
23
+ s.add_development_dependency 'logstash-devutils'
25
24
  end
26
-
@@ -12,37 +12,37 @@ describe LogStash::Filters::Math do
12
12
 
13
13
  describe "should add two integers" do
14
14
  sample( "var1" => -2, "var2" => 7 ) do
15
- expect( subject["result"] ).to eq( 5 )
15
+ expect( subject.get("result") ).to eq( 5 )
16
16
  end
17
17
  end
18
18
 
19
19
  describe "should add two floats" do
20
20
  sample( "var1" => -2.4, "var2" => 7.8 ) do
21
- expect( subject["result"] ).to eq( 5.4 )
21
+ expect( subject.get("result") ).to eq( 5.4 )
22
22
  end
23
23
  end
24
24
 
25
25
  describe "two huge numbers should add to infinity" do
26
26
  sample( "var1" => 1.79769313486232e+308, "var2" => 1e+308 ) do
27
- expect( subject["result"] ).to eq( Float::INFINITY )
27
+ expect( subject.get("result") ).to eq( Float::INFINITY )
28
28
  end
29
29
  end
30
30
 
31
31
  describe "one value being 0 should work" do
32
32
  sample( "var1" => 0, "var2" => 7.8 ) do
33
- expect( subject["result"] ).to eq( 7.8 )
33
+ expect( subject.get("result") ).to eq( 7.8 )
34
34
  end
35
35
  end
36
36
 
37
37
  describe "first value missing should result in nil" do
38
38
  sample( "var2" => 3 ) do
39
- expect( subject["result"] ).to be_nil
39
+ expect( subject.get("result") ).to be_nil
40
40
  end
41
41
  end
42
42
 
43
43
  describe "Second value missing should result in nil" do
44
44
  sample( "var1" => 3 ) do
45
- expect( subject["result"] ).to be_nil
45
+ expect( subject.get("result") ).to be_nil
46
46
  end
47
47
  end
48
48
  end
@@ -55,37 +55,37 @@ describe LogStash::Filters::Math do
55
55
 
56
56
  describe "should subtract two integers" do
57
57
  sample( "var1" => -2, "var2" => 7 ) do
58
- expect( subject["result"] ).to eq( -9 )
58
+ expect( subject.get("result") ).to eq( -9 )
59
59
  end
60
60
  end
61
61
 
62
62
  describe "should subtract two floats" do
63
63
  sample( "var1" => -2.4, "var2" => 7.8 ) do
64
- expect( subject["result"] ).to eq( -10.2 )
64
+ expect( subject.get("result") ).to eq( -10.2 )
65
65
  end
66
66
  end
67
67
 
68
68
  describe "two huge negative numbers should subtract to negative infinity" do
69
69
  sample( "var1" => -1.79769313486232e+308, "var2" => -1e+308 ) do
70
- expect( subject["result"] ).to eq( -Float::INFINITY )
70
+ expect( subject.get("result") ).to eq( -Float::INFINITY )
71
71
  end
72
72
  end
73
73
 
74
74
  describe "one value being 0 should work" do
75
75
  sample( "var1" => 0, "var2" => 7.8 ) do
76
- expect( subject["result"] ).to eq( -7.8 )
76
+ expect( subject.get("result") ).to eq( -7.8 )
77
77
  end
78
78
  end
79
79
 
80
80
  describe "first value missing should result in nil" do
81
81
  sample( "var2" => 3 ) do
82
- expect( subject["result"] ).to be_nil
82
+ expect( subject.get("result") ).to be_nil
83
83
  end
84
84
  end
85
85
 
86
86
  describe "Second value missing should result in nil" do
87
87
  sample( "var1" => 3 ) do
88
- expect( subject["result"] ).to be_nil
88
+ expect( subject.get("result") ).to be_nil
89
89
  end
90
90
  end
91
91
  end
@@ -98,37 +98,37 @@ describe LogStash::Filters::Math do
98
98
 
99
99
  describe "should multiply two integers" do
100
100
  sample( "var1" => -2, "var2" => 7 ) do
101
- expect( subject["result"] ).to eq( -14 )
101
+ expect( subject.get("result") ).to eq( -14 )
102
102
  end
103
103
  end
104
104
 
105
105
  describe "should multiply two floats" do
106
106
  sample( "var1" => -2.4, "var2" => 7.8 ) do
107
- expect( subject["result"] ).to eq( -18.72 )
107
+ expect( subject.get("result") ).to eq( -18.72 )
108
108
  end
109
109
  end
110
110
 
111
111
  describe "two huge numbers should multiply to infinity" do
112
112
  sample( "var1" => 1.79769313486232e+300, "var2" => 1e+300 ) do
113
- expect( subject["result"] ).to eq( Float::INFINITY )
113
+ expect( subject.get("result") ).to eq( Float::INFINITY )
114
114
  end
115
115
  end
116
116
 
117
117
  describe "one value being 0 should result in 0" do
118
118
  sample( "var1" => 0, "var2" => 7.8 ) do
119
- expect( subject["result"] ).to eq( 0 )
119
+ expect( subject.get("result") ).to eq( 0 )
120
120
  end
121
121
  end
122
122
 
123
123
  describe "first value missing should result in nil" do
124
124
  sample( "var2" => 3 ) do
125
- expect( subject["result"] ).to be_nil
125
+ expect( subject.get("result") ).to be_nil
126
126
  end
127
127
  end
128
128
 
129
129
  describe "Second value missing should result in nil" do
130
130
  sample( "var1" => 3 ) do
131
- expect( subject["result"] ).to be_nil
131
+ expect( subject.get("result") ).to be_nil
132
132
  end
133
133
  end
134
134
  end
@@ -141,43 +141,43 @@ describe LogStash::Filters::Math do
141
141
 
142
142
  describe "should divide two integers" do
143
143
  sample( "var1" => -2, "var2" => 7 ) do
144
- expect( subject["result"] ).to eq( -0.2857142857142857 )
144
+ expect( subject.get("result") ).to eq( -0.2857142857142857 )
145
145
  end
146
146
  end
147
147
 
148
148
  describe "should divide two floats" do
149
149
  sample( "var1" => -2.4, "var2" => 7.8 ) do
150
- expect( subject["result"] ).to eq( -0.3076923076923077 )
150
+ expect( subject.get("result") ).to eq( -0.3076923076923077 )
151
151
  end
152
152
  end
153
153
 
154
154
  describe "1 divided by a huge number should give zero" do
155
155
  sample( "var1" => 1, "var2" => 1.79769313486232e+308 ) do
156
- expect( subject["result"] ).to eq( 0 )
156
+ expect( subject.get("result") ).to eq( 0 )
157
157
  end
158
158
  end
159
159
 
160
160
  describe "First variable being zero should result in 0" do
161
161
  sample( "var1" => 0, "var2" => 7.8 ) do
162
- expect( subject["result"] ).to eq( 0 )
162
+ expect( subject.get("result") ).to eq( 0 )
163
163
  end
164
164
  end
165
165
 
166
166
  describe "Second variable being zero should result in nil (would be infinity, but this can't be represented in JSON)" do
167
167
  sample( "var1" => 2, "var2" => 0 ) do
168
- expect( subject["result"] ).to be_nil
168
+ expect( subject.get("result") ).to be_nil
169
169
  end
170
170
  end
171
171
 
172
172
  describe "first value missing should result in nil" do
173
173
  sample( "var2" => 3 ) do
174
- expect( subject["result"] ).to be_nil
174
+ expect( subject.get("result") ).to be_nil
175
175
  end
176
176
  end
177
177
 
178
178
  describe "Second value missing should result in nil" do
179
179
  sample( "var1" => 3 ) do
180
- expect( subject["result"] ).to be_nil
180
+ expect( subject.get("result") ).to be_nil
181
181
  end
182
182
  end
183
183
  end
@@ -195,7 +195,7 @@ describe LogStash::Filters::Math do
195
195
  describe "results of one calculation can be used in the next calculation"
196
196
  sample( "var1" => 3.4, "var2" => 6.6, "var3" => 4.4, "var4" => 2.4 ) do
197
197
  # I would really expect 20.0 here... what kind of floating point error is this?!
198
- expect( subject["result"] ).to eq( 20.000000000000004 )
198
+ expect( subject.get("result") ).to eq( 20.000000000000004 )
199
199
  end
200
200
  end
201
201
 
@@ -0,0 +1,2 @@
1
+ # encoding: utf-8
2
+ require "logstash/devutils/rspec/spec_helper"
metadata CHANGED
@@ -1,39 +1,33 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-math
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: '1.0'
5
5
  platform: ruby
6
6
  authors:
7
- - Elastics.co
7
+ - Robin Clarke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-17 00:00:00.000000000 Z
11
+ date: 2017-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - '>='
17
- - !ruby/object:Gem::Version
18
- version: 1.4.0
19
- - - <
16
+ - - ~>
20
17
  - !ruby/object:Gem::Version
21
- version: 3.0.0
22
- name: logstash-core
18
+ version: '2.0'
19
+ name: logstash-core-plugin-api
23
20
  prerelease: false
24
21
  type: :runtime
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - '>='
28
- - !ruby/object:Gem::Version
29
- version: 1.4.0
30
- - - <
24
+ - - ~>
31
25
  - !ruby/object:Gem::Version
32
- version: 3.0.0
26
+ version: '2.0'
33
27
  - !ruby/object:Gem::Dependency
34
28
  requirement: !ruby/object:Gem::Requirement
35
29
  requirements:
36
- - - ~>
30
+ - - '>='
37
31
  - !ruby/object:Gem::Version
38
32
  version: '0'
39
33
  name: logstash-devutils
@@ -41,23 +35,22 @@ dependencies:
41
35
  type: :development
42
36
  version_requirements: !ruby/object:Gem::Requirement
43
37
  requirements:
44
- - - ~>
38
+ - - '>='
45
39
  - !ruby/object:Gem::Version
46
40
  version: '0'
47
41
  description: This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program
48
- email: info@elastics.co
42
+ email: robin@robinclarke.net
49
43
  executables: []
50
44
  extensions: []
51
45
  extra_rdoc_files: []
52
46
  files:
53
- - .gitignore
54
47
  - Gemfile
55
48
  - LICENSE
56
49
  - README.md
57
- - Rakefile
58
50
  - lib/logstash/filters/math.rb
59
51
  - logstash-filter-math.gemspec
60
52
  - spec/filters/math_spec.rb
53
+ - spec/spec_helper.rb
61
54
  homepage: http://www.elastics.co/guide/en/logstash/current/index.html
62
55
  licenses:
63
56
  - Apache License (2.0)
@@ -86,3 +79,4 @@ specification_version: 4
86
79
  summary: Do simple math functions on numeric fields.
87
80
  test_files:
88
81
  - spec/filters/math_spec.rb
82
+ - spec/spec_helper.rb
data/.gitignore DELETED
@@ -1,4 +0,0 @@
1
- *.gem
2
- Gemfile.lock
3
- .bundle
4
- vendor
data/Rakefile DELETED
@@ -1,2 +0,0 @@
1
- require "logstash/devutils/rake"
2
- require "logstash/devutils/rake"