Sha256: d4aa4fdcf280d7ae3250c15b5dc62ee3ce1814921545ffae637f04e6ee6b4093

Contents?: true

Size: 1.72 KB

Versions: 50

Compression:

Stored size: 1.72 KB

Contents

require 'spec_helper'
require 'startback/audit'
module Startback
  module Audit
    describe Prometheus do

      EXPORTER = Prometheus.new({
        prefix: "hello",
        labels: {
          app_version: "1.0"
        }
      })

      class Runner
        include Startback::Support::OperationRunner

        class IdealOp < Startback::Operation
          def call
            42
          end
        end

        class ExceptionalOp < Startback::Operation
          def call
            raise "Oops"
          end
        end

        around_run(EXPORTER)
        def test
          run IdealOp.new
        end
        def test_exp
          run ExceptionalOp.new
        end
      end

      describe 'The ideal case' do
        before do
          expect(EXPORTER.calls).to receive(:observe).with(
            kind_of(Numeric),
            hash_including(labels: {
              operation: "Startback::Audit::Runner::IdealOp",
              startback_version: Startback::VERSION,
              app_version: "1.0"
            }))
          expect(EXPORTER.errors).not_to receive(:increment)
        end
        it 'runs the operation' do
          expect(Runner.new.test).to eql(42)
        end
      end

      describe 'The exceptional case' do
        before do
          expect(EXPORTER.errors).to receive(:increment).with(
            hash_including(labels: {
              operation: "Startback::Audit::Runner::ExceptionalOp",
              startback_version: Startback::VERSION,
              app_version: "1.0"
            })
          )
          expect(EXPORTER.calls).not_to receive(:observe)
        end
        it 'let errors bubble up' do
          expect { Runner.new.test_exp }.to raise_error(/Oops/)
        end
      end

    end
  end
end

Version data entries

50 entries across 50 versions & 3 rubygems

Version Path
startback-1.1.0 spec/unit/audit/test_prometheus.rb
startback-1.0.3 spec/unit/audit/test_prometheus.rb
startback-1.0.2 spec/unit/audit/test_prometheus.rb
startback-1.0.1 spec/unit/audit/test_prometheus.rb
startback-1.0.0 spec/unit/audit/test_prometheus.rb
startback-0.19.4 spec/unit/audit/test_prometheus.rb
startback-0.19.3 spec/unit/audit/test_prometheus.rb
startback-0.19.1 spec/unit/audit/test_prometheus.rb
startback-0.19.0 spec/unit/audit/test_prometheus.rb
startback-0.18.2 spec/unit/audit/test_prometheus.rb
startback-0.18.1 spec/unit/audit/test_prometheus.rb
startback-0.18.0 spec/unit/audit/test_prometheus.rb
startback-0.17.4 spec/unit/audit/test_prometheus.rb
startback-0.17.3 spec/unit/audit/test_prometheus.rb
startback-0.17.2 spec/unit/audit/test_prometheus.rb
startback-0.17.1 spec/unit/audit/test_prometheus.rb
startback-0.17.0 spec/unit/audit/test_prometheus.rb
startback-0.16.0 spec/unit/audit/test_prometheus.rb
startback-0.15.5 spec/unit/audit/test_prometheus.rb
startback-0.15.4 spec/unit/audit/test_prometheus.rb