harness 0.2.16 → 0.3.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.
- data/README.md +10 -1
- data/harness.gemspec +2 -0
- data/lib/harness.rb +7 -2
- data/lib/harness/integration/active_model_serializers.rb +9 -0
- data/lib/harness/railtie.rb +16 -5
- data/lib/harness/version.rb +1 -1
- data/test/integration/integrations/active_model_serializers_test.rb +22 -0
- data/test/integration/railtie_test.rb +22 -0
- metadata +42 -15
data/README.md
CHANGED
@@ -194,7 +194,16 @@ Harness.redis = Redis.new
|
|
194
194
|
## Rails Integration
|
195
195
|
|
196
196
|
Harness will automatically log metrics coming from `ActionPack`,
|
197
|
-
`ActiveRecord`, `ActiveSupport`
|
197
|
+
`ActiveRecord`, and `ActionMailer`. `ActiveSupport` instrumentation is
|
198
|
+
disabled by default. Also, custom integrations are disabled by default.
|
199
|
+
You can turn on instrumentation for specific components like so:
|
200
|
+
|
201
|
+
```ruby
|
202
|
+
config.harness.instrument.action_controller = false
|
203
|
+
config.harness.instrument.active_support = true
|
204
|
+
config.harness.instrument.sidekiq = true
|
205
|
+
config.harness.instrument.active_model_serializers = true
|
206
|
+
```
|
198
207
|
|
199
208
|
You can configure Harness from `application.rb`
|
200
209
|
|
data/harness.gemspec
CHANGED
@@ -23,4 +23,6 @@ Gem::Specification.new do |gem|
|
|
23
23
|
gem.add_development_dependency "webmock"
|
24
24
|
gem.add_development_dependency "resque"
|
25
25
|
gem.add_development_dependency "sidekiq"
|
26
|
+
gem.add_development_dependency "active_model_serializers"
|
27
|
+
gem.add_development_dependency "rails"
|
26
28
|
end
|
data/lib/harness.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
require "harness/version"
|
2
2
|
|
3
|
-
require 'thread'
|
4
|
-
|
5
3
|
require 'redis'
|
6
4
|
require 'redis/namespace'
|
7
5
|
|
@@ -11,6 +9,8 @@ require 'active_support/core_ext/hash/keys'
|
|
11
9
|
require 'active_support/core_ext/numeric'
|
12
10
|
require 'active_support/core_ext/integer'
|
13
11
|
|
12
|
+
require 'active_support/ordered_options'
|
13
|
+
|
14
14
|
module Harness
|
15
15
|
class LoggingError < RuntimeError ; end
|
16
16
|
class NoCounter < RuntimeError ; end
|
@@ -18,6 +18,11 @@ module Harness
|
|
18
18
|
class Config
|
19
19
|
attr_reader :adapter, :queue
|
20
20
|
attr_accessor :namespace
|
21
|
+
attr_reader :instrument
|
22
|
+
|
23
|
+
def initialize
|
24
|
+
@instrument = ActiveSupport::OrderedOptions.new
|
25
|
+
end
|
21
26
|
|
22
27
|
def adapter=(val)
|
23
28
|
if val.is_a? Symbol
|
@@ -0,0 +1,9 @@
|
|
1
|
+
events = %w(serializable_hash associations)
|
2
|
+
|
3
|
+
events.each do |name|
|
4
|
+
ActiveSupport::Notifications.subscribe %r{^#{name}.*\.serializer$} do |*args|
|
5
|
+
event = ActiveSupport::Notifications::Event.new(*args)
|
6
|
+
gauge = Harness::Gauge.from_event event
|
7
|
+
gauge.log
|
8
|
+
end
|
9
|
+
end
|
data/lib/harness/railtie.rb
CHANGED
@@ -2,6 +2,19 @@ module Harness
|
|
2
2
|
class Railtie < ::Rails::Railtie
|
3
3
|
config.harness = Harness.config
|
4
4
|
|
5
|
+
# Set default instrumentation
|
6
|
+
config.harness.instrument.action_controller = true
|
7
|
+
config.harness.instrument.action_mailer = true
|
8
|
+
config.harness.instrument.action_view = true
|
9
|
+
|
10
|
+
config.harness.instrument.active_support = false
|
11
|
+
|
12
|
+
# Custom instrumentation can be turned on as follows
|
13
|
+
# See files in lib/harness/integration for available integrations
|
14
|
+
#
|
15
|
+
# config.harness.insturment.sidekiq = true
|
16
|
+
# config.harness.insturment.active_model_serializers = true
|
17
|
+
|
5
18
|
rake_tasks do
|
6
19
|
load "harness/tasks.rake"
|
7
20
|
end
|
@@ -45,11 +58,9 @@ module Harness
|
|
45
58
|
end
|
46
59
|
end
|
47
60
|
|
48
|
-
initializer "harness.
|
49
|
-
|
50
|
-
|
51
|
-
if defined?(Sidekiq::Worker) && use_real_queue
|
52
|
-
require 'harness/integration/sidekiq'
|
61
|
+
initializer "harness.instrumentation" do |app|
|
62
|
+
app.config.harness.instrument.each_pair do |integration, value|
|
63
|
+
require "harness/integration/#{integration}" if value
|
53
64
|
end
|
54
65
|
end
|
55
66
|
end
|
data/lib/harness/version.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'harness/integration/active_model_serializers'
|
3
|
+
|
4
|
+
class ActiveModelSerializerIntegration < IntegrationTest
|
5
|
+
def test_serializable_hash_is_logged
|
6
|
+
instrument "serializable_hash"
|
7
|
+
|
8
|
+
assert_gauge_logged "serializable_hash.serializer"
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_serializing_associations_is_logged
|
12
|
+
instrument "associations"
|
13
|
+
|
14
|
+
assert_gauge_logged "associations.serializer"
|
15
|
+
end
|
16
|
+
|
17
|
+
def instrument(event)
|
18
|
+
ActiveSupport::Notifications.instrument "#{event}.serializer" do |*args|
|
19
|
+
# nada
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'rails'
|
3
|
+
require 'action_controller/railtie'
|
4
|
+
require 'harness/railtie'
|
5
|
+
|
6
|
+
class TestRailsApp < Rails::Application
|
7
|
+
config.active_support.deprecation = proc { |message, stack| }
|
8
|
+
initialize!
|
9
|
+
end
|
10
|
+
|
11
|
+
class RailtieTest < MiniTest::Unit::TestCase
|
12
|
+
def app
|
13
|
+
TestRailsApp
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_configures_instrumentation
|
17
|
+
assert app.config.harness.instrument.action_controller
|
18
|
+
assert app.config.harness.instrument.action_mailer
|
19
|
+
assert app.config.harness.instrument.action_view
|
20
|
+
refute app.config.harness.instrument.active_support
|
21
|
+
end
|
22
|
+
end
|
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.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-06-05 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &70133152109020 !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: *70133152109020
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: redis
|
27
|
-
requirement: &
|
27
|
+
requirement: &70133152107200 !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: *70133152107200
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: redis-namespace
|
38
|
-
requirement: &
|
38
|
+
requirement: &70133152104740 !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: *70133152104740
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: simplecov
|
49
|
-
requirement: &
|
49
|
+
requirement: &70133152152020 !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: *70133152152020
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: webmock
|
60
|
-
requirement: &
|
60
|
+
requirement: &70133152149760 !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: *70133152149760
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: resque
|
71
|
-
requirement: &
|
71
|
+
requirement: &70133152148660 !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: *70133152148660
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: sidekiq
|
82
|
-
requirement: &
|
82
|
+
requirement: &70133152148020 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,29 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70133152148020
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: active_model_serializers
|
93
|
+
requirement: &70133152146920 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70133152146920
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: rails
|
104
|
+
requirement: &70133152145560 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *70133152145560
|
91
113
|
description: ''
|
92
114
|
email:
|
93
115
|
- me@broadcastingadam.com
|
@@ -112,6 +134,7 @@ files:
|
|
112
134
|
- lib/harness/integration/action_controller.rb
|
113
135
|
- lib/harness/integration/action_mailer.rb
|
114
136
|
- lib/harness/integration/action_view.rb
|
137
|
+
- lib/harness/integration/active_model_serializers.rb
|
115
138
|
- lib/harness/integration/active_support.rb
|
116
139
|
- lib/harness/integration/sidekiq.rb
|
117
140
|
- lib/harness/job.rb
|
@@ -128,12 +151,14 @@ files:
|
|
128
151
|
- test/integration/integrations/action_controller_test.rb
|
129
152
|
- test/integration/integrations/action_mailer_test.rb
|
130
153
|
- test/integration/integrations/action_view_test.rb
|
154
|
+
- test/integration/integrations/active_model_serializers_test.rb
|
131
155
|
- test/integration/integrations/active_support_test.rb
|
132
156
|
- test/integration/integrations/sidekiq_test.rb
|
133
157
|
- test/integration/logging_test.rb
|
134
158
|
- test/integration/meter_test.rb
|
135
159
|
- test/integration/queues/resque_test.rb
|
136
160
|
- test/integration/queues/sidekiq_test.rb
|
161
|
+
- test/integration/railtie_test.rb
|
137
162
|
- test/test_helper.rb
|
138
163
|
- test/unit/adapters/librato_adapter_test.rb
|
139
164
|
- test/unit/adapters/memory_adapter_test.rb
|
@@ -172,12 +197,14 @@ test_files:
|
|
172
197
|
- test/integration/integrations/action_controller_test.rb
|
173
198
|
- test/integration/integrations/action_mailer_test.rb
|
174
199
|
- test/integration/integrations/action_view_test.rb
|
200
|
+
- test/integration/integrations/active_model_serializers_test.rb
|
175
201
|
- test/integration/integrations/active_support_test.rb
|
176
202
|
- test/integration/integrations/sidekiq_test.rb
|
177
203
|
- test/integration/logging_test.rb
|
178
204
|
- test/integration/meter_test.rb
|
179
205
|
- test/integration/queues/resque_test.rb
|
180
206
|
- test/integration/queues/sidekiq_test.rb
|
207
|
+
- test/integration/railtie_test.rb
|
181
208
|
- test/test_helper.rb
|
182
209
|
- test/unit/adapters/librato_adapter_test.rb
|
183
210
|
- test/unit/adapters/memory_adapter_test.rb
|