ruby-prof 0.13.1 → 1.4.2

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 (209) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGES +579 -371
  3. data/LICENSE +24 -23
  4. data/README.rdoc +5 -433
  5. data/Rakefile +98 -110
  6. data/bin/ruby-prof +328 -329
  7. data/bin/ruby-prof-check-trace +45 -0
  8. data/ext/ruby_prof/extconf.rb +16 -59
  9. data/ext/ruby_prof/rp_aggregate_call_tree.c +59 -0
  10. data/ext/ruby_prof/rp_aggregate_call_tree.h +13 -0
  11. data/ext/ruby_prof/rp_allocation.c +287 -0
  12. data/ext/ruby_prof/rp_allocation.h +31 -0
  13. data/ext/ruby_prof/rp_call_tree.c +369 -0
  14. data/ext/ruby_prof/rp_call_tree.h +43 -0
  15. data/ext/ruby_prof/rp_call_trees.c +288 -0
  16. data/ext/ruby_prof/rp_call_trees.h +28 -0
  17. data/ext/ruby_prof/rp_measure_allocations.c +50 -65
  18. data/ext/ruby_prof/rp_measure_memory.c +42 -73
  19. data/ext/ruby_prof/rp_measure_process_time.c +65 -71
  20. data/ext/ruby_prof/rp_measure_wall_time.c +64 -42
  21. data/ext/ruby_prof/rp_measurement.c +237 -0
  22. data/ext/ruby_prof/rp_measurement.h +50 -0
  23. data/ext/ruby_prof/rp_method.c +491 -420
  24. data/ext/ruby_prof/rp_method.h +62 -57
  25. data/ext/ruby_prof/rp_profile.c +908 -0
  26. data/ext/ruby_prof/rp_profile.h +35 -0
  27. data/ext/ruby_prof/rp_stack.c +212 -128
  28. data/ext/ruby_prof/rp_stack.h +53 -51
  29. data/ext/ruby_prof/rp_thread.c +362 -268
  30. data/ext/ruby_prof/rp_thread.h +39 -27
  31. data/ext/ruby_prof/ruby_prof.c +52 -695
  32. data/ext/ruby_prof/ruby_prof.h +26 -55
  33. data/ext/ruby_prof/vc/ruby_prof.sln +28 -21
  34. data/ext/ruby_prof/vc/{ruby_prof_20.vcxproj → ruby_prof.vcxproj} +56 -8
  35. data/lib/ruby-prof.rb +52 -67
  36. data/lib/ruby-prof/assets/call_stack_printer.html.erb +710 -0
  37. data/lib/ruby-prof/assets/call_stack_printer.png +0 -0
  38. data/lib/ruby-prof/assets/graph_printer.html.erb +355 -0
  39. data/lib/ruby-prof/call_tree.rb +57 -0
  40. data/lib/ruby-prof/call_tree_visitor.rb +36 -0
  41. data/lib/ruby-prof/compatibility.rb +99 -169
  42. data/lib/ruby-prof/exclude_common_methods.rb +198 -0
  43. data/lib/ruby-prof/measurement.rb +17 -0
  44. data/lib/ruby-prof/method_info.rb +78 -131
  45. data/lib/ruby-prof/printers/abstract_printer.rb +137 -85
  46. data/lib/ruby-prof/printers/call_info_printer.rb +53 -41
  47. data/lib/ruby-prof/printers/call_stack_printer.rb +180 -773
  48. data/lib/ruby-prof/printers/call_tree_printer.rb +151 -92
  49. data/lib/ruby-prof/printers/dot_printer.rb +132 -132
  50. data/lib/ruby-prof/printers/flat_printer.rb +53 -69
  51. data/lib/ruby-prof/printers/graph_html_printer.rb +63 -255
  52. data/lib/ruby-prof/printers/graph_printer.rb +113 -116
  53. data/lib/ruby-prof/printers/multi_printer.rb +127 -56
  54. data/lib/ruby-prof/profile.rb +37 -77
  55. data/lib/ruby-prof/rack.rb +62 -15
  56. data/lib/ruby-prof/task.rb +147 -147
  57. data/lib/ruby-prof/thread.rb +10 -12
  58. data/lib/ruby-prof/version.rb +3 -0
  59. data/lib/unprof.rb +10 -10
  60. data/ruby-prof.gemspec +65 -61
  61. data/test/abstract_printer_test.rb +26 -0
  62. data/test/alias_test.rb +126 -0
  63. data/test/basic_test.rb +43 -128
  64. data/test/call_tree_visitor_test.rb +32 -0
  65. data/test/call_trees_test.rb +66 -0
  66. data/test/duplicate_names_test.rb +32 -32
  67. data/test/dynamic_method_test.rb +53 -74
  68. data/test/enumerable_test.rb +21 -16
  69. data/test/exceptions_test.rb +24 -16
  70. data/test/exclude_methods_test.rb +151 -0
  71. data/test/exclude_threads_test.rb +53 -54
  72. data/test/fiber_test.rb +129 -65
  73. data/test/gc_test.rb +90 -0
  74. data/test/inverse_call_tree_test.rb +175 -0
  75. data/test/line_number_test.rb +158 -71
  76. data/test/marshal_test.rb +113 -0
  77. data/test/measure_allocations.rb +30 -0
  78. data/test/measure_allocations_test.rb +375 -25
  79. data/test/measure_allocations_trace_test.rb +375 -0
  80. data/test/measure_memory_trace_test.rb +1101 -0
  81. data/test/measure_process_time_test.rb +785 -62
  82. data/test/measure_times.rb +56 -0
  83. data/test/measure_wall_time_test.rb +434 -254
  84. data/test/multi_printer_test.rb +71 -82
  85. data/test/no_method_class_test.rb +15 -15
  86. data/test/pause_resume_test.rb +175 -166
  87. data/test/prime.rb +54 -54
  88. data/test/prime_script.rb +6 -0
  89. data/test/printer_call_stack_test.rb +27 -0
  90. data/test/printer_call_tree_test.rb +30 -0
  91. data/test/printer_flat_test.rb +99 -0
  92. data/test/printer_graph_html_test.rb +59 -0
  93. data/test/printer_graph_test.rb +40 -0
  94. data/test/printers_test.rb +141 -257
  95. data/test/printing_recursive_graph_test.rb +81 -0
  96. data/test/profile_test.rb +16 -0
  97. data/test/rack_test.rb +93 -0
  98. data/test/recursive_test.rb +206 -215
  99. data/test/singleton_test.rb +38 -38
  100. data/test/stack_printer_test.rb +64 -78
  101. data/test/start_stop_test.rb +109 -112
  102. data/test/test_helper.rb +13 -115
  103. data/test/thread_test.rb +144 -178
  104. data/test/unique_call_path_test.rb +120 -224
  105. data/test/yarv_test.rb +56 -0
  106. metadata +77 -133
  107. data/doc/LICENSE.html +0 -155
  108. data/doc/README_rdoc.html +0 -648
  109. data/doc/Rack.html +0 -167
  110. data/doc/Rack/RubyProf.html +0 -319
  111. data/doc/RubyProf.html +0 -1000
  112. data/doc/RubyProf/AbstractPrinter.html +0 -580
  113. data/doc/RubyProf/AggregateCallInfo.html +0 -570
  114. data/doc/RubyProf/CallInfo.html +0 -512
  115. data/doc/RubyProf/CallInfoPrinter.html +0 -190
  116. data/doc/RubyProf/CallInfoVisitor.html +0 -332
  117. data/doc/RubyProf/CallStackPrinter.html +0 -1600
  118. data/doc/RubyProf/CallTreePrinter.html +0 -413
  119. data/doc/RubyProf/Cmd.html +0 -669
  120. data/doc/RubyProf/DotPrinter.html +0 -312
  121. data/doc/RubyProf/FlatPrinter.html +0 -229
  122. data/doc/RubyProf/FlatPrinterWithLineNumbers.html +0 -267
  123. data/doc/RubyProf/GraphHtmlPrinter.html +0 -630
  124. data/doc/RubyProf/GraphPrinter.html +0 -209
  125. data/doc/RubyProf/MethodInfo.html +0 -713
  126. data/doc/RubyProf/MultiPrinter.html +0 -407
  127. data/doc/RubyProf/Profile.html +0 -821
  128. data/doc/RubyProf/ProfileTask.html +0 -532
  129. data/doc/RubyProf/Test.html +0 -578
  130. data/doc/RubyProf/Thread.html +0 -262
  131. data/doc/created.rid +0 -32
  132. data/doc/examples/flat_txt.html +0 -191
  133. data/doc/examples/graph_txt.html +0 -305
  134. data/doc/images/add.png +0 -0
  135. data/doc/images/brick.png +0 -0
  136. data/doc/images/brick_link.png +0 -0
  137. data/doc/images/bug.png +0 -0
  138. data/doc/images/bullet_black.png +0 -0
  139. data/doc/images/bullet_toggle_minus.png +0 -0
  140. data/doc/images/bullet_toggle_plus.png +0 -0
  141. data/doc/images/date.png +0 -0
  142. data/doc/images/delete.png +0 -0
  143. data/doc/images/find.png +0 -0
  144. data/doc/images/loadingAnimation.gif +0 -0
  145. data/doc/images/macFFBgHack.png +0 -0
  146. data/doc/images/package.png +0 -0
  147. data/doc/images/page_green.png +0 -0
  148. data/doc/images/page_white_text.png +0 -0
  149. data/doc/images/page_white_width.png +0 -0
  150. data/doc/images/plugin.png +0 -0
  151. data/doc/images/ruby.png +0 -0
  152. data/doc/images/tag_blue.png +0 -0
  153. data/doc/images/tag_green.png +0 -0
  154. data/doc/images/transparent.png +0 -0
  155. data/doc/images/wrench.png +0 -0
  156. data/doc/images/wrench_orange.png +0 -0
  157. data/doc/images/zoom.png +0 -0
  158. data/doc/index.html +0 -647
  159. data/doc/js/darkfish.js +0 -155
  160. data/doc/js/jquery.js +0 -18
  161. data/doc/js/navigation.js +0 -142
  162. data/doc/js/search.js +0 -94
  163. data/doc/js/search_index.js +0 -1
  164. data/doc/js/searcher.js +0 -228
  165. data/doc/rdoc.css +0 -543
  166. data/doc/table_of_contents.html +0 -462
  167. data/examples/empty.png +0 -0
  168. data/examples/flat.txt +0 -55
  169. data/examples/graph.dot +0 -106
  170. data/examples/graph.html +0 -823
  171. data/examples/graph.png +0 -0
  172. data/examples/graph.txt +0 -170
  173. data/examples/minus.png +0 -0
  174. data/examples/multi.flat.txt +0 -23
  175. data/examples/multi.graph.html +0 -906
  176. data/examples/multi.grind.dat +0 -194
  177. data/examples/multi.stack.html +0 -573
  178. data/examples/plus.png +0 -0
  179. data/examples/stack.html +0 -573
  180. data/ext/ruby_prof/rp_call_info.c +0 -407
  181. data/ext/ruby_prof/rp_call_info.h +0 -48
  182. data/ext/ruby_prof/rp_measure.c +0 -48
  183. data/ext/ruby_prof/rp_measure.h +0 -45
  184. data/ext/ruby_prof/rp_measure_cpu_time.c +0 -112
  185. data/ext/ruby_prof/rp_measure_gc_runs.c +0 -65
  186. data/ext/ruby_prof/rp_measure_gc_time.c +0 -57
  187. data/ext/ruby_prof/vc/ruby_prof_18.vcxproj +0 -108
  188. data/ext/ruby_prof/vc/ruby_prof_19.vcxproj +0 -110
  189. data/ext/ruby_prof/version.h +0 -7
  190. data/lib/ruby-prof/aggregate_call_info.rb +0 -72
  191. data/lib/ruby-prof/call_info.rb +0 -89
  192. data/lib/ruby-prof/call_info_visitor.rb +0 -44
  193. data/lib/ruby-prof/images/empty.png +0 -0
  194. data/lib/ruby-prof/images/minus.png +0 -0
  195. data/lib/ruby-prof/images/plus.png +0 -0
  196. data/lib/ruby-prof/printers/flat_printer_with_line_numbers.rb +0 -57
  197. data/lib/ruby-prof/test.rb +0 -150
  198. data/test/aggregate_test.rb +0 -136
  199. data/test/call_info_test.rb +0 -78
  200. data/test/call_info_visitor_test.rb +0 -31
  201. data/test/exec_test.rb +0 -14
  202. data/test/measure_cpu_time_test.rb +0 -220
  203. data/test/measure_gc_runs_test.rb +0 -32
  204. data/test/measure_gc_time_test.rb +0 -36
  205. data/test/measure_memory_test.rb +0 -31
  206. data/test/method_elimination_test.rb +0 -84
  207. data/test/module_test.rb +0 -45
  208. data/test/stack_test.rb +0 -138
  209. data/test/test_suite.rb +0 -37
@@ -1,78 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- require File.expand_path('../test_helper', __FILE__)
5
-
6
- class CallInfoTest < Test::Unit::TestCase
7
- def setup
8
- # Need to use wall time for this test due to the sleep calls
9
- RubyProf::measure_mode = RubyProf::WALL_TIME
10
- end
11
-
12
- # def test_clone
13
- # result = RubyProf.profile do
14
- # RubyProf::C1.hello
15
- # end
16
- #
17
- # method = result.threads.first.top_methods.first
18
- # call_info = method.call_infos.first
19
- # call_info_clone = call_info.clone
20
- #
21
- ## assert_equal(call_info.target, call_info_clone.target)
22
- # assert_equal(call_info.total_time, call_info_clone.total_time)
23
- # end
24
-
25
- def test_merge
26
- result1 = RubyProf.profile do
27
- RubyProf::C1.hello
28
- end
29
-
30
- methods = result1.threads.first.methods.sort.reverse
31
- assert_equal(3, methods.length)
32
-
33
- assert_equal('CallInfoTest#test_merge', methods[0].full_name)
34
- assert_in_delta(0.1, methods[0].total_time, 0.01)
35
- assert_in_delta(0, methods[0].wait_time, 0.01)
36
- assert_in_delta(0, methods[0].self_time, 0.01)
37
- assert_equal(1, methods[0].called)
38
-
39
- assert_equal('<Class::RubyProf::C1>#hello', methods[1].full_name)
40
- assert_in_delta(0.1, methods[1].total_time, 0.01)
41
- assert_in_delta(0, methods[1].wait_time, 0.01)
42
- assert_in_delta(0, methods[1].self_time, 0.01)
43
- assert_equal(1, methods[1].called)
44
-
45
- assert_equal('Kernel#sleep', methods[2].full_name)
46
- assert_in_delta(0.1, methods[2].total_time, 0.01)
47
- assert_in_delta(0, methods[2].wait_time, 0.01)
48
- assert_in_delta(0.1, methods[2].self_time, 0.01)
49
- assert_equal(1, methods[2].called)
50
-
51
- result2 = RubyProf.profile do
52
- RubyProf::C1.hello
53
- end
54
-
55
- # Merge the trees
56
- methods = result1.threads.first.methods.sort.reverse
57
- assert_equal(3, methods.length)
58
-
59
- assert_equal('CallInfoTest#test_merge', methods[0].full_name)
60
- assert_in_delta(0.1, methods[0].total_time, 0.01)
61
- assert_in_delta(0, methods[0].wait_time, 0.01)
62
- assert_in_delta(0, methods[0].self_time, 0.01)
63
- assert_equal(1, methods[0].called)
64
-
65
- assert_equal('<Class::RubyProf::C1>#hello', methods[1].full_name)
66
- assert_in_delta(0.1, methods[1].total_time, 0.01)
67
- assert_in_delta(0, methods[1].wait_time, 0.01)
68
- assert_in_delta(0, methods[1].self_time, 0.01)
69
- assert_equal(1, methods[1].called)
70
-
71
- assert_equal('Kernel#sleep', methods[2].full_name)
72
- assert_in_delta(0.1, methods[2].total_time, 0.01)
73
- assert_in_delta(0, methods[2].wait_time, 0.01)
74
- assert_in_delta(0.1, methods[2].self_time, 0.01)
75
- assert_equal(1, methods[2].called)
76
- end
77
- end
78
-
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- require File.expand_path('../test_helper', __FILE__)
5
-
6
- class CallInfoVisitorTest < Test::Unit::TestCase
7
- def setup
8
- # Need to use wall time for this test due to the sleep calls
9
- RubyProf::measure_mode = RubyProf::WALL_TIME
10
- end
11
-
12
- def test_visit
13
- result = RubyProf.profile do
14
- RubyProf::C1.hello
15
- end
16
-
17
- visitor = RubyProf::CallInfoVisitor.new(result.threads.first)
18
-
19
- method_names = Array.new
20
-
21
- visitor.visit do |call_info, event|
22
- method_names << call_info.target.full_name if event == :enter
23
- end
24
-
25
- assert_equal(3, method_names.length)
26
- assert_equal("CallInfoVisitorTest#test_visit", method_names[0])
27
- assert_equal("<Class::RubyProf::C1>#hello", method_names[1])
28
- assert_equal("Kernel#sleep", method_names[2])
29
- end
30
- end
31
-
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- require File.expand_path('../test_helper', __FILE__)
5
-
6
- # -- Test for bug when it loads with no frames
7
-
8
- class ExecTest < Test::Unit::TestCase
9
- def test_being_able_to_run_its_binary
10
- Dir.chdir(File.dirname(__FILE__)) do
11
- assert system(OS.ruby_bin + " ruby-prof-bin do_nothing.rb")
12
- end
13
- end
14
- end
@@ -1,220 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- require File.expand_path('../test_helper', __FILE__)
5
-
6
- class MeasureCpuTimeTest < Test::Unit::TestCase
7
- def setup
8
- # Need to use wall time for this test due to the sleep calls
9
- RubyProf::measure_mode = RubyProf::CPU_TIME
10
- end
11
-
12
- def test_mode
13
- RubyProf::measure_mode = RubyProf::CPU_TIME
14
- assert_equal(RubyProf::CPU_TIME, RubyProf::measure_mode)
15
- end
16
-
17
- def test_cpu_time_enabled_defined
18
- assert(defined?(RubyProf::CPU_TIME_ENABLED))
19
- end
20
-
21
- def test_class_methods
22
- result = RubyProf.profile do
23
- RubyProf::C1.hello
24
- end
25
-
26
- # Length should be 3:
27
- # MeasureCpuTimeTest#test_class_methods
28
- # <Class::RubyProf::C1>#hello
29
- # Kernel#sleep
30
-
31
- methods = result.threads.first.methods.sort.reverse
32
- assert_equal(3, methods.length)
33
-
34
- # Check the names
35
- assert_equal('MeasureCpuTimeTest#test_class_methods', methods[0].full_name)
36
- assert_equal('<Class::RubyProf::C1>#hello', methods[1].full_name)
37
- assert_equal('Kernel#sleep', methods[2].full_name)
38
-
39
- # Check times
40
- assert_in_delta(0.1, methods[0].total_time, 0.01)
41
- assert_in_delta(0, methods[0].wait_time, 0.01)
42
- assert_in_delta(0, methods[0].self_time, 0.01)
43
-
44
- assert_in_delta(0.1, methods[1].total_time, 0.01)
45
- assert_in_delta(0, methods[1].wait_time, 0.01)
46
- assert_in_delta(0, methods[1].self_time, 0.01)
47
-
48
- assert_in_delta(0.1, methods[2].total_time, 0.01)
49
- assert_in_delta(0, methods[2].wait_time, 0.01)
50
- assert_in_delta(0.1, methods[2].self_time, 0.01)
51
- end
52
-
53
- def test_instance_methods
54
- result = RubyProf.profile do
55
- RubyProf::C1.new.hello
56
- end
57
-
58
- # Methods called
59
- # MeasureCpuTimeTest#test_instance_methods
60
- # Class.new
61
- # Class:Object#allocate
62
- # for Object#initialize
63
- # C1#hello
64
- # Kernel#sleep
65
-
66
- methods = result.threads.first.methods.sort.reverse
67
- assert_equal(RubyProf.ruby_2? ? 5 : 6, methods.length)
68
- names = methods.map(&:full_name)
69
- assert_equal('MeasureCpuTimeTest#test_instance_methods', names[0])
70
- assert_equal('RubyProf::C1#hello', names[1])
71
- assert_equal('Kernel#sleep', names[2])
72
- assert_equal('Class#new', names[3])
73
-
74
- # order can differ
75
- assert(names.include?("#{RubyProf.parent_object}#initialize"))
76
- unless RubyProf.ruby_2?
77
- assert(names.include?("<Class::#{RubyProf.parent_object}>#allocate"))
78
- end
79
-
80
- # Check times
81
- assert_in_delta(0.2, methods[0].total_time, 0.02)
82
- assert_in_delta(0, methods[0].wait_time, 0.02)
83
- assert_in_delta(0, methods[0].self_time, 0.02)
84
-
85
- assert_in_delta(0.2, methods[1].total_time, 0.02)
86
- assert_in_delta(0, methods[1].wait_time, 0.02)
87
- assert_in_delta(0, methods[1].self_time, 0.02)
88
-
89
- assert_in_delta(0.2, methods[2].total_time, 0.02)
90
- assert_in_delta(0, methods[2].wait_time, 0.02)
91
- assert_in_delta(0.2, methods[2].self_time, 0.02)
92
-
93
- assert_in_delta(0, methods[3].total_time, 0.01)
94
- assert_in_delta(0, methods[3].wait_time, 0.01)
95
- assert_in_delta(0, methods[3].self_time, 0.01)
96
-
97
- assert_in_delta(0, methods[4].total_time, 0.01)
98
- assert_in_delta(0, methods[4].wait_time, 0.01)
99
- assert_in_delta(0, methods[4].self_time, 0.01)
100
-
101
- unless RubyProf.ruby_2?
102
- assert_in_delta(0, methods[5].total_time, 0.01)
103
- assert_in_delta(0, methods[5].wait_time, 0.01)
104
- assert_in_delta(0, methods[5].self_time, 0.01)
105
- end
106
- end
107
-
108
- def test_module_methods
109
- result = RubyProf.profile do
110
- RubyProf::C2.hello
111
- end
112
-
113
- # Methods:
114
- # MeasureCpuTimeTest#test_module_methods
115
- # M1#hello
116
- # Kernel#sleep
117
-
118
- methods = result.threads.first.methods.sort.reverse
119
- assert_equal(3, methods.length)
120
-
121
- assert_equal('MeasureCpuTimeTest#test_module_methods', methods[0].full_name)
122
- assert_equal('RubyProf::M1#hello', methods[1].full_name)
123
- assert_equal('Kernel#sleep', methods[2].full_name)
124
-
125
- # Check times
126
- assert_in_delta(0.3, methods[0].total_time, 0.1)
127
- assert_in_delta(0, methods[0].wait_time, 0.02)
128
- assert_in_delta(0, methods[0].self_time, 0.02)
129
-
130
- assert_in_delta(0.3, methods[1].total_time, 0.1)
131
- assert_in_delta(0, methods[1].wait_time, 0.02)
132
- assert_in_delta(0, methods[1].self_time, 0.02)
133
-
134
- assert_in_delta(0.3, methods[2].total_time, 0.1)
135
- assert_in_delta(0, methods[2].wait_time, 0.02)
136
- assert_in_delta(0.3, methods[2].self_time, 0.1)
137
- end
138
-
139
- def test_module_instance_methods
140
- result = RubyProf.profile do
141
- RubyProf::C2.new.hello
142
- end
143
-
144
- # Methods:
145
- # MeasureCpuTimeTest#test_module_instance_methods
146
- # Class#new
147
- # <Class::Object>#allocate
148
- # Object#initialize
149
- # M1#hello
150
- # Kernel#sleep
151
-
152
- methods = result.threads.first.methods.sort.reverse
153
- assert_equal(RubyProf.ruby_2? ? 5 : 6, methods.length)
154
- names = methods.map(&:full_name)
155
- assert_equal('MeasureCpuTimeTest#test_module_instance_methods', names[0])
156
- assert_equal('RubyProf::M1#hello', names[1])
157
- assert_equal('Kernel#sleep', names[2])
158
- assert_equal('Class#new', names[3])
159
-
160
- # order can differ
161
- assert(names.include?("#{RubyProf.parent_object}#initialize"))
162
- unless RubyProf.ruby_2?
163
- assert(names.include?("<Class::#{RubyProf.parent_object}>#allocate"))
164
- end
165
-
166
- # Check times
167
- assert_in_delta(0.3, methods[0].total_time, 0.1)
168
- assert_in_delta(0, methods[0].wait_time, 0.1)
169
- assert_in_delta(0, methods[0].self_time, 0.1)
170
-
171
- assert_in_delta(0.3, methods[1].total_time, 0.02)
172
- assert_in_delta(0, methods[1].wait_time, 0.01)
173
- assert_in_delta(0, methods[1].self_time, 0.01)
174
-
175
- assert_in_delta(0.3, methods[2].total_time, 0.02)
176
- assert_in_delta(0, methods[2].wait_time, 0.01)
177
- assert_in_delta(0.3, methods[2].self_time, 0.02)
178
-
179
- assert_in_delta(0, methods[3].total_time, 0.01)
180
- assert_in_delta(0, methods[3].wait_time, 0.01)
181
- assert_in_delta(0, methods[3].self_time, 0.01)
182
-
183
- assert_in_delta(0, methods[4].total_time, 0.01)
184
- assert_in_delta(0, methods[4].wait_time, 0.01)
185
- assert_in_delta(0, methods[4].self_time, 0.01)
186
-
187
- unless RubyProf.ruby_2?
188
- assert_in_delta(0, methods[5].total_time, 0.01)
189
- assert_in_delta(0, methods[5].wait_time, 0.01)
190
- assert_in_delta(0, methods[5].self_time, 0.01)
191
- end
192
- end
193
-
194
- def test_singleton
195
- c3 = RubyProf::C3.new
196
-
197
- class << c3
198
- def hello
199
- end
200
- end
201
-
202
- result = RubyProf.profile do
203
- c3.hello
204
- end
205
-
206
- methods = result.threads.first.methods.sort.reverse
207
- assert_equal(2, methods.length)
208
-
209
- assert_equal('MeasureCpuTimeTest#test_singleton', methods[0].full_name)
210
- assert_equal('<Object::RubyProf::C3>#hello', methods[1].full_name)
211
-
212
- assert_in_delta(0, methods[0].total_time, 0.01)
213
- assert_in_delta(0, methods[0].wait_time, 0.01)
214
- assert_in_delta(0, methods[0].self_time, 0.01)
215
-
216
- assert_in_delta(0, methods[1].total_time, 0.01)
217
- assert_in_delta(0, methods[1].wait_time, 0.01)
218
- assert_in_delta(0, methods[1].self_time, 0.01)
219
- end
220
- end
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- require File.expand_path('../test_helper', __FILE__)
5
-
6
- class MeasureGCRunsTest < Test::Unit::TestCase
7
- include MemoryTestHelper
8
-
9
- def test_gc_runs_mode
10
- RubyProf::measure_mode = RubyProf::GC_RUNS
11
- assert_equal(RubyProf::GC_RUNS, RubyProf::measure_mode)
12
- end
13
-
14
- def test_gc_runs_enabled_defined
15
- assert(defined?(RubyProf::GC_RUNS_ENABLED))
16
- end
17
-
18
- if RubyProf::GC_RUNS_ENABLED
19
- def test_gc_runs
20
- t = RubyProf.measure_gc_runs
21
- assert_kind_of Integer, t
22
-
23
- GC.enable_stats
24
- GC.start
25
-
26
- u = RubyProf.measure_gc_runs
27
- assert u > t, [t, u].inspect
28
- RubyProf::measure_mode = RubyProf::GC_RUNS
29
- memory_test_helper
30
- end
31
- end
32
- end
@@ -1,36 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- require File.expand_path('../test_helper', __FILE__)
5
-
6
- class MeasureGCTimeTest < Test::Unit::TestCase
7
- include MemoryTestHelper
8
-
9
- def test_gc_time_mode
10
- RubyProf::measure_mode = RubyProf::GC_TIME
11
- assert_equal(RubyProf::GC_TIME, RubyProf::measure_mode)
12
- end
13
-
14
- def test_gc_time_enabled_defined
15
- assert(defined?(RubyProf::GC_TIME_ENABLED))
16
- end
17
-
18
- if RubyProf::GC_TIME_ENABLED
19
- def test_gc_time
20
- RubyProf::measure_mode = RubyProf::GC_TIME
21
- RubyProf.enable_gc_stats_if_needed
22
-
23
- t = RubyProf.measure_gc_time
24
- assert_kind_of Float, t
25
-
26
- GC.start
27
-
28
- u = RubyProf.measure_gc_time
29
- assert u > t, [t, u].inspect
30
-
31
- memory_test_helper
32
- ensure
33
- RubyProf.disable_gc_stats_if_needed
34
- end
35
- end
36
- end
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- require File.expand_path('../test_helper', __FILE__)
5
-
6
- class MeasureMemoryTest < Test::Unit::TestCase
7
- include MemoryTestHelper
8
-
9
- def test_memory_mode
10
- RubyProf::measure_mode = RubyProf::MEMORY
11
- assert_equal(RubyProf::MEMORY, RubyProf::measure_mode)
12
- end
13
-
14
- def test_memory_enabled_defined
15
- assert(defined?(RubyProf::MEMORY_ENABLED))
16
- end
17
-
18
- if RubyProf::MEMORY_ENABLED
19
- def test_memory
20
- t = RubyProf.measure_memory
21
- assert_kind_of Float, t
22
-
23
- u = RubyProf.measure_memory
24
- assert(u > t, [t, u].inspect)
25
- RubyProf::measure_mode = RubyProf::MEMORY
26
- total = memory_test_helper
27
- assert(total > 0, 'Should measure more than zero kilobytes of memory usage')
28
- assert_not_equal(0, total % 1, 'Should not truncate fractional kilobyte measurements')
29
- end
30
- end
31
- end