class StartStopTest

  1. test/start_stop_test.rb

Public Instance methods

method1 ()
[show source]
# File test/start_stop_test.rb, line 10
def method1
   RubyProf.start
   method2
end
method2 ()
[show source]
# File test/start_stop_test.rb, line 15
def method2
   method3
end
method3 ()
[show source]
# File test/start_stop_test.rb, line 19
def method3
  sleep(2)
  @result = RubyProf.stop
end
setup ()
[show source]
# File test/start_stop_test.rb, line 5
def setup
  # Need to use wall time for this test due to the sleep calls
  RubyProf::measure_mode = RubyProf::WALL_TIME
end
test_different_methods ()
[show source]
# File test/start_stop_test.rb, line 41
def test_different_methods
  method1

  # Ruby prof should be stopped
  assert_equal(false, RubyProf.running?)


  # Length should be 4:
  #   StartStopTest#method1
  #   StartStopTest#method2
  #   StartStopTest#method3
  #   Kernel#sleep

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

  # Check StackTest#test_call_sequence
  method = methods[0]
  assert_equal('StartStopTest#method1', method.full_name)
  assert_equal(1, method.called)
  assert_in_delta(2, method.total_time, 0.05)
  assert_in_delta(0, method.wait_time, 0.01)
  assert_in_delta(0, method.self_time, 0.01)
  assert_in_delta(2, method.children_time, 0.05)
  assert_equal(1, method.call_infos.length)

  call_info = method.call_infos[0]
  assert_equal('StartStopTest#method1', call_info.call_sequence)
  assert_equal(1, call_info.children.length)

  method = methods[1]
  assert_equal('StartStopTest#method2', method.full_name)
  assert_equal(1, method.called)
  assert_in_delta(2, method.total_time, 0.05)
  assert_in_delta(0, method.wait_time, 0.01)
  assert_in_delta(0, method.self_time, 0.01)
  assert_in_delta(2, method.children_time, 0.05)
  assert_equal(1, method.call_infos.length)

  call_info = method.call_infos[0]
  assert_equal('StartStopTest#method1->StartStopTest#method2', call_info.call_sequence)
  assert_equal(1, call_info.children.length)

  method = methods[2]
  assert_equal('StartStopTest#method3', method.full_name)
  assert_equal(1, method.called)
  assert_in_delta(2, method.total_time, 0.01)
  assert_in_delta(0, method.wait_time, 0.01)
  assert_in_delta(0, method.self_time, 0.01)
  assert_in_delta(2, method.children_time, 0.01)
  assert_equal(1, method.call_infos.length)

  call_info = method.call_infos[0]
  assert_equal('StartStopTest#method1->StartStopTest#method2->StartStopTest#method3', call_info.call_sequence)
  assert_equal(1, call_info.children.length)

  method = methods[3]
  assert_equal('Kernel#sleep', method.full_name)
  assert_equal(1, method.called)
  assert_in_delta(2, method.total_time, 0.01)
  assert_in_delta(0, method.wait_time, 0.01)
  assert_in_delta(2, method.self_time, 0.01)
  assert_in_delta(0, method.children_time, 0.01)
  assert_equal(1, method.call_infos.length)

  call_info = method.call_infos[0]
  assert_equal('StartStopTest#method1->StartStopTest#method2->StartStopTest#method3->Kernel#sleep', call_info.call_sequence)
  assert_equal(0, call_info.children.length)
end
test_extra_stop_should_raise ()
[show source]
# File test/start_stop_test.rb, line 24
def test_extra_stop_should_raise
  RubyProf.start
  assert_raise(RuntimeError) do
    RubyProf.start
  end
  
  assert_raise(RuntimeError) do
    RubyProf.profile {}
  end
  
  RubyProf.stop # ok
  assert_raise(RuntimeError) do
    RubyProf.stop
  end
end