metrics-rails 0.1.0 → 0.2.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/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
|