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.


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.


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.


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

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