ruby-prof 1.7.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. checksums.yaml +4 -4
  2. data/{CHANGES → CHANGELOG.md} +112 -178
  3. data/README.md +5 -5
  4. data/bin/ruby-prof +1 -4
  5. data/docs/advanced-usage.md +132 -0
  6. data/docs/alternatives.md +98 -0
  7. data/docs/architecture.md +122 -0
  8. data/docs/best-practices.md +27 -0
  9. data/docs/getting-started.md +130 -0
  10. data/docs/history.md +11 -0
  11. data/docs/index.md +45 -0
  12. data/docs/profiling-rails.md +64 -0
  13. data/docs/public/examples/example.rb +33 -0
  14. data/docs/public/examples/generate_reports.rb +92 -0
  15. data/docs/public/examples/reports/call_info.txt +27 -0
  16. data/docs/public/examples/reports/call_stack.html +835 -0
  17. data/docs/public/examples/reports/callgrind.out +150 -0
  18. data/docs/public/examples/reports/flame_graph.html +408 -0
  19. data/docs/public/examples/reports/flat.txt +45 -0
  20. data/docs/public/examples/reports/graph.dot +129 -0
  21. data/docs/public/examples/reports/graph.html +1319 -0
  22. data/docs/public/examples/reports/graph.txt +100 -0
  23. data/docs/public/examples/reports/graphviz_viewer.html +1 -0
  24. data/docs/public/images/call_stack.png +0 -0
  25. data/docs/public/images/class_diagram.png +0 -0
  26. data/docs/public/images/dot_printer.png +0 -0
  27. data/docs/public/images/flame_graph.png +0 -0
  28. data/docs/public/images/flat.png +0 -0
  29. data/docs/public/images/graph.png +0 -0
  30. data/docs/public/images/graph_html.png +0 -0
  31. data/docs/public/images/ruby-prof-logo.svg +1 -0
  32. data/docs/reports.md +150 -0
  33. data/docs/stylesheets/extra.css +80 -0
  34. data/ext/ruby_prof/rp_allocation.c +0 -15
  35. data/ext/ruby_prof/rp_allocation.h +29 -33
  36. data/ext/ruby_prof/rp_call_tree.c +3 -0
  37. data/ext/ruby_prof/rp_call_tree.h +1 -4
  38. data/ext/ruby_prof/rp_call_trees.h +1 -4
  39. data/ext/ruby_prof/rp_measurement.c +0 -5
  40. data/ext/ruby_prof/rp_measurement.h +49 -53
  41. data/ext/ruby_prof/rp_method.c +3 -0
  42. data/ext/ruby_prof/rp_method.h +1 -4
  43. data/ext/ruby_prof/rp_profile.c +1 -1
  44. data/ext/ruby_prof/rp_profile.h +1 -5
  45. data/ext/ruby_prof/rp_stack.h +50 -53
  46. data/ext/ruby_prof/rp_thread.h +1 -4
  47. data/ext/ruby_prof/ruby_prof.h +1 -4
  48. data/ext/ruby_prof/vc/ruby_prof.vcxproj +7 -8
  49. data/lib/ruby-prof/assets/call_stack_printer.html.erb +746 -711
  50. data/lib/ruby-prof/assets/flame_graph_printer.html.erb +412 -0
  51. data/lib/ruby-prof/assets/graph_printer.html.erb +355 -355
  52. data/lib/ruby-prof/call_tree.rb +57 -57
  53. data/lib/ruby-prof/call_tree_visitor.rb +36 -36
  54. data/lib/ruby-prof/measurement.rb +17 -17
  55. data/lib/ruby-prof/printers/abstract_printer.rb +19 -33
  56. data/lib/ruby-prof/printers/call_info_printer.rb +53 -53
  57. data/lib/ruby-prof/printers/call_stack_printer.rb +168 -180
  58. data/lib/ruby-prof/printers/call_tree_printer.rb +132 -145
  59. data/lib/ruby-prof/printers/dot_printer.rb +177 -132
  60. data/lib/ruby-prof/printers/flame_graph_printer.rb +79 -0
  61. data/lib/ruby-prof/printers/flat_printer.rb +52 -52
  62. data/lib/ruby-prof/printers/graph_html_printer.rb +62 -63
  63. data/lib/ruby-prof/printers/graph_printer.rb +112 -113
  64. data/lib/ruby-prof/printers/multi_printer.rb +134 -127
  65. data/lib/ruby-prof/profile.rb +13 -0
  66. data/lib/ruby-prof/rack.rb +114 -105
  67. data/lib/ruby-prof/task.rb +147 -147
  68. data/lib/ruby-prof/thread.rb +20 -20
  69. data/lib/ruby-prof/version.rb +1 -1
  70. data/lib/ruby-prof.rb +50 -52
  71. data/lib/unprof.rb +10 -10
  72. data/ruby-prof.gemspec +5 -5
  73. data/test/abstract_printer_test.rb +25 -27
  74. data/test/alias_test.rb +203 -117
  75. data/test/call_tree_builder.rb +126 -126
  76. data/test/call_tree_visitor_test.rb +27 -27
  77. data/test/call_trees_test.rb +66 -66
  78. data/test/duplicate_names_test.rb +32 -32
  79. data/test/dynamic_method_test.rb +50 -50
  80. data/test/exceptions_test.rb +24 -24
  81. data/test/exclude_threads_test.rb +48 -48
  82. data/test/fiber_test.rb +72 -72
  83. data/test/inverse_call_tree_test.rb +174 -174
  84. data/test/line_number_test.rb +138 -1
  85. data/test/marshal_test.rb +144 -145
  86. data/test/measure_allocations.rb +26 -26
  87. data/test/measure_allocations_test.rb +340 -1
  88. data/test/measure_process_time_test.rb +3098 -3142
  89. data/test/measure_times.rb +56 -56
  90. data/test/measure_wall_time_test.rb +511 -372
  91. data/test/measurement_test.rb +82 -82
  92. data/test/merge_test.rb +48 -48
  93. data/test/multi_printer_test.rb +52 -66
  94. data/test/no_method_class_test.rb +15 -15
  95. data/test/pause_resume_test.rb +171 -171
  96. data/test/prime.rb +54 -54
  97. data/test/prime_script.rb +5 -5
  98. data/test/printer_call_stack_test.rb +28 -27
  99. data/test/printer_call_tree_test.rb +30 -30
  100. data/test/printer_flame_graph_test.rb +82 -0
  101. data/test/printer_flat_test.rb +99 -99
  102. data/test/printer_graph_html_test.rb +62 -59
  103. data/test/printer_graph_test.rb +42 -40
  104. data/test/printers_test.rb +28 -44
  105. data/test/printing_recursive_graph_test.rb +81 -81
  106. data/test/profile_test.rb +101 -101
  107. data/test/rack_test.rb +103 -93
  108. data/test/recursive_test.rb +139 -139
  109. data/test/scheduler.rb +4 -0
  110. data/test/singleton_test.rb +39 -38
  111. data/test/stack_printer_test.rb +61 -61
  112. data/test/start_stop_test.rb +106 -106
  113. data/test/test_helper.rb +4 -0
  114. data/test/thread_test.rb +29 -29
  115. data/test/unique_call_path_test.rb +123 -123
  116. data/test/yarv_test.rb +56 -56
  117. metadata +53 -11
  118. data/ext/ruby_prof/rp_measure_memory.c +0 -46
  119. data/lib/ruby-prof/compatibility.rb +0 -113
  120. data/test/compatibility_test.rb +0 -49
  121. data/test/measure_memory_test.rb +0 -1193
