measurometer 1.1.1 → 1.2.0
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/.github/workflows/main.yml +51 -0
- data/.gitignore +2 -0
- data/CHANGELOG.md +4 -0
- data/lib/measurometer.rb +4 -4
- data/lib/measurometer/statsd_driver.rb +2 -2
- data/lib/measurometer/version.rb +1 -1
- data/measurometer.gemspec +1 -0
- data/spec/measurometer/statsd_driver_spec.rb +4 -0
- data/spec/measurometer_spec.rb +26 -11
- metadata +7 -7
- data/.travis.yml +0 -5
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 145560329721f78f9988635eb5bbfcdeffd37ddaf3a5a14e2cf5891f76b94544
         | 
| 4 | 
            +
              data.tar.gz: a59156c128ce042aeb54ef08c94c8786aeed80456a2c38ea2a892861d0cd1642
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 667108345d55245fed14812c07608f2fde96d6455e92d14be8dd2e56a9a298c82464703a46e42e349a670277197adc6b105239e5c89711161bc6f9cabf0efff4
         | 
| 7 | 
            +
              data.tar.gz: c24c904cee40f2be10bbadba2aafe3c91b1e973782597678ad9e87cd7920a66a77b897c11739c961edf7c7ef10f990dc2d7ccb15adee68305c372ef0bbf5b10b
         | 
| @@ -0,0 +1,51 @@ | |
| 1 | 
            +
            name: CI
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            on: [push,pull_request]
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            env:
         | 
| 6 | 
            +
              BUNDLE_PATH: vendor/bundle
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            jobs:
         | 
| 9 | 
            +
              test:
         | 
| 10 | 
            +
                name: Specs
         | 
| 11 | 
            +
                runs-on: ubuntu-18.04
         | 
| 12 | 
            +
                if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
         | 
| 13 | 
            +
                strategy:
         | 
| 14 | 
            +
                  matrix:
         | 
| 15 | 
            +
                    ruby:
         | 
| 16 | 
            +
                      - 2.7
         | 
| 17 | 
            +
                      - 2.6
         | 
| 18 | 
            +
                      - 2.5
         | 
| 19 | 
            +
                    experimental: [false]
         | 
| 20 | 
            +
                    include:
         | 
| 21 | 
            +
                      - ruby: 3.0
         | 
| 22 | 
            +
                        experimental: true
         | 
| 23 | 
            +
                steps:
         | 
| 24 | 
            +
                  - name: Checkout
         | 
| 25 | 
            +
                    uses: actions/checkout@v2
         | 
| 26 | 
            +
                  - name: Setup Ruby
         | 
| 27 | 
            +
                    uses: ruby/setup-ruby@v1
         | 
| 28 | 
            +
                    with:
         | 
| 29 | 
            +
                      ruby-version: ${{ matrix.ruby }}
         | 
| 30 | 
            +
                  - name: Gemfile Cache
         | 
| 31 | 
            +
                    uses: actions/cache@v2
         | 
| 32 | 
            +
                    with:
         | 
| 33 | 
            +
                      path: Gemfile.lock
         | 
| 34 | 
            +
                      key: ${{ runner.os }}-gemlock-${{ matrix.ruby }}-${{ hashFiles('Gemfile', 'measurometer.gemspec') }}
         | 
| 35 | 
            +
                      restore-keys: |
         | 
| 36 | 
            +
                        ${{ runner.os }}-gemlock-${{ matrix.ruby }}-
         | 
| 37 | 
            +
                  - name: Bundle Cache
         | 
| 38 | 
            +
                    id: cache-gems
         | 
| 39 | 
            +
                    uses: actions/cache@v2
         | 
| 40 | 
            +
                    with:
         | 
| 41 | 
            +
                      path: vendor/bundle
         | 
| 42 | 
            +
                      key: ${{ runner.os }}-gems-${{ matrix.ruby }}-${{ hashFiles('Gemfile', 'Gemfile.lock', 'measurometer.gemspec') }}
         | 
| 43 | 
            +
                      restore-keys: |
         | 
| 44 | 
            +
                        ${{ runner.os }}-gems-${{ matrix.ruby }}-
         | 
| 45 | 
            +
                        ${{ runner.os }}-gems-
         | 
| 46 | 
            +
                  - name: Bundle Install
         | 
| 47 | 
            +
                    if: steps.cache-gems.outputs.cache-hit != 'true'
         | 
| 48 | 
            +
                    run: bundle install --jobs 4 --retry 3
         | 
| 49 | 
            +
                  - name: RSpec
         | 
| 50 | 
            +
                    continue-on-error: ${{ matrix.experimental }}
         | 
