librato-rails 0.5.2 → 0.6.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 +28 -3
- data/lib/librato/rails/aggregator.rb +40 -5
- data/lib/librato/rails/collector.rb +45 -0
- data/lib/librato/rails/counter_cache.rb +86 -8
- data/lib/librato/rails/railtie.rb +1 -3
- data/lib/librato/rails/version.rb +1 -1
- data/lib/librato/rails.rb +21 -35
- data/test/dummy/log/test.log +3644 -0
- data/test/remote/rails_remote_test.rb +14 -0
- data/test/unit/aggregator_test.rb +14 -0
- data/test/unit/counter_cache_test.rb +73 -2
- data/test/unit/group_test.rb +6 -1
- metadata +7 -6
@@ -31,6 +31,7 @@ class LibratoRailsRemoteTest < ActiveSupport::TestCase
|
|
31
31
|
Librato::Rails.increment :foo
|
32
32
|
Librato::Rails.increment :bar, 2
|
33
33
|
Librato::Rails.increment :foo
|
34
|
+
Librato::Rails.increment :foo, :source => 'baz', :by => 3
|
34
35
|
Librato::Rails.flush
|
35
36
|
|
36
37
|
client = Librato::Rails.client
|
@@ -41,6 +42,10 @@ class LibratoRailsRemoteTest < ActiveSupport::TestCase
|
|
41
42
|
foo = client.fetch 'foo', :count => 10
|
42
43
|
assert_equal 1, foo[source].length
|
43
44
|
assert_equal 2, foo[source][0]['value']
|
45
|
+
|
46
|
+
# custom source
|
47
|
+
assert_equal 1, foo['baz'].length
|
48
|
+
assert_equal 3, foo['baz'][0]['value']
|
44
49
|
|
45
50
|
bar = client.fetch 'bar', :count => 10
|
46
51
|
assert_equal 1, bar[source].length
|
@@ -49,9 +54,13 @@ class LibratoRailsRemoteTest < ActiveSupport::TestCase
|
|
49
54
|
|
50
55
|
test 'counters should persist through flush' do
|
51
56
|
Librato::Rails.increment 'knightrider'
|
57
|
+
Librato::Rails.increment 'badguys', :sporadic => true
|
52
58
|
assert_equal 1, Librato::Rails.counters['knightrider']
|
59
|
+
assert_equal 1, Librato::Rails.counters['badguys']
|
60
|
+
|
53
61
|
Librato::Rails.flush
|
54
62
|
assert_equal 0, Librato::Rails.counters['knightrider']
|
63
|
+
assert_equal nil, Librato::Rails.counters['badguys']
|
55
64
|
end
|
56
65
|
|
57
66
|
test 'flush sends measures/timings' do
|
@@ -61,6 +70,7 @@ class LibratoRailsRemoteTest < ActiveSupport::TestCase
|
|
61
70
|
Librato::Rails.timing 'request.time.total', 122.1
|
62
71
|
Librato::Rails.measure 'items_bought', 20
|
63
72
|
Librato::Rails.timing 'request.time.total', 81.3
|
73
|
+
Librato::Rails.timing 'jobs.queued', 5, :source => 'worker.3'
|
64
74
|
Librato::Rails.flush
|
65
75
|
|
66
76
|
client = Librato::Rails.client
|
@@ -75,6 +85,10 @@ class LibratoRailsRemoteTest < ActiveSupport::TestCase
|
|
75
85
|
items = client.fetch 'items_bought', :count => 10
|
76
86
|
assert_equal 1, items[source][0]['count']
|
77
87
|
assert_in_delta 20, items[source][0]['sum'], 0.1
|
88
|
+
|
89
|
+
jobs = client.fetch 'jobs.queued', :count => 10
|
90
|
+
assert_equal 1, jobs['worker.3'][0]['count']
|
91
|
+
assert_in_delta 5, jobs['worker.3'][0]['sum'], 0.1
|
78
92
|
end
|
79
93
|
|
80
94
|
test 'flush should purge measures/timings' do
|
@@ -36,4 +36,18 @@ class LibratoRailsAggregatorTest < MiniTest::Unit::TestCase
|
|
36
36
|
assert_equal 'bar', timing
|
37
37
|
end
|
38
38
|
|
39
|
+
def test_custom_source
|
40
|
+
# sources are kept separate
|
41
|
+
@agg.measure 'meaning.of.life', 1
|
42
|
+
@agg.measure 'meaning.of.life', 42, :source => 'douglas_adams'
|
43
|
+
assert_equal 1.0, @agg.fetch('meaning.of.life')[:sum]
|
44
|
+
assert_equal 42.0, @agg.fetch('meaning.of.life', :source => 'douglas_adams')[:sum]
|
45
|
+
|
46
|
+
# sources work with time blocks
|
47
|
+
@agg.timing 'mytiming', :source => 'mine' do
|
48
|
+
sleep 0.02
|
49
|
+
end
|
50
|
+
assert_in_delta @agg.fetch('mytiming', :source => 'mine')[:sum], 20, 10
|
51
|
+
end
|
52
|
+
|
39
53
|
end
|
@@ -8,12 +8,83 @@ class LibratoRailsCounterCacheTest < MiniTest::Unit::TestCase
|
|
8
8
|
assert_equal 1, cc[:foo]
|
9
9
|
|
10
10
|
# accepts optional argument
|
11
|
-
cc.increment :foo, 5
|
11
|
+
cc.increment :foo, :by => 5
|
12
12
|
assert_equal 6, cc[:foo]
|
13
13
|
|
14
|
+
# legacy style
|
15
|
+
cc.increment :foo, 2
|
16
|
+
assert_equal 8, cc[:foo]
|
17
|
+
|
14
18
|
# strings or symbols work
|
15
19
|
cc.increment 'foo'
|
16
|
-
assert_equal
|
20
|
+
assert_equal 9, cc['foo']
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_custom_sources
|
24
|
+
cc = Librato::Rails::CounterCache.new
|
25
|
+
|
26
|
+
cc.increment :foo, :source => 'bar'
|
27
|
+
assert_equal 1, cc.fetch(:foo, :source => 'bar')
|
28
|
+
|
29
|
+
# symbols also work
|
30
|
+
cc.increment :foo, :source => :baz
|
31
|
+
assert_equal 1, cc.fetch(:foo, :source => :baz)
|
32
|
+
|
33
|
+
# strings and symbols are interchangable
|
34
|
+
cc.increment :foo, :source => :bar
|
35
|
+
assert_equal 2, cc.fetch(:foo, :source => 'bar')
|
36
|
+
|
37
|
+
# custom source and custom increment
|
38
|
+
cc.increment :foo, :source => 'boombah', :by => 10
|
39
|
+
assert_equal 10, cc.fetch(:foo, :source => 'boombah')
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_continuous
|
43
|
+
cc = Librato::Rails::CounterCache.new
|
44
|
+
|
45
|
+
cc.increment :foo
|
46
|
+
cc.increment :foo, :source => 'bar'
|
47
|
+
|
48
|
+
cc.increment :baz, :sporadic => true
|
49
|
+
cc.increment :baz, :source => 118, :sporadic => true
|
50
|
+
assert_equal 1, cc[:baz]
|
51
|
+
assert_equal 1, cc.fetch(:baz, :source => 118)
|
52
|
+
|
53
|
+
cc.flush_to(Librato::Metrics::Queue.new) # persist values once
|
54
|
+
|
55
|
+
# continous values persist
|
56
|
+
assert_equal 0, cc[:foo]
|
57
|
+
assert_equal 0, cc.fetch(:foo, :source => 'bar')
|
58
|
+
|
59
|
+
# non-continous do not
|
60
|
+
assert_equal nil, cc[:baz]
|
61
|
+
assert_equal nil, cc.fetch(:baz, :source => 118)
|
62
|
+
|
63
|
+
# add a different sporadic metric
|
64
|
+
cc.increment :bazoom, :sporadic => true
|
65
|
+
assert_equal 1, cc[:bazoom]
|
66
|
+
|
67
|
+
cc.flush_to(Librato::Metrics::Queue.new) # persist values again
|
68
|
+
assert_equal nil, cc[:bazoom]
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_flushing
|
72
|
+
cc = Librato::Rails::CounterCache.new
|
73
|
+
|
74
|
+
cc.increment :foo
|
75
|
+
cc.increment :bar, :by => 2
|
76
|
+
cc.increment :foo, :source => 'foobar'
|
77
|
+
cc.increment :foo, :source => 'foobar', :by => 3
|
78
|
+
|
79
|
+
q = Librato::Metrics::Queue.new
|
80
|
+
cc.flush_to(q)
|
81
|
+
|
82
|
+
expected = Set.new [{:name=>"foo", :value=>1},
|
83
|
+
{:name=>"foo", :value=>4, :source=>"foobar"},
|
84
|
+
{:name=>"bar", :value=>2}]
|
85
|
+
queued = Set.new q.gauges
|
86
|
+
queued.each { |hash| hash.delete(:measure_time) }
|
87
|
+
assert_equal queued, expected
|
17
88
|
end
|
18
89
|
|
19
90
|
end
|
data/test/unit/group_test.rb
CHANGED
@@ -5,8 +5,12 @@ class LibratoRailsGroupTest < MiniTest::Unit::TestCase
|
|
5
5
|
def test_basic_grouping
|
6
6
|
Librato::Rails.group 'fruit' do |g|
|
7
7
|
g.increment 'bites'
|
8
|
+
g.increment 'nibbles', :by => 2
|
8
9
|
g.increment 'nibbles', 5
|
9
10
|
|
11
|
+
g.increment 'chomps', :source => 'pacman'
|
12
|
+
g.increment 'chomps', :source => 'pacman', :by => 5
|
13
|
+
|
10
14
|
g.measure 'banana', 12
|
11
15
|
g.measure 'banana', 10
|
12
16
|
|
@@ -15,7 +19,8 @@ class LibratoRailsGroupTest < MiniTest::Unit::TestCase
|
|
15
19
|
end
|
16
20
|
|
17
21
|
assert_equal 1, counters['fruit.bites']
|
18
|
-
assert_equal
|
22
|
+
assert_equal 7, counters['fruit.nibbles']
|
23
|
+
assert_equal 6, counters.fetch('fruit.chomps', :source => 'pacman')
|
19
24
|
|
20
25
|
assert_equal 2, aggregate['fruit.banana'][:count]
|
21
26
|
assert_equal 22, aggregate['fruit.banana'][:sum]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: librato-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.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-10-
|
12
|
+
date: 2012-10-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -34,7 +34,7 @@ dependencies:
|
|
34
34
|
requirements:
|
35
35
|
- - ~>
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: 0.7.
|
37
|
+
version: 0.7.3
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -42,7 +42,7 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 0.7.
|
45
|
+
version: 0.7.3
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: sqlite3
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- lib/librato/rack/middleware.rb
|
87
87
|
- lib/librato/rack.rb
|
88
88
|
- lib/librato/rails/aggregator.rb
|
89
|
+
- lib/librato/rails/collector.rb
|
89
90
|
- lib/librato/rails/counter_cache.rb
|
90
91
|
- lib/librato/rails/group.rb
|
91
92
|
- lib/librato/rails/railtie.rb
|
@@ -196,7 +197,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
196
197
|
version: '0'
|
197
198
|
segments:
|
198
199
|
- 0
|
199
|
-
hash:
|
200
|
+
hash: 2251758174729954387
|
200
201
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
201
202
|
none: false
|
202
203
|
requirements:
|
@@ -205,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
205
206
|
version: '0'
|
206
207
|
segments:
|
207
208
|
- 0
|
208
|
-
hash:
|
209
|
+
hash: 2251758174729954387
|
209
210
|
requirements: []
|
210
211
|
rubyforge_project:
|
211
212
|
rubygems_version: 1.8.24
|