statsd-instrument 2.9.2 → 3.0.2

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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +16 -23
  3. data/.rubocop.yml +3 -13
  4. data/CHANGELOG.md +33 -0
  5. data/Gemfile +8 -0
  6. data/README.md +3 -3
  7. data/Rakefile +1 -1
  8. data/benchmark/send-metrics-to-dev-null-log +5 -2
  9. data/benchmark/send-metrics-to-local-udp-receiver +8 -6
  10. data/bin/rake +29 -0
  11. data/bin/rubocop +29 -0
  12. data/lib/statsd/instrument.rb +80 -144
  13. data/lib/statsd/instrument/assertions.rb +200 -208
  14. data/lib/statsd/instrument/capture_sink.rb +23 -19
  15. data/lib/statsd/instrument/client.rb +414 -320
  16. data/lib/statsd/instrument/datagram.rb +69 -65
  17. data/lib/statsd/instrument/datagram_builder.rb +81 -77
  18. data/lib/statsd/instrument/dogstatsd_datagram.rb +76 -72
  19. data/lib/statsd/instrument/dogstatsd_datagram_builder.rb +68 -64
  20. data/lib/statsd/instrument/environment.rb +79 -98
  21. data/lib/statsd/instrument/expectation.rb +96 -96
  22. data/lib/statsd/instrument/helpers.rb +10 -35
  23. data/lib/statsd/instrument/log_sink.rb +20 -16
  24. data/lib/statsd/instrument/matchers.rb +86 -71
  25. data/lib/statsd/instrument/null_sink.rb +12 -8
  26. data/lib/statsd/instrument/railtie.rb +11 -11
  27. data/lib/statsd/instrument/statsd_datagram_builder.rb +12 -8
  28. data/lib/statsd/instrument/strict.rb +12 -123
  29. data/lib/statsd/instrument/udp_sink.rb +50 -46
  30. data/lib/statsd/instrument/version.rb +1 -1
  31. data/statsd-instrument.gemspec +2 -8
  32. data/test/assertions_test.rb +46 -12
  33. data/test/capture_sink_test.rb +8 -8
  34. data/test/client_test.rb +62 -51
  35. data/test/datagram_builder_test.rb +29 -29
  36. data/test/datagram_test.rb +1 -1
  37. data/test/dogstatsd_datagram_builder_test.rb +28 -28
  38. data/test/environment_test.rb +10 -46
  39. data/test/helpers/rubocop_helper.rb +11 -8
  40. data/test/helpers_test.rb +5 -5
  41. data/test/integration_test.rb +10 -25
  42. data/test/log_sink_test.rb +2 -2
  43. data/test/matchers_test.rb +36 -36
  44. data/test/null_sink_test.rb +2 -2
  45. data/test/rubocop/metric_return_value_test.rb +3 -3
  46. data/test/rubocop/metric_value_keyword_argument_test.rb +1 -1
  47. data/test/rubocop/positional_arguments_test.rb +10 -10
  48. data/test/statsd_instrumentation_test.rb +97 -122
  49. data/test/statsd_test.rb +50 -75
  50. data/test/test_helper.rb +7 -5
  51. data/test/udp_sink_test.rb +8 -8
  52. metadata +7 -125
  53. data/.rubocop-https---shopify-github-io-ruby-style-guide-rubocop-yml +0 -1027
  54. data/benchmark/datagram-client +0 -40
  55. data/lib/statsd/instrument/backend.rb +0 -18
  56. data/lib/statsd/instrument/backends/capture_backend.rb +0 -32
  57. data/lib/statsd/instrument/backends/logger_backend.rb +0 -20
  58. data/lib/statsd/instrument/backends/null_backend.rb +0 -9
  59. data/lib/statsd/instrument/backends/udp_backend.rb +0 -152
  60. data/lib/statsd/instrument/legacy_client.rb +0 -301
  61. data/lib/statsd/instrument/metric.rb +0 -155
  62. data/test/assertions_on_legacy_client_test.rb +0 -344
  63. data/test/capture_backend_test.rb +0 -26
  64. data/test/compatibility/dogstatsd_datagram_compatibility_test.rb +0 -161
  65. data/test/deprecations_test.rb +0 -139
  66. data/test/logger_backend_test.rb +0 -22
  67. data/test/metric_test.rb +0 -47
  68. data/test/udp_backend_test.rb +0 -228
@@ -1,231 +1,223 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # This module defines several assertion methods that can be used to verify that
4
- # your application is emitting the right StatsD metrics.
5
- #
6
- # Every metric type has its own assertion method, like {#assert_statsd_increment}
7
- # to assert `StatsD.increment` calls. You can also assert other properties of the
8
- # metric that was emitted, like the sample rate or presence of tags.
9
- # To check for the absence of metrics, use {#assert_no_statsd_calls}.
10
- #
11
- # @example Check for metric properties:
12
- # assert_statsd_measure('foo', sample_rate: 0.1, tags: ["bar"]) do
13
- # StatsD.measure('foo', sample_rate: 0.5, tags: ['bar','baz']) do
14
- # some_code_to_measure
15
- # end
16
- # end
17
- #
18
- # @example Check for multiple occurrences:
19
- # assert_statsd_increment('foo', times: 2) do
20
- # StatsD.increment('foo')
21
- # StatsD.increment('foo')
22
- # end
23
- #
24
- # @example Absence of metrics
25
- # assert_no_statsd_calls do
26
- # foo
27
- # end
28
- #
29
- # @example Handling exceptions
30
- # assert_statsd_increment('foo.error') do
31
- # # If we expect exceptions to occur, we have to handle them inside
32
- # # the block we pass to assert_statsd_increment.
33
- # assert_raises(RuntimeError) do
34
- # begin
35
- # attempt_foo
36
- # rescue
37
- # StatsD.increment('foo.error')
38
- # raise 'foo failed'
39
- # end
40
- # end
41
- # end
42
- module StatsD::Instrument::Assertions
43
- include StatsD::Instrument::Helpers
44
-
45
- # Asserts no metric occurred during the execution of the provided block.
46
- #
47
- # @param [Array<String>] metric_names (default: []) The metric names that are not
48
- # allowed to happen inside the block. If this is set to `[]`, the assertion
49
- # will fail if any metric occurs.
50
- # @yield A block in which the specified metric should not occur. This block
51
- # should not raise any exceptions.
52
- # @return [void]
53
- # @raise [Minitest::Assertion] If an exception occurs, or if any metric (with the
54
- # provided names, or any), occurred during the execution of the provided block.
55
- def assert_no_statsd_calls(*metric_names, datagrams: nil, client: nil, &block)
56
- if datagrams.nil?
57
- raise LocalJumpError, "assert_no_statsd_calls requires a block" unless block_given?
58
- datagrams = capture_statsd_datagrams_with_exception_handling(client: client, &block)
59
- end
60
-
61
- datagrams.select! { |metric| metric_names.include?(metric.name) } unless metric_names.empty?
62
- assert(datagrams.empty?, "No StatsD calls for metric #{datagrams.map(&:name).join(', ')} expected.")
63
- end
64
-
65
- # Asserts that a given counter metric occurred inside the provided block.
66
- #
67
- # @param [String] metric_name The name of the metric that should occur.
68
- # @param [Hash] options (see StatsD::Instrument::MetricExpectation.new)
69
- # @yield A block in which the specified metric should occur. This block
70
- # should not raise any exceptions.
71
- # @return [void]
72
- # @raise [Minitest::Assertion] If an exception occurs, or if the metric did
73
- # not occur as specified during the execution the block.
74
- def assert_statsd_increment(metric_name, value = nil, datagrams: nil, client: nil, **options, &block)
75
- expectation = StatsD::Instrument::Expectation.increment(metric_name, value, **options)
76
- assert_statsd_expectation(expectation, datagrams: datagrams, client: client, &block)
77
- end
78
-
79
- # Asserts that a given timing metric occurred inside the provided block.
80
- #
81
- # @param metric_name (see #assert_statsd_increment)
82
- # @param options (see #assert_statsd_increment)
83
- # @yield (see #assert_statsd_increment)
84
- # @return [void]
85
- # @raise (see #assert_statsd_increment)
86
- def assert_statsd_measure(metric_name, value = nil, datagrams: nil, client: nil, **options, &block)
87
- expectation = StatsD::Instrument::Expectation.measure(metric_name, value, **options)
88
- assert_statsd_expectation(expectation, datagrams: datagrams, client: client, &block)
89
- end
90
-
91
- # Asserts that a given gauge metric occurred inside the provided block.
92
- #
93
- # @param metric_name (see #assert_statsd_increment)
94
- # @param options (see #assert_statsd_increment)
95
- # @yield (see #assert_statsd_increment)
96
- # @return [void]
97
- # @raise (see #assert_statsd_increment)
98
- def assert_statsd_gauge(metric_name, value = nil, datagrams: nil, client: nil, **options, &block)
99
- expectation = StatsD::Instrument::Expectation.gauge(metric_name, value, **options)
100
- assert_statsd_expectation(expectation, datagrams: datagrams, client: client, &block)
101
- end
102
-
103
- # Asserts that a given histogram metric occurred inside the provided block.
104
- #
105
- # @param metric_name (see #assert_statsd_increment)
106
- # @param options (see #assert_statsd_increment)
107
- # @yield (see #assert_statsd_increment)
108
- # @return [void]
109
- # @raise (see #assert_statsd_increment)
110
- def assert_statsd_histogram(metric_name, value = nil, datagrams: nil, client: nil, **options, &block)
111
- expectation = StatsD::Instrument::Expectation.histogram(metric_name, value, **options)
112
- assert_statsd_expectation(expectation, datagrams: datagrams, client: client, &block)
113
- end
3
+ module StatsD
4
+ module Instrument
5
+ # This module defines several assertion methods that can be used to verify that
6
+ # your application is emitting the right StatsD metrics.
7
+ #
8
+ # Every metric type has its own assertion method, like {#assert_statsd_increment}
9
+ # to assert `StatsD.increment` calls. You can also assert other properties of the
10
+ # metric that was emitted, like the sample rate or presence of tags.
11
+ # To check for the absence of metrics, use {#assert_no_statsd_calls}.
12
+ #
13
+ # @example Check for metric properties:
14
+ # assert_statsd_measure('foo', sample_rate: 0.1, tags: ["bar"]) do
15
+ # StatsD.measure('foo', sample_rate: 0.5, tags: ['bar','baz']) do
16
+ # some_code_to_measure
17
+ # end
18
+ # end
19
+ #
20
+ # @example Check for multiple occurrences:
21
+ # assert_statsd_increment('foo', times: 2) do
22
+ # StatsD.increment('foo')
23
+ # StatsD.increment('foo')
24
+ # end
25
+ #
26
+ # @example Absence of metrics
27
+ # assert_no_statsd_calls do
28
+ # foo
29
+ # end
30
+ #
31
+ # @example Handling exceptions
32
+ # assert_statsd_increment('foo.error') do
33
+ # # If we expect exceptions to occur, we have to handle them inside
34
+ # # the block we pass to assert_statsd_increment.
35
+ # assert_raises(RuntimeError) do
36
+ # begin
37
+ # attempt_foo
38
+ # rescue
39
+ # StatsD.increment('foo.error')
40
+ # raise 'foo failed'
41
+ # end
42
+ # end
43
+ # end
44
+ module Assertions
45
+ include StatsD::Instrument::Helpers
46
+
47
+ # Asserts no metric occurred during the execution of the provided block.
48
+ #
49
+ # @param [Array<String>] metric_names (default: []) The metric names that are not
50
+ # allowed to happen inside the block. If this is set to `[]`, the assertion
51
+ # will fail if any metric occurs.
52
+ # @yield A block in which the specified metric should not occur. This block
53
+ # should not raise any exceptions.
54
+ # @return [void]
55
+ # @raise [Minitest::Assertion] If an exception occurs, or if any metric (with the
56
+ # provided names, or any), occurred during the execution of the provided block.
57
+ def assert_no_statsd_calls(*metric_names, datagrams: nil, client: nil, &block)
58
+ if datagrams.nil?
59
+ raise LocalJumpError, "assert_no_statsd_calls requires a block" unless block_given?
60
+ datagrams = capture_statsd_datagrams_with_exception_handling(client: client, &block)
61
+ end
114
62
 
115
- # Asserts that a given distribution metric occurred inside the provided block.
116
- #
117
- # @param metric_name (see #assert_statsd_increment)
118
- # @param options (see #assert_statsd_increment)
119
- # @yield (see #assert_statsd_increment)
120
- # @return [void]
121
- # @raise (see #assert_statsd_increment)
122
- def assert_statsd_distribution(metric_name, value = nil, datagrams: nil, client: nil, **options, &block)
123
- expectation = StatsD::Instrument::Expectation.distribution(metric_name, value, **options)
124
- assert_statsd_expectation(expectation, datagrams: datagrams, client: client, &block)
125
- end
63
+ datagrams.select! { |metric| metric_names.include?(metric.name) } unless metric_names.empty?
64
+ assert(datagrams.empty?, "No StatsD calls for metric #{datagrams.map(&:name).join(', ')} expected.")
65
+ end
126
66
 
127
- # Asserts that a given set metric occurred inside the provided block.
128
- #
129
- # @param metric_name (see #assert_statsd_increment)
130
- # @param options (see #assert_statsd_increment)
131
- # @yield (see #assert_statsd_increment)
132
- # @return [void]
133
- # @raise (see #assert_statsd_increment)
134
- def assert_statsd_set(metric_name, value = nil, datagrams: nil, client: nil, **options, &block)
135
- expectation = StatsD::Instrument::Expectation.set(metric_name, value, **options)
136
- assert_statsd_expectation(expectation, datagrams: datagrams, client: client, &block)
137
- end
67
+ # Asserts that a given counter metric occurred inside the provided block.
68
+ #
69
+ # @param [String] metric_name The name of the metric that should occur.
70
+ # @param [Hash] options (see StatsD::Instrument::MetricExpectation.new)
71
+ # @yield A block in which the specified metric should occur. This block
72
+ # should not raise any exceptions.
73
+ # @return [void]
74
+ # @raise [Minitest::Assertion] If an exception occurs, or if the metric did
75
+ # not occur as specified during the execution the block.
76
+ def assert_statsd_increment(metric_name, value = nil, datagrams: nil, client: nil, **options, &block)
77
+ expectation = StatsD::Instrument::Expectation.increment(metric_name, value, **options)
78
+ assert_statsd_expectation(expectation, datagrams: datagrams, client: client, &block)
79
+ end
138
80
 
139
- # Asserts that a given key/value metric occurred inside the provided block.
140
- #
141
- # @param metric_name (see #assert_statsd_increment)
142
- # @param options (see #assert_statsd_increment)
143
- # @yield (see #assert_statsd_increment)
144
- # @return [void]
145
- # @raise (see #assert_statsd_increment)
146
- def assert_statsd_key_value(metric_name, value = nil, datagrams: nil, client: nil, **options, &block)
147
- expectation = StatsD::Instrument::Expectation.key_value(metric_name, value, **options)
148
- assert_statsd_expectation(expectation, datagrams: datagrams, client: client, &block)
149
- end
81
+ # Asserts that a given timing metric occurred inside the provided block.
82
+ #
83
+ # @param metric_name (see #assert_statsd_increment)
84
+ # @param options (see #assert_statsd_increment)
85
+ # @yield (see #assert_statsd_increment)
86
+ # @return [void]
87
+ # @raise (see #assert_statsd_increment)
88
+ def assert_statsd_measure(metric_name, value = nil, datagrams: nil, client: nil, **options, &block)
89
+ expectation = StatsD::Instrument::Expectation.measure(metric_name, value, **options)
90
+ assert_statsd_expectation(expectation, datagrams: datagrams, client: client, &block)
91
+ end
150
92
 
151
- # Asserts that the set of provided metric expectations came true.
152
- #
153
- # Generally, it's recommended to use more specific assertion methods, like
154
- # {#assert_statsd_increment} and others.
155
- #
156
- # @private
157
- # @param [Array<StatsD::Instrument::Expectation>] expectations The set of
158
- # expectations to verify.
159
- # @yield (see #assert_statsd_increment)
160
- # @return [void]
161
- # @raise (see #assert_statsd_increment)
162
- def assert_statsd_expectations(expectations, datagrams: nil, client: nil, &block)
163
- if datagrams.nil?
164
- raise LocalJumpError, "assert_statsd_expectations requires a block" unless block_given?
165
- datagrams = capture_statsd_datagrams_with_exception_handling(client: client, &block)
166
- end
93
+ # Asserts that a given gauge metric occurred inside the provided block.
94
+ #
95
+ # @param metric_name (see #assert_statsd_increment)
96
+ # @param options (see #assert_statsd_increment)
97
+ # @yield (see #assert_statsd_increment)
98
+ # @return [void]
99
+ # @raise (see #assert_statsd_increment)
100
+ def assert_statsd_gauge(metric_name, value = nil, datagrams: nil, client: nil, **options, &block)
101
+ expectation = StatsD::Instrument::Expectation.gauge(metric_name, value, **options)
102
+ assert_statsd_expectation(expectation, datagrams: datagrams, client: client, &block)
103
+ end
167
104
 
168
- expectations = Array(expectations)
169
- matched_expectations = []
170
- expectations.each do |expectation|
171
- expectation_times = expectation.times
172
- expectation_times_remaining = expectation.times
173
- filtered_datagrams = datagrams.select { |m| m.type == expectation.type && m.name == expectation.name }
105
+ # Asserts that a given histogram metric occurred inside the provided block.
106
+ #
107
+ # @param metric_name (see #assert_statsd_increment)
108
+ # @param options (see #assert_statsd_increment)
109
+ # @yield (see #assert_statsd_increment)
110
+ # @return [void]
111
+ # @raise (see #assert_statsd_increment)
112
+ def assert_statsd_histogram(metric_name, value = nil, datagrams: nil, client: nil, **options, &block)
113
+ expectation = StatsD::Instrument::Expectation.histogram(metric_name, value, **options)
114
+ assert_statsd_expectation(expectation, datagrams: datagrams, client: client, &block)
115
+ end
174
116
 
175
- if filtered_datagrams.empty?
176
- flunk("No StatsD calls for metric #{expectation.name} of type #{expectation.type} were made.")
117
+ # Asserts that a given distribution metric occurred inside the provided block.
118
+ #
119
+ # @param metric_name (see #assert_statsd_increment)
120
+ # @param options (see #assert_statsd_increment)
121
+ # @yield (see #assert_statsd_increment)
122
+ # @return [void]
123
+ # @raise (see #assert_statsd_increment)
124
+ def assert_statsd_distribution(metric_name, value = nil, datagrams: nil, client: nil, **options, &block)
125
+ expectation = StatsD::Instrument::Expectation.distribution(metric_name, value, **options)
126
+ assert_statsd_expectation(expectation, datagrams: datagrams, client: client, &block)
177
127
  end
178
128
 
179
- filtered_datagrams.each do |datagram|
180
- next unless expectation.matches(datagram)
129
+ # Asserts that a given set metric occurred inside the provided block.
130
+ #
131
+ # @param metric_name (see #assert_statsd_increment)
132
+ # @param options (see #assert_statsd_increment)
133
+ # @yield (see #assert_statsd_increment)
134
+ # @return [void]
135
+ # @raise (see #assert_statsd_increment)
136
+ def assert_statsd_set(metric_name, value = nil, datagrams: nil, client: nil, **options, &block)
137
+ expectation = StatsD::Instrument::Expectation.set(metric_name, value, **options)
138
+ assert_statsd_expectation(expectation, datagrams: datagrams, client: client, &block)
139
+ end
181
140
 
182
- if expectation_times_remaining == 0
183
- flunk("Unexpected StatsD call; number of times this metric " \
184
- "was expected exceeded: #{expectation.inspect}")
141
+ # Asserts that the set of provided metric expectations came true.
142
+ #
143
+ # Generally, it's recommended to use more specific assertion methods, like
144
+ # {#assert_statsd_increment} and others.
145
+ #
146
+ # @private
147
+ # @param [Array<StatsD::Instrument::Expectation>] expectations The set of
148
+ # expectations to verify.
149
+ # @yield (see #assert_statsd_increment)
150
+ # @return [void]
151
+ # @raise (see #assert_statsd_increment)
152
+ def assert_statsd_expectations(expectations, datagrams: nil, client: nil, &block)
153
+ if datagrams.nil?
154
+ raise LocalJumpError, "assert_statsd_expectations requires a block" unless block_given?
155
+ datagrams = capture_statsd_datagrams_with_exception_handling(client: client, &block)
185
156
  end
186
157
 
187
- expectation_times_remaining -= 1
188
- datagrams.delete(datagram)
189
- if expectation_times_remaining == 0
190
- matched_expectations << expectation
158
+ expectations = Array(expectations)
159
+ matched_expectations = []
160
+ expectations.each do |expectation|
161
+ expectation_times = expectation.times
162
+ expectation_times_remaining = expectation.times
163
+ filtered_datagrams = datagrams.select { |m| m.type == expectation.type && m.name == expectation.name }
164
+
165
+ if filtered_datagrams.empty?
166
+ flunk("No StatsD calls for metric #{expectation.name} of type #{expectation.type} were made.")
167
+ end
168
+
169
+ filtered_datagrams.each do |datagram|
170
+ next unless expectation.matches(datagram)
171
+
172
+ if expectation_times_remaining == 0
173
+ flunk("Unexpected StatsD call; number of times this metric " \
174
+ "was expected exceeded: #{expectation.inspect}")
175
+ end
176
+
177
+ expectation_times_remaining -= 1
178
+ datagrams.delete(datagram)
179
+ if expectation_times_remaining == 0
180
+ matched_expectations << expectation
181
+ end
182
+ end
183
+
184
+ next if expectation_times_remaining == 0
185
+
186
+ msg = +"Metric expected #{expectation_times} times but seen " \
187
+ "#{expectation_times - expectation_times_remaining} " \
188
+ "times: #{expectation.inspect}."
189
+ msg << "\nCaptured metrics with the same key: #{filtered_datagrams}" if filtered_datagrams.any?
190
+ flunk(msg)
191
191
  end
192
- end
193
-
194
- next if expectation_times_remaining == 0
192
+ expectations -= matched_expectations
195
193
 
196
- msg = +"Metric expected #{expectation_times} times but seen " \
197
- "#{expectation_times - expectation_times_remaining} " \
198
- "times: #{expectation.inspect}."
199
- msg << "\nCaptured metrics with the same key: #{filtered_datagrams}" if filtered_datagrams.any?
200
- flunk(msg)
201
- end
202
- expectations -= matched_expectations
203
-
204
- unless expectations.empty?
205
- flunk("Unexpected StatsD calls; the following metric expectations " \
206
- "were not satisfied: #{expectations.inspect}")
207
- end
194
+ unless expectations.empty?
195
+ flunk("Unexpected StatsD calls; the following metric expectations " \
196
+ "were not satisfied: #{expectations.inspect}")
197
+ end
208
198
 
209
- pass
210
- end
199
+ pass
200
+ end
211
201
 
212
- # For backwards compatibility
213
- alias_method :assert_statsd_calls, :assert_statsd_expectations
214
- alias_method :assert_statsd_expectation, :assert_statsd_expectations
202
+ # For backwards compatibility
203
+ alias_method :assert_statsd_calls, :assert_statsd_expectations
204
+ alias_method :assert_statsd_expectation, :assert_statsd_expectations
215
205
 
216
- private
206
+ private
217
207
 
218
- def capture_statsd_datagrams_with_exception_handling(client:, &block)
219
- capture_statsd_datagrams(client: client, &block)
220
- rescue => exception
221
- flunk(<<~MESSAGE)
222
- An exception occurred in the block provided to the StatsD assertion.
208
+ def capture_statsd_datagrams_with_exception_handling(client:, &block)
209
+ capture_statsd_datagrams(client: client, &block)
210
+ rescue => exception
211
+ flunk(<<~MESSAGE)
212
+ An exception occurred in the block provided to the StatsD assertion.
223
213
 
224
- #{exception.class.name}: #{exception.message}
225
- \t#{exception.backtrace.join("\n\t")}
214
+ #{exception.class.name}: #{exception.message}
215
+ \t#{(exception.backtrace || []).join("\n\t")}
226
216
 
227
- If this exception is expected, make sure to handle it using `assert_raises`
228
- inside the block provided to the StatsD assertion.
229
- MESSAGE
217
+ If this exception is expected, make sure to handle it using `assert_raises`
218
+ inside the block provided to the StatsD assertion.
219
+ MESSAGE
220
+ end
221
+ end
230
222
  end
231
223
  end
@@ -1,27 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # @note This class is part of the new Client implementation that is intended
4
- # to become the new default in the next major release of this library.
5
- class StatsD::Instrument::CaptureSink
6
- attr_reader :parent, :datagrams, :datagram_class
3
+ module StatsD
4
+ module Instrument
5
+ # @note This class is part of the new Client implementation that is intended
6
+ # to become the new default in the next major release of this library.
7
+ class CaptureSink
8
+ attr_reader :parent, :datagrams, :datagram_class
7
9
 
8
- def initialize(parent:, datagram_class: StatsD::Instrument::Datagram)
9
- @parent = parent
10
- @datagram_class = datagram_class
11
- @datagrams = []
12
- end
10
+ def initialize(parent:, datagram_class: StatsD::Instrument::Datagram)
11
+ @parent = parent
12
+ @datagram_class = datagram_class
13
+ @datagrams = []
14
+ end
13
15
 
14
- def sample?(_sample_rate)
15
- true
16
- end
16
+ def sample?(_sample_rate)
17
+ true
18
+ end
17
19
 
18
- def <<(datagram)
19
- @datagrams << datagram_class.new(datagram)
20
- parent << datagram
21
- self
22
- end
20
+ def <<(datagram)
21
+ @datagrams << datagram_class.new(datagram)
22
+ parent << datagram
23
+ self
24
+ end
23
25
 
24
- def clear
25
- @datagrams.clear
26
+ def clear
27
+ @datagrams.clear
28
+ end
29
+ end
26
30
  end
27
31
  end