| 51 | 
            +
                    run: bundle exec rspec
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/lib/measurometer.rb
    CHANGED
    
    | @@ -71,8 +71,8 @@ module Measurometer | |
| 71 71 | 
             
                # @param counter_path[String] under which path to push the metric
         | 
| 72 72 | 
             
                # @param by[Integer] the counter increment to apply
         | 
| 73 73 | 
             
                # @return nil
         | 
| 74 | 
            -
                def increment_counter(counter_path, by = 1)
         | 
| 75 | 
            -
                  @drivers.each { |d| d.increment_counter(counter_path.to_s, by) }
         | 
| 74 | 
            +
                def increment_counter(counter_path, by = 1, tags={})
         | 
| 75 | 
            +
                  @drivers.each { |d| d.increment_counter(counter_path.to_s, by, tags) }
         | 
| 76 76 | 
             
                  nil
         | 
| 77 77 | 
             
                end
         | 
| 78 78 |  | 
| @@ -81,8 +81,8 @@ module Measurometer | |
| 81 81 | 
             
                # @param gauge_name[String] under which path to push the metric
         | 
| 82 82 | 
             
                # @param value[Integer] the absolute value of the gauge
         | 
| 83 83 | 
             
                # @return nil
         | 
| 84 | 
            -
                def set_gauge(gauge_name, value)
         | 
| 85 | 
            -
                  @drivers.each { |d| d.set_gauge(gauge_name.to_s, value) }
         | 
| 84 | 
            +
                def set_gauge(gauge_name, value, tags={})
         | 
| 85 | 
            +
                  @drivers.each { |d| d.set_gauge(gauge_name.to_s, value, tags) }
         | 
| 86 86 | 
             
                  nil
         | 
| 87 87 | 
             
                end
         | 
| 88 88 | 
             
              end
         | 
| @@ -17,7 +17,7 @@ module Measurometer | |
| 17 17 | 
             
                  end
         | 
| 18 18 | 
             
                end
         | 
| 19 19 |  | 
| 20 | 
            -
                def increment_counter(counter_name, by)
         | 
| 20 | 
            +
                def increment_counter(counter_name, by, _tags={})
         | 
| 21 21 | 
             
                  @statsd_client.increment(counter_name, by)
         | 
| 22 22 | 
             
                end
         | 
| 23 23 |  | 
| @@ -25,7 +25,7 @@ module Measurometer | |
| 25 25 | 
             
                  @statsd_client.count(key_path, value)
         | 
| 26 26 | 
             
                end
         | 
| 27 27 |  | 
| 28 | 
            -
                def set_gauge(gauge_name, value)
         | 
| 28 | 
            +
                def set_gauge(gauge_name, value, _tags={})
         | 
| 29 29 | 
             
                  @statsd_client.gauge(gauge_name, value)
         | 
| 30 30 | 
             
                end
         | 
| 31 31 |  | 
    
        data/lib/measurometer/version.rb
    CHANGED
    
    
    
        data/measurometer.gemspec
    CHANGED
    
    | @@ -8,6 +8,7 @@ Gem::Specification.new do |spec| | |
| 8 8 | 
             
              spec.version       = Measurometer::VERSION
         | 
| 9 9 | 
             
              spec.authors       = ['Julik Tarkhanov']
         | 
| 10 10 | 
             
              spec.email         = ['me@julik.nl']
         | 
| 11 | 
            +
              spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
         | 
| 11 12 |  | 
| 12 13 | 
             
              spec.summary       = 'Minimum viable API for instrumentation in libraries'
         | 
| 13 14 | 
             
              spec.description   = 'Minimum viable API for instrumentation in libraries. Source metrics from your libraries to Measurometer, pick them up on the other end in the application, centrally.'
         | 
| @@ -14,7 +14,9 @@ describe 'Measurometer::StatsdDriver' do | |
| 14 14 | 
             
                end
         | 
| 15 15 |  | 
| 16 16 | 
             
                Measurometer.set_gauge('app.some_gauge', 42)
         | 
| 17 | 
            +
                Measurometer.set_gauge('app.another_gauge', 43, ignore_this_tag: 2)
         | 
| 17 18 | 
             
                Measurometer.increment_counter('app.some_counter', 2)
         | 
| 19 | 
            +
                Measurometer.increment_counter('app.another_counter', 3, ignore_this_tag: 1)
         | 
| 18 20 | 
             
                Measurometer.add_distribution_value('app.some_sample', 42)
         | 
| 19 21 |  | 
| 20 22 | 
             
                expect(statsd).to have_received(:timing) { |block_name, timing_millis|
         | 
| @@ -23,6 +25,8 @@ describe 'Measurometer::StatsdDriver' do | |
| 23 25 | 
             
                }
         | 
