class MeasureCpuTimeTest

  1. test/measure_cpu_time_test.rb

Public Instance methods

setup ()
[show source]
# File test/measure_cpu_time_test.rb, line 5
def setup
  # Need to use wall time for this test due to the sleep calls
  RubyProf::measure_mode = RubyProf::CPU_TIME
end
test_class_methods ()
[show source]
# File test/measure_cpu_time_test.rb, line 19
def test_class_methods
  result = RubyProf.profile do
    RubyProf::C1.hello
  end

  printer = RubyProf::FlatPrinter.new(result)
  printer.print

  # Length should be 3:
  #   MeasureCpuTimeTest#test_class_methods
  #   <Class::RubyProf::C1>#hello
  #   Kernel#sleep

  methods = result.threads.values.first.sort.reverse
  assert_equal(3, methods.length)

  # Check the names
  assert_equal('MeasureCpuTimeTest#test_class_methods', methods[0].full_name)
  assert_equal('<Class::RubyProf::C1>#hello', methods[1].full_name)
  assert_equal('Kernel#sleep', methods[2].full_name)

  # Check times
  assert_in_delta(0.1, methods[0].total_time, 0.01)
  assert_in_delta(0, methods[0].wait_time, 0.01)
  assert_in_delta(0, methods[0].self_time, 0.01)

  assert_in_delta(0.1, methods[1].total_time, 0.01)
  assert_in_delta(0, methods[1].wait_time, 0.01)
  assert_in_delta(0, methods[1].self_time, 0.01)

  assert_in_delta(0.1, methods[2].total_time, 0.01)
  assert_in_delta(0, methods[2].wait_time, 0.01)
  assert_in_delta(0.1, methods[2].self_time, 0.01)
end
test_cpu_time_enabled_defined ()
[show source]
# File test/measure_cpu_time_test.rb, line 15
def test_cpu_time_enabled_defined
  assert(defined?(RubyProf::CPU_TIME_ENABLED))
end
test_instance_methods ()
[show source]
# File test/measure_cpu_time_test.rb, line 54
def test_instance_methods
  result = RubyProf.profile do
    RubyProf::C1.new.hello
  end

  # Methods called
  #   MeasureCpuTimeTest#test_instance_methods
  #   Class.new
  #   Class:Object#allocate
  #   for Object#initialize
  #   C1#hello
  #   Kernel#sleep

  methods = result.threads.values.first.sort.reverse
  assert_equal(6, methods.length)
  names = methods.map(&:full_name)
  assert_equal('MeasureCpuTimeTest#test_instance_methods', names[0])
  assert_equal('RubyProf::C1#hello', names[1])
  assert_equal('Kernel#sleep', names[2])
  assert_equal('Class#new', names[3])
  # order can differ
  assert(names.include?("<Class::#{RubyProf::PARENT}>#allocate"))
  assert(names.include?("#{RubyProf::PARENT}#initialize"))

  # Check times
  assert_in_delta(0.2, methods[0].total_time, 0.02)
  assert_in_delta(0, methods[0].wait_time, 0.02)
  assert_in_delta(0, methods[0].self_time, 0.02)

  assert_in_delta(0.2, methods[1].total_time, 0.02)
  assert_in_delta(0, methods[1].wait_time, 0.02)
  assert_in_delta(0, methods[1].self_time, 0.02)

  assert_in_delta(0.2, methods[2].total_time, 0.02)
  assert_in_delta(0, methods[2].wait_time, 0.02)
  assert_in_delta(0.2, methods[2].self_time, 0.02)

  assert_in_delta(0, methods[3].total_time, 0.01)
  assert_in_delta(0, methods[3].wait_time, 0.01)
  assert_in_delta(0, methods[3].self_time, 0.01)

  assert_in_delta(0, methods[4].total_time, 0.01)
  assert_in_delta(0, methods[4].wait_time, 0.01)
  assert_in_delta(0, methods[4].self_time, 0.01)

  assert_in_delta(0, methods[5].total_time, 0.01)
  assert_in_delta(0, methods[5].wait_time, 0.01)
  assert_in_delta(0, methods[5].self_time, 0.01)
end
test_mode ()
[show source]
# File test/measure_cpu_time_test.rb, line 10
def test_mode
  RubyProf::measure_mode = RubyProf::CPU_TIME
  assert_equal(RubyProf::CPU_TIME, RubyProf::measure_mode)