@@ -1,61 +1,61 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- require File.expand_path('../test_helper', __FILE__)
5
-
6
- # Test data
7
- # A
8
- # / \
9
- # B C
10
- # \
11
- # B
12
-
13
- class STPT
14
- def a
15
- 100.times{b}
16
- 300.times{c}
17
- c;c;c
18
- end
19
-
20
- def b
21
- sleep 0
22
- end
23
-
24
- def c
25
- 5.times{b}
26
- end
27
- end
28
-
29
- class StackPrinterTest < TestCase
30
- def test_stack_can_be_printed
31
- start_time = Time.now
32
- result = RubyProf::Profile.profile(measure_mode: RubyProf::WALL_TIME) do
33
- 5.times{STPT.new.a}
34
- end
35
-
36
- end_time = Time.now
37
- expected_time = end_time - start_time
38
-
39
- file_contents = nil
40
- file_contents = print(result)
41
- re = /Thread: (\d+)(, Fiber: (\d+))? \([\.0-9]+.[\.0-9]+% ~ ([\.0-9]+)\)/
42
- assert_match(re, file_contents)
43
- file_contents =~ re
44
- actual_time = $4.to_f
45
- assert_in_delta(expected_time, actual_time, 0.1)
46
- end
47
-
48
- private
49
-
50
- def print(result)
51
- test = caller.first =~ /in `(.*)'/ ? $1 : "test"
52
- testfile_name = "#{Dir.tmpdir}/ruby_prof_#{test}.html"
53
- # puts "printing to #{testfile_name}"
54
- printer = RubyProf::CallStackPrinter.new(result)
55
- File.open(testfile_name, "w") {|f| printer.print(f, :threshold => 0, :min_percent => 0, :title => "ruby_prof #{test}")}
56
- system("open '#{testfile_name}'") if RUBY_PLATFORM =~ /darwin/ && ENV['SHOW_RUBY_PROF_PRINTER_OUTPUT']=="1"
57
- assert File.exist?(testfile_name), "#{testfile_name} does not exist"
58
- assert File.readable?(testfile_name), "#{testfile_name} is no readable"
59
- File.read(testfile_name)
60
- end
61
- end
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ require File.expand_path('../test_helper', __FILE__)
5
+
6
+ # Test data
7
+ # A
8
+ # / \
9
+ # B C
10
+ # \
11
+ # B
12
+
13
+ class STPT
14
+ def a
15
+ 100.times{b}
16
+ 300.times{c}
17
+ c;c;c
18
+ end
19
+
20
+ def b
21
+ sleep 0
22
+ end
23
+
24
+ def c
25
+ 5.times{b}
26
+ end
27
+ end
28
+
29
+ class StackPrinterTest < TestCase
30
+ def test_stack_can_be_printed
31
+ start_time = Time.now
32
+ result = RubyProf::Profile.profile(measure_mode: RubyProf::WALL_TIME) do
33
+ 5.times{STPT.new.a}
34
+ end
35
+
36
+ end_time = Time.now
37
+ expected_time = end_time - start_time
38
+
39
+ file_contents = nil
40
+ file_contents = print(result)
41
+ re = /Thread: (\d+)(, Fiber: (\d+))? \([\.0-9]+.[\.0-9]+% ~ ([\.0-9]+)\)/
42
+ assert_match(re, file_contents)
43
+ file_contents =~ re
44
+ actual_time = $4.to_f
45
+ assert_in_delta(expected_time, actual_time, 0.1)
46
+ end
47
+
48
+ private
49
+
50
+ def print(result)
51
+ test = caller.first =~ /in `(.*)'/ ? $1 : "test"
52
+ testfile_name = "#{Dir.tmpdir}/ruby_prof_#{test}.html"
53
+ # puts "printing to #{testfile_name}"
54
+ printer = RubyProf::CallStackPrinter.new(result)
55
+ File.open(testfile_name, "w") {|f| printer.print(f, threshold: 0, min_percent: 0, title: "ruby_prof #{test}")}
56
+ system("open '#{testfile_name}'") if RUBY_PLATFORM =~ /darwin/ && ENV['SHOW_RUBY_PROF_PRINTER_OUTPUT']=="1"
57
+ assert File.exist?(testfile_name), "#{testfile_name} does not exist"
58
+ assert File.readable?(testfile_name), "#{testfile_name} is no readable"
59
+ File.read(testfile_name)
60
+ end
61
+ end
@@ -1,106 +1,106 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- require File.expand_path('../test_helper', __FILE__)
5
-
6
- class StartStopTest < TestCase
7
- def setup
8
- super
9
- # Need to use wall time for this test due to the sleep calls
10
- @profile = RubyProf::Profile.new(measure_mode: RubyProf::WALL_TIME)
11
- end
12
-
13
- def method1
14
- @profile.start
15
- method2
16
- end
17
-
18
- def method2
19
- method3
20
- end
21
-
22
- def method3
23
- sleep(2)
24
- @result = @profile.stop
25
- end
26
-
27
- def test_extra_stop_should_raise
28
- @profile.start
29
- assert_raises(RuntimeError) do
30
- @profile.start
31
- end
32
-
33
- @profile.stop # ok
34
- assert_raises(RuntimeError) do
35
- @profile.stop
36
- end
37
- end
38
-
39
- def test_different_methods
40
- method1
41
-
42
- # Ruby prof should be stopped
43
- assert_equal(false, @profile.running?)
44
-
45
- methods = @result.threads.first.methods.sort.reverse
46
- assert_equal(4, methods.length)
47
-
48
- method = methods[0]
49
- assert_equal('StartStopTest#method1', method.full_name)
50
- assert_equal(1, method.called)
51
- assert_in_delta(2, method.total_time, 0.05)
52
- assert_in_delta(0, method.wait_time, 0.02)
53
- assert_in_delta(0, method.self_time, 0.02)
54
- assert_in_delta(2, method.children_time, 0.05)
55
-
56
- assert_equal(1, method.call_trees.callees.length)
57
- call_tree = method.call_trees.callees[0]
58
- assert_equal('StartStopTest#method2', call_tree.target.full_name)
59
-
60
- method = methods[1]
61
- assert_equal('StartStopTest#method2', method.full_name)
62
- assert_equal(1, method.called)
63
- assert_in_delta(2, method.total_time, 0.05)
64
- assert_in_delta(0, method.wait_time, 0.02)
65
- assert_in_delta(0, method.self_time, 0.02)
66
- assert_in_delta(2, method.children_time, 0.05)
67
-
68
- assert_equal(1, method.call_trees.callers.length)
69
- call_tree = method.call_trees.callers[0]
70
- assert_equal('StartStopTest#method1', call_tree.parent.target.full_name)
71
-
72
- assert_equal(1, method.call_trees.callees.length)
73
- call_tree = method.call_trees.callees[0]
74
- assert_equal('StartStopTest#method3', call_tree.target.full_name)
75
-
76
- method = methods[2]
77
- assert_equal('StartStopTest#method3', method.full_name)
78
- assert_equal(1, method.called)
79
- assert_in_delta(2, method.total_time, 0.05)
80
- assert_in_delta(0, method.wait_time, 0.02)
81
- assert_in_delta(0, method.self_time, 0.02)
82
- assert_in_delta(2, method.children_time, 0.05)
83
-
84
- assert_equal(1, method.call_trees.callers.length)
85
- call_tree = method.call_trees.callers[0]
86
- assert_equal('StartStopTest#method2', call_tree.parent.target.full_name)
87
-
88
- assert_equal(1, method.call_trees.callees.length)
89
- call_tree = method.call_trees.callees[0]
90
- assert_equal('Kernel#sleep', call_tree.target.full_name)
91
-
92
- method = methods[3]
93
- assert_equal('Kernel#sleep', method.full_name)
94
- assert_equal(1, method.called)
95
- assert_in_delta(2, method.total_time, 0.05)
96
- assert_in_delta(0, method.wait_time, 0.02)
97
- assert_in_delta(2, method.self_time, 0.02)
98
- assert_in_delta(0, method.children_time, 0.05)
99
-
100
- assert_equal(1, method.call_trees.callers.length)
101
- call_tree = method.call_trees.callers[0]
102
- assert_equal('StartStopTest#method3', call_tree.parent.target.full_name)
103
-
104
- assert_equal(0, method.call_trees.callees.length)
105
- end
106
- end
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ require File.expand_path('../test_helper', __FILE__)
5
+
6
+ class StartStopTest < TestCase
7
+ def setup
8
+ super
9
+ # Need to use wall time for this test due to the sleep calls
10
+ @profile = RubyProf::Profile.new(measure_mode: RubyProf::WALL_TIME)
11
+ end
12
+
13
+ def method1
14
+ @profile.start
15
+ method2
16
+ end
17
+
18
+ def method2
19
+ method3
20
+ end
21
+
22
+ def method3
23
+ sleep(2)
24
+ @result = @profile.stop
25
+ end
26
+
27
+ def test_extra_stop_should_raise
28
+ @profile.start
29
+ assert_raises(RuntimeError) do
30
+ @profile.start
31
+ end
32
+
33
+ @profile.stop # ok
34
+ assert_raises(RuntimeError) do
35
+ @profile.stop
36
+ end
37
+ end
38
+
39
+ def test_different_methods
40
+ method1
41
+
42
+ # Ruby prof should be stopped
43
+ assert_equal(false, @profile.running?)
44
+
45
+ methods = @result.threads.first.methods.sort.reverse
46
+ assert_equal(4, methods.length)
47
+
48
+ method = methods[0]
49
+ assert_equal('StartStopTest#method1', method.full_name)
50
+ assert_equal(1, method.called)
51
+ assert_in_delta(2, method.total_time, 0.05 * delta_multiplier)
52
+ assert_in_delta(0, method.wait_time, 0.02 * delta_multiplier)
53
+ assert_in_delta(0, method.self_time, 0.02 * delta_multiplier)
54
+ assert_in_delta(2, method.children_time, 0.05 * delta_multiplier)
55
+
56
+ assert_equal(1, method.call_trees.callees.length)
57
+ call_tree = method.call_trees.callees[0]
58
+ assert_equal('StartStopTest#method2', call_tree.target.full_name)
59
+
60
+ method = methods[1]
61
+ assert_equal('StartStopTest#method2', method.full_name)
62
+ assert_equal(1, method.called)
63
+ assert_in_delta(2, method.total_time, 0.05 * delta_multiplier)
64
+ assert_in_delta(0, method.wait_time, 0.02 * delta_multiplier)
65
+ assert_in_delta(0, method.self_time, 0.02 * delta_multiplier)
66
+ assert_in_delta(2, method.children_time, 0.05 * delta_multiplier)
67
+
68
+ assert_equal(1, method.call_trees.callers.length)
69
+ call_tree = method.call_trees.callers[0]
70
+ assert_equal('StartStopTest#method1', call_tree.parent.target.full_name)
71
+
72
+ assert_equal(1, method.call_trees.callees.length)
73
+ call_tree = method.call_trees.callees[0]
74
+ assert_equal('StartStopTest#method3', call_tree.target.full_name)
75
+
76
+ method = methods[2]
77
+ assert_equal('StartStopTest#method3', method.full_name)
78
+ assert_equal(1, method.called)
79
+ assert_in_delta(2, method.total_time, 0.05 * delta_multiplier)
80
+ assert_in_delta(0, method.wait_time, 0.02 * delta_multiplier)
81
+ assert_in_delta(0, method.self_time, 0.02 * delta_multiplier)
82
+ assert_in_delta(2, method.children_time, 0.05 * delta_multiplier)
83
+
84
+ assert_equal(1, method.call_trees.callers.length)
85
+ call_tree = method.call_trees.callers[0]
86
+ assert_equal('StartStopTest#method2', call_tree.parent.target.full_name)
87
+
88
+ assert_equal(1, method.call_trees.callees.length)
89
+ call_tree = method.call_trees.callees[0]
90
+ assert_equal('Kernel#sleep', call_tree.target.full_name)
91
+
92
+ method = methods[3]
93
+ assert_equal('Kernel#sleep', method.full_name)
94
+ assert_equal(1, method.called)
95
+ assert_in_delta(2, method.total_time, 0.05 * delta_multiplier)
96
+ assert_in_delta(0, method.wait_time, 0.02 * delta_multiplier)
97
+ assert_in_delta(2, method.self_time, 0.05 * delta_multiplier)
98
+ assert_in_delta(0, method.children_time, 0.02 * delta_multiplier)
99
+
100
+ assert_equal(1, method.call_trees.callers.length)
101
+ call_tree = method.call_trees.callers[0]
102
+ assert_equal('StartStopTest#method3', call_tree.parent.target.full_name)
103
+
104
+ assert_equal(0, method.call_trees.callees.length)
105
+ end
106
+ end
data/test/test_helper.rb CHANGED
@@ -16,5 +16,9 @@ ENV["MT_CPU"] = "0" # New versions of minitest
16
16
  ENV["N"] = "0" # Older versions of minitest
