statsd-instrument 2.3.2 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -0
  3. data/.github/workflows/ci.yml +31 -0
  4. data/.gitignore +1 -0
  5. data/.rubocop-https---shopify-github-io-ruby-style-guide-rubocop-yml +1027 -0
  6. data/.rubocop.yml +21 -0
  7. data/CHANGELOG.md +41 -0
  8. data/CONTRIBUTING.md +26 -6
  9. data/Gemfile +2 -0
  10. data/Rakefile +3 -1
  11. data/lib/statsd/instrument/assertions.rb +24 -18
  12. data/lib/statsd/instrument/backend.rb +3 -2
  13. data/lib/statsd/instrument/backends/capture_backend.rb +2 -1
  14. data/lib/statsd/instrument/backends/logger_backend.rb +3 -3
  15. data/lib/statsd/instrument/backends/null_backend.rb +2 -0
  16. data/lib/statsd/instrument/backends/udp_backend.rb +20 -17
  17. data/lib/statsd/instrument/environment.rb +2 -0
  18. data/lib/statsd/instrument/helpers.rb +6 -2
  19. data/lib/statsd/instrument/matchers.rb +14 -11
  20. data/lib/statsd/instrument/metric.rb +34 -21
  21. data/lib/statsd/instrument/metric_expectation.rb +32 -18
  22. data/lib/statsd/instrument/railtie.rb +2 -1
  23. data/lib/statsd/instrument/version.rb +3 -1
  24. data/lib/statsd/instrument.rb +85 -36
  25. data/lib/statsd-instrument.rb +2 -0
  26. data/statsd-instrument.gemspec +13 -10
  27. data/test/assertions_test.rb +15 -4
  28. data/test/benchmark/default_tags.rb +47 -0
  29. data/test/benchmark/metrics.rb +9 -8
  30. data/test/benchmark/tags.rb +5 -3
  31. data/test/capture_backend_test.rb +4 -2
  32. data/test/environment_test.rb +2 -1
  33. data/test/helpers_test.rb +2 -1
  34. data/test/integration_test.rb +27 -7
  35. data/test/logger_backend_test.rb +10 -8
  36. data/test/matchers_test.rb +34 -20
  37. data/test/metric_test.rb +15 -4
  38. data/test/statsd_instrumentation_test.rb +7 -7
  39. data/test/statsd_test.rb +100 -10
  40. data/test/test_helper.rb +2 -0
  41. data/test/udp_backend_test.rb +5 -28
  42. metadata +23 -5
  43. data/.travis.yml +0 -12
@@ -1,13 +1,17 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require 'statsd/instrument/matchers'
3
5
 
4
6
  class MatchersTest < Minitest::Test
5
7
  def test_statsd_increment_matched
6
- assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', {}).matches? lambda { StatsD.increment('counter') }
8
+ assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', {})
9
+ .matches?(lambda { StatsD.increment('counter') })
7
10
  end
8
11
 
9
12
  def test_statsd_increment_not_matched
10
- refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', {}).matches? lambda { StatsD.increment('not_counter') }
13
+ refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', {})
14
+ .matches?(lambda { StatsD.increment('not_counter') })
11
15
  end
12
16
 
13
17
  def test_statsd_increment_compound_matched
@@ -31,72 +35,82 @@ class MatchersTest < Minitest::Test
31
35
  end
32
36
 
33
37
  def test_statsd_increment_with_times_matched
34
- assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', times: 1).matches? lambda { StatsD.increment('counter') }
38
+ assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', times: 1)
39
+ .matches?(lambda { StatsD.increment('counter') })
35
40
  end
36
41
 
37
42
  def test_statsd_increment_with_times_not_matched
38
- refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', times: 2).matches? lambda { StatsD.increment('counter', times: 3) }
43
+ refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', times: 2)
44
+ .matches?(lambda { StatsD.increment('counter', times: 3) })
39
45
  end
40
46
 
41
47
  def test_statsd_increment_with_sample_rate_matched
42
- assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', sample_rate: 0.5).matches? lambda { StatsD.increment('counter', sample_rate: 0.5) }
48
+ assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', sample_rate: 0.5)
49
+ .matches?(lambda { StatsD.increment('counter', sample_rate: 0.5) })
43
50
  end
44
51
 
45
52
  def test_statsd_increment_with_sample_rate_not_matched
