statsd-instrument 1.3.3 → 1.4.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/statsd/instrument.rb +10 -8
- data/statsd-instrument.gemspec +1 -1
- data/test/statsd-instrument_test.rb +24 -14
- metadata +2 -2
data/lib/statsd/instrument.rb
CHANGED
@@ -27,15 +27,15 @@ module StatsD
|
|
27
27
|
end
|
28
28
|
|
29
29
|
module Instrument
|
30
|
-
def statsd_measure(method, name)
|
30
|
+
def statsd_measure(method, name, sample_rate = StatsD.default_sample_rate)
|
31
31
|
add_to_method(method, name, :measure) do |old_method, new_method, metric_name, *args|
|
32
32
|
define_method(new_method) do |*args, &block|
|
33
|
-
StatsD.measure(metric_name) { send(old_method, *args, &block) }
|
33
|
+
StatsD.measure(metric_name, nil, sample_rate) { send(old_method, *args, &block) }
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
def statsd_count_success(method, name)
|
38
|
+
def statsd_count_success(method, name, sample_rate = StatsD.default_sample_rate)
|
39
39
|
add_to_method(method, name, :count_success) do |old_method, new_method, metric_name|
|
40
40
|
define_method(new_method) do |*args, &block|
|
41
41
|
begin
|
@@ -47,13 +47,13 @@ module StatsD
|
|
47
47
|
truthiness = (yield(result) rescue false) if block_given?
|
48
48
|
result
|
49
49
|
ensure
|
50
|
-
StatsD.increment("#{metric_name}." + (truthiness == false ? 'failure' : 'success'))
|
50
|
+
StatsD.increment("#{metric_name}." + (truthiness == false ? 'failure' : 'success'), sample_rate)
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
-
def statsd_count_if(method, name)
|
56
|
+
def statsd_count_if(method, name, sample_rate = StatsD.default_sample_rate)
|
57
57
|
add_to_method(method, name, :count_if) do |old_method, new_method, metric_name|
|
58
58
|
define_method(new_method) do |*args, &block|
|
59
59
|
begin
|
@@ -65,16 +65,16 @@ module StatsD
|
|
65
65
|
truthiness = (yield(result) rescue false) if block_given?
|
66
66
|
result
|
67
67
|
ensure
|
68
|
-
StatsD.increment(metric_name) if truthiness
|
68
|
+
StatsD.increment(metric_name, sample_rate) if truthiness
|
69
69
|
end
|
70
70
|
end
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
-
def statsd_count(method, name)
|
74
|
+
def statsd_count(method, name, sample_rate = StatsD.default_sample_rate)
|
75
75
|
add_to_method(method, name, :count) do |old_method, new_method, metric_name|
|
76
76
|
define_method(new_method) do |*args, &block|
|
77
|
-
StatsD.increment(metric_name)
|
77
|
+
StatsD.increment(metric_name, sample_rate)
|
78
78
|
send(old_method, *args, &block)
|
79
79
|
end
|
80
80
|
end
|
@@ -131,6 +131,8 @@ module StatsD
|
|
131
131
|
return unless enabled
|
132
132
|
return if sample_rate < 1 && rand > sample_rate
|
133
133
|
|
134
|
+
k = k.gsub('::', '.')
|
135
|
+
|
134
136
|
command = "#{self.prefix + '.' if self.prefix}#{k}:#{v}"
|
135
137
|
case op
|
136
138
|
when :incr
|
data/statsd-instrument.gemspec
CHANGED
@@ -64,7 +64,7 @@ class StatsDTest < Test::Unit::TestCase
|
|
64
64
|
def test_statsd_count_if
|
65
65
|
ActiveMerchant::Gateway.statsd_count_if :ssl_post, 'ActiveMerchant.Gateway.if'
|
66
66
|
|
67
|
-
StatsD.expects(:increment).with(includes('if')).once
|
67
|
+
StatsD.expects(:increment).with(includes('if'), 1).once
|
68
68
|
ActiveMerchant::Gateway.new.purchase(true)
|
69
69
|
ActiveMerchant::Gateway.new.purchase(false)
|
70
70
|
end
|
@@ -84,18 +84,18 @@ class StatsDTest < Test::Unit::TestCase
|
|
84
84
|
result[:success]
|
85
85
|
end
|
86
86
|
|
87
|
-
StatsD.expects(:increment).with(includes('block')).once
|
87
|
+
StatsD.expects(:increment).with(includes('block'), 1).once
|
88
88
|
ActiveMerchant::UniqueGateway.new.purchase(true)
|
89
89
|
ActiveMerchant::UniqueGateway.new.purchase(false)
|
90
90
|
end
|
91
91
|
|
92
92
|
def test_statsd_count_success
|
93
|
-
ActiveMerchant::Gateway.statsd_count_success :ssl_post, 'ActiveMerchant.Gateway'
|
93
|
+
ActiveMerchant::Gateway.statsd_count_success :ssl_post, 'ActiveMerchant.Gateway', 0.5
|
94
94
|
|
95
|
-
StatsD.expects(:increment).with(includes('success'))
|
95
|
+
StatsD.expects(:increment).with(includes('success'), 0.5)
|
96
96
|
ActiveMerchant::Gateway.new.purchase(true)
|
97
97
|
|
98
|
-
StatsD.expects(:increment).with(includes('failure'))
|
98
|
+
StatsD.expects(:increment).with(includes('failure'), 0.5)
|
99
99
|
ActiveMerchant::Gateway.new.purchase(false)
|
100
100
|
end
|
101
101
|
|
@@ -114,17 +114,17 @@ class StatsDTest < Test::Unit::TestCase
|
|
114
114
|
result[:success]
|
115
115
|
end
|
116
116
|
|
117
|
-
StatsD.expects(:increment).with(includes('success'))
|
117
|
+
StatsD.expects(:increment).with(includes('success'), StatsD.default_sample_rate)
|
118
118
|
ActiveMerchant::UniqueGateway.new.purchase(true)
|
119
119
|
|
120
|
-
StatsD.expects(:increment).with(includes('failure'))
|
120
|
+
StatsD.expects(:increment).with(includes('failure'), StatsD.default_sample_rate)
|
121
121
|
ActiveMerchant::UniqueGateway.new.purchase(false)
|
122
122
|
end
|
123
123
|
|
124
124
|
def test_statsd_count
|
125
125
|
ActiveMerchant::Gateway.statsd_count :ssl_post, 'ActiveMerchant.Gateway.ssl_post'
|
126
126
|
|
127
|
-
StatsD.expects(:increment).with(includes('ssl_post'))
|
127
|
+
StatsD.expects(:increment).with(includes('ssl_post'), 1)
|
128
128
|
ActiveMerchant::Gateway.new.purchase(true)
|
129
129
|
end
|
130
130
|
|
@@ -136,13 +136,23 @@ class StatsDTest < Test::Unit::TestCase
|
|
136
136
|
assert_equal 'block called', return_value
|
137
137
|
end
|
138
138
|
|
139
|
+
def test_statsd_measure_with_nested_modules
|
140
|
+
ActiveMerchant::UniqueGateway.statsd_measure :ssl_post, 'ActiveMerchant::Gateway.ssl_post'
|
141
|
+
|
142
|
+
StatsD.stubs(:mode).returns(:production)
|
143
|
+
UDPSocket.any_instance.expects(:send).with(regexp_matches(/ActiveMerchant\.Gateway\.ssl_post:\d\.\d{2,}\|ms/), 0, 'localhost', 123).at_least(1)
|
144
|
+
|
145
|
+
ActiveMerchant::UniqueGateway.new.purchase(true)
|
146
|
+
end
|
147
|
+
|
139
148
|
def test_statsd_measure
|
140
|
-
ActiveMerchant::UniqueGateway.statsd_measure :ssl_post, 'ActiveMerchant.Gateway.ssl_post'
|
149
|
+
ActiveMerchant::UniqueGateway.statsd_measure :ssl_post, 'ActiveMerchant.Gateway.ssl_post', 0.3
|
141
150
|
|
142
|
-
StatsD.expects(:write).with('ActiveMerchant.Gateway.ssl_post', is_a(Float), :ms,
|
151
|
+
StatsD.expects(:write).with('ActiveMerchant.Gateway.ssl_post', is_a(Float), :ms, 0.3).returns({:success => true})
|
143
152
|
ActiveMerchant::UniqueGateway.new.purchase(true)
|
144
153
|
end
|
145
154
|
|
155
|
+
|
146
156
|
def test_statsd_measure_with_method_receiving_block
|
147
157
|
ActiveMerchant::Base.statsd_measure :post_with_block, 'ActiveMerchant.Base.post_with_block'
|
148
158
|
|
@@ -155,21 +165,21 @@ class StatsDTest < Test::Unit::TestCase
|
|
155
165
|
ActiveMerchant::Gateway.singleton_class.extend StatsD::Instrument
|
156
166
|
ActiveMerchant::Gateway.singleton_class.statsd_count :sync, 'ActiveMerchant.Gateway.sync'
|
157
167
|
|
158
|
-
StatsD.expects(:increment).with(includes('sync'))
|
168
|
+
StatsD.expects(:increment).with(includes('sync'), 1)
|
159
169
|
ActiveMerchant::Gateway.sync
|
160
170
|
end
|
161
171
|
|
162
172
|
def test_count_with_sampling
|
163
173
|
StatsD.unstub(:increment)
|
164
|
-
StatsD.stubs(:rand).returns(0.
|
174
|
+
StatsD.stubs(:rand).returns(0.6)
|
165
175
|
StatsD.logger.expects(:info).never
|
166
176
|
|
167
|
-
StatsD.increment('sampling.foo.bar', 1, 0.
|
177
|
+
StatsD.increment('sampling.foo.bar', 1, 0.1)
|
168
178
|
end
|
169
179
|
|
170
180
|
def test_count_with_successful_sample
|
171
181
|
StatsD.unstub(:increment)
|
172
|
-
StatsD.stubs(:rand).returns(0.
|
182
|
+
StatsD.stubs(:rand).returns(0.01)
|
173
183
|
StatsD.logger.expects(:info).once.with do |string|
|
174
184
|
string.include?('@0.1')
|
175
185
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: statsd-instrument
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-10-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: mocha
|