17
17
 
18
18
  require 'minitest/autorun'
19
+ Minitest.load_plugins
19
20
  class TestCase < Minitest::Test
21
+ def delta_multiplier
22
+ osx? && ENV["GITHUB_ACTIONS"] ? 6 : 1
23
+ end
20
24
  end
data/test/thread_test.rb CHANGED
@@ -126,11 +126,11 @@ class ThreadTest < TestCase
126
126
  assert(thread_ids.include?(threads[0].object_id))
127
127
  assert(thread_ids.include?(threads[1].object_id))
128
128
 
129
- assert_instance_of(Thread, ObjectSpace._id2ref(thread_ids[0]))
130
- assert(threads.include?(ObjectSpace._id2ref(thread_ids[0])))
131
-
132
- assert_instance_of(Thread, ObjectSpace._id2ref(thread_ids[1]))
133
- assert(threads.include?(ObjectSpace._id2ref(thread_ids[1])))
129
+ thread_ids.each do |id|
130
+ thread = threads.find { |t| t.object_id == id }
131
+ refute_nil(thread)
132
+ assert_instance_of(Thread, thread)
133
+ end
134
134
  end
135
135
 
136
136
  def test_thread_timings
@@ -156,19 +156,19 @@ class ThreadTest < TestCase
156
156
  method = methods[0]