46
- refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', sample_rate: 0.5).matches? lambda { StatsD.increment('counter', sample_rate: 0.7) }
53
+ refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', sample_rate: 0.5)
54
+ .matches?(lambda { StatsD.increment('counter', sample_rate: 0.7) })
47
55
  end
48
56
 
49
57
  def test_statsd_increment_with_value_matched
50
- assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', value: 1).matches? lambda { StatsD.increment('counter') }
58
+ assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', value: 1)
59
+ .matches?(lambda { StatsD.increment('counter') })
51
60
  end
52
61
 
53
62
  def test_statsd_increment_with_value_matched_when_multiple_metrics
54
- assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', value: 1).matches? lambda {
63
+ assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', value: 1).matches?(lambda {
55
64
  StatsD.increment('counter', value: 2)
56
65
  StatsD.increment('counter', value: 1)
57
- }
66
+ })
58
67
  end
59
68
 
60
69
  def test_statsd_increment_with_value_not_matched_when_multiple_metrics
61
- refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', value: 1).matches? lambda {
70
+ refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', value: 1).matches?(lambda {
62
71
  StatsD.increment('counter', value: 2)
63
72
  StatsD.increment('counter', value: 3)
64
- }
73
+ })
65
74
  end
66
75
 
67
76
  def test_statsd_increment_with_value_not_matched
68
- refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', value: 3).matches? lambda { StatsD.increment('counter') }
77
+ refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', value: 3)
78
+ .matches?(lambda { StatsD.increment('counter') })
69
79
  end
70
80
 
71
81
  def test_statsd_increment_with_tags_matched
72
- assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', tags: ['a', 'b']).matches? lambda { StatsD.increment('counter', tags: ['a', 'b']) }
82
+ assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', tags: ['a', 'b'])
83
+ .matches?(lambda { StatsD.increment('counter', tags: ['a', 'b']) })
73
84
  end
74
85
 
75
86
  def test_statsd_increment_with_tags_not_matched
76
- refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', tags: ['a', 'b']).matches? lambda { StatsD.increment('counter', tags: ['c']) }
87
+ refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', tags: ['a', 'b'])
88
+ .matches?(lambda { StatsD.increment('counter', tags: ['c']) })
77
89
  end
78
90
 
79
91
  def test_statsd_increment_with_times_and_value_matched
80
- assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', times: 2, value: 1).matches? lambda {
92
+ assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', times: 2, value: 1).matches?(lambda {
81
93
  StatsD.increment('counter', value: 1)
82
94
  StatsD.increment('counter', value: 1)
83
- }
95
+ })
84
96
  end
85
97
 
86
98
  def test_statsd_increment_with_times_and_value_not_matched
87
- refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', times: 2, value: 1).matches? lambda {
99
+ refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', times: 2, value: 1).matches?(lambda {
88
100
  StatsD.increment('counter', value: 1)
89
101
  StatsD.increment('counter', value: 2)
90
- }
102
+ })
91
103
  end
92
104
 
93
105
  def test_statsd_increment_with_sample_rate_and_argument_matcher_matched
94
106
  between_matcher = RSpec::Matchers::BuiltIn::BeBetween.new(0.4, 0.6).inclusive
95
- assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', sample_rate: between_matcher).matches? lambda { StatsD.increment('counter', sample_rate: 0.5) }
107
+ assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', sample_rate: between_matcher)
108
+ .matches?(lambda { StatsD.increment('counter', sample_rate: 0.5) })
96
109
  end
97
110
 
98
111
  def test_statsd_increment_with_sample_rate_and_argument_matcher_not_matched
99
112
  between_matcher = RSpec::Matchers::BuiltIn::BeBetween.new(0.4, 0.6).inclusive
100
- refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', sample_rate: between_matcher).matches? lambda { StatsD.increment('counter', sample_rate: 0.7) }
113
+ refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', sample_rate: between_matcher)
114
+ .matches?(lambda { StatsD.increment('counter', sample_rate: 0.7) })
101
115
  end
102
116
  end
data/test/metric_test.rb CHANGED
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class MetricTest < Minitest::Test
4
-
5
6
  def test_required_arguments
6
7
  assert_raises(ArgumentError) { StatsD::Instrument::Metric.new(type: :c) }
