harness 0.2.4 → 0.2.5
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.
- data/lib/harness/adapters/librato_adapter.rb +1 -3
- data/lib/harness/instrumentation.rb +4 -2
- data/lib/harness/integration/action_controller.rb +6 -6
- data/lib/harness/integration/action_mailer.rb +6 -7
- data/lib/harness/integration/action_view.rb +6 -7
- data/lib/harness/integration/active_support.rb +6 -6
- data/lib/harness/version.rb +1 -1
- data/test/integration/instrumentation_test.rb +22 -0
- data/test/integration/integrations/action_view_test.rb +13 -3
- data/test/test_helper.rb +8 -0
- data/test/unit/adapters/librato_adapter_test.rb +7 -14
- metadata +16 -22
@@ -1,6 +1,8 @@
|
|
1
1
|
ActiveSupport::Notifications.subscribe %r{.+} do |*args|
|
2
2
|
event = ActiveSupport::Notifications::Event.new(*args)
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
unless event.payload[:exception]
|
5
|
+
Harness::Gauge.from_event(event).log if event.payload[:gauge]
|
6
|
+
Harness::Counter.from_event(event).log if event.payload[:counter]
|
7
|
+
end
|
6
8
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
events = %w(write_fragment read_fragment expire_fragment write_page expire_page process_action send_file)
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
ActiveSupport::Notifications.
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
events.each do |name|
|
4
|
+
ActiveSupport::Notifications.subscribe "#{name}.action_controller" do |*args|
|
5
|
+
event = ActiveSupport::Notifications::Event.new(*args)
|
6
|
+
gauge = Harness::Gauge.from_event event
|
7
|
+
gauge.log
|
8
|
+
end
|
9
9
|
end
|
@@ -1,10 +1,9 @@
|
|
1
1
|
events = %w(receive deliver)
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
ActiveSupport::Notifications.
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
events.each do |name|
|
4
|
+
ActiveSupport::Notifications.subscribe "#{name}.action_mailer" do |*args|
|
5
|
+
event = ActiveSupport::Notifications::Event.new(*args)
|
6
|
+
gauge = Harness::Gauge.from_event event
|
7
|
+
gauge.log
|
8
|
+
end
|
9
9
|
end
|
10
|
-
|
@@ -1,10 +1,9 @@
|
|
1
1
|
events = %w(render_template render_partial)
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
ActiveSupport::Notifications.
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
events.each do |name|
|
4
|
+
ActiveSupport::Notifications.subscribe "#{name}.action_view" do |*args|
|
5
|
+
event = ActiveSupport::Notifications::Event.new(*args)
|
6
|
+
gauge = Harness::Gauge.from_event event
|
7
|
+
gauge.log
|
8
|
+
end
|
9
9
|
end
|
10
|
-
|
@@ -1,9 +1,9 @@
|
|
1
1
|
events = %w(cache_read cache_generate cache_fetch_hit cache_write cache_delete)
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
ActiveSupport::Notifications.
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
events.each do |name|
|
4
|
+
ActiveSupport::Notifications.subscribe "#{name}.active_support" do |*args|
|
5
|
+
event = ActiveSupport::Notifications::Event.new(*args)
|
6
|
+
gauge = Harness::Gauge.from_event event
|
7
|
+
gauge.log
|
8
|
+
end
|
9
9
|
end
|
data/lib/harness/version.rb
CHANGED
@@ -25,4 +25,26 @@ class ActiveSupportTestCase < IntegrationTest
|
|
25
25
|
assert_counter_logged "test-counter"
|
26
26
|
assert_gauge_logged "test-gauge"
|
27
27
|
end
|
28
|
+
|
29
|
+
def test_does_not_log_counter_on_exception
|
30
|
+
begin
|
31
|
+
ActiveSupport::Notifications.instrument "counter_test.harness", :counter => true do |args|
|
32
|
+
raise
|
33
|
+
end
|
34
|
+
rescue
|
35
|
+
end
|
36
|
+
|
37
|
+
refute_counter_logged "counter_test.harness"
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_does_not_log_gauge_on_exception
|
41
|
+
begin
|
42
|
+
ActiveSupport::Notifications.instrument "gauge_test.harness", :gauge => true do |args|
|
43
|
+
raise
|
44
|
+
end
|
45
|
+
rescue
|
46
|
+
end
|
47
|
+
|
48
|
+
refute_gauge_logged "gauge_test.harness"
|
49
|
+
end
|
28
50
|
end
|
@@ -13,10 +13,20 @@ class ActionViewIntegration < IntegrationTest
|
|
13
13
|
assert_gauge_logged "render_partial.action_view"
|
14
14
|
end
|
15
15
|
|
16
|
+
def test_skips_internal_partial_events
|
17
|
+
instrument "!render_partial"
|
18
|
+
|
19
|
+
refute_gauge_logged "!render_partial.action_view"
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_skips_internal_template_events
|
23
|
+
instrument "!render_template"
|
24
|
+
|
25
|
+
refute_gauge_logged "!render_template.action_view"
|
26
|
+
end
|
27
|
+
|
16
28
|
private
|
17
29
|
def instrument(event)
|
18
|
-
ActiveSupport::Notifications.instrument "#{event}.action_view"
|
19
|
-
# nada
|
20
|
-
end
|
30
|
+
ActiveSupport::Notifications.instrument "#{event}.action_view"
|
21
31
|
end
|
22
32
|
end
|
data/test/test_helper.rb
CHANGED
@@ -35,6 +35,14 @@ class IntegrationTest < MiniTest::Unit::TestCase
|
|
35
35
|
refute_empty counters.select {|c| c.name = name }, "Expected #{counters.inspect} to contain a #{name} result"
|
36
36
|
end
|
37
37
|
|
38
|
+
def refute_gauge_logged(name)
|
39
|
+
assert_empty gauges.select {|g| g.name = name }, "No gauge expected to be logged"
|
40
|
+
end
|
41
|
+
|
42
|
+
def refute_counter_logged(name)
|
43
|
+
assert_empty counters.select {|c| c.name = name }, "No counter expected to be logged"
|
44
|
+
end
|
45
|
+
|
38
46
|
def gauges
|
39
47
|
Harness::MemoryAdapter.gauges
|
40
48
|
end
|
@@ -21,13 +21,7 @@ class LibratoAdapterTest < MiniTest::Unit::TestCase
|
|
21
21
|
|
22
22
|
Harness::LibratoAdapter.config.email = email
|
23
23
|
Harness::LibratoAdapter.config.token = token
|
24
|
-
|
25
|
-
|
26
|
-
def teardown
|
27
|
-
WebMock.reset!
|
28
|
-
|
29
|
-
Harness::LibratoAdapter.config.email = nil
|
30
|
-
Harness::LibratoAdapter.config.token = nil
|
24
|
+
Harness.config.namespace = nil
|
31
25
|
end
|
32
26
|
|
33
27
|
def test_gauge_is_logged
|
@@ -50,12 +44,12 @@ class LibratoAdapterTest < MiniTest::Unit::TestCase
|
|
50
44
|
assert_requested expected_request
|
51
45
|
end
|
52
46
|
|
53
|
-
def
|
54
|
-
|
47
|
+
def test_gauge_is_logged_with_namespace
|
48
|
+
Harness.config.namespace = :foo
|
55
49
|
|
56
50
|
json = {
|
57
51
|
:gauges => [{
|
58
|
-
:name => "
|
52
|
+
:name => "#{@gauge.id}.foo",
|
59
53
|
:display_name => @gauge.name,
|
60
54
|
:value => @gauge.value,
|
61
55
|
:measure_time => @gauge.time.to_i,
|
@@ -72,7 +66,6 @@ class LibratoAdapterTest < MiniTest::Unit::TestCase
|
|
72
66
|
assert_requested expected_request
|
73
67
|
end
|
74
68
|
|
75
|
-
|
76
69
|
def test_logging_gague_raises_an_exception
|
77
70
|
stub_request(:post, %r{metrics}).to_return(:status => 500, :body => "message")
|
78
71
|
|
@@ -118,12 +111,12 @@ class LibratoAdapterTest < MiniTest::Unit::TestCase
|
|
118
111
|
assert_requested expected_request
|
119
112
|
end
|
120
113
|
|
121
|
-
def
|
122
|
-
|
114
|
+
def test_counter_is_logged_with_namespace
|
115
|
+
Harness.config.namespace = :foo
|
123
116
|
|
124
117
|
json = {
|
125
118
|
:counters => [{
|
126
|
-
:name => "
|
119
|
+
:name => "#{@counter.id}.foo",
|
127
120
|
:display_name => @counter.name,
|
128
121
|
:value => @counter.value,
|
129
122
|
:measure_time => @counter.time.to_i,
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: harness
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &70254849265340 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70254849265340
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: redis
|
27
|
-
requirement: &
|
27
|
+
requirement: &70254849264700 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70254849264700
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: redis-namespace
|
38
|
-
requirement: &
|
38
|
+
requirement: &70254849264220 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70254849264220
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: simplecov
|
49
|
-
requirement: &
|
49
|
+
requirement: &70254849263400 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70254849263400
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: webmock
|
60
|
-
requirement: &
|
60
|
+
requirement: &70254849262580 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70254849262580
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: resque
|
71
|
-
requirement: &
|
71
|
+
requirement: &70254851992420 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70254851992420
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: sidekiq
|
82
|
-
requirement: &
|
82
|
+
requirement: &70254851996240 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70254851996240
|
91
91
|
description: ''
|
92
92
|
email:
|
93
93
|
- me@broadcastingadam.com
|
@@ -152,18 +152,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
152
152
|
- - ! '>='
|
153
153
|
- !ruby/object:Gem::Version
|
154
154
|
version: '0'
|
155
|
-
segments:
|
156
|
-
- 0
|
157
|
-
hash: -2209955114685400060
|
158
155
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
159
156
|
none: false
|
160
157
|
requirements:
|
161
158
|
- - ! '>='
|
162
159
|
- !ruby/object:Gem::Version
|
163
160
|
version: '0'
|
164
|
-
segments:
|
165
|
-
- 0
|
166
|
-
hash: -2209955114685400060
|
167
161
|
requirements: []
|
168
162
|
rubyforge_project:
|
169
163
|
rubygems_version: 1.8.11
|