157
157
  assert_equal('ThreadTest#test_thread_timings', method.full_name)
158
158
  assert_equal(1, method.called)
159
- assert_in_delta(1, method.total_time, 0.1)
160
- assert_in_delta(0, method.self_time, 0.05)
161
- assert_in_delta(0, method.wait_time, 0.05)
162
- assert_in_delta(1, method.children_time, 0.1)
159
+ assert_in_delta(1, method.total_time, 0.1 * delta_multiplier)
160
+ assert_in_delta(0, method.self_time, 0.05 * delta_multiplier)
161
+ assert_in_delta(0, method.wait_time, 0.05 * delta_multiplier)
162
+ assert_in_delta(1, method.children_time, 0.1 * delta_multiplier)
163
163
  assert_equal(0, method.call_trees.callers.length)
164
164
 
165
165
  method = methods[1]
166
166
  assert_equal('Kernel#sleep', method.full_name)
167
167
  assert_equal(2, method.called)
168
- assert_in_delta(1, method.total_time, 0.05)
169
- assert_in_delta(1.0, method.self_time, 0.05)
170
- assert_in_delta(0, method.wait_time, 0.05)
171
- assert_in_delta(0, method.children_time, 0.05)
168
+ assert_in_delta(1, method.total_time, 0.05 * delta_multiplier)
169
+ assert_in_delta(1.0, method.self_time, 0.05 * delta_multiplier)
170
+ assert_in_delta(0, method.wait_time, 0.05 * delta_multiplier)
171
+ assert_in_delta(0, method.children_time, 0.05 * delta_multiplier)
172
172
 