| 24 26 |  | 
| 25 27 | 
             
                expect(statsd).to have_received(:increment).with('app.some_counter', 2)
         | 
| 28 | 
            +
                expect(statsd).to have_received(:increment).with('app.another_counter', 3)
         | 
| 26 29 | 
             
                expect(statsd).to have_received(:count).with('app.some_sample', 42)
         | 
| 30 | 
            +
                expect(statsd).to have_received(:gauge).with('app.another_gauge', 43)
         | 
| 27 31 | 
             
              end
         | 
| 28 32 | 
             
            end
         | 
    
        data/spec/measurometer_spec.rb
    CHANGED
    
    | @@ -9,13 +9,14 @@ RSpec.describe Measurometer do | |
| 9 9 | 
             
                end
         | 
| 10 10 | 
             
              end
         | 
| 11 11 |  | 
| 12 | 
            +
              before(:each) { Measurometer.drivers.clear }
         | 
| 13 | 
            +
              after(:each) { Measurometer.drivers.clear }
         | 
| 14 | 
            +
             | 
| 12 15 | 
             
              it 'has a version number' do
         | 
| 13 16 | 
             
                expect(Measurometer::VERSION).not_to be nil
         | 
| 14 17 | 
             
              end
         | 
| 15 18 |  | 
| 16 19 | 
             
              describe '.drivers' do
         | 
| 17 | 
            -
                before(:each) { Measurometer.drivers.clear }
         | 
| 18 | 
            -
                after(:each) { Measurometer.drivers.clear }
         | 
| 19 20 | 
             
                let(:driver) { Object.new }
         | 
| 20 21 |  | 
| 21 22 | 
             
                it 'allows adding and removing a driver' do
         | 
| @@ -43,41 +44,55 @@ RSpec.describe Measurometer do | |
| 43 44 | 
             
                  Measurometer.drivers << driver
         | 
| 44 45 | 
             
                  result = Measurometer.add_distribution_value(:bar_intensity, 114.4)
         | 
| 45 46 | 
             
                  expect(result).to be_nil
         | 
| 46 | 
            -
                  Measurometer.drivers.delete(driver)
         | 
| 47 47 | 
             
                end
         | 
| 48 48 | 
             
              end
         | 
| 49 49 |  | 
| 50 50 | 
             
              describe '.increment_counter' do
         | 
| 51 51 | 
             
                it 'increments by 1 by default and converts the counter name to a String before passing it to the driver' do
         | 
| 52 52 | 
             
                  driver = double
         | 
| 53 | 
            -
                  expect(driver).to receive(:increment_counter).with('barness', 1)
         | 
| 53 | 
            +
                  expect(driver).to receive(:increment_counter).with('barness', 1, {})
         | 
| 54 54 |  | 
| 55 55 | 
             
                  Measurometer.drivers << driver
         | 
| 56 56 | 
             
                  result = Measurometer.increment_counter(:barness)
         | 
| 57 57 | 
             
                  expect(result).to be_nil
         | 
| 58 | 
            -
                  Measurometer.drivers.delete(driver)
         | 
| 59 58 | 
             
                end
         | 
| 60 59 |  | 
| 61 60 | 
             
                it 'passes the increment to the driver' do
         | 
| 62 61 | 
             
                  driver = double
         | 
| 63 | 
            -
                  expect(driver).to receive(:increment_counter).with('barness', 123)
         | 
| 62 | 
            +
                  expect(driver).to receive(:increment_counter).with('barness', 123, {})
         | 
| 64 63 |  | 
| 65 64 | 
             
                  Measurometer.drivers << driver
         | 
| 66 65 | 
             
                  result = Measurometer.increment_counter(:barness, 123)
         | 
| 67 66 | 
             
                  expect(result).to be_nil
         | 
| 68 | 
            -
             | 
| 67 | 
            +
                end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                it 'passes tags to the driver' do
         | 
| 70 | 
            +
                  driver = double
         | 
| 71 | 
            +
                  expect(driver).to receive(:increment_counter).with('barness', 123, tag1: 11, tag2: 22)
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                  Measurometer.drivers << driver
         | 
| 74 | 
            +
                  result = Measurometer.increment_counter(:barness, 123, tag1: 11, tag2: 22)
         | 
| 75 | 
            +
                  expect(result).to be_nil
         | 
| 69 76 | 
             
                end
         | 
| 70 77 | 
             
              end
         | 
| 71 78 |  | 
| 72 79 | 
             
              describe '.set_gauge' do
         | 
| 73 80 | 
             
                it 'converts the gauge name to a String before passing it to the driver' do
         | 
