statsd-instrument 3.0.0 → 3.0.1
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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +3 -3
- data/.rubocop.yml +3 -13
- data/CHANGELOG.md +6 -0
- data/Gemfile +8 -0
- data/README.md +2 -2
- data/Rakefile +1 -1
- data/bin/rake +29 -0
- data/bin/rubocop +29 -0
- data/lib/statsd/instrument.rb +4 -1
- data/lib/statsd/instrument/assertions.rb +200 -196
- data/lib/statsd/instrument/capture_sink.rb +23 -19
- data/lib/statsd/instrument/client.rb +414 -410
- data/lib/statsd/instrument/datagram.rb +69 -65
- data/lib/statsd/instrument/datagram_builder.rb +81 -77
- data/lib/statsd/instrument/dogstatsd_datagram.rb +76 -72
- data/lib/statsd/instrument/dogstatsd_datagram_builder.rb +68 -64
- data/lib/statsd/instrument/environment.rb +80 -77
- data/lib/statsd/instrument/expectation.rb +96 -92
- data/lib/statsd/instrument/helpers.rb +11 -7
- data/lib/statsd/instrument/log_sink.rb +20 -16
- data/lib/statsd/instrument/matchers.rb +86 -70
- data/lib/statsd/instrument/null_sink.rb +12 -8
- data/lib/statsd/instrument/railtie.rb +11 -7
- data/lib/statsd/instrument/statsd_datagram_builder.rb +12 -8
- data/lib/statsd/instrument/udp_sink.rb +50 -46
- data/lib/statsd/instrument/version.rb +1 -1
- data/statsd-instrument.gemspec +2 -8
- data/test/assertions_test.rb +12 -12
- data/test/capture_sink_test.rb +8 -8
- data/test/client_test.rb +54 -54
- data/test/datagram_builder_test.rb +29 -29
- data/test/datagram_test.rb +1 -1
- data/test/dogstatsd_datagram_builder_test.rb +28 -28
- data/test/environment_test.rb +9 -9
- data/test/helpers/rubocop_helper.rb +9 -6
- data/test/helpers_test.rb +5 -5
- data/test/integration_test.rb +1 -1
- data/test/log_sink_test.rb +2 -2
- data/test/matchers_test.rb +36 -36
- data/test/null_sink_test.rb +2 -2
- data/test/rubocop/metric_return_value_test.rb +3 -3
- data/test/rubocop/positional_arguments_test.rb +10 -10
- data/test/statsd_instrumentation_test.rb +66 -66
- data/test/statsd_test.rb +44 -44
- data/test/test_helper.rb +6 -4
- data/test/udp_sink_test.rb +8 -8
- metadata +7 -103
- data/.rubocop-https---shopify-github-io-ruby-style-guide-rubocop-yml +0 -1027
data/statsd-instrument.gemspec
CHANGED
@@ -16,15 +16,9 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.license = "MIT"
|
17
17
|
|
18
18
|
spec.files = `git ls-files`.split($/)
|
19
|
-
spec.executables = spec.files.grep(%r{^
|
19
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
20
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
21
21
|
spec.require_paths = ["lib"]
|
22
22
|
|
23
|
-
spec.
|
24
|
-
spec.add_development_dependency 'minitest'
|
25
|
-
spec.add_development_dependency 'rspec'
|
26
|
-
spec.add_development_dependency 'mocha'
|
27
|
-
spec.add_development_dependency 'yard'
|
28
|
-
spec.add_development_dependency 'rubocop'
|
29
|
-
spec.add_development_dependency 'benchmark-ips'
|
23
|
+
spec.metadata['allowed_push_host'] = "https://rubygems.org"
|
30
24
|
end
|
data/test/assertions_test.rb
CHANGED
@@ -31,7 +31,7 @@ class AssertionsTest < Minitest::Test
|
|
31
31
|
StatsD.increment('counter')
|
32
32
|
end
|
33
33
|
end
|
34
|
-
assert_equal
|
34
|
+
assert_equal(assertion.message, "No StatsD calls for metric counter expected.")
|
35
35
|
|
36
36
|
@test_case.assert_no_statsd_calls('counter1', 'counter2') do
|
37
37
|
# noop
|
@@ -49,21 +49,21 @@ class AssertionsTest < Minitest::Test
|
|
49
49
|
StatsD.increment('counter3')
|
50
50
|
end
|
51
51
|
end
|
52
|
-
assert_equal
|
52
|
+
assert_equal(assertion.message, "No StatsD calls for metric counter1, counter2 expected.")
|
53
53
|
|
54
54
|
assertion = assert_raises(Minitest::Assertion) do
|
55
55
|
@test_case.assert_no_statsd_calls('counter0', 'counter1', 'counter2') do
|
56
56
|
StatsD.increment('counter1')
|
57
57
|
end
|
58
58
|
end
|
59
|
-
assert_equal
|
59
|
+
assert_equal(assertion.message, "No StatsD calls for metric counter1 expected.")
|
60
60
|
|
61
61
|
assertion = assert_raises(Minitest::Assertion) do
|
62
62
|
@test_case.assert_no_statsd_calls do
|
63
63
|
StatsD.increment('other')
|
64
64
|
end
|
65
65
|
end
|
66
|
-
assert_equal
|
66
|
+
assert_equal(assertion.message, "No StatsD calls for metric other expected.")
|
67
67
|
|
68
68
|
assertion = assert_raises(Minitest::Assertion) do
|
69
69
|
@test_case.assert_no_statsd_calls do
|
@@ -71,7 +71,7 @@ class AssertionsTest < Minitest::Test
|
|
71
71
|
StatsD.increment('another')
|
72
72
|
end
|
73
73
|
end
|
74
|
-
assert_equal
|
74
|
+
assert_equal(assertion.message, "No StatsD calls for metric other, another expected.")
|
75
75
|
end
|
76
76
|
|
77
77
|
def test_assert_statsd
|
@@ -202,8 +202,8 @@ class AssertionsTest < Minitest::Test
|
|
202
202
|
end
|
203
203
|
end
|
204
204
|
|
205
|
-
assert_includes
|
206
|
-
assert_includes
|
205
|
+
assert_includes(assertion.message, "Captured metrics with the same key")
|
206
|
+
assert_includes(assertion.message, "MyJob")
|
207
207
|
end
|
208
208
|
|
209
209
|
def test_capture_and_assert
|
@@ -367,7 +367,7 @@ class AssertionsTest < Minitest::Test
|
|
367
367
|
end
|
368
368
|
end
|
369
369
|
end
|
370
|
-
assert_includes
|
370
|
+
assert_includes(assertion.message, "No StatsD calls for metric counter of type c were made")
|
371
371
|
end
|
372
372
|
|
373
373
|
def test_assertion_block_with_unexpected_exceptions
|
@@ -377,7 +377,7 @@ class AssertionsTest < Minitest::Test
|
|
377
377
|
raise "unexpected"
|
378
378
|
end
|
379
379
|
end
|
380
|
-
assert_includes
|
380
|
+
assert_includes(assertion.message, "An exception occurred in the block provided to the StatsD assertion")
|
381
381
|
|
382
382
|
assertion = assert_raises(Minitest::Assertion) do
|
383
383
|
@test_case.assert_raises(RuntimeError) do
|
@@ -387,7 +387,7 @@ class AssertionsTest < Minitest::Test
|
|
387
387
|
end
|
388
388
|
end
|
389
389
|
end
|
390
|
-
assert_includes
|
390
|
+
assert_includes(assertion.message, "An exception occurred in the block provided to the StatsD assertion")
|
391
391
|
|
392
392
|
assertion = assert_raises(Minitest::Assertion) do
|
393
393
|
@test_case.assert_raises(RuntimeError) do
|
@@ -396,7 +396,7 @@ class AssertionsTest < Minitest::Test
|
|
396
396
|
end
|
397
397
|
end
|
398
398
|
end
|
399
|
-
assert_includes
|
399
|
+
assert_includes(assertion.message, "An exception occurred in the block provided to the StatsD assertion")
|
400
400
|
end
|
401
401
|
|
402
402
|
def test_assertion_block_with_other_assertion_failures
|
@@ -406,6 +406,6 @@ class AssertionsTest < Minitest::Test
|
|
406
406
|
@test_case.flunk('other assertion failure')
|
407
407
|
end
|
408
408
|
end
|
409
|
-
assert_equal
|
409
|
+
assert_equal("other assertion failure", assertion.message)
|
410
410
|
end
|
411
411
|
end
|
data/test/capture_sink_test.rb
CHANGED
@@ -7,9 +7,9 @@ class CaptureSinkTest < Minitest::Test
|
|
7
7
|
capture_sink = StatsD::Instrument::CaptureSink.new(parent: [])
|
8
8
|
capture_sink << 'foo:1|c'
|
9
9
|
|
10
|
-
assert_equal
|
11
|
-
assert_kind_of
|
12
|
-
assert_equal
|
10
|
+
assert_equal(1, capture_sink.datagrams.length)
|
11
|
+
assert_kind_of(StatsD::Instrument::Datagram, capture_sink.datagrams.first)
|
12
|
+
assert_equal('foo:1|c', capture_sink.datagrams.first.source)
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_capture_sink_sends_datagrams_to_parent
|
@@ -17,7 +17,7 @@ class CaptureSinkTest < Minitest::Test
|
|
17
17
|
capture_sink = StatsD::Instrument::CaptureSink.new(parent: parent)
|
18
18
|
capture_sink << 'foo:1|c' << 'bar:1|c'
|
19
19
|
|
20
|
-
assert_equal
|
20
|
+
assert_equal(['foo:1|c', 'bar:1|c'], parent)
|
21
21
|
end
|
22
22
|
|
23
23
|
def test_nesting_capture_sink_instances
|
@@ -28,15 +28,15 @@ class CaptureSinkTest < Minitest::Test
|
|
28
28
|
outer_capture_sink << 'foo:1|c'
|
29
29
|
inner_capture_sink << 'bar:1|c'
|
30
30
|
|
31
|
-
assert_equal
|
32
|
-
assert_equal
|
31
|
+
assert_equal(['foo:1|c', 'bar:1|c'], outer_capture_sink.datagrams.map(&:source))
|
32
|
+
assert_equal(['bar:1|c'], inner_capture_sink.datagrams.map(&:source))
|
33
33
|
end
|
34
34
|
|
35
35
|
def test_using_a_different_datagram_class
|
36
36
|
sink = StatsD::Instrument::CaptureSink.new(parent: [], datagram_class: String)
|
37
37
|
sink << 'foo:1|c'
|
38
38
|
|
39
|
-
assert
|
40
|
-
assert_equal
|
39
|
+
assert(sink.datagrams.all? { |datagram| datagram.is_a?(String) })
|
40
|
+
assert_equal(['foo:1|c'], sink.datagrams)
|
41
41
|
end
|
42
42
|
end
|
data/test/client_test.rb
CHANGED
@@ -19,25 +19,25 @@ class ClientTest < Minitest::Test
|
|
19
19
|
)
|
20
20
|
client = StatsD::Instrument::Client.from_env(env)
|
21
21
|
|
22
|
-
assert_equal
|
23
|
-
assert_equal
|
24
|
-
assert_equal
|
25
|
-
assert_equal
|
22
|
+
assert_equal(0.1, client.default_sample_rate)
|
23
|
+
assert_equal('foo', client.prefix)
|
24
|
+
assert_equal(['shard:1', 'env:production'], client.default_tags)
|
25
|
+
assert_equal(StatsD::Instrument::StatsDDatagramBuilder, client.datagram_builder_class)
|
26
26
|
|
27
|
-
assert_kind_of
|
28
|
-
assert_equal
|
29
|
-
assert_equal
|
27
|
+
assert_kind_of(StatsD::Instrument::UDPSink, client.sink)
|
28
|
+
assert_equal('1.2.3.4', client.sink.host)
|
29
|
+
assert_equal(8125, client.sink.port)
|
30
30
|
end
|
31
31
|
|
32
32
|
def test_client_from_env_has_sensible_defaults
|
33
33
|
env = StatsD::Instrument::Environment.new({})
|
34
34
|
client = StatsD::Instrument::Client.from_env(env)
|
35
35
|
|
36
|
-
assert_equal
|
37
|
-
assert_nil
|
38
|
-
assert_nil
|
39
|
-
assert_equal
|
40
|
-
assert_kind_of
|
36
|
+
assert_equal(1.0, client.default_sample_rate)
|
37
|
+
assert_nil(client.prefix)
|
38
|
+
assert_nil(client.default_tags)
|
39
|
+
assert_equal(StatsD::Instrument::DogStatsDDatagramBuilder, client.datagram_builder_class)
|
40
|
+
assert_kind_of(StatsD::Instrument::LogSink, client.sink)
|
41
41
|
end
|
42
42
|
|
43
43
|
def test_client_from_env_with_overrides
|
@@ -51,12 +51,12 @@ class ClientTest < Minitest::Test
|
|
51
51
|
client = StatsD::Instrument::Client.from_env(env,
|
52
52
|
prefix: 'bar', implementation: 'dogstatsd', sink: StatsD::Instrument::NullSink.new)
|
53
53
|
|
54
|
-
assert_equal
|
55
|
-
assert_equal
|
56
|
-
assert_equal
|
57
|
-
assert_equal
|
54
|
+
assert_equal(0.1, client.default_sample_rate)
|
55
|
+
assert_equal('bar', client.prefix)
|
56
|
+
assert_equal(['shard:1', 'env:production'], client.default_tags)
|
57
|
+
assert_equal(StatsD::Instrument::DogStatsDDatagramBuilder, client.datagram_builder_class)
|
58
58
|
|
59
|
-
assert_kind_of
|
59
|
+
assert_kind_of(StatsD::Instrument::NullSink, client.sink)
|
60
60
|
end
|
61
61
|
|
62
62
|
def test_capture
|
@@ -71,27 +71,27 @@ class ClientTest < Minitest::Test
|
|
71
71
|
end
|
72
72
|
@client.increment('quc')
|
73
73
|
|
74
|
-
assert_equal
|
75
|
-
assert_equal
|
74
|
+
assert_equal(['bar', 'baz'], outer_datagrams.map(&:name))
|
75
|
+
assert_equal(['baz'], inner_datagrams.map(&:name))
|
76
76
|
end
|
77
77
|
|
78
78
|
def test_metric_methods_return_truish_void
|
79
|
-
assert
|
80
|
-
assert
|
81
|
-
assert
|
82
|
-
assert
|
79
|
+
assert(@client.increment('foo'))
|
80
|
+
assert(@client.measure('bar', 122.54))
|
81
|
+
assert(@client.set('baz', 123))
|
82
|
+
assert(@client.gauge('baz', 12.3))
|
83
83
|
end
|
84
84
|
|
85
85
|
def test_increment_with_default_value
|
86
86
|
datagrams = @client.capture { @client.increment('foo') }
|
87
|
-
assert_equal
|
88
|
-
assert_equal
|
87
|
+
assert_equal(1, datagrams.size)
|
88
|
+
assert_equal('foo:1|c', datagrams.first.source)
|
89
89
|
end
|
90
90
|
|
91
91
|
def test_measure_with_value
|
92
92
|
datagrams = @client.capture { @client.measure('foo', 122.54) }
|
93
|
-
assert_equal
|
94
|
-
assert_equal
|
93
|
+
assert_equal(1, datagrams.size)
|
94
|
+
assert_equal('foo:122.54|ms', datagrams.first.source)
|
95
95
|
end
|
96
96
|
|
97
97
|
def test_measure_with_block
|
@@ -99,32 +99,32 @@ class ClientTest < Minitest::Test
|
|
99
99
|
datagrams = @client.capture do
|
100
100
|
@client.measure('foo') {}
|
101
101
|
end
|
102
|
-
assert_equal
|
103
|
-
assert_equal
|
102
|
+
assert_equal(1, datagrams.size)
|
103
|
+
assert_equal('foo:100.0|ms', datagrams.first.source)
|
104
104
|
end
|
105
105
|
|
106
106
|
def test_gauge
|
107
107
|
datagrams = @client.capture { @client.gauge('foo', 123) }
|
108
|
-
assert_equal
|
109
|
-
assert_equal
|
108
|
+
assert_equal(1, datagrams.size)
|
109
|
+
assert_equal('foo:123|g', datagrams.first.source)
|
110
110
|
end
|
111
111
|
|
112
112
|
def test_set
|
113
113
|
datagrams = @client.capture { @client.set('foo', 12345) }
|
114
|
-
assert_equal
|
115
|
-
assert_equal
|
114
|
+
assert_equal(1, datagrams.size)
|
115
|
+
assert_equal('foo:12345|s', datagrams.first.source)
|
116
116
|
end
|
117
117
|
|
118
118
|
def test_histogram
|
119
119
|
datagrams = @dogstatsd_client.capture { @dogstatsd_client.histogram('foo', 12.44) }
|
120
|
-
assert_equal
|
121
|
-
assert_equal
|
120
|
+
assert_equal(1, datagrams.size)
|
121
|
+
assert_equal('foo:12.44|h', datagrams.first.source)
|
122
122
|
end
|
123
123
|
|
124
124
|
def test_distribution_with_value
|
125
125
|
datagrams = @dogstatsd_client.capture { @dogstatsd_client.distribution('foo', 12.44) }
|
126
|
-
assert_equal
|
127
|
-
assert_equal
|
126
|
+
assert_equal(1, datagrams.size)
|
127
|
+
assert_equal('foo:12.44|d', datagrams.first.source)
|
128
128
|
end
|
129
129
|
|
130
130
|
def test_distribution_with_block
|
@@ -132,8 +132,8 @@ class ClientTest < Minitest::Test
|
|
132
132
|
datagrams = @dogstatsd_client.capture do
|
133
133
|
@dogstatsd_client.distribution('foo') {}
|
134
134
|
end
|
135
|
-
assert_equal
|
136
|
-
assert_equal
|
135
|
+
assert_equal(1, datagrams.size)
|
136
|
+
assert_equal("foo:100.0|d", datagrams.first.source)
|
137
137
|
end
|
138
138
|
|
139
139
|
def test_latency_emits_ms_metric
|
@@ -141,8 +141,8 @@ class ClientTest < Minitest::Test
|
|
141
141
|
datagrams = @client.capture do
|
142
142
|
@client.latency('foo') {}
|
143
143
|
end
|
144
|
-
assert_equal
|
145
|
-
assert_equal
|
144
|
+
assert_equal(1, datagrams.size)
|
145
|
+
assert_equal("foo:100.0|ms", datagrams.first.source)
|
146
146
|
end
|
147
147
|
|
148
148
|
def test_latency_on_dogstatsd_prefers_distribution_metric_type
|
@@ -150,8 +150,8 @@ class ClientTest < Minitest::Test
|
|
150
150
|
datagrams = @dogstatsd_client.capture do
|
151
151
|
@dogstatsd_client.latency('foo') {}
|
152
152
|
end
|
153
|
-
assert_equal
|
154
|
-
assert_equal
|
153
|
+
assert_equal(1, datagrams.size)
|
154
|
+
assert_equal("foo:100.0|d", datagrams.first.source)
|
155
155
|
end
|
156
156
|
|
157
157
|
def test_latency_calls_block_even_when_not_sending_a_sample
|
@@ -159,19 +159,19 @@ class ClientTest < Minitest::Test
|
|
159
159
|
@client.capture do
|
160
160
|
@client.latency('foo', sample_rate: 0) { called = true }
|
161
161
|
end
|
162
|
-
assert
|
162
|
+
assert(called, "The block should have been called")
|
163
163
|
end
|
164
164
|
|
165
165
|
def test_service_check
|
166
166
|
datagrams = @dogstatsd_client.capture { @dogstatsd_client.service_check('service', :ok) }
|
167
|
-
assert_equal
|
168
|
-
assert_equal
|
167
|
+
assert_equal(1, datagrams.size)
|
168
|
+
assert_equal("_sc|service|0", datagrams.first.source)
|
169
169
|
end
|
170
170
|
|
171
171
|
def test_event
|
172
172
|
datagrams = @dogstatsd_client.capture { @dogstatsd_client.event('service', "event\ndescription") }
|
173
|
-
assert_equal
|
174
|
-
assert_equal
|
173
|
+
assert_equal(1, datagrams.size)
|
174
|
+
assert_equal("_e{7,18}:service|event\\ndescription", datagrams.first.source)
|
175
175
|
end
|
176
176
|
|
177
177
|
def test_no_prefix
|
@@ -181,9 +181,9 @@ class ClientTest < Minitest::Test
|
|
181
181
|
client.increment('bar', no_prefix: true)
|
182
182
|
end
|
183
183
|
|
184
|
-
assert_equal
|
185
|
-
assert_equal
|
186
|
-
assert_equal
|
184
|
+
assert_equal(2, datagrams.size)
|
185
|
+
assert_equal("foo.bar", datagrams[0].name)
|
186
|
+
assert_equal("bar", datagrams[1].name)
|
187
187
|
end
|
188
188
|
|
189
189
|
def test_default_tags_normalization
|
@@ -192,9 +192,9 @@ class ClientTest < Minitest::Test
|
|
192
192
|
client.increment('bar', tags: ['th|ird_#,tag'])
|
193
193
|
end
|
194
194
|
|
195
|
-
assert_includes
|
196
|
-
assert_includes
|
197
|
-
assert_includes
|
195
|
+
assert_includes(datagrams.first.tags, 'first_tag:first_value')
|
196
|
+
assert_includes(datagrams.first.tags, 'second_tag:second_value')
|
197
|
+
assert_includes(datagrams.first.tags, 'third_#tag')
|
198
198
|
end
|
199
199
|
|
200
200
|
def test_sampling
|
@@ -8,111 +8,111 @@ class DatagramBuilderTest < Minitest::Test
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_normalize_name
|
11
|
-
assert_equal
|
12
|
-
assert_equal
|
13
|
-
assert_equal
|
14
|
-
assert_equal
|
11
|
+
assert_equal('foo', @datagram_builder.send(:normalize_name, 'foo'))
|
12
|
+
assert_equal('fo_o', @datagram_builder.send(:normalize_name, 'fo|o'))
|
13
|
+
assert_equal('fo_o', @datagram_builder.send(:normalize_name, 'fo@o'))
|
14
|
+
assert_equal('fo_o', @datagram_builder.send(:normalize_name, 'fo:o'))
|
15
15
|
end
|
16
16
|
|
17
17
|
def test_normalize_unsupported_tag_names
|
18
|
-
assert_equal
|
18
|
+
assert_equal(['ign#ored'], @datagram_builder.send(:normalize_tags, ['ign#o|re,d']))
|
19
19
|
# Note: how this is interpreted by the backend is undefined.
|
20
20
|
# We rely on the user to not do stuff like this if they don't want to be surprised.
|
21
21
|
# We do not want to take the performance hit of normalizing this.
|
22
|
-
assert_equal
|
22
|
+
assert_equal(['lol::class:omg::lol'], @datagram_builder.send(:normalize_tags, "lol::class" => "omg::lol"))
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_normalize_tags_converts_hash_to_array
|
26
|
-
assert_equal
|
27
|
-
assert_equal
|
26
|
+
assert_equal(['tag:value'], @datagram_builder.send(:normalize_tags, tag: 'value'))
|
27
|
+
assert_equal(['tag1:v1', 'tag2:v2'], @datagram_builder.send(:normalize_tags, tag1: 'v1', tag2: 'v2'))
|
28
28
|
end
|
29
29
|
|
30
30
|
def test_c
|
31
31
|
datagram = @datagram_builder.c('foo', 1, nil, nil)
|
32
|
-
assert_equal
|
32
|
+
assert_equal("foo:1|c", datagram)
|
33
33
|
|
34
34
|
datagram = @datagram_builder.c('fo:o', 10, 0.1, nil)
|
35
|
-
assert_equal
|
35
|
+
assert_equal("fo_o:10|c|@0.1", datagram)
|
36
36
|
end
|
37
37
|
|
38
38
|
def test_ms
|
39
39
|
datagram = @datagram_builder.ms('foo', 1, nil, nil)
|
40
|
-
assert_equal
|
40
|
+
assert_equal("foo:1|ms", datagram)
|
41
41
|
|
42
42
|
datagram = @datagram_builder.ms('fo:o', 10, 0.1, nil)
|
43
|
-
assert_equal
|
43
|
+
assert_equal("fo_o:10|ms|@0.1", datagram)
|
44
44
|
end
|
45
45
|
|
46
46
|
def test_g
|
47
47
|
datagram = @datagram_builder.g('foo', 1, nil, nil)
|
48
|
-
assert_equal
|
48
|
+
assert_equal("foo:1|g", datagram)
|
49
49
|
|
50
50
|
datagram = @datagram_builder.g('fo|o', 10, 0.01, nil)
|
51
|
-
assert_equal
|
51
|
+
assert_equal("fo_o:10|g|@0.01", datagram)
|
52
52
|
end
|
53
53
|
|
54
54
|
def test_s
|
55
55
|
datagram = @datagram_builder.s('foo', 1, nil, nil)
|
56
|
-
assert_equal
|
56
|
+
assert_equal("foo:1|s", datagram)
|
57
57
|
|
58
58
|
datagram = @datagram_builder.s('fo@o', 10, 0.01, nil)
|
59
|
-
assert_equal
|
59
|
+
assert_equal("fo_o:10|s|@0.01", datagram)
|
60
60
|
end
|
61
61
|
|
62
62
|
def test_h
|
63
63
|
datagram = @datagram_builder.h('foo', 1, nil, nil)
|
64
|
-
assert_equal
|
64
|
+
assert_equal("foo:1|h", datagram)
|
65
65
|
|
66
66
|
datagram = @datagram_builder.h('fo@o', 10, 0.01, nil)
|
67
|
-
assert_equal
|
67
|
+
assert_equal("fo_o:10|h|@0.01", datagram)
|
68
68
|
end
|
69
69
|
|
70
70
|
def test_d
|
71
71
|
datagram = @datagram_builder.d('foo', 1, nil, nil)
|
72
|
-
assert_equal
|
72
|
+
assert_equal("foo:1|d", datagram)
|
73
73
|
|
74
74
|
datagram = @datagram_builder.d('fo@o', 10, 0.01, nil)
|
75
|
-
assert_equal
|
75
|
+
assert_equal("fo_o:10|d|@0.01", datagram)
|
76
76
|
end
|
77
77
|
|
78
78
|
def test_tags
|
79
79
|
datagram = @datagram_builder.d('foo', 10, nil, ['foo', 'bar'])
|
80
|
-
assert_equal
|
80
|
+
assert_equal("foo:10|d|#foo,bar", datagram)
|
81
81
|
|
82
82
|
datagram = @datagram_builder.d('foo', 10, 0.1, ['foo:bar'])
|
83
|
-
assert_equal
|
83
|
+
assert_equal("foo:10|d|@0.1|#foo:bar", datagram)
|
84
84
|
|
85
85
|
datagram = @datagram_builder.d('foo', 10, 1, foo: 'bar', baz: 'quc')
|
86
|
-
assert_equal
|
86
|
+
assert_equal("foo:10|d|#foo:bar,baz:quc", datagram)
|
87
87
|
end
|
88
88
|
|
89
89
|
def test_prefix
|
90
90
|
datagram_builder = StatsD::Instrument::DatagramBuilder.new(prefix: 'foo')
|
91
91
|
datagram = datagram_builder.c('bar', 1, nil, nil)
|
92
|
-
assert_equal
|
92
|
+
assert_equal('foo.bar:1|c', datagram)
|
93
93
|
|
94
94
|
# The prefix should also be normalized
|
95
95
|
datagram_builder = StatsD::Instrument::DatagramBuilder.new(prefix: 'foo|bar')
|
96
96
|
datagram = datagram_builder.c('baz', 1, nil, nil)
|
97
|
-
assert_equal
|
97
|
+
assert_equal('foo_bar.baz:1|c', datagram)
|
98
98
|
end
|
99
99
|
|
100
100
|
def test_default_tags
|
101
101
|
datagram_builder = StatsD::Instrument::DatagramBuilder.new(default_tags: ['foo'])
|
102
102
|
datagram = datagram_builder.c('bar', 1, nil, nil)
|
103
|
-
assert_equal
|
103
|
+
assert_equal('bar:1|c|#foo', datagram)
|
104
104
|
|
105
105
|
datagram = datagram_builder.c('bar', 1, nil, a: 'b')
|
106
|
-
assert_equal
|
106
|
+
assert_equal('bar:1|c|#a:b,foo', datagram)
|
107
107
|
|
108
108
|
# We do not filter out duplicates, because detecting dupes is too time consuming.
|
109
109
|
# We let the server deal with the situation
|
110
110
|
datagram = datagram_builder.c('bar', 1, nil, ['foo'])
|
111
|
-
assert_equal
|
111
|
+
assert_equal('bar:1|c|#foo,foo', datagram)
|
112
112
|
|
113
113
|
# Default tags are also normalized
|
114
114
|
datagram_builder = StatsD::Instrument::DatagramBuilder.new(default_tags: ['f,o|o'])
|
115
115
|
datagram = datagram_builder.c('bar', 1, nil, nil)
|
116
|
-
assert_equal
|
116
|
+
assert_equal('bar:1|c|#foo', datagram)
|
117
117
|
end
|
118
118
|
end
|