173
173
  assert_equal(1, method.call_trees.callers.length)
174
174
  assert_equal(0, method.call_trees.callees.length)
@@ -185,10 +185,10 @@ class ThreadTest < TestCase
185
185
  # cause the parent frame to be created for method #test_thread_timings, which means a +1 when it's popped in the end
186
186
  # xxxx a test that shows it the other way, too (never creates parent frame--if that's even possible)
187
187
  assert_equal(1, method.called)
188
- assert_in_delta(1, method.total_time, 0.05)
189
- assert_in_delta(0, method.self_time, 0.05)
190
- assert_in_delta(0, method.wait_time, 0.05)
191
- assert_in_delta(1, method.children_time, 0.05)
188
+ assert_in_delta(1, method.total_time, 0.05 * delta_multiplier)
189
+ assert_in_delta(0, method.self_time, 0.05 * delta_multiplier)
190
+ assert_in_delta(0, method.wait_time, 0.05 * delta_multiplier)
191
+ assert_in_delta(1, method.children_time, 0.05 * delta_multiplier)
192
192
 
193
193
  assert_equal(0, method.call_trees.callers.length)
194
194
  assert_equal(2, method.call_trees.callees.length)
@@ -196,10 +196,10 @@ class ThreadTest < TestCase
196
196
  method = methods[1]
