canvas_statsd 2.0.2 → 2.0.3
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/lib/canvas_statsd.rb +3 -2
- data/lib/canvas_statsd/block_tracking.rb +15 -0
- data/spec/canvas_statsd/block_tracking_spec.rb +33 -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: f11b331df3323ea17bbd53e1fe4e1a2cdc85a411
         | 
| 4 | 
            +
              data.tar.gz: 6391cae54d956383130fdf3e87eebcc7a2bcd54c
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 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  | 
| 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. | 
| 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- | 
| 12 | 
            +
            date: 2017-03-23 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: statsd-ruby
         |