metrics-rails 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/metrics-rails.rb +1 -1
- data/lib/metrics/rack.rb +4 -0
- data/lib/metrics/rack/middleware.rb +47 -0
- data/lib/metrics/rails.rb +33 -50
- data/lib/metrics/rails/railtie.rb +6 -5
- data/lib/metrics/rails/version.rb +1 -1
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/log/development.log +0 -137511
- data/test/dummy/log/test.log +4639 -6560
- data/test/unit/aggregator_test.rb +2 -2
- data/test/unit/configuration_test.rb +10 -10
- data/test/unit/counter_cache_test.rb +2 -2
- data/test/unit/group_test.rb +3 -3
- data/test/unit/middleware_test.rb +82 -0
- data/test/unit/worker_test.rb +3 -3
- metadata +24 -4
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class MetricsRailsAggregatorTest <
|
3
|
+
class MetricsRailsAggregatorTest < MiniTest::Unit::TestCase
|
4
4
|
|
5
|
-
|
5
|
+
def test_adding_timings
|
6
6
|
agg = Metrics::Rails::Aggregator.new
|
7
7
|
|
8
8
|
agg.timing 'request.time.total', 23.7
|
@@ -1,8 +1,14 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class MetricsRailsAggregatorTest <
|
3
|
+
class MetricsRailsAggregatorTest < MiniTest::Unit::TestCase
|
4
4
|
|
5
|
-
|
5
|
+
def teardown
|
6
|
+
ENV.delete('METRICS_EMAIL')
|
7
|
+
ENV.delete('METRICS_API_KEY')
|
8
|
+
Metrics::Rails.check_config
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_environmental_variable_config
|
6
12
|
ENV['METRICS_EMAIL'] = 'foo@bar.com'
|
7
13
|
ENV['METRICS_API_KEY'] = 'api_key'
|
8
14
|
Metrics::Rails.check_config
|
@@ -10,7 +16,7 @@ class MetricsRailsAggregatorTest < ActiveSupport::TestCase
|
|
10
16
|
assert_equal 'api_key', Metrics::Rails.api_key
|
11
17
|
end
|
12
18
|
|
13
|
-
|
19
|
+
def test_config_file_config
|
14
20
|
with_fixture_config do
|
15
21
|
assert_equal 'test@bar.com', Metrics::Rails.email
|
16
22
|
assert_equal 'test api key', Metrics::Rails.api_key
|
@@ -20,7 +26,7 @@ class MetricsRailsAggregatorTest < ActiveSupport::TestCase
|
|
20
26
|
end
|
21
27
|
end
|
22
28
|
|
23
|
-
|
29
|
+
def test_environmental_and_config_file_config
|
24
30
|
ENV['METRICS_EMAIL'] = 'foo@bar.com'
|
25
31
|
ENV['METRICS_API_KEY'] = 'api_key'
|
26
32
|
with_fixture_config do
|
@@ -31,12 +37,6 @@ class MetricsRailsAggregatorTest < ActiveSupport::TestCase
|
|
31
37
|
end
|
32
38
|
end
|
33
39
|
|
34
|
-
def teardown
|
35
|
-
ENV.delete('METRICS_EMAIL')
|
36
|
-
ENV.delete('METRICS_API_KEY')
|
37
|
-
Metrics::Rails.check_config
|
38
|
-
end
|
39
|
-
|
40
40
|
def with_fixture_config
|
41
41
|
fixture_config = File.join(File.dirname(__FILE__), '../fixtures/config/metrics.yml')
|
42
42
|
previous, Metrics::Rails.config_file = Metrics::Rails.config_file, fixture_config
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class MetricsRailsCounterCacheTest <
|
3
|
+
class MetricsRailsCounterCacheTest < MiniTest::Unit::TestCase
|
4
4
|
|
5
|
-
|
5
|
+
def test_basic_operations
|
6
6
|
cc = Metrics::Rails::CounterCache.new
|
7
7
|
cc.increment :foo
|
8
8
|
assert_equal 1, cc[:foo]
|
data/test/unit/group_test.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class MetricsRailsGroupTest <
|
3
|
+
class MetricsRailsGroupTest < MiniTest::Unit::TestCase
|
4
4
|
|
5
|
-
|
5
|
+
def test_basic_grouping
|
6
6
|
Metrics::Rails.group 'fruit' do |g|
|
7
7
|
g.increment 'bites'
|
8
8
|
g.increment 'nibbles', 5
|
@@ -24,7 +24,7 @@ class MetricsRailsGroupTest < ActiveSupport::TestCase
|
|
24
24
|
assert_equal 146.5, aggregate['fruit.grow_time'][:sum]
|
25
25
|
end
|
26
26
|
|
27
|
-
|
27
|
+
def test_nesting
|
28
28
|
Metrics::Rails.group 'street' do |s|
|
29
29
|
s.increment 'count'
|
30
30
|
s.group 'market' do |m|
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class MetricRackMiddlewareTest < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
Metrics::Rails.stubs(:forking_server?).returns(false)
|
7
|
+
Metrics::Rails.stubs(:measure).returns(true)
|
8
|
+
Metrics::Rails.stubs(:increment).returns(true)
|
9
|
+
|
10
|
+
Time.stubs(:now).returns(Time.at(0.1305), Time.at(0.20075))
|
11
|
+
|
12
|
+
@middleware = Metrics::Rack::Middleware.new(
|
13
|
+
stub(:call => [200, {}, []])
|
14
|
+
)
|
15
|
+
end
|
16
|
+
|
17
|
+
def teardown
|
18
|
+
Metrics::Rails.unstub :forking_server?, :measure, :increment
|
19
|
+
Time.unstub :now
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_logs_header_metrics
|
23
|
+
Metrics::Rails.expects(:measure).with('rack.heroku.queue.depth', 1.0)
|
24
|
+
Metrics::Rails.expects(:measure).with('rack.heroku.queue.wait_time', 20.5)
|
25
|
+
Metrics::Rails.expects(:measure).with('rack.heroku.queue.dynos', 2.0)
|
26
|
+
|
27
|
+
@middleware.call(
|
28
|
+
'HTTP_X_HEROKU_QUEUE_DEPTH' => '1',
|
29
|
+
'HTTP_X_HEROKU_QUEUE_WAIT_TIME' => '20.5',
|
30
|
+
'HTTP_X_HEROKU_DYNOS_IN_USE' => '2'
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_logs_request_time
|
35
|
+
Metrics::Rails.expects(:measure).with('rack.request.time', 70.25)
|
36
|
+
|
37
|
+
@middleware.call({})
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_increments_request_count
|
41
|
+
Metrics::Rails.expects(:increment).with('rack.request.total', 1)
|
42
|
+
|
43
|
+
@middleware.call({})
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_log_200_status
|
47
|
+
Metrics::Rails.expects(:increment).with('rack.request.status.200', 1)
|
48
|
+
Metrics::Rails.expects(:increment).with('rack.request.status.2xx', 1)
|
49
|
+
|
50
|
+
Metrics::Rails.expects(:measure).with('rack.request.status.200.time', 70.25)
|
51
|
+
Metrics::Rails.expects(:measure).with('rack.request.status.2xx.time', 70.25)
|
52
|
+
|
53
|
+
@middleware.call({})
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_log_403_status
|
57
|
+
Metrics::Rails.expects(:increment).with('rack.request.status.403', 1)
|
58
|
+
Metrics::Rails.expects(:increment).with('rack.request.status.4xx', 1)
|
59
|
+
|
60
|
+
Metrics::Rails.expects(:measure).with('rack.request.status.403.time', 70.25)
|
61
|
+
Metrics::Rails.expects(:measure).with('rack.request.status.4xx.time', 70.25)
|
62
|
+
|
63
|
+
@middleware = Metrics::Rack::Middleware.new stub(:call => [403, {}, []])
|
64
|
+
@middleware.call({})
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_fast_queries_are_not_slow
|
68
|
+
Time.stubs(:now).returns(0.1305, 0.3305)
|
69
|
+
|
70
|
+
Metrics::Rails.expects(:increment).with('rack.request.slow', 1).never
|
71
|
+
|
72
|
+
@middleware.call({})
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_log_slow_queries
|
76
|
+
Time.stubs(:now).returns(0.1305, 0.40075)
|
77
|
+
|
78
|
+
Metrics::Rails.expects(:increment).with('rack.request.slow', 1)
|
79
|
+
|
80
|
+
@middleware.call({})
|
81
|
+
end
|
82
|
+
end
|
data/test/unit/worker_test.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class MetricsRailsWorkerTest <
|
3
|
+
class MetricsRailsWorkerTest < MiniTest::Unit::TestCase
|
4
4
|
|
5
|
-
|
5
|
+
def test_basic_use
|
6
6
|
worker = Metrics::Rails::Worker.new
|
7
7
|
counter = 0
|
8
8
|
Thread.new do
|
@@ -14,7 +14,7 @@ class MetricsRailsWorkerTest < ActiveSupport::TestCase
|
|
14
14
|
assert_equal counter, 4
|
15
15
|
end
|
16
16
|
|
17
|
-
|
17
|
+
def test_start_time
|
18
18
|
worker = Metrics::Rails::Worker.new
|
19
19
|
|
20
20
|
time = Time.now
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metrics-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-09-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -59,6 +59,22 @@ dependencies:
|
|
59
59
|
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: minitest
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
62
78
|
description: Report key app statistics to the Librato Metrics service and easily track
|
63
79
|
your own custom metrics.
|
64
80
|
email:
|
@@ -67,6 +83,8 @@ executables: []
|
|
67
83
|
extensions: []
|
68
84
|
extra_rdoc_files: []
|
69
85
|
files:
|
86
|
+
- lib/metrics/rack/middleware.rb
|
87
|
+
- lib/metrics/rack.rb
|
70
88
|
- lib/metrics/rails/aggregator.rb
|
71
89
|
- lib/metrics/rails/counter_cache.rb
|
72
90
|
- lib/metrics/rails/group.rb
|
@@ -163,6 +181,7 @@ files:
|
|
163
181
|
- test/unit/configuration_test.rb
|
164
182
|
- test/unit/counter_cache_test.rb
|
165
183
|
- test/unit/group_test.rb
|
184
|
+
- test/unit/middleware_test.rb
|
166
185
|
- test/unit/worker_test.rb
|
167
186
|
homepage: https://github.com/librato/metrics-rails
|
168
187
|
licenses: []
|
@@ -178,7 +197,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
178
197
|
version: '0'
|
179
198
|
segments:
|
180
199
|
- 0
|
181
|
-
hash:
|
200
|
+
hash: 3976744292861344544
|
182
201
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
183
202
|
none: false
|
184
203
|
requirements:
|
@@ -187,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
187
206
|
version: '0'
|
188
207
|
segments:
|
189
208
|
- 0
|
190
|
-
hash:
|
209
|
+
hash: 3976744292861344544
|
191
210
|
requirements: []
|
192
211
|
rubyforge_project:
|
193
212
|
rubygems_version: 1.8.24
|
@@ -277,4 +296,5 @@ test_files:
|
|
277
296
|
- test/unit/configuration_test.rb
|
278
297
|
- test/unit/counter_cache_test.rb
|
279
298
|
- test/unit/group_test.rb
|
299
|
+
- test/unit/middleware_test.rb
|
280
300
|
- test/unit/worker_test.rb
|