Sha256: 77875b4f05b5188f21377a344da0515119a111fb2d01ccd4cdfe61b2ba7144f8

Contents?: true

Size: 1.57 KB

Versions: 618

Compression:

Stored size: 1.57 KB

Contents

require 'spec_helper'
require 'puppet/util/profiler'

describe Puppet::Util::Profiler::AroundProfiler do
  let(:child) { TestAroundProfiler.new() }
  let(:profiler) { Puppet::Util::Profiler::AroundProfiler.new }

  before :each do
    profiler.add_profiler(child)
  end

  it "returns the value of the profiled segment" do
    retval = profiler.profile("Testing", ["testing"]) { "the return value" }

    expect(retval).to eq("the return value")
  end

  it "propagates any errors raised in the profiled segment" do
    expect do
      profiler.profile("Testing", ["testing"]) { raise "a problem" }
    end.to raise_error("a problem")
  end

  it "makes the description and the context available to the `start` and `finish` methods" do
    profiler.profile("Testing", ["testing"]) { }

    expect(child.context).to eq("Testing")
    expect(child.description).to eq("Testing")
  end

  it "calls finish even when an error is raised" do
    begin
      profiler.profile("Testing", ["testing"]) { raise "a problem" }
    rescue
      expect(child.context).to eq("Testing")
    end
  end

  it "supports multiple profilers" do
    profiler2 = TestAroundProfiler.new
    profiler.add_profiler(profiler2)
    profiler.profile("Testing", ["testing"]) {}

    expect(child.context).to eq("Testing")
    expect(profiler2.context).to eq("Testing")
  end

  class TestAroundProfiler
    attr_accessor :context, :description

    def start(description, metric_id)
      description
    end

    def finish(context, description, metric_id)
      @context = context
      @description = description
    end
  end
end

Version data entries

618 entries across 618 versions & 1 rubygems

Version Path
puppet-8.3.0 spec/unit/util/profiler/around_profiler_spec.rb
puppet-8.3.0-x86-mingw32 spec/unit/util/profiler/around_profiler_spec.rb
puppet-8.3.0-x64-mingw32 spec/unit/util/profiler/around_profiler_spec.rb
puppet-8.3.0-universal-darwin spec/unit/util/profiler/around_profiler_spec.rb
puppet-8.4.0 spec/unit/util/profiler/around_profiler_spec.rb
puppet-8.4.0-x86-mingw32 spec/unit/util/profiler/around_profiler_spec.rb
puppet-8.4.0-x64-mingw32 spec/unit/util/profiler/around_profiler_spec.rb
puppet-8.4.0-universal-darwin spec/unit/util/profiler/around_profiler_spec.rb
puppet-7.28.0 spec/unit/util/profiler/around_profiler_spec.rb
puppet-7.28.0-x86-mingw32 spec/unit/util/profiler/around_profiler_spec.rb
puppet-7.28.0-x64-mingw32 spec/unit/util/profiler/around_profiler_spec.rb
puppet-7.28.0-universal-darwin spec/unit/util/profiler/around_profiler_spec.rb
puppet-8.3.1 spec/unit/util/profiler/around_profiler_spec.rb
puppet-8.3.1-x86-mingw32 spec/unit/util/profiler/around_profiler_spec.rb
puppet-8.3.1-x64-mingw32 spec/unit/util/profiler/around_profiler_spec.rb
puppet-8.3.1-universal-darwin spec/unit/util/profiler/around_profiler_spec.rb
puppet-7.27.0 spec/unit/util/profiler/around_profiler_spec.rb
puppet-7.27.0-x86-mingw32 spec/unit/util/profiler/around_profiler_spec.rb
puppet-7.27.0-x64-mingw32 spec/unit/util/profiler/around_profiler_spec.rb
puppet-7.27.0-universal-darwin spec/unit/util/profiler/around_profiler_spec.rb