ruby-prof 0.18.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +23 -0
  3. data/LICENSE +2 -2
  4. data/README.rdoc +1 -483
  5. data/Rakefile +3 -6
  6. data/bin/ruby-prof +65 -30
  7. data/ext/ruby_prof/extconf.rb +6 -38
  8. data/ext/ruby_prof/rp_allocation.c +292 -0
  9. data/ext/ruby_prof/rp_allocation.h +31 -0
  10. data/ext/ruby_prof/rp_call_info.c +137 -279
  11. data/ext/ruby_prof/rp_call_info.h +16 -34
  12. data/ext/ruby_prof/rp_measure_allocations.c +25 -49
  13. data/ext/ruby_prof/rp_measure_memory.c +21 -56
  14. data/ext/ruby_prof/rp_measure_process_time.c +28 -36
  15. data/ext/ruby_prof/rp_measure_wall_time.c +36 -19
  16. data/ext/ruby_prof/rp_measurement.c +236 -0
  17. data/ext/ruby_prof/rp_measurement.h +49 -0
  18. data/ext/ruby_prof/rp_method.c +395 -383
  19. data/ext/ruby_prof/rp_method.h +34 -39
  20. data/ext/ruby_prof/rp_profile.c +881 -0
  21. data/ext/ruby_prof/rp_profile.h +36 -0
  22. data/ext/ruby_prof/rp_stack.c +103 -80
  23. data/ext/ruby_prof/rp_stack.h +5 -12
  24. data/ext/ruby_prof/rp_thread.c +149 -88
  25. data/ext/ruby_prof/rp_thread.h +15 -6
  26. data/ext/ruby_prof/ruby_prof.c +11 -757
  27. data/ext/ruby_prof/ruby_prof.h +4 -47
  28. data/ext/ruby_prof/vc/ruby_prof.vcxproj +10 -8
  29. data/lib/ruby-prof.rb +2 -17
  30. data/lib/ruby-prof/assets/graph_printer.html.erb +356 -0
  31. data/lib/ruby-prof/call_info.rb +35 -93
  32. data/lib/ruby-prof/call_info_visitor.rb +19 -21
  33. data/lib/ruby-prof/compatibility.rb +37 -107
  34. data/lib/ruby-prof/exclude_common_methods.rb +198 -0
  35. data/lib/ruby-prof/measurement.rb +14 -0
  36. data/lib/ruby-prof/method_info.rb +52 -83
  37. data/lib/ruby-prof/printers/abstract_printer.rb +66 -52
  38. data/lib/ruby-prof/printers/call_info_printer.rb +13 -3
  39. data/lib/ruby-prof/printers/call_stack_printer.rb +32 -28
  40. data/lib/ruby-prof/printers/call_tree_printer.rb +20 -12
  41. data/lib/ruby-prof/printers/dot_printer.rb +5 -5
  42. data/lib/ruby-prof/printers/flat_printer.rb +6 -24
  43. data/lib/ruby-prof/printers/graph_html_printer.rb +7 -192
  44. data/lib/ruby-prof/printers/graph_printer.rb +13 -15
  45. data/lib/ruby-prof/printers/multi_printer.rb +66 -23
  46. data/lib/ruby-prof/profile.rb +10 -3
  47. data/lib/ruby-prof/rack.rb +0 -3
  48. data/lib/ruby-prof/thread.rb +12 -12
  49. data/lib/ruby-prof/version.rb +1 -1
  50. data/ruby-prof.gemspec +2 -2
  51. data/test/abstract_printer_test.rb +0 -27
  52. data/test/alias_test.rb +129 -0
  53. data/test/basic_test.rb +41 -40
  54. data/test/call_info_visitor_test.rb +3 -3
  55. data/test/dynamic_method_test.rb +0 -2
  56. data/test/line_number_test.rb +120 -39
  57. data/test/marshal_test.rb +119 -0
  58. data/test/measure_allocations.rb +30 -0
  59. data/test/measure_allocations_test.rb +371 -12
  60. data/test/measure_allocations_trace_test.rb +385 -0
  61. data/test/measure_memory_trace_test.rb +756 -0
  62. data/test/measure_process_time_test.rb +821 -33
  63. data/test/measure_times.rb +54 -0
  64. data/test/measure_wall_time_test.rb +349 -145
  65. data/test/multi_printer_test.rb +1 -34
  66. data/test/parser_timings.rb +24 -0
  67. data/test/pause_resume_test.rb +5 -5
  68. data/test/prime.rb +2 -0
  69. data/test/printer_call_tree_test.rb +31 -0
  70. data/test/printer_flat_test.rb +68 -0
  71. data/test/printer_graph_html_test.rb +60 -0
  72. data/test/printer_graph_test.rb +41 -0
  73. data/test/printers_test.rb +32 -166
  74. data/test/printing_recursive_graph_test.rb +26 -72
  75. data/test/recursive_test.rb +72 -77
  76. data/test/stack_printer_test.rb +2 -15
  77. data/test/start_stop_test.rb +22 -25
  78. data/test/test_helper.rb +5 -248
  79. data/test/thread_test.rb +11 -54
  80. data/test/unique_call_path_test.rb +16 -28
  81. data/test/yarv_test.rb +1 -0
  82. metadata +24 -34
  83. data/examples/flat.txt +0 -50
  84. data/examples/graph.dot +0 -84
  85. data/examples/graph.html +0 -823
  86. data/examples/graph.txt +0 -139
  87. data/examples/multi.flat.txt +0 -23
  88. data/examples/multi.graph.html +0 -760
  89. data/examples/multi.grind.dat +0 -114
  90. data/examples/multi.stack.html +0 -547
  91. data/examples/stack.html +0 -547
  92. data/ext/ruby_prof/rp_measure.c +0 -40
  93. data/ext/ruby_prof/rp_measure.h +0 -45
  94. data/ext/ruby_prof/rp_measure_cpu_time.c +0 -136
  95. data/ext/ruby_prof/rp_measure_gc_runs.c +0 -73
  96. data/ext/ruby_prof/rp_measure_gc_time.c +0 -60
  97. data/lib/ruby-prof/aggregate_call_info.rb +0 -76
  98. data/lib/ruby-prof/printers/flat_printer_with_line_numbers.rb +0 -83
  99. data/lib/ruby-prof/profile/exclude_common_methods.rb +0 -207
  100. data/lib/ruby-prof/profile/legacy_method_elimination.rb +0 -50
  101. data/test/aggregate_test.rb +0 -136
  102. data/test/block_test.rb +0 -74
  103. data/test/call_info_test.rb +0 -78
  104. data/test/fiber_test.rb +0 -79
  105. data/test/issue137_test.rb +0 -63
  106. data/test/measure_cpu_time_test.rb +0 -212
  107. data/test/measure_gc_runs_test.rb +0 -32
  108. data/test/measure_gc_time_test.rb +0 -36
  109. data/test/measure_memory_test.rb +0 -33
  110. data/test/method_elimination_test.rb +0 -84
  111. data/test/module_test.rb +0 -45
  112. data/test/stack_test.rb +0 -138
