1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
#!/usr/bin/env ruby
# encoding: UTF-8
require File.expand_path('../test_helper', __FILE__)
class StartStopTest < TestCase
def setup
super
# Need to use wall time for this test due to the sleep calls
@profile = RubyProf::Profile.new(measure_mode: RubyProf::WALL_TIME)
end
def method1
@profile.start
method2
end
def method2
method3
end
def method3
sleep(2)
@result = @profile.stop
end
def test_extra_stop_should_raise
@profile.start
assert_raises(RuntimeError) do
@profile.start
end
@profile.stop # ok
assert_raises(RuntimeError) do
@profile.stop
end
end
def test_different_methods
method1
# Ruby prof should be stopped
assert_equal(false, @profile.running?)
methods = @result.threads.first.methods.sort.reverse
assert_equal(4, methods.length)
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.02)
assert_in_delta(0, method.self_time, 0.02)
assert_in_delta(2, method.children_time, 0.05)
assert_equal(1, method.call_trees.callees.length)
call_tree = method.call_trees.callees[0]
assert_equal('StartStopTest#method2', call_tree.target.full_name)
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.02)
assert_in_delta(0, method.self_time, 0.02)
assert_in_delta(2, method.children_time, 0.05)
assert_equal(1, method.call_trees.callers.length)
call_tree = method.call_trees.callers[0]
assert_equal('StartStopTest#method1', call_tree.parent.target.full_name)
assert_equal(1, method.call_trees.callees.length)
call_tree = method.call_trees.callees[0]
assert_equal('StartStopTest#method3', call_tree.target.full_name)
method = methods[2]
assert_equal('StartStopTest#method3', method.full_name)
assert_equal(1, method.called)
assert_in_delta(2, method.total_time, 0.02)
assert_in_delta(0, method.wait_time, 0.02)
assert_in_delta(0, method.self_time, 0.02)
assert_in_delta(2, method.children_time, 0.02)
assert_equal(1, method.call_trees.callers.length)
call_tree = method.call_trees.callers[0]
assert_equal('StartStopTest#method2', call_tree.parent.target.full_name)
assert_equal(1, method.call_trees.callees.length)
call_tree = method.call_trees.callees[0]
assert_equal('Kernel#sleep', call_tree.target.full_name)
method = methods[3]
assert_equal('Kernel#sleep', method.full_name)
assert_equal(1, method.called)
assert_in_delta(2, method.total_time, 0.02)
assert_in_delta(0, method.wait_time, 0.02)
assert_in_delta(2, method.self_time, 0.02)
assert_in_delta(0, method.children_time, 0.02)
assert_equal(1, method.call_trees.callers.length)
call_tree = method.call_trees.callers[0]
assert_equal('StartStopTest#method3', call_tree.parent.target.full_name)
assert_equal(0, method.call_trees.callees.length)
end
end
|