canvas_statsd 2.0.2 → 2.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b8d208dec2b9d9e15929242060b633ddc26604e4
4
- data.tar.gz: 64dd9bbc70f94f50e825f956fb5d8487aa7d70ac
3
+ metadata.gz: f11b331df3323ea17bbd53e1fe4e1a2cdc85a411
4
+ data.tar.gz: 6391cae54d956383130fdf3e87eebcc7a2bcd54c
5
5
  SHA512:
6
- metadata.gz: 9cc72278306b28823f791c6caa32788f62f9462146269ce6b9bbcf448b00bb5215bc4178955638fa217b031a8c2a1e600be96535f0020c0d2d7f909434c07cb2
7
- data.tar.gz: c43c0b295a7181af427f02710b269060afe83860df65df94e3e4bbffacd97d4b3983dc022ab4b07cc07dfaf63e5b3c8007ca31cb98d4e12384145ce5cbfe827e
6
+ metadata.gz: 38b7ea0aa3b030ba275f5e3f28c0785127f768154c705c93372e0dd98de78b9f4d2ef7639d5fe2b0de40bdac41d10622c30890e81abb71744eb1b9bad1978d96
7
+ data.tar.gz: fa3a29befc27f44e1a3f090dede8320446e0e8bd96dec6efc7a27cbe164bb47c768bc50b2071569940e97c9f74eba8ee5ae196de2631765315723db4761cf0a7
data/lib/canvas_statsd.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'statsd'
2
2
 
3
3
  module CanvasStatsd
4
- VALID_SETTINGS = [:host, :port, :namespace, :append_hostname]
4
+ VALID_SETTINGS = [:host, :port, :namespace, :append_hostname, :mask, :negative_mask]
5
5
 
6
6
  class ConfigurationError < StandardError; end
7
7
 
@@ -18,7 +18,7 @@ module CanvasStatsd
18
18
 
19
19
  class << self
20
20
  def settings
21
- @settings || env_settings
21
+ @settings ||= env_settings
22
22
  end
23
23
 
24
24
  def settings=(value)
@@ -33,6 +33,7 @@ module CanvasStatsd
33
33
  if !VALID_SETTINGS.include?(k.to_sym)
34
34
  raise CanvasStatsd::ConfigurationError, "Invalid key: #{k}"
35
35
  end
36
+ v = Regexp.new(v) if [:mask, :negative_mask].include?(k.to_sym) && v.is_a?(String)
36
37
  validated[k.to_sym] = v
37
38
  end
38
39
 
@@ -5,7 +5,22 @@ module CanvasStatsd
5
5
  class << self
6
6
  attr_accessor :logger
7
7
 
8
+ [:mask, :negative_mask].each do |method|
9
+ class_eval <<-RUBY, __FILE__, __LINE__ + 1
10
+ def #{method}
11
+ CanvasStatsd.settings[:#{method}]
12
+ end
13
+
14
+ def #{method}=(value)
15
+ CanvasStatsd.settings[:#{method}] = value
16
+ end
17
+ RUBY
18
+ end
19
+
8
20
  def track(key, category: nil, statsd: CanvasStatsd::Statsd, only: nil)
21
+ return yield if mask && mask !~ key
22
+ return yield if negative_mask && negative_mask =~ key
23
+
9
24
  cookies = if only
10
25
  Array(only).map { |name| [name, Counter.counters[name].start] }
11
26
  else
@@ -42,4 +42,37 @@ describe CanvasStatsd::BlockTracking do
42
42
  end
43
43
  end
44
44
  end
45
+
46
+ context "mask" do
47
+ after do
48
+ CanvasStatsd::BlockTracking.mask = nil
49
+ CanvasStatsd::BlockTracking.negative_mask = nil
50
+ end
51
+
52
+ it "only tracks keys that match the mask" do
53
+ CanvasStatsd::BlockTracking.mask = /mykey/
54
+ statsd = double()
55
+ allow(statsd).to receive(:timing).with('mykey.total', anything)
56
+ expect(statsd).to receive(:timing).with("mykey.sql.read", 1)
57
+
58
+ CanvasStatsd::BlockTracking.track("mykey", statsd: statsd, only: 'sql.read') do
59
+ CanvasStatsd::BlockTracking.track("ignoreme", statsd: statsd, only: 'sql.read') do
60
+ ActiveSupport::Notifications.instrument('sql.active_record', name: "LOAD", sql: "SELECT * FROM users") {}
61
+ end
62
+ end
63
+ end
64
+
65
+ it "doesn't track keys that match the negative mask" do
66
+ CanvasStatsd::BlockTracking.negative_mask = /ignoreme/
67
+ statsd = double()
68
+ allow(statsd).to receive(:timing).with('mykey.total', anything)
69
+ expect(statsd).to receive(:timing).with("mykey.sql.read", 1)
70
+
71
+ CanvasStatsd::BlockTracking.track("mykey", statsd: statsd, only: 'sql.read') do
72
+ CanvasStatsd::BlockTracking.track("ignoreme", statsd: statsd, only: 'sql.read') do
73
+ ActiveSupport::Notifications.instrument('sql.active_record', name: "LOAD", sql: "SELECT * FROM users") {}
74
+ end
75
+ end
76
+ end
77
+ end
45
78
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canvas_statsd
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Cloward
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-03-22 00:00:00.000000000 Z
12
+ date: 2017-03-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: statsd-ruby