Class: Puppet::Util::Profiler::AroundProfiler Private

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet/util/profiler/around_profiler.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

A Profiler that can be used to wrap around blocks of code. It is configured with other profilers and controls them to start before the block is executed and finish after the block is executed.

Instance Method Summary collapse

Constructor Details

#initializeAroundProfiler

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of AroundProfiler.



8
9
10
# File 'lib/puppet/util/profiler/around_profiler.rb', line 8

def initialize
  @profilers = []
end

Instance Method Details

#add_profiler(profiler) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • profiler (#profile)

    A profiler for the current thread



28
29
30
31
# File 'lib/puppet/util/profiler/around_profiler.rb', line 28

def add_profiler(profiler)
  @profilers << profiler
  profiler
end

#clearObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Reset the profiling system to the original state



15
16
17
# File 'lib/puppet/util/profiler/around_profiler.rb', line 15

def clear
  @profilers = []
end

#currentObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Retrieve the current list of profilers



22
23
24
# File 'lib/puppet/util/profiler/around_profiler.rb', line 22

def current
  @profilers
end

#profile(message, metric_id) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Profile a block of code and log the time it took to execute.

This outputs logs entries to the Puppet masters logging destination providing the time it took, a message describing the profiled code and a leaf location marking where the profile method was called in the profiled hierarchy.

Parameters:

  • message (String)

    A description of the profiled event

  • metric_id (Array)

    A list of strings making up the ID of a metric to profile

  • block (Block)

    The segment of code to profile



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/puppet/util/profiler/around_profiler.rb', line 50

def profile(message, metric_id)
  retval = nil
  contexts = {}
  @profilers.each do |profiler|
    contexts[profiler] = profiler.start(message, metric_id)
  end

  begin
    retval = yield
  ensure
    @profilers.each do |profiler|
      profiler.finish(contexts[profiler], message, metric_id)
    end
  end

  retval
end

#remove_profiler(profiler) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • profiler (#profile)

    A profiler to remove from the current thread



35
36
37
# File 'lib/puppet/util/profiler/around_profiler.rb', line 35

def remove_profiler(profiler)
  @profilers.delete(profiler)
end