class PoiseProfiler::Timing

Public Instance Methods

reset!() click to toggle source
Calls superclass method PoiseProfiler::Base#reset!
# File lib/poise_profiler/timing.rb, line 44
def reset!
  timers.clear
  super
end
resource_completed(resource) click to toggle source
# File lib/poise_profiler/timing.rb, line 24
def resource_completed(resource)
  key = resource.resource_name.to_s.end_with?('_test') ? :test_resources : :resources
  timers[key]["#{resource.resource_name}[#{resource.name}]"] += resource.elapsed_time
  timers[:classes][resource.class.name] += resource.elapsed_time
end
run_completed(node) click to toggle source
# File lib/poise_profiler/timing.rb, line 30
def run_completed(node)
  Chef::Log.debug('Processing poise-profiler timing data')
  puts('Poise Profiler Timing:')
  puts_timer(:resources, 'Resource')
  puts_timer(:test_resources, 'Test Resource') unless timers[:test_resources].empty?
  puts_timer(:classes, 'Class')
  puts("Profiler JSON: #{Chef::JSONCompat.to_json(timers)}") if config.fetch('timing_json', ENV['CI'] || node['CI'])
  puts('')
end
run_failed(_run_error) click to toggle source
# File lib/poise_profiler/timing.rb, line 40
def run_failed(_run_error)
  run_completed(nil)
end

Private Instance Methods

puts_timer(key, label) click to toggle source
# File lib/poise_profiler/timing.rb, line 55
def puts_timer(key, label)
  puts "Time          #{label}"
  puts "------------  -------------"
  timers[key].sort_by{ |k,v| -v }.each do |val, run_time|
    puts "%12f  %s" % [run_time, val]
  end
  puts ""
end
timers() click to toggle source
# File lib/poise_profiler/timing.rb, line 51
def timers
  @timers ||= Hash.new {|hash, key| hash[key] = Hash.new(0) }
end