statsd-instrument 1.7.2 → 2.0.0beta

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/test/statsd_test.rb CHANGED
@@ -1,256 +1,92 @@
1
1
  require 'test_helper'
2
2
 
3
- class StatsDTest < Test::Unit::TestCase
3
+ class StatsDTest < Minitest::Test
4
+ include StatsD::Instrument::Assertions
4
5
 
5
- def setup
6
- StatsD.stubs(:rand).returns(0.0)
7
-
8
- UDPSocket.stubs(:new).returns(@socket = mock('socket'))
9
- @socket.stubs(:connect)
10
- @socket.stubs(:send)
11
- StatsD.invalidate_socket
12
-
13
- StatsD.stubs(:logger).returns(@logger = mock('logger'))
14
- @logger.stubs(:info)
15
- @logger.stubs(:error)
6
+ def test_statsd_passed_collections_to_backend
7
+ StatsD.backend.expects(:collect_metric).with(instance_of(StatsD::Instrument::Metric))
8
+ StatsD.increment('test')
16
9
  end
17
10
 
18
11
  def test_statsd_measure_with_explicit_value
19
- StatsD.expects(:collect).with(:ms, 'values.foobar', 42, {})
20
- StatsD.measure('values.foobar', 42)
12
+ metric = capture_statsd_call { StatsD.measure('values.foobar', 42) }
13
+ assert_equal 'values.foobar', metric.name
14
+ assert_equal 42, metric.value
15
+ assert_equal :ms, metric.type
21
16
  end
22
17
 
23
18
  def test_statsd_measure_with_explicit_value_and_sample_rate
24
- StatsD.expects(:collect).with(:ms, 'values.foobar', 42, :sample_rate => 0.1)
25
- StatsD.measure('values.foobar', 42, :sample_rate => 0.1)
19
+ metric = capture_statsd_call { StatsD.measure('values.foobar', 42, :sample_rate => 0.1) }
20
+ assert_equal 0.1, metric.sample_rate
26
21
  end
27
22
 
28
- def test_statsd_measure_with_benchmarked_value
23
+ def test_statsd_measure_with_benchmarked_duration
29
24
  Benchmark.stubs(:realtime).returns(1.12)
30
- StatsD.expects(:collect).with(:ms, 'values.foobar', 1120.0, {})
31
- StatsD.measure('values.foobar') do
32
- #noop
25
+ metric = capture_statsd_call do
26
+ StatsD.measure('values.foobar') { 'foo' }
33
27
  end
28
+ assert_equal 1120.0, metric.value
34
29
  end
35
30
 
36
- def test_statsd_measure_with_benchmarked_value_and_options
37
- Benchmark.stubs(:realtime).returns(1.12)
38
- StatsD.expects(:collect).with(:ms, 'values.foobar', 1120.0, :sample_rate => 1.0)
39
- StatsD.measure('values.foobar', :sample_rate => 1.0) do
40
- #noop
41
- end
31
+ def test_statsd_measure_returns_return_value_of_block
32
+ return_value = StatsD.measure('values.foobar') { 'sarah' }
33
+ assert_equal 'sarah', return_value
34
+ end
35
+
36
+ def test_statsd_increment
37
+ metric = capture_statsd_call { StatsD.increment('values.foobar', 3) }
38
+ assert_equal :c, metric.type
39
+ assert_equal 'values.foobar', metric.name
40
+ assert_equal 3, metric.value
42
41
  end
43
42
 
44
43
  def test_statsd_increment_with_hash_argument
45
- StatsD.expects(:collect).with(:c, 'values.foobar', 1, :tags => ['test'])
46
- StatsD.increment('values.foobar', :tags => ['test'])
44
+ metric = capture_statsd_call { StatsD.increment('values.foobar', :tags => ['test']) }
45
+ assert_equal StatsD.default_sample_rate, metric.sample_rate
46
+ assert_equal ['test'], metric.tags
47
+ assert_equal 1, metric.value
47
48
  end
48
49
 
49
50
  def test_statsd_increment_with_multiple_arguments
