statsd-instrument 2.0.11 → 2.0.12
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/CHANGELOG.md +1 -0
- data/lib/statsd/instrument/assertions.rb +22 -14
- data/lib/statsd/instrument/backends/udp_backend.rb +8 -1
- data/lib/statsd/instrument/matchers.rb +2 -1
- data/lib/statsd/instrument/version.rb +1 -1
- data/test/assertions_test.rb +22 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 63dfe410622af6e685d7a2f6614f528152b36357
|
4
|
+
data.tar.gz: 104d234cfd0350fcd4f079bec5baf965f86da6f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69206e0b5124e2223184895448be069458c95023ff85bb684897bd9ff369d70f8b91e8dfbcec3cbf2f9e13c081612ef615fa1cfb21311a46ddea9fd5ad72aa6d
|
7
|
+
data.tar.gz: 471d932952f69c70e1f73e92e2e8ce08841d91f054353690002d2e4017571b866cc1c6cb86028eee3830f97ab7ce2080fe001acb20c97be85565c64d675f7971
|
data/CHANGELOG.md
CHANGED
@@ -39,28 +39,36 @@ module StatsD::Instrument::Assertions
|
|
39
39
|
metrics = metrics.select { |m| m.type == metric_type && m.name == metric_name }
|
40
40
|
assert metrics.length > 0, "No StatsD calls for metric #{metric_name} were made."
|
41
41
|
assert options[:times] === metrics.length, "The amount of StatsD calls for metric #{metric_name} was unexpected. Expected #{options[:times].inspect}, found #{metrics.length}"
|
42
|
-
metric = metrics.first
|
43
42
|
|
44
|
-
|
45
|
-
assert_equal options[:value], metric.value, "Unexpected value submitted for StatsD metric #{metric_name}" if options[:value]
|
43
|
+
metrics.each do |metric|
|
46
44
|
|
47
|
-
|
48
|
-
|
49
|
-
|
45
|
+
assert within_numeric_range?(metric.sample_rate), "Unexpected sample rate type for metric #{metric_name}, must be numeric"
|
46
|
+
assert_equal options[:sample_rate], metric.sample_rate, "Unexpected StatsD sample rate for metric #{metric_name}" if options[:sample_rate]
|
47
|
+
assert_equal options[:value], metric.value, "Unexpected value submitted for StatsD metric #{metric_name}" if options[:value]
|
50
48
|
|
51
|
-
if options[:
|
52
|
-
ignored_tags = Set.new(StatsD::Instrument::Metric.normalize_tags(options[:ignore_tags])) - expected_tags
|
53
|
-
actual_tags -= ignored_tags
|
49
|
+
if options[:tags]
|
54
50
|
|
55
|
-
|
56
|
-
|
51
|
+
expected_tags = Set.new(StatsD::Instrument::Metric.normalize_tags(options[:tags]))
|
52
|
+
actual_tags = Set.new(metric.tags)
|
53
|
+
|
54
|
+
if options[:ignore_tags]
|
55
|
+
ignored_tags = Set.new(StatsD::Instrument::Metric.normalize_tags(options[:ignore_tags])) - expected_tags
|
56
|
+
actual_tags -= ignored_tags
|
57
|
+
|
58
|
+
if options[:ignore_tags].is_a?(Array)
|
59
|
+
actual_tags.delete_if{ |key| options[:ignore_tags].include?(key.split(":").first) }
|
60
|
+
end
|
57
61
|
end
|
62
|
+
|
63
|
+
assert_equal expected_tags, actual_tags,
|
64
|
+
"Unexpected StatsD tags for metric #{metric_name}. Expected: #{expected_tags.inspect}, actual: #{actual_tags.inspect}"
|
58
65
|
end
|
59
66
|
|
60
|
-
|
61
|
-
"Unexpected StatsD tags for metric #{metric_name}. Expected: #{expected_tags.inspect}, actual: #{actual_tags.inspect}"
|
67
|
+
metric
|
62
68
|
end
|
69
|
+
end
|
63
70
|
|
64
|
-
|
71
|
+
def within_numeric_range?(object)
|
72
|
+
object.kind_of?(Numeric) && (0.0..1.0).cover?(object)
|
65
73
|
end
|
66
74
|
end
|
@@ -1,12 +1,17 @@
|
|
1
|
+
require 'monitor'
|
2
|
+
|
1
3
|
module StatsD::Instrument::Backends
|
2
4
|
class UDPBackend < StatsD::Instrument::Backend
|
3
5
|
|
4
6
|
DEFAULT_IMPLEMENTATION = :statsd
|
5
7
|
|
8
|
+
include MonitorMixin
|
9
|
+
|
6
10
|
attr_reader :host, :port
|
7
11
|
attr_accessor :implementation
|
8
12
|
|
9
13
|
def initialize(server = nil, implementation = nil)
|
14
|
+
super()
|
10
15
|
self.server = server || "localhost:8125"
|
11
16
|
self.implementation = (implementation || DEFAULT_IMPLEMENTATION).to_sym
|
12
17
|
end
|
@@ -76,7 +81,9 @@ module StatsD::Instrument::Backends
|
|
76
81
|
end
|
77
82
|
|
78
83
|
def write_packet(command)
|
79
|
-
|
84
|
+
synchronize do
|
85
|
+
socket.send(command, 0) > 0
|
86
|
+
end
|
80
87
|
rescue SocketError, IOError, SystemCallError => e
|
81
88
|
StatsD.logger.error "[StatsD] #{e.class.name}: #{e.message}"
|
82
89
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'rspec/expectations'
|
2
|
+
require 'rspec/version'
|
2
3
|
|
3
4
|
module StatsD::Instrument::Matchers
|
4
5
|
CUSTOM_MATCHERS = {
|
@@ -11,7 +12,7 @@ module StatsD::Instrument::Matchers
|
|
11
12
|
}
|
12
13
|
|
13
14
|
class Matcher
|
14
|
-
include RSpec::Matchers::Composable
|
15
|
+
include RSpec::Matchers::Composable if RSpec::Version::STRING.start_with?('3')
|
15
16
|
include StatsD::Instrument::Helpers
|
16
17
|
|
17
18
|
def initialize(metric_type, metric_name, options = {})
|
data/test/assertions_test.rb
CHANGED
@@ -80,6 +80,20 @@ class AssertionsTest < Minitest::Test
|
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
|
+
assert_no_assertion_triggered do
|
84
|
+
@test_case.assert_statsd_increment('counter', times: 2, tags: ['foo:1']) do
|
85
|
+
StatsD.increment('counter', tags: { foo: 1 })
|
86
|
+
StatsD.increment('counter', tags: { foo: 1 })
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
assert_assertion_triggered do
|
91
|
+
@test_case.assert_statsd_increment('counter', times: 2, tags: ['foo:1']) do
|
92
|
+
StatsD.increment('counter', tags: { foo: 1 })
|
93
|
+
StatsD.increment('counter', tags: { foo: 2 })
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
83
97
|
assert_no_assertion_triggered do
|
84
98
|
@test_case.assert_statsd_increment('counter', sample_rate: 0.5, tags: ['a', 'b']) do
|
85
99
|
StatsD.increment('counter', sample_rate: 0.5, tags: ['a', 'b'])
|
@@ -149,6 +163,14 @@ class AssertionsTest < Minitest::Test
|
|
149
163
|
end
|
150
164
|
end
|
151
165
|
|
166
|
+
def test_assert_statsd_call_with_wrong_sample_rate_type
|
167
|
+
assert_assertion_triggered "Unexpected sample rate type for metric counter, must be numeric" do
|
168
|
+
@test_case.assert_statsd_increment('counter', tags: ['a', 'b']) do
|
169
|
+
StatsD.increment('counter', sample_rate: 'abc', tags: ['a', 'b'])
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
152
174
|
def test_nested_assertions
|
153
175
|
assert_no_assertion_triggered do
|
154
176
|
@test_case.assert_statsd_increment('counter1') do
|
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.0.
|
4
|
+
version: 2.0.12
|
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: 2016-
|
13
|
+
date: 2016-05-20 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake
|