end
test_module_instance_methods ()
[show source]
# File test/measure_cpu_time_test.rb, line 135
def test_module_instance_methods
  result = RubyProf.profile do
    RubyProf::C2.new.hello
  end

  # Methods:
  #   MeasureCpuTimeTest#test_module_instance_methods
  #   Class#new
  #   <Class::Object>#allocate
  #   Object#initialize
  #   M1#hello
  #   Kernel#sleep

  methods = result.threads.values.first.sort.reverse
  assert_equal(6, methods.length)
  names = methods.map(&:full_name)
  assert_equal('MeasureCpuTimeTest#test_module_instance_methods', names[0])
  assert_equal('RubyProf::M1#hello', names[1])
  assert_equal('Kernel#sleep', names[2])
  assert_equal('Class#new', names[3])
  assert(names.include?("<Class::#{RubyProf::PARENT}>#allocate"))
  assert(names.include?("#{RubyProf::PARENT}#initialize"))

  # Check times
  assert_in_delta(0.3, methods[0].total_time, 0.1)
  assert_in_delta(0, methods[0].wait_time, 0.1)
  assert_in_delta(0, methods[0].self_time, 0.1)

  assert_in_delta(0.3, methods[1].total_time, 0.02)
  assert_in_delta(0, methods[1].wait_time, 0.01)
  assert_in_delta(0, methods[1].self_time, 0.01)

  assert_in_delta(0.3, methods[2].total_time, 0.02)
  assert_in_delta(0, methods[2].wait_time, 0.01)
  assert_in_delta(0.3, methods[2].self_time, 0.02)

  assert_in_delta(0, methods[3].total_time, 0.01)
  assert_in_delta(0, methods[3].wait_time, 0.01)
  assert_in_delta(0, methods[3].self_time, 0.01)

  assert_in_delta(0, methods[4].total_time, 0.01)
  assert_in_delta(0, methods[4].wait_time, 0.01)
  assert_in_delta(0, methods[4].self_time, 0.01)

  assert_in_delta(0, methods[5].total_time, 0.01)
  assert_in_delta(0, methods[5].wait_time, 0.01)
  assert_in_delta(0, methods[5].self_time, 0.01)
end
test_module_methods ()
[show source]
# File test/measure_cpu_time_test.rb, line 104
def test_module_methods
  result = RubyProf.profile do
    RubyProf::C2.hello
  end

  # Methods:
  #   MeasureCpuTimeTest#test_module_methods
  #   M1#hello
  #   Kernel#sleep

  methods = result.threads.values.first.sort.reverse
  assert_equal(3, methods.length)

  assert_equal('MeasureCpuTimeTest#test_module_methods', methods[0].full_name)
  assert_equal('RubyProf::M1#hello', methods[1].full_name)
  assert_equal('Kernel#sleep', methods[2].full_name)

  # Check times
  assert_in_delta(0.3, methods[0].total_time, 0.1)
  assert_in_delta(0, methods[0].wait_time, 0.02)
  assert_in_delta(0, methods[0].self_time, 0.02)

  assert_in_delta(0.3, methods[1].total_time, 0.1)
  assert_in_delta(0, methods[1].wait_time, 0.02)
  assert_in_delta(0, methods[1].self_time, 0.02)

  assert_in_delta(0.3, methods[2].total_time, 0.1)
  assert_in_delta(0, methods[2].wait_time, 0.02)
  assert_in_delta(0.3, methods[2].self_time, 0.1)
end
test_singleton ()
[show source]
# File test/measure_cpu_time_test.rb, line 184
def test_singleton
  c3 = RubyProf::C3.new

  class << c3
    def hello
    end
  end

  result = RubyProf.profile do
    c3.hello
  end

  methods = result.threads.values.first.sort.reverse
  assert_equal(2, methods.length)

  assert_equal('MeasureCpuTimeTest#test_singleton', methods[0].full_name)
  assert_equal('<Object::RubyProf::C3>#hello', methods[1].full_name)

  assert_in_delta(0, methods[0].total_time, 0.01)
  assert_in_delta(0, methods[0].wait_time, 0.01)
  assert_in_delta(0, methods[0].self_time, 0.01)

  assert_in_delta(0, methods[1].total_time, 0.01)
  assert_in_delta(0, methods[1].wait_time, 0.01)
  assert_in_delta(0, methods[1].self_time, 0.01)
end