50
- StatsD.expects(:collect).with(:c, 'values.foobar', 12, :sample_rate => nil, :tags => ['test'])
51
- StatsD.increment('values.foobar', 12, nil, ['test'])
51
+ metric = capture_statsd_call { StatsD.increment('values.foobar', 12, nil, ['test']) }
52
+ assert_equal StatsD.default_sample_rate, metric.sample_rate
53
+ assert_equal ['test'], metric.tags
54
+ assert_equal 12, metric.value
52
55
  end
53
56
 
54
57
  def test_statsd_gauge
55
- StatsD.expects(:collect).with(:g, 'values.foobar', 12, {})
56
- StatsD.gauge('values.foobar', 12)
58
+ metric = capture_statsd_call { StatsD.gauge('values.foobar', 12) }
59
+ assert_equal :g, metric.type
60
+ assert_equal 'values.foobar', metric.name
61
+ assert_equal 12, metric.value
57
62
  end
58
63
 
59
64
  def test_statsd_set
60
- StatsD.expects(:collect).with(:s, 'values.foobar', 12, {})
61
- StatsD.set('values.foobar', 12)
62
- end
63
-
64
- def test_statsd_histogram_on_datadog
65
- StatsD.stubs(:implementation).returns(:datadog)
66
- StatsD.expects(:collect).with(:h, 'values.hg', 12.33, :sample_rate => 0.2, :tags => ['tag_123', 'key-name:value123'])
67
- StatsD.histogram('values.hg', 12.33, :sample_rate => 0.2, :tags => ['tag_123', 'key-name:value123'])
68
- end
69
-
70
- def test_raise_when_using_histograms_and_not_on_datadog
71
- StatsD.stubs(:implementation).returns(:other)
72
- assert_raises(NotImplementedError) { StatsD.histogram('foohg', 3.33) }
73
- end
74
-
75
- def test_collect_respects_enabled
76
- StatsD.stubs(:enabled).returns(false)
77
- StatsD.expects(:write_packet).never
78
- StatsD.increment('counter')
79
- end
80
-
81
- def test_collect_respects_sampling_rate
82
- StatsD.expects(:write_packet).once
83
-
84
- StatsD.stubs(:rand).returns(0.6)
85
- StatsD.increment('counter', 1, 0.5)
86
-
87
- StatsD.stubs(:rand).returns(0.4)
88
- StatsD.increment('counter', 1, 0.5)
89
- end
90
-
91
- def test_support_counter_syntax
92
- StatsD.expects(:write_packet).with('counter:1|c')
93
- StatsD.increment('counter')
94
-
95
- StatsD.expects(:write_packet).with('counter:10|c|@0.5')
96
- StatsD.increment('counter', 10, 0.5)
65
+ metric = capture_statsd_call { StatsD.set('values.foobar', 'unique_identifier') }
66
+ assert_equal :s, metric.type
67
+ assert_equal 'values.foobar', metric.name
68
+ assert_equal 'unique_identifier', metric.value
97
69
  end
98
70
 
99
- def test_supports_gauge_syntax
100
- StatsD.expects(:write_packet).with('fooy:1.23|g')
101
- StatsD.gauge('fooy', 1.23)
102
-
103
- StatsD.expects(:write_packet).with('fooy:42|g|@0.01')
104
- StatsD.gauge('fooy', 42, 0.01)
71
+ def test_statsd_histogram
72
+ metric = capture_statsd_call { StatsD.histogram('values.foobar', 42) }
73
+ assert_equal :h, metric.type
74
+ assert_equal 'values.foobar', metric.name
75
+ assert_equal 42, metric.value
105
76
  end
106
77
 
107
- def test_supports_set_syntax
108
- StatsD.expects(:write_packet).with('unique:10.0.0.10|s')
109
- StatsD.set('unique', '10.0.0.10')
110
-
111
- StatsD.expects(:write_packet).with('unique:10.0.0.10|s|@0.01')
112
- StatsD.set('unique', '10.0.0.10', 0.01)
78
+ def test_statsd_key_value
79
+ metric = capture_statsd_call { StatsD.key_value('values.foobar', 42) }
80
+ assert_equal :kv, metric.type
81
+ assert_equal 'values.foobar', metric.name
82
+ assert_equal 42, metric.value
113
83
  end
114
84
 
115
- def test_support_timing_syntax
116
- StatsD.expects(:write_packet).with('duration:1.23|ms')
117
- StatsD.measure('duration', 1.23)
118
-
119
- StatsD.expects(:write_packet).with('duration:0.42|ms|@0.01')
120
- StatsD.measure('duration', 0.42, 0.01)
121
- end
122
-
123
- def test_histogram_syntax_on_datadog
124
- StatsD.stubs(:implementation).returns(:datadog)
125
-
126
- StatsD.expects(:write_packet).with('fooh:42.4|h')
127
- StatsD.histogram('fooh', 42.4)
128
- end
129
-
130
- def test_support_tags_syntax_on_datadog
131
- StatsD.stubs(:implementation).returns(:datadog)
132
-
133
- StatsD.expects(:write_packet).with("fooc:3|c|#topic:foo,bar")
134
- StatsD.increment('fooc', 3, 1.0, ['topic:foo', 'bar'])
135
- end
136
-
137
- def test_raise_when_using_tags_and_not_on_datadog
138
- StatsD.stubs(:implementation).returns(:other)
139
- assert_raises(ArgumentError) { StatsD.increment('fooc', 3, 1.0, ['nonempty']) }
140
- end
141
-
142
- def test_rewrite_shitty_tags
143
- StatsD.stubs(:implementation).returns(:datadog)
144
-
145
- assert_equal ['igno_red'], StatsD.send(:clean_tags, ['igno,red'])
146
- assert_equal ['igno_red'], StatsD.send(:clean_tags, ['igno red'])
147
- assert_equal ['test:test_test'], StatsD.send(:clean_tags, ['test:test:test'])
148
-
149
- assert_equal ['tag:value'], StatsD.send(:clean_tags, { :tag => 'value' })
150
- assert_equal Set['tag:value', 'tag2:value2'], Set.new(StatsD.send(:clean_tags, { :tag => 'value', :tag2 => 'value2' }))
151
-
152
- StatsD.expects(:write_packet).with("fooc:3|c|#topic:foo_foo,bar_")
153
- StatsD.increment('fooc', 3, 1.0, ['topic:foo : foo', 'bar '])
154
-
155
- StatsD.expects(:write_packet).with("foot:1|c|#foo:bar")
156
- StatsD.increment('foot', :tags => { :foo => 'bar' })
157
- end
158
-
159
- def test_supports_key_value_syntax_on_statsite
160
- StatsD.stubs(:implementation).returns(:statsite)
161
-
162
- StatsD.expects(:write_packet).with("fooy:42|kv\n")
163
- StatsD.key_value('fooy', 42)
164
- end
165
-
166
- def test_supports_key_value_with_timestamp_on_statsite
167
- StatsD.stubs(:implementation).returns(:statsite)
168
-
169
- StatsD.expects(:write_packet).with("fooy:42|kv|@123456\n")
170
- StatsD.key_value('fooy', 42, 123456)
171
- end
172
-
173
- def test_raise_when_using_key_value_and_not_on_statsite
174
- StatsD.stubs(:implementation).returns(:other)
175
- assert_raises(NotImplementedError) { StatsD.key_value('fookv', 3.33) }
176
- end
177
-
178
- def test_support_key_prefix
179
- StatsD.expects(:write_packet).with('prefix.counter:1|c').once
180
- StatsD.expects(:write_packet).with('counter:1|c').once
181
-
182
- StatsD.stubs(:prefix).returns('prefix')
183
- StatsD.increment('counter')
184
- StatsD.stubs(:prefix).returns(nil)
185
- StatsD.increment('counter')
186
- end
187
-
188
- def test_development_mode_uses_logger
189
- StatsD.stubs(:mode).returns(:development)
190
-
191
- @logger.expects(:info).with(regexp_matches(/\A\[StatsD\] /))
192
- StatsD.increment('counter')
193
- end
194
-
195
- def test_production_mode_uses_udp_socket
196
- StatsD.stubs(:mode).returns(:production)
197
- StatsD.server = "localhost:9815"
198
-
199
- @socket.expects(:connect).with('localhost', 9815).once
200
- @socket.expects(:send).with(is_a(String), 0).twice
201
- StatsD.increment('counter')
202
- StatsD.increment('counter')
203
- end
204
-
205
- def test_changing_host_or_port_should_create_new_socket
206
- @socket.expects(:connect).with('localhost', 1234).once
207
- @socket.expects(:connect).with('localhost', 2345).once
208
- @socket.expects(:connect).with('127.0.0.1', 2345).once
209
-
210
- StatsD.server = "localhost:1234"
211
- StatsD.send(:socket)
212
-
213
- StatsD.port = 2345
214
- StatsD.send(:socket)
215
-
216
- StatsD.host = '127.0.0.1'
217
- StatsD.send(:socket)
218
- end
219
-
220
- def test_socket_error_should_not_raise_but_log
221
- StatsD.stubs(:mode).returns(:production)
222
- @socket.stubs(:connect).raises(SocketError)
223
-
224
- @logger.expects(:error).with(instance_of(SocketError))
225
- StatsD.measure('values.foobar', 42)
226
- end
227
-
228
- def test_system_call_error_should_not_raise_but_log
229
- StatsD.stubs(:mode).returns(:production)
230
- @socket.stubs(:send).raises(Errno::ETIMEDOUT)
231
-
232
- @logger.expects(:error).with(instance_of(Errno::ETIMEDOUT))
233
- StatsD.measure('values.foobar', 42)
234
- end
235
-
236
- def test_io_error_should_not_raise_but_log
237
- StatsD.stubs(:mode).returns(:production)
238
- @socket.stubs(:send).raises(IOError)
239
-
240
- @logger.expects(:error).with(instance_of(IOError))
241
- StatsD.measure('values.foobar', 42)
242
- end
243
-
244
- def test_live_local_udp_socket
245
- UDPSocket.unstub(:new)
246
-
247
- StatsD.stubs(:mode).returns(:production)
248
- StatsD.server = "localhost:31798"
249
-
250
- server = UDPSocket.new
251
- server.bind('localhost', 31798)
85
+ protected
252
86
 
253
- StatsD.increment('counter')
254
- assert_equal "counter:1|c", server.recvfrom(100).first
87
+ def capture_statsd_call(&block)
88
+ metrics = capture_statsd_calls(&block)
89
+ assert_equal 1, metrics.length
90
+ metrics.first
255
91
  end
256
92
  end
data/test/test_helper.rb CHANGED
@@ -1,8 +1,10 @@
1
- require 'rubygems'
2
- require 'statsd-instrument'
3
- require 'test/unit'
1
+ ENV['ENV'] = 'test'
2
+
3
+ require 'minitest/autorun'
4
+ require 'minitest/pride'
4
5
  require 'mocha/setup'
5
6
  require 'set'
6
7
  require 'logger'
8
+ require 'statsd-instrument'
7
9
 
8
10
  StatsD.logger = Logger.new('/dev/null')
@@ -0,0 +1,135 @@
1
+ require 'test_helper'
2
+
3
+ class UDPBackendTest < Minitest::Test
4
+ def setup
5
+ StatsD.stubs(:backend).returns(@backend = StatsD::Instrument::Backends::UDPBackend.new)
6
+ @backend.stubs(:rand).returns(0.0)
7
+
8
+ UDPSocket.stubs(:new).returns(@socket = mock('socket'))
9
+ @socket.stubs(:connect)
10
+ @socket.stubs(:send).returns(1)
11
+
12
+ StatsD.stubs(:logger).returns(@logger = mock('logger'))
13
+ end
14
+
15
+ def test_changing_host_or_port_should_create_new_socket
16
+ @socket.expects(:connect).with('localhost', 1234).once
17
+ @socket.expects(:connect).with('localhost', 2345).once
18
+ @socket.expects(:connect).with('127.0.0.1', 2345).once
19
+
20
+ @backend.server = "localhost:1234"
21
+ @backend.socket
22
+
23
+ @backend.port = 2345
24
+ @backend.socket
25
+
26
+ @backend.host = '127.0.0.1'
27
+ @backend.socket
28
+ end
29
+
30
+ def test_collect_respects_sampling_rate
31
+ @socket.expects(:send).once.returns(1)
32
+ metric = StatsD::Instrument::Metric.new(type: :c, name: 'test', sample_rate: 0.5)
33
+
34
+ @backend.stubs(:rand).returns(0.4)
35
+ @backend.collect_metric(metric)
36
+
37
+ @backend.stubs(:rand).returns(0.6)
38
+ @backend.collect_metric(metric)
39
+ end
40
+
41
+ def test_support_counter_syntax
42
+ @backend.expects(:write_packet).with('counter:1|c').once
43
+ StatsD.increment('counter', sample_rate: 1.0)
44
+
45
+ @backend.expects(:write_packet).with('counter:1|c|@0.5').once
46
+ StatsD.increment('counter', sample_rate: 0.5)
47
+ end
48
+
49
+ def test_supports_gauge_syntax
50
+ @backend.expects(:write_packet).with('fooy:1.23|g')
51
+ StatsD.gauge('fooy', 1.23)
52
+
53
+ @backend.expects(:write_packet).with('fooy:42|g|@0.01')
54
+ StatsD.gauge('fooy', 42, sample_rate: 0.01)
55
+ end
56
+
57
+ def test_supports_set_syntax
58
+ @backend.expects(:write_packet).with('unique:10.0.0.10|s')
59
+ StatsD.set('unique', '10.0.0.10')
60
+
61
+ @backend.expects(:write_packet).with('unique:10.0.0.10|s|@0.01')
62
+ StatsD.set('unique', '10.0.0.10', sample_rate: 0.01)
63
+ end
64
+
65
+ def test_support_measure_syntax
66
+ @backend.expects(:write_packet).with('duration:1.23|ms')
67
+ StatsD.measure('duration', 1.23)
68
+
69
+ @backend.expects(:write_packet).with('duration:0.42|ms|@0.01')
70
+ StatsD.measure('duration', 0.42, sample_rate: 0.01)
71
+ end
72
+
73
+ def test_histogram_syntax_on_datadog
74
+ @backend.implementation = :datadog
75
+ @backend.expects(:write_packet).with('fooh:42.4|h')
76
+ StatsD.histogram('fooh', 42.4)
77
+ end
78
+
79
+ def test_histogram_warns_if_not_using_datadog
80
+ @backend.implementation = :other
81
+ @backend.expects(:write_packet).never
82
+ @logger.expects(:warn)
83
+ StatsD.histogram('fooh', 42.4)
84
+ end
85
+
86
+ def test_supports_key_value_syntax_on_statsite
87
+ @backend.implementation = :statsite
88
+ @backend.expects(:write_packet).with("fooy:42|kv\n")
89
+ StatsD.key_value('fooy', 42)
90
+ end
91
+
92
+ def test_supports_key_value_with_timestamp_on_statsite
93
+ @backend.implementation = :statsite
94
+ @backend.expects(:write_packet).with("fooy:42|kv|@123456\n")
95
+ StatsD.key_value('fooy', 42, 123456)
96
+ end
97
+
98
+ def test_warn_when_using_key_value_and_not_on_statsite
99
+ @backend.implementation = :other
100
+ @backend.expects(:write_packet).never
101
+ @logger.expects(:warn)
102
+ StatsD.key_value('fookv', 3.33)
103
+ end
104
+
105
+ def test_support_tags_syntax_on_datadog
106
+ @backend.implementation = :datadog
107
+ @backend.expects(:write_packet).with("fooc:3|c|#topic:foo,bar")
108
+ StatsD.increment('fooc', 3, tags: ['topic:foo', 'bar'])
109
+ end
110
+
111
+ def test_warn_when_using_tags_and_not_on_datadog
112
+ @backend.implementation = :other
113
+ @backend.expects(:write_packet).with("fooc:1|c")
114
+ @logger.expects(:warn)
115
+ StatsD.increment('fooc', tags: ['ignored'])
116
+ end
117
+
118
+ def test_socket_error_should_not_raise_but_log
119
+ @socket.stubs(:connect).raises(SocketError)
120
+ @logger.expects(:error)
121
+ StatsD.increment('fail')
122
+ end
123
+
124
+ def test_system_call_error_should_not_raise_but_log
125
+ @socket.stubs(:send).raises(Errno::ETIMEDOUT)
126
+ @logger.expects(:error)
127
+ StatsD.increment('fail')
128
+ end
129
+
130
+ def test_io_error_should_not_raise_but_log
131
+ @socket.stubs(:send).raises(IOError)
132
+ @logger.expects(:error)
133
+ StatsD.increment('fail')
134
+ end
135
+ end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statsd-instrument
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.2
5
- prerelease:
4
+ version: 2.0.0beta
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jesse Storimer
@@ -10,38 +9,48 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2014-03-28 00:00:00.000000000 Z
12
+ date: 2014-04-15 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: rake
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ! '>='
18
+ - - '>='
21
19
  - !ruby/object:Gem::Version
