qubole-statsd-instrument 2.1.4 → 2.1.5

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: 0694d4ff0f7d5f512163a9b3bfc818a91bdda979
4
- data.tar.gz: 7b589905601377964502e99086d82015af0ff333
3
+ metadata.gz: e129fa9743846586c8eb56fa80a81505498e04c8
4
+ data.tar.gz: f26f51980c279bd2445bd01759f42a51e255e7fc
5
5
  SHA512:
6
- metadata.gz: eb4fc7372e4d8c70bb5a0431ca1c5621837e804eb2411dcc7b0719b703b1babae02a3fa8926af7550135a512692531e68ca7a6e8c366e5a793d3334fe7ed72ac
7
- data.tar.gz: 18f7e78a40037fe3a410ecb7652fe2af190c6151e9b18b7af6229ceac11b080c66cce8e140bf630c294f31f49c56135f41ea39c4b3c097839cf6ca8d2f5f861f
6
+ metadata.gz: a1fe84cd8f8cad7c43719a471417429a5300906212d1df933f740460871eb658432d683d49ecd58154f29065a5881d5d9189ea35d0cf5bd5e56df33b83682692
7
+ data.tar.gz: 76f425d63f063edf641a00f6f6ddf2eaae65df97e7efcecac88c4640ca66361d365d1de2b4bb0d5570c49f6ca647239f832f5d0e13c1576e6230ee439991c5b3
@@ -8,12 +8,13 @@ module StatsD::Instrument::Backends
8
8
  include MonitorMixin
9
9
 
10
10
  attr_reader :host, :port
11
- attr_accessor :implementation
11
+ attr_accessor :implementation, :default_metric_tags
12
12
 
13
- def initialize(server = nil, implementation = nil)
13
+ def initialize(server = nil, implementation = nil, default_metric_tags = {})
14
14
  super()
15
15
  self.server = server || "localhost:8125"
16
16
  self.implementation = (implementation || DEFAULT_IMPLEMENTATION).to_sym
17
+ self.default_metric_tags = default_metric_tags
17
18
  end
18
19
 
19
20
  def collect_metric(metric)
@@ -64,13 +65,30 @@ module StatsD::Instrument::Backends
64
65
  def generate_packet(metric)
65
66
  command = "#{metric.name}:#{metric.value}|#{metric.type}"
66
67
  command << "|@#{metric.sample_rate}" if metric.sample_rate < 1 || (implementation == :statsite && metric.sample_rate > 1)
68
+
69
+ metric_tags_map = self.default_metric_tags
67
70
  if metric.tags
71
+ metric.tags.each do |tag|
72
+ key, value = tag.split(":") rescue nil
73
+ metric_tags_map[key] = value
74
+ end
75
+ end
76
+
77
+ metric_tags = []
78
+ metric_tags_map.each do |k ,v|
79
+ if v.nil?
80
+ metric_tags << "#{k}"
81
+ else
82
+ metric_tags << "#{k}:#{v}"
83
+ end
84
+ end
85
+
86
+ if metric_tags.size > 0
68
87
  if tags_supported?
69
88
  if implementation == :datadog
70
- command << "|##{metric.tags.join(',')}"
89
+ command << "|##{metric_tags.join(',')}"
71
90
  elsif implementation == :collectd
72
- metric_tags = "#{metric.tags.join(',')}"
73
- metric_tags = metric_tags.prepend("[") << "]"
91
+ metric_tags = "[#{metric_tags.join(',')}]"
74
92
  command.prepend(metric_tags.gsub(":", "="))
75
93
  end
76
94
  else
@@ -1,5 +1,5 @@
1
1
  module StatsD
2
2
  module Instrument
3
- VERSION = "2.1.4"
3
+ VERSION = "2.1.5"
4
4
  end
5
5
  end
@@ -0,0 +1,37 @@
1
+ require 'test_helper'
2
+
3
+ class UDPBackendTestWithDefaultTags < Minitest::Test
4
+ def setup
5
+ @backend = StatsD::Instrument::Backends::UDPBackend.new("localhost:8125", :collectd, {pod_ip: "10.0.0.42"})
6
+ end
7
+
8
+
9
+ def test_constructor_must_create_default_tags
10
+ default_tags = @backend.instance_eval { self.default_metric_tags }
11
+
12
+ assert_equal default_tags.class, Hash
13
+ assert_includes default_tags.keys, :pod_ip
14
+ assert_equal default_tags[:pod_ip], "10.0.0.42"
15
+ end
16
+
17
+ def test_metric_with_no_tags_must_have_default_tags
18
+ metric = StatsD::Instrument::Metric.new(type: :c, name: 'test', sample_rate: 0.5)
19
+ command = @backend.generate_packet(metric)
20
+ assert command.include?("pod_ip=10.0.0.42")
21
+ end
22
+
23
+ def test_metric_with_other_tags_must_have_default_tags
24
+ metric = StatsD::Instrument::Metric.new(type: :c, name: 'test', sample_rate: 0.5, tags: ["conduit:0.0"])
25
+ command = @backend.generate_packet(metric)
26
+ assert command.include?("pod_ip=10.0.0.42")
27
+ assert command.include?("conduit=0.0")
28
+
29
+ end
30
+
31
+ def test_metric_with_same_tag_must_override_default_tags
32
+ metric = StatsD::Instrument::Metric.new(type: :c, name: 'test', sample_rate: 0.5, tags: ["pod_ip:10.0.0.43", "conduit=0.0"])
33
+ command = @backend.generate_packet(metric)
34
+ assert command.include?("conduit=0.0")
35
+ assert command.include?("pod_ip=10.0.0.43")
36
+ end
37
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qubole-statsd-instrument
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.4
4
+ version: 2.1.5
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-09-13 00:00:00.000000000 Z
13
+ date: 2019-03-06 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
@@ -142,6 +142,7 @@ files:
142
142
  - test/statsd_test.rb
143
143
  - test/test_helper.rb
144
144
  - test/udp_backend_test.rb
145
+ - test/udp_backend_with_default_tags.rb
145
146
  homepage: https://github.com/Shopify/statsd-instrument
146
147
  licenses:
147
148
  - MIT
@@ -180,3 +181,4 @@ test_files:
180
181
  - test/statsd_test.rb
181
182
  - test/test_helper.rb
182
183
  - test/udp_backend_test.rb
184
+ - test/udp_backend_with_default_tags.rb