7
8
  assert_raises(ArgumentError) { StatsD::Instrument::Metric.new(name: 'test') }
@@ -41,11 +42,21 @@ class MetricTest < Minitest::Test
41
42
 
42
43
  def test_handle_bad_tags
43
44
  assert_equal ['ignored'], StatsD::Instrument::Metric.normalize_tags(['igno|red'])
44
- assert_equal ['lol::class:omg::lol'], StatsD::Instrument::Metric.normalize_tags({ :"lol::class" => "omg::lol" })
45
+ assert_equal ['lol::class:omg::lol'], StatsD::Instrument::Metric.normalize_tags("lol::class" => "omg::lol")
45
46
  end
46
47
 
47
48
  def test_rewrite_tags_provided_as_hash
48
- assert_equal ['tag:value'], StatsD::Instrument::Metric.normalize_tags(:tag => 'value')
49
- assert_equal ['tag:value', 'tag2:value2'], StatsD::Instrument::Metric.normalize_tags(:tag => 'value', :tag2 => 'value2')
49
+ assert_equal ['tag:value'], StatsD::Instrument::Metric.normalize_tags(tag: 'value')
50
+ assert_equal ['tag1:v1', 'tag2:v2'], StatsD::Instrument::Metric.normalize_tags(tag1: 'v1', tag2: 'v2')
51
+ end
52
+
53
+ def test_default_tags
54
+ StatsD.stubs(:default_tags).returns(['default_tag:default_value'])
55
+ m = StatsD::Instrument::Metric.new(type: :c, name: 'counter', tags: { tag: 'value' })
56
+ assert_equal ['tag:value', 'default_tag:default_value'], m.tags
57
+
58
+ StatsD.stubs(:default_tags).returns(['tag:value'])
59
+ m = StatsD::Instrument::Metric.new(type: :c, name: 'counter', tags: { tag: 'value' })
60
+ assert_equal ['tag:value', 'tag:value'], m.tags # we don't care about duplicates
50
61
  end
51
62
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module ActiveMerchant; end
@@ -11,7 +13,7 @@ class ActiveMerchant::Base
11
13
  end
12
14
 
13
15
  def post_with_block(&block)
14
- yield if block_given?
16
+ block.call if block_given?
15
17
  end
16
18
  end
17
19
 
@@ -34,7 +36,7 @@ end
34
36
 
35
37
  class ActiveMerchant::UniqueGateway < ActiveMerchant::Base
36
38
  def ssl_post(arg)
37
- {:success => arg}
39
+ { success: arg }
38
40
  end
39
41
 
40
42
  def purchase(arg)
@@ -87,7 +89,7 @@ class StatsDInstrumentationTest < Minitest::Test
87
89
  end
88
90
 
89
91
  assert_statsd_increment('ActiveMerchant.Base.post_with_block') do
90
- assert_equal 'true', ActiveMerchant::Base.new.post_with_block { 'true' }
92
+ assert_equal 'true', ActiveMerchant::Base.new.post_with_block { 'true' }
91
93
  assert_equal 'false', ActiveMerchant::Base.new.post_with_block { 'false' }
92
94
  end
93
95
  ensure
@@ -265,7 +267,6 @@ class StatsDInstrumentationTest < Minitest::Test
265
267
  ActiveMerchant::UniqueGateway.statsd_remove_measure :ssl_post, 'ActiveMerchant.Gateway.ssl_post'
266
268
  end
267
269
 
268
-
269
270
  def test_statsd_distribution
270
271
  ActiveMerchant::UniqueGateway.statsd_distribution :ssl_post, 'ActiveMerchant.Gateway.ssl_post', sample_rate: 0.3
271
272
 
@@ -412,10 +413,9 @@ class StatsDInstrumentationTest < Minitest::Test
412
413
  private
413
414
 
414
415
  def assert_scope(klass, method, expected_scope)
415
- method_scope = case
416
- when klass.private_method_defined?(method)
416
+ method_scope = if klass.private_method_defined?(method)
417
417
  :private
418
- when klass.protected_method_defined?(method)
418
+ elsif klass.protected_method_defined?(method)
419
419
  :protected
420
420
  else
421
421
  :public
data/test/statsd_test.rb CHANGED
@@ -1,8 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class StatsDTest < Minitest::Test
4
6
  include StatsD::Instrument::Assertions
5
7
 
8
+ def teardown
9
+ StatsD.default_tags = nil
10
+ end
11
+
6
12
  def test_statsd_passed_collections_to_backend
7
13
  StatsD.backend.expects(:collect_metric).with(instance_of(StatsD::Instrument::Metric))
8
14
  StatsD.increment('test')
@@ -18,7 +24,7 @@ class StatsDTest < Minitest::Test
18
24
  end
19
25
 
20
26
  def test_statsd_measure_with_explicit_value_and_distribution_override
21
- metric = capture_statsd_call { result = StatsD.measure('values.foobar', 42, as_dist: true) }
27
+ metric = capture_statsd_call { StatsD.measure('values.foobar', 42, as_dist: true) }
22
28
  assert_equal :d, metric.type
23
29
  end
24
30
 
@@ -32,7 +38,7 @@ class StatsDTest < Minitest::Test
32
38
  end
33
39
 
34
40
  def test_statsd_measure_with_explicit_value_keyword_and_distribution_override
35
- metric = capture_statsd_call { result = StatsD.measure('values.foobar', value: 42, as_dist: true) }
41
+ metric = capture_statsd_call { StatsD.measure('values.foobar', value: 42, as_dist: true) }
36
42
  assert_equal :d, metric.type
37
43
  end
38
44
 
@@ -41,12 +47,12 @@ class StatsDTest < Minitest::Test
41
47
  end
42
48
 
43
49
  def test_statsd_measure_with_explicit_value_and_sample_rate
44
- metric = capture_statsd_call { StatsD.measure('values.foobar', 42, :sample_rate => 0.1) }
50
+ metric = capture_statsd_call { StatsD.measure('values.foobar', 42, sample_rate: 0.1) }
45
51
  assert_equal 0.1, metric.sample_rate
46
52
  end
47
53
 
48
54
  def test_statsd_measure_with_benchmarked_block_duration
49
- StatsD::Instrument.stubs(:duration).returns(1.12)
55
+ StatsD::Instrument.stubs(:current_timestamp).returns(5.0, 5.0 + 1.12)
50
56
  metric = capture_statsd_call do
51
57
  StatsD.measure('values.foobar') { 'foo' }
52
58
  end
@@ -65,11 +71,44 @@ class StatsDTest < Minitest::Test
65
71
  assert_equal 'sarah', return_value
66
72
  end
67
73
 
68
- def test_statsd_measure_returns_return_value_of_block_even_if_nil
74
+ def test_statsd_measure_as_distribution_returns_return_value_of_block_even_if_nil
69
75
  return_value = StatsD.measure('values.foobar', as_dist: true) { nil }
70
76
  assert_nil return_value
71
77
  end
72
78
 
79
+ def test_statsd_measure_with_return_in_block_still_captures
80
+ StatsD::Instrument.stubs(:current_timestamp).returns(5.0, 6.12)
81
+ result = nil
82
+ metric = capture_statsd_call do
83
+ lambda = -> do
84
+ StatsD.measure('values.foobar') { return 'from lambda' }
85
+ end
86
+
87
+ result = lambda.call
88
+ end
89
+
90
+ assert_equal 'from lambda', result
91
+ assert_equal 1120.0, metric.value
92
+ end
93
+
94
+ def test_statsd_measure_with_exception_in_block_still_captures
95
+ StatsD::Instrument.stubs(:current_timestamp).returns(5.0, 6.12)
96
+ result = nil
97
+ metric = capture_statsd_call do
98
+ lambda = -> do
99
+ StatsD.measure('values.foobar') { raise 'from lambda' }
100
+ end
101
+
102
+ begin
103
+ result = lambda.call
104
+ rescue # rubocop:disable Lint/HandleExceptions:
105
+ end
106
+ end
107
+
108
+ assert_nil result
109
+ assert_equal 1120.0, metric.value
110
+ end
111
+
73
112
  def test_statsd_increment
74
113
  result = nil
75
114
  metric = capture_statsd_call { result = StatsD.increment('values.foobar', 3) }
@@ -80,14 +119,14 @@ class StatsDTest < Minitest::Test
80
119
  end
81
120
 
82
121
  def test_statsd_increment_with_hash_argument
83
- metric = capture_statsd_call { StatsD.increment('values.foobar', :tags => ['test']) }
122
+ metric = capture_statsd_call { StatsD.increment('values.foobar', tags: ['test']) }
84
123
  assert_equal StatsD.default_sample_rate, metric.sample_rate
85
124
  assert_equal ['test'], metric.tags
86
125
  assert_equal 1, metric.value
87
126
  end
88
127
 
89
128
  def test_statsd_increment_with_value_as_keyword_argument
90
- metric = capture_statsd_call { StatsD.increment('values.foobar', :value => 2) }
129
+ metric = capture_statsd_call { StatsD.increment('values.foobar', value: 2) }
91
130
  assert_equal StatsD.default_sample_rate, metric.sample_rate
92
131
  assert_equal 2, metric.value
93
132
  end
@@ -149,7 +188,7 @@ class StatsDTest < Minitest::Test
149
188
  end
150
189
 
151
190
  def test_statsd_distribution_with_benchmarked_block_duration
152
- StatsD::Instrument.stubs(:duration).returns(1.12)
191
+ StatsD::Instrument.stubs(:current_timestamp).returns(5.0, 5.0 + 1.12)
153
192
  metric = capture_statsd_call do
154
193
  StatsD.distribution('values.foobar') { 'foo' }
155
194
  end
@@ -157,10 +196,45 @@ class StatsDTest < Minitest::Test
157
196
  assert_equal 1120.0, metric.value
158
197
  end
159
198
 
199
+ def test_statsd_distribution_with_return_in_block_still_captures
200
+ StatsD::Instrument.stubs(:current_timestamp).returns(5.0, 5.0 + 1.12)
201
+ result = nil
202
+ metric = capture_statsd_call do
203
+ lambda = -> do
204
+ StatsD.distribution('values.foobar') { return 'from lambda' }
205
+ end
206
+
207
+ result = lambda.call
208
+ end
209
+
210
+ assert_equal 'from lambda', result
211
+ assert_equal :d, metric.type
212
+ assert_equal 1120.0, metric.value
213
+ end
214
+
215
+ def test_statsd_distribution_with_exception_in_block_still_captures
216
+ StatsD::Instrument.stubs(:current_timestamp).returns(5.0, 5.0 + 1.12)
217
+ result = nil
218
+ metric = capture_statsd_call do
219
+ lambda = -> do
220
+ StatsD.distribution('values.foobar') { raise 'from lambda' }
221
+ end
222
+
223
+ begin
224
+ result = lambda.call
225
+ rescue # rubocop:disable Lint/HandleExceptions
226
+ end
227
+ end
228
+
229
+ assert_nil result
230
+ assert_equal :d, metric.type
231
+ assert_equal 1120.0, metric.value
232
+ end
233
+
160
234
  def test_statsd_distribution_with_block_and_options
161
- StatsD::Instrument.stubs(:duration).returns(1.12)
235
+ StatsD::Instrument.stubs(:current_timestamp).returns(5.0, 5.0 + 1.12)
162
236
  metric = capture_statsd_call do
163
- StatsD.distribution('values.foobar', :tags => ['test'], :sample_rate => 0.9) { 'foo' }
237
+ StatsD.distribution('values.foobar', tags: ['test'], sample_rate: 0.9) { 'foo' }
164
238
  end
165
239
  assert_equal 1120.0, metric.value
166
240
  assert_equal 'values.foobar', metric.name
@@ -187,6 +261,22 @@ class StatsDTest < Minitest::Test
187
261
  assert_equal 42, metric.value
188
262
  end
189
263
 
264
+ def test_statsd_durarion_returns_time_in_seconds
265
+ duration = StatsD::Instrument.duration {}
266
+ assert_kind_of Float, duration
267
+ end
268
+
269
+ def test_statsd_durarion_does_not_swallow_exceptions
270
+ assert_raises(RuntimeError) do
271
+ StatsD::Instrument.duration { raise "Foo" }
272
+ end
273
+ end
274
+
275
+ def test_statsd_default_tags_get_normalized
276
+ StatsD.default_tags = { first_tag: 'first_value', second_tag: 'second_value' }
277
+ assert_equal ['first_tag:first_value', 'second_tag:second_value'], StatsD.default_tags
278
+ end
279
+
190
280
  protected
191
281
 
192
282
  def capture_statsd_call(&block)
data/test/test_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  ENV['ENV'] = 'test'
2
4
 
3
5
  require 'minitest/autorun'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class UDPBackendTest < Minitest::Test
@@ -76,7 +78,7 @@ class UDPBackendTest < Minitest::Test
76
78
  StatsD.histogram('fooh', 42.4)
77
79
  end
78
80
 
79
- def test_distribution_syntax_on_datadog
81
+ def test_distribution_syntax_on_datadog
80
82
  @backend.implementation = :datadog
81
83
  @backend.expects(:write_packet).with('fooh:42.4|d')
82
84
  StatsD.distribution('fooh', 42.4)
@@ -90,8 +92,8 @@ class UDPBackendTest < Minitest::Test
90
92
 
91
93
  def test_event_on_datadog_escapes_newlines
92
94
  @backend.implementation = :datadog
93
- @backend.expects(:write_packet).with('_e{8,5}:fooh\\n\\n|baz\\n')
94
- StatsD.event('fooh\n\n', 'baz\n')
95
+ @backend.expects(:write_packet).with("_e{8,5}:fooh\\n\\n|baz\\n")
96
+ StatsD.event("fooh\n\n", "baz\n")
95
97
  end
96
98
 
97
99
  def test_event_on_datadog_ignores_invalid_metadata
@@ -183,31 +185,6 @@ class UDPBackendTest < Minitest::Test
183
185
  StatsD.increment('fail')
184
186
  end
185
187
 
186
- def test_synchronize_in_exit_handler_handles_thread_error_and_exits_cleanly
187
- pid = fork do
188
- Signal.trap('TERM') do
189
- $sent_packet = false
190
-
191
- class << @backend.socket
192
- def send(command, *args)
193
- $sent_packet = true if command == 'exiting:1|c'
194
- command.length
195
- end
196
- end
197
-
198
- StatsD.increment('exiting')
199
- Process.exit!($sent_packet)
200
- end
201
-
202
- sleep 100
203
- end
204
-
205
- Process.kill('TERM', pid)
206
- Process.waitpid(pid)
207
-
208
- assert $?.success?, 'socket did not write on exit'
209
- end
210
-
211
188
  def test_socket_error_should_invalidate_socket
212
189
  seq = sequence('fail_then_succeed')
213
190
 
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: 2.3.2
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jesse Storimer
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-11-28 00:00:00.000000000 Z
13
+ date: 2019-09-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
@@ -82,6 +82,20 @@ dependencies:
82
82
  - - ">="
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: rubocop
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
85
99
  - !ruby/object:Gem::Dependency
86
100
  name: benchmark-ips
87
101
  requirement: !ruby/object:Gem::Requirement
@@ -104,9 +118,12 @@ executables: []
104
118
  extensions: []
105
119
  extra_rdoc_files: []
106
120
  files:
121
+ - ".github/CODEOWNERS"
107
122
  - ".github/probots.yml"
123
+ - ".github/workflows/ci.yml"
108
124
  - ".gitignore"
109
- - ".travis.yml"
125
+ - ".rubocop-https---shopify-github-io-ruby-style-guide-rubocop-yml"
126
+ - ".rubocop.yml"
110
127
  - CHANGELOG.md
111
128
  - CONTRIBUTING.md
112
129
  - Gemfile
@@ -131,6 +148,7 @@ files:
131
148
  - shipit.rubygems.yml
132
149
  - statsd-instrument.gemspec
133
150
  - test/assertions_test.rb
151
+ - test/benchmark/default_tags.rb
134
152
  - test/benchmark/metrics.rb
135
153
  - test/benchmark/tags.rb
136
154
  - test/capture_backend_test.rb
@@ -163,13 +181,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
181
  - !ruby/object:Gem::Version
164
182
  version: '0'
165
183
  requirements: []
166
- rubyforge_project:
167
- rubygems_version: 2.7.6
184
+ rubygems_version: 3.0.3
168
185
  signing_key:
169
186
  specification_version: 4
170
187
  summary: A StatsD client for Ruby apps
171
188
  test_files:
172
189
  - test/assertions_test.rb
190
+ - test/benchmark/default_tags.rb
173
191
  - test/benchmark/metrics.rb
174
192
  - test/benchmark/tags.rb
175
193
  - test/capture_backend_test.rb
data/.travis.yml DELETED
@@ -1,12 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.1.10
4
- - 2.2.6
5
- - 2.3.3
6
- - ruby-head
7
-
8
- matrix:
9
- allow_failures:
10
- - rvm: ruby-head
11
-
12
- sudo: false