File: timing_test.rb

package info (click to toggle)
ruby-prof 0.4.1-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 348 kB
  • ctags: 275
  • sloc: ruby: 990; ansic: 939; makefile: 20
file content (90 lines) | stat: -rwxr-xr-x 2,332 bytes parent folder | download
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
#!/usr/bin/env ruby

require 'test/unit'
require 'ruby-prof'
require 'test_helper'

def method1
	sleep(1)
end

def method2
	sleep(2)
	method1
end
  
def method3
	sleep(3)
	method2
	method1
end

# Need to use wall time for this test due to the sleep calls
RubyProf::clock_mode = RubyProf::WALL_TIME

class TimingTest < Test::Unit::TestCase

  def test_basic
    result = RubyProf.profile do
      method1
    end
    
    assert_equal(1, result.threads.length)

    methods = result.threads.values.first
    assert_equal(3, methods.length)
    
    method = methods['#toplevel']
    assert_not_nil(method)
    assert_in_delta(1, method.total_time, 0.02)
    assert_in_delta(0, method.self_time, 0.02)
    assert_in_delta(1, method.called, 0.02)
    assert_equal(0, method.parents.length)
    assert_equal(1, method.children.length)

    method = methods['Object#method1']
    assert_not_nil(method)
    assert_in_delta(1, method.total_time, 0.02)
    assert_in_delta(0, method.self_time, 0.02)
    assert_equal(1, method.called)
    assert_equal(1, method.parents.length)
    assert_equal(1, method.children.length)
    
    sleep = methods['Kernel#sleep']
    assert_not_nil(sleep)
    assert_in_delta(1, sleep.total_time, 0.02)
    assert_in_delta(1, sleep.self_time, 0.02)
    assert_in_delta(0, sleep.children_time, 0.02)
    assert_equal(1, sleep.called)
    assert_equal(1, sleep.parents.length)
    assert_equal(0, sleep.children.length)
  end
  
  def test_timings
    result = RubyProf.profile do
      method3
    end
    
    assert_equal(1, result.threads.length)
    methods = result.threads.values.first
    assert_equal(5, methods.length)

    method = methods['#toplevel']
    assert_not_nil(method)
    assert_in_delta(7, method.total_time, 0.02)
    assert_in_delta(0, method.self_time, 0.02)
    assert_in_delta(7, method.children_time, 0.02)
    assert_equal(1, method.called)
    assert_equal(0, method.parents.length)
    assert_equal(1, method.children.length)
    
    method = methods['Object#method3']
    assert_not_nil(method)
    assert_in_delta(7, method.total_time, 0.02)
    assert_in_delta(0, method.self_time, 0.02)
    assert_in_delta(7, method.children_time, 0.02)
    assert_equal(1, method.called)
    assert_equal(1, method.parents.length)
    assert_equal(3, method.children.length)
  end
end