fiveruns-dash-ruby 0.8.8 → 0.8.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -60,6 +60,10 @@ module Fiveruns::Dash
60
60
  Instrument.add(*meths, &block)
61
61
  end
62
62
 
63
+ def annotate_exceptions(&block)
64
+ ::Fiveruns::Dash.session.exception_recorder.add_annotation(&block)
65
+ end
66
+
63
67
  # Merge in an existing recipe
64
68
  # call-seq:
65
69
  # add_recipe :ruby
@@ -58,15 +58,21 @@ module Fiveruns
58
58
  @session = session
59
59
  end
60
60
 
61
+ def exception_annotations
62
+ @exception_annotaters ||= []
63
+ end
64
+
61
65
  def ignore_exception?(exception)
62
66
  RULES.any? do |rule|
63
67
  rule.call(exception)
64
68
  end
65
69
  end
66
-
70
+
67
71
  def record(exception, sample=nil)
68
72
  return if ignore_exception? exception
69
-
73
+
74
+ run_annotations(sample)
75
+
70
76
  data = extract_data_from_exception(exception)
71
77
  # Allow the sample data to override the exception's display name.
72
78
  data[:name] = sample.delete(:name) if sample and sample[:name]
@@ -91,11 +97,23 @@ module Fiveruns
91
97
  def reset
92
98
  exceptions.clear
93
99
  end
94
-
100
+
101
+ def add_annotation(&annotation)
102
+ exception_annotations << annotation
103
+ end
104
+
95
105
  #######
96
106
  private
97
107
  #######
98
108
 
109
+ def run_annotations(sample)
110
+ exception_annotations.each do |annotation|
111
+ annotation.call(sample)
112
+ end
113
+
114
+ return sample
115
+ end
116
+
99
117
  def flatten_sample(sample)
100
118
  case sample
101
119
  when Hash
@@ -64,7 +64,7 @@ module Fiveruns::Dash
64
64
  #puts "Sending #{metric_payload.map { |met| [met[:name], met[:values].size] }.inspect} metrics"
65
65
  metric_payload
66
66
  end
67
-
67
+
68
68
  def exception_data
69
69
  exception_recorder.data
70
70
  end
@@ -79,7 +79,19 @@ class ConfigurationTest < Test::Unit::TestCase
79
79
  assert_equal %w(bar foo), @config.metrics.map { |m| m.name }.map { |i| i.to_s }.sort
80
80
  end
81
81
  end
82
-
82
+
83
+ context 'for exception annotations' do
84
+ should 'add a block to the list of annotations' do
85
+ config.annotate_exceptions do |metadata|
86
+ metadata[:foo] = 'flop!'
87
+ end
88
+
89
+ assert_equal 1,
90
+ ::Fiveruns::Dash.session.
91
+ exception_recorder.exception_annotations.length
92
+ end
93
+ end
94
+
83
95
  end
84
96
 
85
97
  #######
@@ -69,6 +69,17 @@ class ExceptionRecorderTest < Test::Unit::TestCase
69
69
  should "not serialize sample" do
70
70
  assert_equal({'key' => 'value'}, recorder.data.first[:sample])
71
71
  end
72
+ should 'run annotations on exception samples' do
73
+ recorder.reset
74
+ recorder.add_annotation do |metadata|
75
+ metadata.delete :key
76
+ metadata[:foo] = 1
77
+ 'flop'
78
+ end
79
+ recorder.record(build('Some exception'), {:key => 1})
80
+
81
+ assert_equal({'foo' => '1'}, recorder.data.first[:sample])
82
+ end
72
83
  end
73
84
 
74
85
  context "when recording exceptions with the same message and backtrace" do
data/test/session_test.rb CHANGED
@@ -43,7 +43,36 @@ class SessionTest < Test::Unit::TestCase
43
43
  end
44
44
 
45
45
  end
46
-
46
+
47
+ context "exceptions" do
48
+
49
+ setup do
50
+ @ex = generate_exception
51
+ end
52
+
53
+ should 'add exceptions to the exception recorder' do
54
+ @session.add_exception(@ex)
55
+
56
+ assert_exception_matches @ex, @session.exception_recorder.data.first
57
+ end
58
+
59
+ end
60
+
61
+ end
62
+
63
+ protected
64
+
65
+ def assert_exception_matches(exception, hash)
66
+ assert_equal exception.class.to_s, hash[:name]
67
+ assert_equal exception.message, hash[:message]
68
+ end
69
+
70
+ def generate_exception
71
+ begin
72
+ raise Exception.new("OHS NOES")
73
+ rescue Exception => e
74
+ e
75
+ end
47
76
  end
48
77
 
49
78
  end
data/version.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 8
4
- :patch: 8
4
+ :patch: 9
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fiveruns-dash-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.8
4
+ version: 0.8.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - FiveRuns Development Team
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-03-19 00:00:00 -07:00
12
+ date: 2009-03-25 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -32,7 +32,6 @@ files:
32
32
  - lib/fiveruns/dash/host.rb
33
33
  - lib/fiveruns/dash/instrument.rb
34
34
  - lib/fiveruns/dash/metric.rb
35
- - lib/fiveruns/dash/read
36
35
  - lib/fiveruns/dash/recipe.rb
37
36
  - lib/fiveruns/dash/reporter.rb
38
37
  - lib/fiveruns/dash/scm.rb