sensu-extension 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0680704719c55e664017e91b929e6d135e368b77
4
- data.tar.gz: 533607808f1461e94c480f89fc1e1f55ebf875cd
3
+ metadata.gz: 89f56995875626d482529538e59ff354aa515c59
4
+ data.tar.gz: d3fa3efd43cc6ba69badddb4fd062736ee414c7d
5
5
  SHA512:
6
- metadata.gz: 0d4b442dd58950a85146b0c96047311d83abc35e080aae08b6a769637f20288580343c0a5bf16d0d98a3fed96743e16d8f59a2db7a6b9209504cfe5919e8fe88
7
- data.tar.gz: d56ea3ff5ba6e3cd776a4139b9dfa9bd39c7c3584c5eeb26e172230574e5dc6fe85b119d181bfb8fe814db7082ea106d8612161bb5260776082d3ed589d1e9cd
6
+ metadata.gz: 568e9391e63a6661442ef7fccbbe585c14c726db4ccb005f60fa71362f1eb90bc5591b10b8c895011624888350612aeed8f50e528f8058835525bafd5983c604
7
+ data.tar.gz: 566da231ab3061573cb7765f9b3a12406ac4c36b59ca146d6e36d73972a1fd00072a19b61398d65c0ab10747de31caa1b7c579d180d29ef69e01fa8ae29daec0
@@ -57,9 +57,11 @@ module Sensu
57
57
  # an output string and exit code.
58
58
  #
59
59
  # @param data [Object, nil] provided by Sensu.
60
+ # @param options [Hash] provided by Sensu, may contain
61
+ # connection objects, eg. redis.
60
62
  # @param callback [Proc] provided by Sensu, expecting to be
61
63
  # called with two parameters, an output string and exit code.
62
- def run(data=nil, &callback)
64
+ def run(data=nil, options={}, &callback)
63
65
  callback.call("noop", 0)
64
66
  end
65
67
 
@@ -93,12 +95,16 @@ module Sensu
93
95
  # not override this method!
94
96
  #
95
97
  # @param data [Object, nil) to dup() and pass to run().
98
+ # @param options [Hash] to pass to run().
96
99
  # @param callback [Proc] to pass to run().
97
- def safe_run(data=nil, &callback)
100
+ def safe_run(data=nil, options={}, &callback)
98
101
  begin
99
- data ? run(data.dup, &callback) : run(&callback)
102
+ data_copy = data ? data.dup : data
103
+ run(data_copy, options, &callback)
100
104
  rescue => error
101
- callback.call(error.to_s, 2)
105
+ klass = error.class.name
106
+ backtrace = error.backtrace.map { |line| "\s\s#{line}" }.join("\n")
107
+ callback.call("#{klass}: #{error}\n#{backtrace}", 2)
102
108
  end
103
109
  end
104
110
 
@@ -1,5 +1,5 @@
1
1
  module Sensu
2
2
  module Extension
3
- CATEGORIES = [:bridges, :checks, :mutators, :handlers]
3
+ CATEGORIES = [:bridges, :checks, :filters, :mutators, :handlers]
4
4
  end
5
5
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "sensu-extension"
5
- spec.version = "1.0.0"
5
+ spec.version = "1.1.0"
6
6
  spec.authors = ["Sean Porter"]
7
7
  spec.email = ["portertech@gmail.com"]
8
8
  spec.summary = "The Sensu extension library"
@@ -20,5 +20,6 @@ Gem::Specification.new do |spec|
20
20
  spec.add_development_dependency "bundler", "~> 1.6"
21
21
  spec.add_development_dependency "rake"
22
22
  spec.add_development_dependency "rspec"
23
- spec.add_development_dependency "codeclimate-test-reporter"
23
+ spec.add_development_dependency "bouncy-castle-java" if RUBY_PLATFORM =~ /java/
24
+ spec.add_development_dependency "codeclimate-test-reporter" unless RUBY_VERSION < "1.9"
24
25
  end
@@ -59,6 +59,19 @@ describe "Sensu::Extension::Base" do
59
59
  end
60
60
  end
61
61
 
62
+ it "can run with options" do
63
+ async_wrapper do
64
+ callback = Proc.new do |output, status|
65
+ expect(output).to eq("noop")
66
+ expect(status).to eq(0)
67
+ async_done
68
+ end
69
+ event = {:foo => 1}
70
+ options = {:test => 1}
71
+ @extension.run(event, options, &callback)
72
+ end
73
+ end
74
+
62
75
  it "can pass duplicated event data to run" do
63
76
  async_wrapper do
64
77
  event = {:foo => 1}
@@ -70,11 +83,23 @@ describe "Sensu::Extension::Base" do
70
83
  end
71
84
  end
72
85
 
86
+ it "can pass options to run" do
87
+ async_wrapper do
88
+ event = {:foo => 1}
89
+ options = {:test => 1}
90
+ @extension.safe_run(event, options) do |output, status|
91
+ expect(output).to eq("noop")
92
+ expect(status).to eq(0)
93
+ async_done
94
+ end
95
+ end
96
+ end
97
+
73
98
  it "can catch some run errors" do
74
99
  async_wrapper do
75
100
  @extension.safe_run do |output, status|
76
101
  raise "boom" if status == 0
77
- expect(output).to eq("boom")
102
+ expect(output.split("\n").first).to eq("RuntimeError: boom")
78
103
  expect(status).to eq(2)
79
104
  async_done
80
105
  end
@@ -21,6 +21,16 @@ describe "Sensu::Extension::Check" do
21
21
  end
22
22
  end
23
23
 
24
+ describe "Sensu::Extension::Filter" do
25
+ include Helpers
26
+
27
+ it "inherits Base" do
28
+ expect(Sensu::Extension::Filter.superclass).to eq(Sensu::Extension::Base)
29
+ extension = Sensu::Extension::Filter.new
30
+ expect(extension).to respond_to(:name, :description, :definition, :safe_run, :stop, :has_key?, :[])
31
+ end
32
+ end
33
+
24
34
  describe "Sensu::Extension::Mutator" do
25
35
  include Helpers
26
36
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-extension
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Porter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-12 00:00:00.000000000 Z
11
+ date: 2014-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sensu-em
@@ -119,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  version: '0'
120
120
  requirements: []
121
121
  rubyforge_project:
122
- rubygems_version: 2.2.0
122
+ rubygems_version: 2.2.2
123
123
  signing_key:
124
124
  specification_version: 4
125
125
  summary: The Sensu extension library