22
20
  version: '0'
23
21
  type: :development
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ! '>='
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: minitest
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
29
40
  - !ruby/object:Gem::Version
30
41
  version: '0'
31
42
  - !ruby/object:Gem::Dependency
32
43
  name: mocha
33
44
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
45
  requirements:
36
- - - ! '>='
46
+ - - '>='
37
47
  - !ruby/object:Gem::Version
38
48
  version: '0'
39
49
  type: :development
40
50
  prerelease: false
41
51
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
52
  requirements:
44
- - - ! '>='
53
+ - - '>='
45
54
  - !ruby/object:Gem::Version
46
55
  version: '0'
47
56
  description: A StatsD client for Ruby appspec. Provides metaprogramming methods to
@@ -60,37 +69,59 @@ files:
60
69
  - Rakefile
61
70
  - lib/statsd-instrument.rb
62
71
  - lib/statsd/instrument.rb
72
+ - lib/statsd/instrument/assertions.rb
73
+ - lib/statsd/instrument/backend.rb
74
+ - lib/statsd/instrument/backends/capture_backend.rb
75
+ - lib/statsd/instrument/backends/logger_backend.rb
76
+ - lib/statsd/instrument/backends/null_backend.rb
77
+ - lib/statsd/instrument/backends/udp_backend.rb
78
+ - lib/statsd/instrument/environment.rb
79
+ - lib/statsd/instrument/metric.rb
63
80
  - lib/statsd/instrument/version.rb