@@ -0,0 +1,385 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ require File.expand_path('../test_helper', __FILE__)
5
+ require_relative './measure_allocations'
6
+
7
+ class MeasureAllocationsTraceTest < TestCase
8
+ def setup
9
+ RubyProf::measure_mode = RubyProf::ALLOCATIONS
10
+ end
11
+
12
+ def test_allocations_mode
13
+ RubyProf::measure_mode = RubyProf::ALLOCATIONS
14
+ assert_equal(RubyProf::ALLOCATIONS, RubyProf::measure_mode)
15
+ end
16
+
17
+ def test_allocations
18
+ result = RubyProf.profile(:track_allocations => true) do
19
+ allocator = Allocator.new
20
+ allocator.run
21
+ end
22
+
23
+ thread = result.threads.first
24
+ assert_in_delta(20, thread.total_time, 1)
25
+
26
+ root_methods = thread.root_methods
27
+ assert_equal(1, root_methods.count)
28
+ assert_equal("MeasureAllocationsTraceTest#test_allocations", root_methods[0].full_name)
29
+
30
+ methods = result.threads.first.methods.sort.reverse
31
+ assert_equal(13, methods.length)
32
+
33
+ # Method 0
34
+ method = methods[0]
35
+ assert_equal('MeasureAllocationsTraceTest#test_allocations', method.full_name)
36
+ assert_in_delta(20, method.total_time, 1)
37
+ assert_equal(0, method.wait_time)
38
+ assert_equal(0, method.self_time)
39
+ assert_in_delta(20, method.children_time, 1)
40
+
41
+ assert_equal(1, method.callers.length)
42
+ call_info = method.callers[0]
43
+ assert_nil(call_info.parent)
44
+ assert_equal(20, call_info.total_time)
45
+ assert_equal(0, call_info.wait_time)
46
+ assert_equal(0, call_info.self_time)
47
+ assert_equal(20, call_info.children_time)
48
+
49
+ assert_equal(2, method.callees.length)
50
+ call_info = method.callees[0]
51
+ assert_equal('Class#new', call_info.target.full_name)
52
+ assert_equal(1, call_info.total_time)
53
+ assert_equal(0, call_info.wait_time)
54
+ assert_equal(1, call_info.self_time)
55
+ assert_equal(0, call_info.children_time)
56
+
57
+ call_info = method.callees[1]
58
+ assert_equal('Allocator#run', call_info.target.full_name)
59
+ assert_equal(19, call_info.total_time)
60
+ assert_equal(0, call_info.wait_time)
61
+ assert_equal(0, call_info.self_time)
62
+ assert_equal(19, call_info.children_time)
63
+
64
+ # Method 1
65
+ method = methods[1]
66
+ assert_equal('Allocator#run',method.full_name)
67
+ assert_equal(19, method.total_time)
68
+ assert_equal(0, method.wait_time)
69
+ assert_equal(0, method.self_time)
70
+ assert_equal(19, method.children_time)
71
+
72
+ assert_equal(1, method.callers.length)
73
+ call_info = method.callers[0]
74
+ assert_equal('MeasureAllocationsTraceTest#test_allocations', call_info.parent.full_name)
75
+ assert_equal(19, call_info.total_time)
76
+ assert_equal(0, call_info.wait_time)
77
+ assert_equal(0, call_info.self_time)
78
+ assert_equal(19, call_info.children_time)
79
+
80
+ assert_equal(1, method.callees.length)
81
+ call_info = method.callees[0]
82
+ assert_equal('Allocator#internal_run', call_info.target.full_name)
83
+ assert_equal(19, call_info.total_time)
84
+ assert_equal(0, call_info.wait_time)
85
+ assert_equal(0, call_info.self_time)
86
+ assert_equal(19, call_info.children_time)
87
+
88
+ # Method 2
89
+ method = methods[2]
90
+ assert_equal('Allocator#internal_run', method.full_name)
91
+ assert_equal(19, method.total_time)
92
+ assert_equal(0, method.wait_time)
93
+ assert_equal(0, method.self_time)
94
+ assert_equal(19, method.children_time)
95
+
96
+ assert_equal(1, method.callers.length)
97
+ call_info = method.callers[0]
98
+ assert_equal('Allocator#run', call_info.parent.full_name)
99
+ assert_equal(19, call_info.total_time)
100
+ assert_equal(0, call_info.wait_time)
101
+ assert_equal(0, call_info.self_time)
102
+ assert_equal(19, call_info.children_time)
103
+
104
+ assert_equal(3, method.callees.length)
105
+ call_info = method.callees[0]
106
+ assert_equal('Allocator#make_arrays', call_info.target.full_name)
107
+ assert_equal(10, call_info.total_time)
108
+ assert_equal(0, call_info.wait_time)
109
+ assert_equal(0, call_info.self_time)
110
+ assert_equal(10, call_info.children_time)
111
+
112
+ call_info = method.callees[1]
113
+ assert_equal('Allocator#make_hashes', call_info.target.full_name)
114
+ assert_equal(5, call_info.total_time)
115
+ assert_equal(0, call_info.wait_time)
116
+ assert_equal(0, call_info.self_time)
117
+ assert_equal(5, call_info.children_time)
118
+
119
+ call_info = method.callees[2]
120
+ assert_equal('Allocator#make_strings', call_info.target.full_name)
121
+ assert_equal(4, call_info.total_time)
122
+ assert_equal(0, call_info.wait_time)
123
+ assert_equal(1, call_info.self_time)
124
+ assert_equal(3, call_info.children_time)
125
+
126
+ # Method 3
127
+ method = methods[3]
128
+ assert_equal('Class#new', method.full_name)
129
+ assert_equal(18, method.total_time)
130
+ assert_equal(0, method.wait_time)
131
+ assert_equal(17, method.self_time)
132
+ assert_equal(1, method.children_time)
133
+
134
+ assert_equal(4, method.callers.length)
135
+ call_info = method.callers[0]
136
+ assert_equal('MeasureAllocationsTraceTest#test_allocations', call_info.parent.full_name)
137
+ assert_equal(1, call_info.total_time)
138
+ assert_equal(0, call_info.wait_time)
139
+ assert_equal(1, call_info.self_time)
140
+ assert_equal(0, call_info.children_time)
141
+
142
+ call_info = method.callers[1]
143
+ assert_equal('Integer#times', call_info.parent.full_name)
144
+ assert_equal(10, call_info.total_time)
145
+ assert_equal(0, call_info.wait_time)
146
+ assert_equal(10, call_info.self_time)
147
+ assert_equal(0, call_info.children_time)
148
+
149
+ call_info = method.callers[2]
150
+ assert_equal('Allocator#make_hashes', call_info.parent.full_name)
151
+ assert_equal(5, call_info.total_time)
152
+ assert_equal(0, call_info.wait_time)
153
+ assert_equal(5, call_info.self_time)
154
+ assert_equal(0, call_info.children_time)
155
+
156
+ call_info = method.callers[3]
157
+ assert_equal('Allocator#make_strings', call_info.parent.full_name)
158
+ assert_equal(2, call_info.total_time)
159
+ assert_equal(0, call_info.wait_time)
160
+ assert_equal(1, call_info.self_time)
161
+ assert_equal(1, call_info.children_time)
162
+
163
+ assert_equal(4, method.callees.length)
164
+ call_info = method.callees[0]
165
+ assert_equal('BasicObject#initialize', call_info.target.full_name)
166
+ assert_equal(0, call_info.total_time)
167
+ assert_equal(0, call_info.wait_time)
168
+ assert_equal(0, call_info.self_time)
169
+ assert_equal(0, call_info.children_time)
170
+
171
+ call_info = method.callees[1]
172
+ assert_equal('Array#initialize', call_info.target.full_name)
173
+ assert_equal(0, call_info.total_time)
174
+ assert_equal(0, call_info.wait_time)
175
+ assert_equal(0, call_info.self_time)
176
+ assert_equal(0, call_info.children_time)
177
+
178
+ call_info = method.callees[2]
179
+ assert_equal('Hash#initialize', call_info.target.full_name)
180
+ assert_equal(0, call_info.total_time)
181
+ assert_equal(0, call_info.wait_time)
182
+ assert_equal(0, call_info.self_time)
183
+ assert_equal(0, call_info.children_time)
184
+
185
+ call_info = method.callees[3]
186
+ assert_equal('String#initialize', call_info.target.full_name)
187
+ assert_equal(1, call_info.total_time)
188
+ assert_equal(0, call_info.wait_time)
189
+ assert_equal(1, call_info.self_time)
190
+ assert_equal(0, call_info.children_time)
191
+
192
+ # Method 4
193
+ method = methods[4]
194
+ assert_equal('Allocator#make_arrays', method.full_name)
195
+ assert_equal(10, method.total_time)
196
+ assert_equal(0, method.wait_time)
197
+ assert_equal(0, method.self_time)
198
+ assert_equal(10, method.children_time)
199
+
200
+ assert_equal(1, method.callers.length)
201
+ call_info = method.callers[0]
202
+ assert_equal('Allocator#internal_run', call_info.parent.full_name)
203
+ assert_equal(10, call_info.total_time)
204
+ assert_equal(0, call_info.wait_time)
205
+ assert_equal(0, call_info.self_time)
206
+ assert_equal(10, call_info.children_time)
207
+
208
+ assert_equal(1, method.callees.length)
209
+ call_info = method.callees[0]
210
+ assert_equal('Integer#times', call_info.target.full_name)
211
+ assert_equal(10, call_info.total_time)
212
+ assert_equal(0, call_info.wait_time)
213
+ assert_equal(0, call_info.self_time)
214
+ assert_equal(10, call_info.children_time)
215
+
216
+ # Method 5
217
+ method = methods[5]
218
+ assert_equal('Integer#times', method.full_name)
219
+ assert_equal(10, method.total_time)
220
+ assert_equal(0, method.wait_time)
221
+ assert_equal(0, method.self_time)
222
+ assert_equal(10, method.children_time)
223
+
224
+ assert_equal(1, method.callers.length)
225
+ call_info = method.callers[0]
226
+ assert_equal('Allocator#make_arrays', call_info.parent.full_name)
227
+ assert_equal(10, call_info.total_time)
228
+ assert_equal(0, call_info.wait_time)
229
+ assert_equal(0, call_info.self_time)
230
+ assert_equal(10, call_info.children_time)
231
+
232
+ assert_equal(1, method.callees.length)
233
+ call_info = method.callees[0]
234
+ assert_equal('Class#new', call_info.target.full_name)
235
+ assert_equal(10, call_info.total_time)
236
+ assert_equal(0, call_info.wait_time)
237
+ assert_equal(10, call_info.self_time)
238
+ assert_equal(0, call_info.children_time)
239
+
240
+ # Method 6
241
+ method = methods[6]
242
+ assert_equal('Allocator#make_hashes', method.full_name)
243
+ assert_equal(5, method.total_time)
244
+ assert_equal(0, method.wait_time)
245
+ assert_equal(0, method.self_time)
246
+ assert_equal(5, method.children_time)
247
+
248
+ assert_equal(1, method.callers.length)
249
+ call_info = method.callers[0]
250
+ assert_equal('Allocator#internal_run', call_info.parent.full_name)
251
+ assert_equal(5, call_info.total_time)
252
+ assert_equal(0, call_info.wait_time)
253
+ assert_equal(0, call_info.self_time)
254
+ assert_equal(5, call_info.children_time)
255
+
256
+ assert_equal(1, method.callees.length)
257
+ call_info = method.callees[0]
258
+ assert_equal('Class#new', call_info.target.full_name)
259
+ assert_equal(5, call_info.total_time)
260
+ assert_equal(0, call_info.wait_time)
261
+ assert_equal(5, call_info.self_time)
262
+ assert_equal(0, call_info.children_time)
263
+
264
+ # Method 7
265
+ method = methods[7]
266
+ assert_equal('Allocator#make_strings', method.full_name)
267
+ assert_equal(4, method.total_time)
268
+ assert_equal(0, method.wait_time)
269
+ assert_equal(1, method.self_time)
270
+ assert_equal(3, method.children_time)
271
+
272
+ assert_equal(1, method.callers.length)
273
+ call_info = method.callers[0]
274
+ assert_equal('Allocator#internal_run', call_info.parent.full_name)
275
+ assert_equal(4, call_info.total_time)
276
+ assert_equal(0, call_info.wait_time)
277
+ assert_equal(1, call_info.self_time)
278
+ assert_equal(3, call_info.children_time)
279
+
280
+ assert_equal(2, method.callees.length)
281
+ call_info = method.callees[0]
282
+ assert_equal('String#*', call_info.target.full_name)
283
+ assert_equal(1, call_info.total_time)
284
+ assert_equal(0, call_info.wait_time)
285
+ assert_equal(1, call_info.self_time)
286
+ assert_equal(0, call_info.children_time)
287
+
288
+ call_info = method.callees[1]
289
+ assert_equal('Class#new', call_info.target.full_name)
290
+ assert_equal(2, call_info.total_time)
291
+ assert_equal(0, call_info.wait_time)
292
+ assert_equal(1, call_info.self_time)
293
+ assert_equal(1, call_info.children_time)
294
+
295
+ # Method 8
296
+ method = methods[8]
297
+ assert_equal('String#*', method.full_name)
298
+ assert_equal(1, method.total_time)
299
+ assert_equal(0, method.wait_time)
300
+ assert_equal(1, method.self_time)
301
+ assert_equal(0, method.children_time)
302
+
303
+ assert_equal(1, method.callers.length)
304
+ call_info = method.callers[0]
305
+ assert_equal('Allocator#make_strings', call_info.parent.full_name)
306
+ assert_equal(1, call_info.total_time)
307
+ assert_equal(0, call_info.wait_time)
308
+ assert_equal(1, call_info.self_time)
309
+ assert_equal(0, call_info.children_time)
310
+
311
+ assert_equal(0, method.callees.length)
312
+
313
+ # Method 9
314
+ method = methods[9]
315
+ assert_equal('String#initialize', method.full_name)
316
+ assert_equal(1, method.total_time)
317
+ assert_equal(0, method.wait_time)
318
+ assert_equal(1, method.self_time)
319
+ assert_equal(0, method.children_time)
320
+
321
+ assert_equal(1, method.callers.length)
322
+ call_info = method.callers[0]
323
+ assert_equal('Class#new', call_info.parent.full_name)
324
+ assert_equal(1, call_info.total_time)
325
+ assert_equal(0, call_info.wait_time)
326
+ assert_equal(1, call_info.self_time)
327
+ assert_equal(0, call_info.children_time)
328
+
329
+ assert_equal(0, method.callees.length)
330
+
331
+ # Method 10
332
+ method = methods[10]
333
+ assert_equal('BasicObject#initialize', method.full_name)
334
+ assert_equal(0, method.total_time)
335
+ assert_equal(0, method.wait_time)
336
+ assert_equal(0, method.self_time)
337
+ assert_equal(0, method.children_time)
338
+
339
+ assert_equal(1, method.callers.length)
340
+ call_info = method.callers[0]
341
+ assert_equal('Class#new', call_info.parent.full_name)
342
+ assert_equal(0, call_info.total_time)
343
+ assert_equal(0, call_info.wait_time)
344
+ assert_equal(0, call_info.self_time)
345
+ assert_equal(0, call_info.children_time)
346
+
347
+ assert_equal(0, method.callees.length)
348
+
349
+ # Method 11
350
+ method = methods[11]
351
+ assert_equal('Hash#initialize', method.full_name)
352
+ assert_equal(0, method.total_time)
353
+ assert_equal(0, method.wait_time)
354
+ assert_equal(0, method.self_time)
355
+ assert_equal(0, method.children_time)
356
+
357
+ assert_equal(1, method.callers.length)
358
+ call_info = method.callers[0]
359
+ assert_equal('Class#new', call_info.parent.full_name)
360
+ assert_equal(0, call_info.total_time)
361
+ assert_equal(0, call_info.wait_time)
362
+ assert_equal(0, call_info.self_time)
363
+ assert_equal(0, call_info.children_time)
364
+
365
+ assert_equal(0, method.callees.length)
366
+
367
+ # Method 12
368
+ method = methods[12]
369
+ assert_equal('Array#initialize', method.full_name)
370
+ assert_equal(0, method.total_time)
371
+ assert_equal(0, method.wait_time)
372
+ assert_equal(0, method.self_time)
373
+ assert_equal(0, method.children_time)
374
+
375
+ assert_equal(1, method.callers.length)
376
+ call_info = method.callers[0]
377
+ assert_equal('Class#new', call_info.parent.full_name)
378
+ assert_equal(0, call_info.total_time)
379
+ assert_equal(0, call_info.wait_time)
380
+ assert_equal(0, call_info.self_time)
381
+ assert_equal(0, call_info.children_time)
382
+
383
+ assert_equal(0, method.callees.length)
384
+ end
385
+ end
@@ -0,0 +1,756 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ require File.expand_path('../test_helper', __FILE__)
5
+ require_relative './measure_allocations'
6
+
7
+ class MeasureMemoryTraceTest < TestCase
8
+ def setup
9
+ RubyProf::measure_mode = RubyProf::MEMORY
10
+ end
11
+
12
+ def test_memory_mode
13
+ RubyProf::measure_mode = RubyProf::MEMORY
14
+ assert_equal(RubyProf::MEMORY, RubyProf::measure_mode)
15
+ end
16
+
17
+ if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.6')
18
+ def test_memory
19
+ result = RubyProf.profile do
20
+ allocator = Allocator.new
21
+ allocator.run
22
+ end
23
+
24
+ thread = result.threads.first
25
+ assert_in_delta(800, thread.total_time, 1)
26
+
27
+ root_methods = thread.root_methods
28
+ assert_equal(1, root_methods.count)
29
+ assert_equal("MeasureMemoryTraceTest#test_memory", root_methods[0].full_name)
30
+
31
+ methods = result.threads.first.methods.sort.reverse
32
+ assert_equal(13, methods.length)
33
+
34
+ # Method 0
35
+ method = methods[0]
36
+ assert_equal('MeasureMemoryTraceTest#test_memory', method.full_name)
37
+ assert_in_delta(800, method.total_time, 1)
38
+ assert_equal(0.0, method.wait_time)
39
+ assert_equal(0.0, method.self_time)
40
+ assert_in_delta(800, method.children_time, 1)
41
+
42
+ assert_equal(1, method.callers.length)
43
+ call_info = method.callers[0]
44
+ assert_nil(call_info.parent)
45
+ assert_equal(800, call_info.total_time)
46
+ assert_equal(0.0, call_info.wait_time)
47
+ assert_equal(0.0, call_info.self_time)
48
+ assert_equal(800, call_info.children_time)
49
+
50
+ assert_equal(2, method.callees.length)
51
+ call_info = method.callees[0]
52
+ assert_equal('Class#new', call_info.target.full_name)
53
+ assert_equal(40.0, call_info.total_time)
54
+ assert_equal(0.0, call_info.wait_time)
55
+ assert_equal(40.0, call_info.self_time)
56
+ assert_equal(0.0, call_info.children_time)
57
+
58
+ call_info = method.callees[1]
59
+ assert_equal('Allocator#run', call_info.target.full_name)
60
+ assert_equal(760.0, call_info.total_time)
61
+ assert_equal(0.0, call_info.wait_time)
62
+ assert_equal(0.0, call_info.self_time)
63
+ assert_equal(760.0, call_info.children_time)
64
+
65
+ # Method 1
66
+ method = methods[1]
67
+ assert_equal('Allocator#run',method.full_name)
68
+ assert_equal(760.0, method.total_time)
69
+ assert_equal(0.0, method.wait_time)
70
+ assert_equal(0.0, method.self_time)
71
+ assert_equal(760.0, method.children_time)
72
+
73
+ assert_equal(1, method.callers.length)
74
+ call_info = method.callers[0]
75
+ assert_equal('MeasureMemoryTraceTest#test_memory', call_info.parent.full_name)
76
+ assert_equal(760.0, call_info.total_time)
77
+ assert_equal(0.0, call_info.wait_time)
78
+ assert_equal(0.0, call_info.self_time)
79
+ assert_equal(760.0, call_info.children_time)
80
+
81
+ assert_equal(1, method.callees.length)
82
+ call_info = method.callees[0]
83
+ assert_equal('Allocator#internal_run', call_info.target.full_name)
84
+ assert_equal(760.0, call_info.total_time)
85
+ assert_equal(0.0, call_info.wait_time)
86
+ assert_equal(0.0, call_info.self_time)
87
+ assert_equal(760.0, call_info.children_time)
88
+
89
+ # Method 2
90
+ method = methods[2]
91
+ assert_equal('Allocator#internal_run', method.full_name)
92
+ assert_equal(760.0, method.total_time)
93
+ assert_equal(0.0, method.wait_time)
94
+ assert_equal(0.0, method.self_time)
95
+ assert_equal(760.0, method.children_time)
96
+
97
+ assert_equal(1, method.callers.length)
98
+ call_info = method.callers[0]
99
+ assert_equal('Allocator#run', call_info.parent.full_name)
100
+ assert_equal(760.0, call_info.total_time)
101
+ assert_equal(0.0, call_info.wait_time)
102
+ assert_equal(0.0, call_info.self_time)
103
+ assert_equal(760.0, call_info.children_time)
104
+
105
+ assert_equal(3, method.callees.length)
106
+ call_info = method.callees[0]
107
+ assert_equal('Allocator#make_arrays', call_info.target.full_name)
108
+ assert_equal(400.0, call_info.total_time)
109
+ assert_equal(0.0, call_info.wait_time)
110
+ assert_equal(0.0, call_info.self_time)
111
+ assert_equal(400.0, call_info.children_time)
112
+
113
+ call_info = method.callees[1]
114
+ assert_equal('Allocator#make_hashes', call_info.target.full_name)
115
+ assert_equal(200.0, call_info.total_time)
116
+ assert_equal(0.0, call_info.wait_time)
117
+ assert_equal(0.0, call_info.self_time)
118
+ assert_equal(200.0, call_info.children_time)
119
+
120
+ call_info = method.callees[2]
121
+ assert_equal('Allocator#make_strings', call_info.target.full_name)
122
+ assert_equal(160.0, call_info.total_time)
123
+ assert_equal(0.0, call_info.wait_time)
124
+ assert_equal(40, call_info.self_time)
125
+ assert_equal(120.0, call_info.children_time)
126
+
127
+ # Method 3
128
+ method = methods[3]
129
+ assert_equal('Class#new', method.full_name)
130
+ assert_equal(720.0, method.total_time)
131
+ assert_equal(0.0, method.wait_time)
132
+ assert_equal(680.0, method.self_time)
133
+ assert_equal(40.0, method.children_time)
134
+
135
+ assert_equal(4, method.callers.length)
136
+ call_info = method.callers[0]
137
+ assert_equal('MeasureMemoryTraceTest#test_memory', call_info.parent.full_name)
138
+ assert_equal(40.0, call_info.total_time)
139
+ assert_equal(0.0, call_info.wait_time)
140
+ assert_equal(40.0, call_info.self_time)
141
+ assert_equal(0.0, call_info.children_time)
142
+
143
+ call_info = method.callers[1]
144
+ assert_equal('Integer#times', call_info.parent.full_name)
145
+ assert_equal(400.0, call_info.total_time)
146
+ assert_equal(0.0, call_info.wait_time)
147
+ assert_equal(400.0, call_info.self_time)
148
+ assert_equal(0.0, call_info.children_time)
149
+
150
+ call_info = method.callers[2]
151
+ assert_equal('Allocator#make_hashes', call_info.parent.full_name)
152
+ assert_equal(200.0, call_info.total_time)
153
+ assert_equal(0.0, call_info.wait_time)
154
+ assert_equal(200.0, call_info.self_time)
155
+ assert_equal(0.0, call_info.children_time)
156
+
157
+ call_info = method.callers[3]
158
+ assert_equal('Allocator#make_strings', call_info.parent.full_name)
159
+ assert_equal(80.0, call_info.total_time)
160
+ assert_equal(0.0, call_info.wait_time)
161
+ assert_equal(40.0, call_info.self_time)
162
+ assert_equal(40.0, call_info.children_time)
163
+
164
+ assert_equal(4, method.callees.length)
165
+ call_info = method.callees[0]
166
+ assert_equal('BasicObject#initialize', call_info.target.full_name)
167
+ assert_equal(0.0, call_info.total_time)
168
+ assert_equal(0.0, call_info.wait_time)
169
+ assert_equal(0.0, call_info.self_time)
170
+ assert_equal(0.0, call_info.children_time)
171
+
172
+ call_info = method.callees[1]
173
+ assert_equal('Array#initialize', call_info.target.full_name)
174
+ assert_equal(0.0, call_info.total_time)
175
+ assert_equal(0.0, call_info.wait_time)
176
+ assert_equal(0.0, call_info.self_time)
177
+ assert_equal(0.0, call_info.children_time)
178
+
179
+ call_info = method.callees[2]
180
+ assert_equal('Hash#initialize', call_info.target.full_name)
181
+ assert_equal(0.0, call_info.total_time)
182
+ assert_equal(0.0, call_info.wait_time)
183
+ assert_equal(0.0, call_info.self_time)
184
+ assert_equal(0.0, call_info.children_time)
185
+
186
+ call_info = method.callees[3]
187
+ assert_equal('String#initialize', call_info.target.full_name)
188
+ assert_equal(40.0, call_info.total_time)
189
+ assert_equal(0.0, call_info.wait_time)
190
+ assert_equal(40.0, call_info.self_time)
191
+ assert_equal(0.0, call_info.children_time)
192
+
193
+ # Method 4
194
+ method = methods[4]
195
+ assert_equal('Allocator#make_arrays', method.full_name)
196
+ assert_equal(400.0, method.total_time)
197
+ assert_equal(0.0, method.wait_time)
198
+ assert_equal(0.0, method.self_time)
199
+ assert_equal(400.0, method.children_time)
200
+
201
+ assert_equal(1, method.callers.length)
202
+ call_info = method.callers[0]
203
+ assert_equal('Allocator#internal_run', call_info.parent.full_name)
204
+ assert_equal(400.0, call_info.total_time)
205
+ assert_equal(0.0, call_info.wait_time)
206
+ assert_equal(0.0, call_info.self_time)
207
+ assert_equal(400.0, call_info.children_time)
208
+
209
+ assert_equal(1, method.callees.length)
210
+ call_info = method.callees[0]
211
+ assert_equal('Integer#times', call_info.target.full_name)
212
+ assert_equal(400.0, call_info.total_time)
213
+ assert_equal(0.0, call_info.wait_time)
214
+ assert_equal(0.0, call_info.self_time)
215
+ assert_equal(400.0, call_info.children_time)
216
+
217
+ # Method 5
218
+ method = methods[5]
219
+ assert_equal('Integer#times', method.full_name)
220
+ assert_equal(400.0, method.total_time)
221
+ assert_equal(0.0, method.wait_time)
222
+ assert_equal(0.0, method.self_time)
223
+ assert_equal(400.0, method.children_time)
224
+
225
+ assert_equal(1, method.callers.length)
226
+ call_info = method.callers[0]
227
+ assert_equal('Allocator#make_arrays', call_info.parent.full_name)
228
+ assert_equal(400.0, call_info.total_time)
229
+ assert_equal(0.0, call_info.wait_time)
230
+ assert_equal(0.0, call_info.self_time)
231
+ assert_equal(400.0, call_info.children_time)
232
+
233
+ assert_equal(1, method.callees.length)
234
+ call_info = method.callees[0]
235
+ assert_equal('Class#new', call_info.target.full_name)
236
+ assert_equal(400.0, call_info.total_time)
237
+ assert_equal(0.0, call_info.wait_time)
238
+ assert_equal(400.0, call_info.self_time)
239
+ assert_equal(0.0, call_info.children_time)
240
+
241
+ # Method 6
242
+ method = methods[6]
243
+ assert_equal('Allocator#make_hashes', method.full_name)
244
+ assert_equal(200.0, method.total_time)
245
+ assert_equal(0.0, method.wait_time)
246
+ assert_equal(0.0, method.self_time)
247
+ assert_equal(200.0, method.children_time)
248
+
249
+ assert_equal(1, method.callers.length)
250
+ call_info = method.callers[0]
251
+ assert_equal('Allocator#internal_run', call_info.parent.full_name)
252
+ assert_equal(200.0, call_info.total_time)
253
+ assert_equal(0.0, call_info.wait_time)
254
+ assert_equal(0.0, call_info.self_time)
255
+ assert_equal(200.0, call_info.children_time)
256
+
257
+ assert_equal(1, method.callees.length)
258
+ call_info = method.callees[0]
259
+ assert_equal('Class#new', call_info.target.full_name)
260
+ assert_equal(200.0, call_info.total_time)
261
+ assert_equal(0.0, call_info.wait_time)
262
+ assert_equal(200.0, call_info.self_time)
263
+ assert_equal(0.0, call_info.children_time)
264
+
265
+ # Method 7
266
+ method = methods[7]
267
+ assert_equal('Allocator#make_strings', method.full_name)
268
+ assert_equal(160.0, method.total_time)
269
+ assert_equal(0.0, method.wait_time)
270
+ assert_equal(40.0, method.self_time)
271
+ assert_equal(120.0, method.children_time)
272
+
273
+ assert_equal(1, method.callers.length)
274
+ call_info = method.callers[0]
275
+ assert_equal('Allocator#internal_run', call_info.parent.full_name)
276
+ assert_equal(160.0, call_info.total_time)
277
+ assert_equal(0.0, call_info.wait_time)
278
+ assert_equal(40.0, call_info.self_time)
279
+ assert_equal(120.0, call_info.children_time)
280
+
281
+ assert_equal(2, method.callees.length)
282
+ call_info = method.callees[0]
283
+ assert_equal('String#*', call_info.target.full_name)
284
+ assert_equal(40.0, call_info.total_time)
285
+ assert_equal(0.0, call_info.wait_time)
286
+ assert_equal(40.0, call_info.self_time)
287
+ assert_equal(0.0, call_info.children_time)
288
+
289
+ call_info = method.callees[1]
290
+ assert_equal('Class#new', call_info.target.full_name)
291
+ assert_equal(80.0, call_info.total_time)
292
+ assert_equal(0.0, call_info.wait_time)
293
+ assert_equal(40.0, call_info.self_time)
294
+ assert_equal(40.0, call_info.children_time)
295
+
296
+ # Method 8
297
+ method = methods[8]
298
+ assert_equal('String#*', method.full_name)
299
+ assert_equal(40.0, method.total_time)
300
+ assert_equal(0.0, method.wait_time)
301
+ assert_equal(40.0, method.self_time)
302
+ assert_equal(0.0, method.children_time)
303
+
304
+ assert_equal(1, method.callers.length)
305
+ call_info = method.callers[0]
306
+ assert_equal('Allocator#make_strings', call_info.parent.full_name)
307
+ assert_equal(40.0, call_info.total_time)
308
+ assert_equal(0.0, call_info.wait_time)
309
+ assert_equal(40.0, call_info.self_time)
310
+ assert_equal(0.0, call_info.children_time)
311
+
312
+ assert_equal(0.0, method.callees.length)
313
+
314
+ # Method 9
315
+ method = methods[9]
316
+ assert_equal('String#initialize', method.full_name)
317
+ assert_equal(40.0, method.total_time)
318
+ assert_equal(0.0, method.wait_time)
319
+ assert_equal(40.0, method.self_time)
320
+ assert_equal(0.0, method.children_time)
321
+
322
+ assert_equal(1, method.callers.length)
323
+ call_info = method.callers[0]
324
+ assert_equal('Class#new', call_info.parent.full_name)
325
+ assert_equal(40.0, call_info.total_time)
326
+ assert_equal(0.0, call_info.wait_time)
327
+ assert_equal(40.0, call_info.self_time)
328
+ assert_equal(0.0, call_info.children_time)
329
+
330
+ assert_equal(0.0, method.callees.length)
331
+
332
+ # Method 10
333
+ method = methods[10]
334
+ assert_equal('BasicObject#initialize', method.full_name)
335
+ assert_equal(0.0, method.total_time)
336
+ assert_equal(0.0, method.wait_time)
337
+ assert_equal(0.0, method.self_time)
338
+ assert_equal(0.0, method.children_time)
339
+
340
+ assert_equal(1, method.callers.length)
341
+ call_info = method.callers[0]
342
+ assert_equal('Class#new', call_info.parent.full_name)
343
+ assert_equal(0.0, call_info.total_time)
344
+ assert_equal(0.0, call_info.wait_time)
345
+ assert_equal(0.0, call_info.self_time)
346
+ assert_equal(0.0, call_info.children_time)
347
+
348
+ assert_equal(0.0, method.callees.length)
349
+
350
+ # Method 11
351
+ method = methods[11]
352
+ assert_equal('Hash#initialize', method.full_name)
353
+ assert_equal(0.0, method.total_time)
354
+ assert_equal(0.0, method.wait_time)
355
+ assert_equal(0.0, method.self_time)
356
+ assert_equal(0.0, method.children_time)
357
+
358
+ assert_equal(1, method.callers.length)
359
+ call_info = method.callers[0]
360
+ assert_equal('Class#new', call_info.parent.full_name)
361
+ assert_equal(0.0, call_info.total_time)
362
+ assert_equal(0.0, call_info.wait_time)
363
+ assert_equal(0.0, call_info.self_time)
364
+ assert_equal(0.0, call_info.children_time)
365
+
366
+ assert_equal(0.0, method.callees.length)
367
+
368
+ # Method 12
369
+ method = methods[12]
370
+ assert_equal('Array#initialize', method.full_name)
371
+ assert_equal(0.0, method.total_time)
372
+ assert_equal(0.0, method.wait_time)
373
+ assert_equal(0.0, method.self_time)
374
+ assert_equal(0.0, method.children_time)
375
+
376
+ assert_equal(1, method.callers.length)
377
+ call_info = method.callers[0]
378
+ assert_equal('Class#new', call_info.parent.full_name)
379
+ assert_equal(0.0, call_info.total_time)
380
+ assert_equal(0.0, call_info.wait_time)
381
+ assert_equal(0.0, call_info.self_time)
382
+ assert_equal(0.0, call_info.children_time)
383
+
384
+ assert_equal(0.0, method.callees.length)
385
+ end
386
+ else
387
+ def test_memory
388
+ result = RubyProf.profile do
389
+ allocator = Allocator.new
390
+ allocator.run
391
+ end
392
+
393
+ thread = result.threads.first
394
+ assert_in_delta(1760, thread.total_time, 1)
395
+
396
+ root_methods = thread.root_methods
397
+ assert_equal(1, root_methods.count)
398
+ assert_equal("MeasureMemoryTraceTest#test_memory", root_methods[0].full_name)
399
+
400
+ methods = result.threads.first.methods.sort.reverse
401
+ assert_equal(13, methods.length)
402
+
403
+ # Method 0
404
+ method = methods[0]
405
+ assert_equal('MeasureMemoryTraceTest#test_memory', method.full_name)
406
+ assert_in_delta(1760, method.total_time, 1)
407
+ assert_equal(0.0, method.wait_time)
408
+ assert_equal(0.0, method.self_time)
409
+ assert_in_delta(1760, method.children_time, 1)
410
+
411
+ assert_equal(1, method.callers.length)
412
+ call_info = method.callers[0]
413
+ assert_nil(call_info.parent)
414
+ assert_equal(1760, call_info.total_time)
415
+ assert_equal(0.0, call_info.wait_time)
416
+ assert_equal(0.0, call_info.self_time)
417
+ assert_equal(1760, call_info.children_time)
418
+
419
+ assert_equal(2, method.callees.length)
420
+ call_info = method.callees[0]
421
+ assert_equal('Class#new', call_info.target.full_name)
422
+ assert_equal(40.0, call_info.total_time)
423
+ assert_equal(0.0, call_info.wait_time)
424
+ assert_equal(40.0, call_info.self_time)
425
+ assert_equal(0.0, call_info.children_time)
426
+
427
+ call_info = method.callees[1]
428
+ assert_equal('Allocator#run', call_info.target.full_name)
429
+ assert_equal(1720.0, call_info.total_time)
430
+ assert_equal(0.0, call_info.wait_time)
431
+ assert_equal(0.0, call_info.self_time)
432
+ assert_equal(1720.0, call_info.children_time)
433
+
434
+ # Method 1
435
+ method = methods[1]
436
+ assert_equal('Allocator#run',method.full_name)
437
+ assert_equal(1720.0, method.total_time)
438
+ assert_equal(0.0, method.wait_time)
439
+ assert_equal(0.0, method.self_time)
440
+ assert_equal(1720.0, method.children_time)
441
+
442
+ assert_equal(1, method.callers.length)
443
+ call_info = method.callers[0]
444
+ assert_equal('MeasureMemoryTraceTest#test_memory', call_info.parent.full_name)
445
+ assert_equal(1720.0, call_info.total_time)
446
+ assert_equal(0.0, call_info.wait_time)
447
+ assert_equal(0.0, call_info.self_time)
448
+ assert_equal(1720.0, call_info.children_time)
449
+
450
+ assert_equal(1, method.callees.length)
451
+ call_info = method.callees[0]
452
+ assert_equal('Allocator#internal_run', call_info.target.full_name)
453
+ assert_equal(1720.0, call_info.total_time)
454
+ assert_equal(0.0, call_info.wait_time)
455
+ assert_equal(0.0, call_info.self_time)
456
+ assert_equal(1720.0, call_info.children_time)
457
+
458
+ # Method 2
459
+ method = methods[2]
460
+ assert_equal('Allocator#internal_run', method.full_name)
461
+ assert_equal(1720.0, method.total_time)
462
+ assert_equal(0.0, method.wait_time)
463
+ assert_equal(0.0, method.self_time)
464
+ assert_equal(1720.0, method.children_time)
465
+
466
+ assert_equal(1, method.callers.length)
467
+ call_info = method.callers[0]
468
+ assert_equal('Allocator#run', call_info.parent.full_name)
469
+ assert_equal(1720.0, call_info.total_time)
470
+ assert_equal(0.0, call_info.wait_time)
471
+ assert_equal(0.0, call_info.self_time)
472
+ assert_equal(1720.0, call_info.children_time)
473
+
474
+ assert_equal(3, method.callees.length)
475
+ call_info = method.callees[0]
476
+ assert_equal('Allocator#make_arrays', call_info.target.full_name)
477
+ assert_equal(400.0, call_info.total_time)
478
+ assert_equal(0.0, call_info.wait_time)
479
+ assert_equal(0.0, call_info.self_time)
480
+ assert_equal(400.0, call_info.children_time)
481
+
482
+ call_info = method.callees[1]
483
+ assert_equal('Allocator#make_hashes', call_info.target.full_name)
484
+ assert_equal(1160.0, call_info.total_time)
485
+ assert_equal(0.0, call_info.wait_time)
486
+ assert_equal(0.0, call_info.self_time)
487
+ assert_equal(1160.0, call_info.children_time)
488
+
489
+ call_info = method.callees[2]
490
+ assert_equal('Allocator#make_strings', call_info.target.full_name)
491
+ assert_equal(160.0, call_info.total_time)
492
+ assert_equal(0.0, call_info.wait_time)
493
+ assert_equal(40, call_info.self_time)
494
+ assert_equal(120.0, call_info.children_time)
495
+
496
+ # Method 3
497
+ method = methods[3]
498
+ assert_equal('Class#new', method.full_name)
499
+ assert_equal(1680.0, method.total_time)
500
+ assert_equal(0.0, method.wait_time)
501
+ assert_equal(1640.0, method.self_time)
502
+ assert_equal(40.0, method.children_time)
503
+
504
+ assert_equal(4, method.callers.length)
505
+ call_info = method.callers[0]
506
+ assert_equal('MeasureMemoryTraceTest#test_memory', call_info.parent.full_name)
507
+ assert_equal(40.0, call_info.total_time)
508
+ assert_equal(0.0, call_info.wait_time)
509
+ assert_equal(40.0, call_info.self_time)
510
+ assert_equal(0.0, call_info.children_time)
511
+
512
+ call_info = method.callers[1]
513
+ assert_equal('Integer#times', call_info.parent.full_name)
514
+ assert_equal(400.0, call_info.total_time)
515
+ assert_equal(0.0, call_info.wait_time)
516
+ assert_equal(400.0, call_info.self_time)
517
+ assert_equal(0.0, call_info.children_time)
518
+
519
+ call_info = method.callers[2]
520
+ assert_equal('Allocator#make_hashes', call_info.parent.full_name)
521
+ assert_equal(1160.0, call_info.total_time)
522
+ assert_equal(0.0, call_info.wait_time)
523
+ assert_equal(1160.0, call_info.self_time)
524
+ assert_equal(0.0, call_info.children_time)
525
+
526
+ call_info = method.callers[3]
527
+ assert_equal('Allocator#make_strings', call_info.parent.full_name)
528
+ assert_equal(80.0, call_info.total_time)
529
+ assert_equal(0.0, call_info.wait_time)
530
+ assert_equal(40.0, call_info.self_time)
531
+ assert_equal(40.0, call_info.children_time)
532
+
533
+ assert_equal(4, method.callees.length)
534
+ call_info = method.callees[0]
535
+ assert_equal('BasicObject#initialize', call_info.target.full_name)
536
+ assert_equal(0.0, call_info.total_time)
537
+ assert_equal(0.0, call_info.wait_time)
538
+ assert_equal(0.0, call_info.self_time)
539
+ assert_equal(0.0, call_info.children_time)
540
+
541
+ call_info = method.callees[1]
542
+ assert_equal('Array#initialize', call_info.target.full_name)
543
+ assert_equal(0.0, call_info.total_time)
544
+ assert_equal(0.0, call_info.wait_time)
545
+ assert_equal(0.0, call_info.self_time)
546
+ assert_equal(0.0, call_info.children_time)
547
+
548
+ call_info = method.callees[2]
549
+ assert_equal('Hash#initialize', call_info.target.full_name)
550
+ assert_equal(0.0, call_info.total_time)
551
+ assert_equal(0.0, call_info.wait_time)
552
+ assert_equal(0.0, call_info.self_time)
553
+ assert_equal(0.0, call_info.children_time)
554
+
555
+ call_info = method.callees[3]
556
+ assert_equal('String#initialize', call_info.target.full_name)
557
+ assert_equal(40.0, call_info.total_time)
558
+ assert_equal(0.0, call_info.wait_time)
559
+ assert_equal(40.0, call_info.self_time)
560
+ assert_equal(0.0, call_info.children_time)
561
+
562
+ # Method 4
563
+ method = methods[4]
564
+ assert_equal('Allocator#make_hashes', method.full_name)
565
+ assert_equal(1160.0, method.total_time)
566
+ assert_equal(0.0, method.wait_time)
567
+ assert_equal(0.0, method.self_time)
568
+ assert_equal(1160.0, method.children_time)
569
+
570
+ assert_equal(1, method.callers.length)
571
+ call_info = method.callers[0]
572
+ assert_equal('Allocator#internal_run', call_info.parent.full_name)
573
+ assert_equal(1160.0, call_info.total_time)
574
+ assert_equal(0.0, call_info.wait_time)
575
+ assert_equal(0.0, call_info.self_time)
576
+ assert_equal(1160.0, call_info.children_time)
577
+
578
+ assert_equal(1, method.callees.length)
579
+ call_info = method.callees[0]
580
+ assert_equal('Class#new', call_info.target.full_name)
581
+ assert_equal(1160.0, call_info.total_time)
582
+ assert_equal(0.0, call_info.wait_time)
583
+ assert_equal(1160.0, call_info.self_time)
584
+ assert_equal(0.0, call_info.children_time)
585
+
586
+ # Method 5
587
+ method = methods[5]
588
+ assert_equal('Allocator#make_arrays', method.full_name)
589
+ assert_equal(400.0, method.total_time)
590
+ assert_equal(0.0, method.wait_time)
591
+ assert_equal(0.0, method.self_time)
592
+ assert_equal(400.0, method.children_time)
593
+
594
+ assert_equal(1, method.callers.length)
595
+ call_info = method.callers[0]
596
+ assert_equal('Allocator#internal_run', call_info.parent.full_name)
597
+ assert_equal(400.0, call_info.total_time)
598
+ assert_equal(0.0, call_info.wait_time)
599
+ assert_equal(0.0, call_info.self_time)
600
+ assert_equal(400.0, call_info.children_time)
601
+
602
+ assert_equal(1, method.callees.length)
603
+ call_info = method.callees[0]
604
+ assert_equal('Integer#times', call_info.target.full_name)
605
+ assert_equal(400.0, call_info.total_time)
606
+ assert_equal(0.0, call_info.wait_time)
607
+ assert_equal(0.0, call_info.self_time)
608
+ assert_equal(400.0, call_info.children_time)
609
+
610
+ # Method 6
611
+ method = methods[6]
612
+ assert_equal('Integer#times', method.full_name)
613
+ assert_equal(400.0, method.total_time)
614
+ assert_equal(0.0, method.wait_time)
615
+ assert_equal(0.0, method.self_time)
616
+ assert_equal(400.0, method.children_time)
617
+
618
+ assert_equal(1, method.callers.length)
619
+ call_info = method.callers[0]
620
+ assert_equal('Allocator#make_arrays', call_info.parent.full_name)
621
+ assert_equal(400.0, call_info.total_time)
622
+ assert_equal(0.0, call_info.wait_time)
623
+ assert_equal(0.0, call_info.self_time)
624
+ assert_equal(400.0, call_info.children_time)
625
+
626
+ assert_equal(1, method.callees.length)
627
+ call_info = method.callees[0]
628
+ assert_equal('Class#new', call_info.target.full_name)
629
+ assert_equal(400.0, call_info.total_time)
630
+ assert_equal(0.0, call_info.wait_time)
631
+ assert_equal(400.0, call_info.self_time)
632
+ assert_equal(0.0, call_info.children_time)
633
+
634
+ # Method 7
635
+ method = methods[7]
636
+ assert_equal('Allocator#make_strings', method.full_name)
637
+ assert_equal(160.0, method.total_time)
638
+ assert_equal(0.0, method.wait_time)
639
+ assert_equal(40.0, method.self_time)
640
+ assert_equal(120.0, method.children_time)
641
+
642
+ assert_equal(1, method.callers.length)
643
+ call_info = method.callers[0]
644
+ assert_equal('Allocator#internal_run', call_info.parent.full_name)
645
+ assert_equal(160.0, call_info.total_time)
646
+ assert_equal(0.0, call_info.wait_time)
647
+ assert_equal(40.0, call_info.self_time)
648
+ assert_equal(120.0, call_info.children_time)
649
+
650
+ assert_equal(2, method.callees.length)
651
+ call_info = method.callees[0]
652
+ assert_equal('String#*', call_info.target.full_name)
653
+ assert_equal(40.0, call_info.total_time)
654
+ assert_equal(0.0, call_info.wait_time)
655
+ assert_equal(40.0, call_info.self_time)
656
+ assert_equal(0.0, call_info.children_time)
657
+
658
+ call_info = method.callees[1]
659
+ assert_equal('Class#new', call_info.target.full_name)
660
+ assert_equal(80.0, call_info.total_time)
661
+ assert_equal(0.0, call_info.wait_time)
662
+ assert_equal(40.0, call_info.self_time)
663
+ assert_equal(40.0, call_info.children_time)
664
+
665
+ # Method 8
666
+ method = methods[8]
667
+ assert_equal('String#*', method.full_name)
668
+ assert_equal(40.0, method.total_time)
669
+ assert_equal(0.0, method.wait_time)
670
+ assert_equal(40.0, method.self_time)
671
+ assert_equal(0.0, method.children_time)
672
+
673
+ assert_equal(1, method.callers.length)
674
+ call_info = method.callers[0]
675
+ assert_equal('Allocator#make_strings', call_info.parent.full_name)
676
+ assert_equal(40.0, call_info.total_time)
677
+ assert_equal(0.0, call_info.wait_time)
678
+ assert_equal(40.0, call_info.self_time)
679
+ assert_equal(0.0, call_info.children_time)
680
+
681
+ assert_equal(0.0, method.callees.length)
682
+
683
+ # Method 9
684
+ method = methods[9]
685
+ assert_equal('String#initialize', method.full_name)
686
+ assert_equal(40.0, method.total_time)
687
+ assert_equal(0.0, method.wait_time)
688
+ assert_equal(40.0, method.self_time)
689
+ assert_equal(0.0, method.children_time)
690
+
691
+ assert_equal(1, method.callers.length)
692
+ call_info = method.callers[0]
693
+ assert_equal('Class#new', call_info.parent.full_name)
694
+ assert_equal(40.0, call_info.total_time)
695
+ assert_equal(0.0, call_info.wait_time)
696
+ assert_equal(40.0, call_info.self_time)
697
+ assert_equal(0.0, call_info.children_time)
698
+
699
+ assert_equal(0.0, method.callees.length)
700
+
701
+ # Method 10
702
+ method = methods[10]
703
+ assert_equal('BasicObject#initialize', method.full_name)
704
+ assert_equal(0.0, method.total_time)
705
+ assert_equal(0.0, method.wait_time)
706
+ assert_equal(0.0, method.self_time)
707
+ assert_equal(0.0, method.children_time)
708
+
709
+ assert_equal(1, method.callers.length)
710
+ call_info = method.callers[0]
711
+ assert_equal('Class#new', call_info.parent.full_name)
712
+ assert_equal(0.0, call_info.total_time)
713
+ assert_equal(0.0, call_info.wait_time)
714
+ assert_equal(0.0, call_info.self_time)
715
+ assert_equal(0.0, call_info.children_time)
716
+
717
+ assert_equal(0.0, method.callees.length)
718
+
719
+ # Method 11
720
+ method = methods[11]
721
+ assert_equal('Hash#initialize', method.full_name)
722
+ assert_equal(0.0, method.total_time)
723
+ assert_equal(0.0, method.wait_time)
724
+ assert_equal(0.0, method.self_time)
725
+ assert_equal(0.0, method.children_time)
726
+
727
+ assert_equal(1, method.callers.length)
728
+ call_info = method.callers[0]
729
+ assert_equal('Class#new', call_info.parent.full_name)
730
+ assert_equal(0.0, call_info.total_time)
731
+ assert_equal(0.0, call_info.wait_time)
732
+ assert_equal(0.0, call_info.self_time)
733
+ assert_equal(0.0, call_info.children_time)
734
+
735
+ assert_equal(0.0, method.callees.length)
736
+
737
+ # Method 12
738
+ method = methods[12]
739
+ assert_equal('Array#initialize', method.full_name)
740
+ assert_equal(0.0, method.total_time)
741
+ assert_equal(0.0, method.wait_time)
742
+ assert_equal(0.0, method.self_time)
743
+ assert_equal(0.0, method.children_time)
744
+
745
+ assert_equal(1, method.callers.length)
746
+ call_info = method.callers[0]
747
+ assert_equal('Class#new', call_info.parent.full_name)
748
+ assert_equal(0.0, call_info.total_time)
749
+ assert_equal(0.0, call_info.wait_time)
750
+ assert_equal(0.0, call_info.self_time)
751
+ assert_equal(0.0, call_info.children_time)
752
+
753
+ assert_equal(0.0, method.callees.length)
754
+ end
755
+ end
756
+ end