| 74 81 | 
             
                  driver = double
         | 
| 75 | 
            -
                  expect(driver).to receive(:set_gauge).with('fooeyness', 456)
         | 
| 82 | 
            +
                  expect(driver).to receive(:set_gauge).with('fooeyness', 456, {})
         | 
| 76 83 |  | 
| 77 84 | 
             
                  Measurometer.drivers << driver
         | 
| 78 85 | 
             
                  result = Measurometer.set_gauge(:fooeyness, 456)
         | 
| 79 86 | 
             
                  expect(result).to be_nil
         | 
| 80 | 
            -
             | 
| 87 | 
            +
                end
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                it 'passes tags to the driver' do
         | 
| 90 | 
            +
                  driver = double
         | 
| 91 | 
            +
                  expect(driver).to receive(:set_gauge).with('fooeyness', 123, tag1: 11, tag2: 22)
         | 
| 92 | 
            +
             | 
| 93 | 
            +
                  Measurometer.drivers << driver
         | 
| 94 | 
            +
                  result = Measurometer.set_gauge(:fooeyness, 123, tag1: 11, tag2: 22)
         | 
| 95 | 
            +
                  expect(result).to be_nil
         | 
| 81 96 | 
             
                end
         | 
| 82 97 | 
             
              end
         | 
| 83 98 |  | 
| @@ -132,12 +147,12 @@ RSpec.describe Measurometer do | |
| 132 147 | 
             
                    @distributions << [value_path, value]
         | 
| 133 148 | 
             
                  end
         | 
| 134 149 |  | 
| 135 | 
            -
                  def increment_counter(value_path, value)
         | 
| 150 | 
            +
                  def increment_counter(value_path, value, tags={})
         | 
| 136 151 | 
             
                    @counters ||= []
         | 
| 137 152 | 
             
                    @counters << [value_path, value]
         | 
| 138 153 | 
             
                  end
         | 
| 139 154 |  | 
| 140 | 
            -
                  def set_gauge(value_path, value)
         | 
| 155 | 
            +
                  def set_gauge(value_path, value, tags={})
         | 
| 141 156 | 
             
                    @gauges ||= []
         | 
| 142 157 | 
             
                    @gauges << [value_path, value]
         | 
| 143 158 | 
             
                  end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: measurometer
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Julik Tarkhanov
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2021-03-22 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -75,10 +75,10 @@ executables: [] | |
| 75 75 | 
             
            extensions: []
         | 
| 76 76 | 
             
            extra_rdoc_files: []
         | 
| 77 77 | 
             
            files:
         | 
| 78 | 
            +
            - ".github/workflows/main.yml"
         | 
| 78 79 | 
             
            - ".gitignore"
         | 
| 79 80 | 
             
            - ".rspec"
         | 
| 80 81 | 
             
            - ".rubocop.yml"
         | 
| 81 | 
            -
            - ".travis.yml"
         | 
| 82 82 | 
             
            - CHANGELOG.md
         | 
| 83 83 | 
             
            - CODE_OF_CONDUCT.md
         | 
| 84 84 | 
             
            - Gemfile
         | 
| @@ -97,7 +97,7 @@ files: | |
| 97 97 | 
             
            homepage: https://github.com/WeTransfer/measurometer
         | 
| 98 98 | 
             
            licenses: []
         | 
| 99 99 | 
             
            metadata: {}
         | 
| 100 | 
            -
            post_install_message: | 
| 100 | 
            +
            post_install_message:
         | 
| 101 101 | 
             
            rdoc_options: []
         | 
| 102 102 | 
             
            require_paths:
         | 
| 103 103 | 
             
            - lib
         | 
| @@ -105,7 +105,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 105 105 | 
             
              requirements:
         | 
| 106 106 | 
             
              - - ">="
         | 
| 107 107 | 
             
                - !ruby/object:Gem::Version
         | 
| 108 | 
            -
                  version:  | 
| 108 | 
            +
                  version: 2.5.0
         | 
| 109 109 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 110 110 | 
             
              requirements:
         | 
| 111 111 | 
             
              - - ">="
         | 
| @@ -113,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 113 113 | 
             
                  version: '0'
         | 
| 114 114 | 
             
            requirements: []
         | 
| 115 115 | 
             
            rubygems_version: 3.0.3
         | 
| 116 | 
            -
            signing_key: | 
| 116 | 
            +
            signing_key:
         | 
| 117 117 | 
             
            specification_version: 4
         | 
| 118 118 | 
             
            summary: Minimum viable API for instrumentation in libraries
         | 
| 119 119 | 
             
            test_files: []
         |