197
197
  assert_equal('Thread#join', method.full_name)
198
198
  assert_equal(1, method.called)
199
- assert_in_delta(1, method.total_time, 0.05)
200
- assert_in_delta(0, method.self_time, 0.05)
201
- assert_in_delta(1.0, method.wait_time, 0.05)
202
- assert_in_delta(0, method.children_time, 0.05)
199
+ assert_in_delta(1, method.total_time, 0.05 * delta_multiplier)
200
+ assert_in_delta(0, method.self_time, 0.05 * delta_multiplier)
201
+ assert_in_delta(1.0, method.wait_time, 0.05 * delta_multiplier)
202
+ assert_in_delta(0, method.children_time, 0.05 * delta_multiplier)
203
203
 
204
204
  assert_equal(1, method.call_trees.callers.length)
205
205
  assert_equal(0, method.call_trees.callees.length)
@@ -207,10 +207,10 @@ class ThreadTest < TestCase
207
207
  method = methods[2]
208
208
  assert_equal('<Class::Thread>#new', method.full_name)
209
209
  assert_equal(1, method.called)
210
- assert_in_delta(0, method.total_time, 0.05)
211
- assert_in_delta(0, method.self_time, 0.05)
212
- assert_in_delta(0, method.wait_time, 0.05)
213
- assert_in_delta(0, method.children_time, 0.05)
210
+ assert_in_delta(0, method.total_time, 0.05 * delta_multiplier)
211
+ assert_in_delta(0, method.self_time, 0.05 * delta_multiplier)
212
+ assert_in_delta(0, method.wait_time, 0.05 * delta_multiplier)
213
+ assert_in_delta(0, method.children_time, 0.05 * delta_multiplier)
214
214
 
215
215
  assert_equal(1, method.call_trees.callers.length)
216
216
  assert_equal(1, method.call_trees.callees.length)
@@ -218,10 +218,10 @@ class ThreadTest < TestCase
218
218
  method = methods[3]
219
219
  assert_equal('Thread#initialize', method.full_name)
220
220
  assert_equal(1, method.called)
221
- assert_in_delta(0, method.total_time, 0.05)
222
- assert_in_delta(0, method.self_time, 0.05)
223
- assert_in_delta(0, method.wait_time, 0.05)
224
- assert_in_delta(0, method.children_time, 0.05)
221
+ assert_in_delta(0, method.total_time, 0.05 * delta_multiplier)
222
+ assert_in_delta(0, method.self_time, 0.05 * delta_multiplier)
223
+ assert_in_delta(0, method.wait_time, 0.05 * delta_multiplier)
224
+ assert_in_delta(0, method.children_time, 0.05 * delta_multiplier)
225
225
 
226
226
  assert_equal(1, method.call_trees.callers.length)
227
227
  assert_equal(0, method.call_trees.callees.length)