64
81
  - statsd-instrument.gemspec
82
+ - test/assertions_test.rb
83
+ - test/capture_backend_test.rb
84
+ - test/environment_test.rb
85
+ - test/integration_test.rb
86
+ - test/logger_backend_test.rb
87
+ - test/metric_test.rb
65
88
  - test/statsd_instrumentation_test.rb
66
89
  - test/statsd_test.rb
67
90
  - test/test_helper.rb
91
+ - test/udp_backend_test.rb
68
92
  homepage: https://github.com/Shopify/statsd-instrument
69
93
  licenses:
70
94
  - MIT
95
+ metadata: {}
71
96
  post_install_message:
72
97
  rdoc_options: []
73
98
  require_paths:
74
99
  - lib
75
100
  required_ruby_version: !ruby/object:Gem::Requirement
76
- none: false
77
101
  requirements:
78
- - - ! '>='
102
+ - - '>='
79
103
  - !ruby/object:Gem::Version
80
104
  version: '0'
81
105
  required_rubygems_version: !ruby/object:Gem::Requirement
82
- none: false
83
106
  requirements:
84
- - - ! '>='
107
+ - - '>'
85
108
  - !ruby/object:Gem::Version
86
- version: '0'
109
+ version: 1.3.1
87
110
  requirements: []
88
111
  rubyforge_project:
89
- rubygems_version: 1.8.23
112
+ rubygems_version: 2.0.3
90
113
  signing_key:
91
- specification_version: 3
114
+ specification_version: 4
92
115
  summary: A StatsD client for Ruby apps
93
116
  test_files:
117
+ - test/assertions_test.rb
118
+ - test/capture_backend_test.rb
119
+ - test/environment_test.rb
120
+ - test/integration_test.rb
121
+ - test/logger_backend_test.rb
122
+ - test/metric_test.rb
94
123
  - test/statsd_instrumentation_test.rb
95
124
  - test/statsd_test.rb
96
125
  - test/test_helper.rb
126
+ - test/udp_backend_test.rb
127
+ has_rdoc: