statsd-instrument 2.3.0.beta → 2.3.0.beta2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 23dbeea8c2ad9492a763224eebc870d68d3ec115
4
- data.tar.gz: b5dc664058c39b461fcd96600f3175aca88d7195
3
+ metadata.gz: 3ae635ca926c0f41f78f0662748672144020ff7f
4
+ data.tar.gz: 9e9c9023f4d1d874923ee9dd25f968c8110a0d90
5
5
  SHA512:
6
- metadata.gz: e564fd57696fcf3ea78351ad54dc566b0cddd6ead6d18005168c482dc22ba636fed9357a3804bc1a676f6953c48a706f4b4a7f583d97acf74b24c919882e7362
7
- data.tar.gz: 51928197842090a75ffa25c6d1837d307f90408e645b801cdab05ad0b05ba3775ec471b0e1b1cef05f250891389a84205259f5d4459ab0d43031ad038d91c0c8
6
+ metadata.gz: eca4c77bf05934fcac13b5e43e15d9d8faa1780a1767d4338273c90b60dfb598938647a9c530a01c1bb0cd954acf8460c1d765248843f55000ceed69b545cfae
7
+ data.tar.gz: 947142a1db455251acc2cbc9a265f979b46a782d53267d361c3d7cee648b7d53ac9130ca84afa91c24f7a182a72aeb3797fee380eb41d2a8ac8d7e4a264fb769
data/README.md CHANGED
@@ -106,6 +106,16 @@ StatsD.set('GoogleBase.customers', "12345", sample_rate: 1.0)
106
106
 
107
107
  Because you are counting unique values, the results of using a sampling value less than 1.0 can lead to unexpected, hard to interpret results.
108
108
 
109
+ #### StatsD.distribution
110
+
111
+ A modified gauge that submits a distribution of values over a sample period. Arithmetic and statistical calculations (percetiles, average, etc.) on the data set are peformed server side rather than client side like a histogram.
112
+
113
+ ```ruby
114
+ StatsD.distribution('shipit.redis_connection', 3)
115
+ ```
116
+
117
+ *Note: This is only supported by the beta datadog implementatation.*
118
+
109
119
  #### StatsD.event
110
120
 
111
121
  An event is a (title, text) tuple that can be used to correlate metrics with something that occured within the system.
@@ -263,6 +263,8 @@ module StatsD
263
263
  # @param key [String] The name of the metric.
264
264
  # @param value [Float] The measured duration in milliseconds
265
265
  # @param metric_options [Hash] Options for the metric
266
+ # the key :as_dist will submit the value as a distribution instead of a timing
267
+ # (only supported by DataDog's implementation)
266
268
  # @return [StatsD::Instrument::Metric] The metric that was sent to the backend.
267
269
  #
268
270
  # @overload measure(key, metric_options = {}, &block)
@@ -270,7 +272,9 @@ module StatsD
270
272
  # block passed to this method.
271
273
  # @param key [String] The name of the metric.
272
274
  # @param metric_options [Hash] Options for the metric
273
- # @yield The method will yield the block that was passed to this emthod to measure its duration.
275
+ # the key :as_dist sets the metric type to a 'distribution' instead of a 'timing'
276
+ # (only supported by DataDog's implementation)
277
+ # @yield The method will yield the block that was passed to this method to measure its duration.
274
278
  # @return The value that was returns by the block passed to this method.
275
279
  #
276
280
  # @example
@@ -282,10 +286,11 @@ module StatsD
282
286
  metric_options = [value]
283
287
  value = value.fetch(:value, nil)
284
288
  end
289
+ type = (!metric_options.empty? && metric_options.first[:as_dist] ? :d : :ms)
285
290
 
286
291
  result = nil
287
292
  value = 1000 * StatsD::Instrument.duration { result = block.call } if block_given?
288
- metric = collect_metric(hash_argument(metric_options).merge(type: :ms, name: key, value: value))
293
+ metric = collect_metric(hash_argument(metric_options).merge(type: type, name: key, value: value))
289
294
  result = metric unless block_given?
290
295
  result
291
296
  end
@@ -339,7 +344,7 @@ module StatsD
339
344
  collect_metric(hash_argument(metric_options).merge(type: :h, name: key, value: value))
340
345
  end
341
346
 
342
- # Emits a distribution metric.
347
+ # Emits a distribution metric.
343
348
  # @param key [String] The name of the metric.
344
349
  # @param value [Numeric] The value to record.
345
350
  # @param metric_options [Hash] (default: {}) Metric options
@@ -1,5 +1,5 @@
1
1
  module StatsD
2
2
  module Instrument
3
- VERSION = "2.3.0.beta"
3
+ VERSION = "2.3.0.beta2"
4
4
  end
5
5
  end
@@ -17,6 +17,11 @@ class StatsDTest < Minitest::Test
17
17
  assert_equal :ms, metric.type
18
18
  end
19
19
 
20
+ def test_statsd_measure_with_explicit_value_and_distribution_override
21
+ metric = capture_statsd_call { result = StatsD.measure('values.foobar', 42, as_dist: true) }
22
+ assert_equal :d, metric.type
23
+ end
24
+
20
25
  def test_statsd_measure_with_explicit_value_as_keyword_argument
21
26
  result = nil
22
27
  metric = capture_statsd_call { result = StatsD.measure('values.foobar', value: 42) }
@@ -26,6 +31,11 @@ class StatsDTest < Minitest::Test
26
31
  assert_equal :ms, metric.type
27
32
  end
28
33
 
34
+ 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) }
36
+ assert_equal :d, metric.type
37
+ end
38
+
29
39
  def test_statsd_measure_without_value_or_block
30
40
  assert_raises(ArgumentError) { StatsD.measure('values.foobar', tags: 123) }
31
41
  end
@@ -43,6 +53,13 @@ class StatsDTest < Minitest::Test
43
53
  assert_equal 1120.0, metric.value
44
54
  end
45
55
 
56
+ def test_statsd_measure_use_distribution_override_for_a_block
57
+ metric = capture_statsd_call do
58
+ StatsD.measure('values.foobar', as_dist: true) { 'foo' }
59
+ end
60
+ assert_equal :d, metric.type
61
+ end
62
+
46
63
  def test_statsd_measure_returns_return_value_of_block
47
64
  return_value = StatsD.measure('values.foobar') { 'sarah' }
48
65
  assert_equal 'sarah', return_value
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.0.beta
4
+ version: 2.3.0.beta2
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-05-31 00:00:00.000000000 Z
13
+ date: 2018-06-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake