ruby-prof 2.0.4 → 2.0.5

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 (85) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -2
  3. data/lib/ruby-prof/printers/flame_graph_printer.rb +80 -78
  4. data/lib/ruby-prof/version.rb +1 -1
  5. metadata +4 -85
  6. data/Rakefile +0 -98
  7. data/docs/advanced-usage.md +0 -132
  8. data/docs/alternatives.md +0 -98
  9. data/docs/architecture.md +0 -304
  10. data/docs/best-practices.md +0 -27
  11. data/docs/getting-started.md +0 -130
  12. data/docs/history.md +0 -11
  13. data/docs/index.md +0 -45
  14. data/docs/profiling-rails.md +0 -64
  15. data/docs/public/examples/example.rb +0 -33
  16. data/docs/public/examples/generate_reports.rb +0 -92
  17. data/docs/public/examples/reports/call_info.txt +0 -27
  18. data/docs/public/examples/reports/call_stack.html +0 -835
  19. data/docs/public/examples/reports/callgrind.out +0 -150
  20. data/docs/public/examples/reports/flame_graph.html +0 -408
  21. data/docs/public/examples/reports/flat.txt +0 -45
  22. data/docs/public/examples/reports/graph.dot +0 -129
  23. data/docs/public/examples/reports/graph.html +0 -1319
  24. data/docs/public/examples/reports/graph.txt +0 -100
  25. data/docs/public/examples/reports/graphviz_viewer.html +0 -1
  26. data/docs/public/images/call_stack.png +0 -0
  27. data/docs/public/images/class_diagram.png +0 -0
  28. data/docs/public/images/dot_printer.png +0 -0
  29. data/docs/public/images/flame_graph.png +0 -0
  30. data/docs/public/images/flat.png +0 -0
  31. data/docs/public/images/graph.png +0 -0
  32. data/docs/public/images/graph_html.png +0 -0
  33. data/docs/public/images/ruby-prof-logo.svg +0 -1
  34. data/docs/reports.md +0 -151
  35. data/docs/stylesheets/extra.css +0 -80
  36. data/ruby-prof.gemspec +0 -66
  37. data/test/abstract_printer_test.rb +0 -25
  38. data/test/alias_test.rb +0 -203
  39. data/test/call_tree_builder.rb +0 -126
  40. data/test/call_tree_test.rb +0 -94
  41. data/test/call_tree_visitor_test.rb +0 -27
  42. data/test/call_trees_test.rb +0 -66
  43. data/test/duplicate_names_test.rb +0 -32
  44. data/test/dynamic_method_test.rb +0 -50
  45. data/test/enumerable_test.rb +0 -23
  46. data/test/exceptions_test.rb +0 -24
  47. data/test/exclude_methods_test.rb +0 -363
  48. data/test/exclude_threads_test.rb +0 -48
  49. data/test/fiber_test.rb +0 -195
  50. data/test/gc_test.rb +0 -104
  51. data/test/inverse_call_tree_test.rb +0 -174
  52. data/test/line_number_test.rb +0 -563
  53. data/test/marshal_test.rb +0 -144
  54. data/test/measure_allocations.rb +0 -26
  55. data/test/measure_allocations_test.rb +0 -1511
  56. data/test/measure_process_time_test.rb +0 -3286
  57. data/test/measure_times.rb +0 -56
  58. data/test/measure_wall_time_test.rb +0 -774
  59. data/test/measurement_test.rb +0 -82
  60. data/test/merge_test.rb +0 -146
  61. data/test/method_info_test.rb +0 -100
  62. data/test/multi_printer_test.rb +0 -52
  63. data/test/no_method_class_test.rb +0 -15
  64. data/test/pause_resume_test.rb +0 -171
  65. data/test/prime.rb +0 -54
  66. data/test/prime_script.rb +0 -6
  67. data/test/printer_call_stack_test.rb +0 -28
  68. data/test/printer_call_tree_test.rb +0 -30
  69. data/test/printer_flame_graph_test.rb +0 -82
  70. data/test/printer_flat_test.rb +0 -110
  71. data/test/printer_graph_html_test.rb +0 -62
  72. data/test/printer_graph_test.rb +0 -42
  73. data/test/printers_test.rb +0 -162
  74. data/test/printing_recursive_graph_test.rb +0 -81
  75. data/test/profile_test.rb +0 -101
  76. data/test/rack_test.rb +0 -103
  77. data/test/recursive_test.rb +0 -796
  78. data/test/scheduler.rb +0 -367
  79. data/test/singleton_test.rb +0 -39
  80. data/test/stack_printer_test.rb +0 -61
  81. data/test/start_stop_test.rb +0 -106
  82. data/test/test_helper.rb +0 -24
  83. data/test/thread_test.rb +0 -229
  84. data/test/unique_call_path_test.rb +0 -123
  85. data/test/yarv_test.rb +0 -56
@@ -1,563 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- require File.expand_path('../test_helper', __FILE__)
5
-
6
- class LineNumbers
7
- def method_1
8
- method_2
9
- _filler = 1
10
- method_3
11
- end
12
-
13
- def method_2
14
- _filler = 1
15
- 2.times do |i|
16
- _filler = 2
17
- method_3
18
- end
19
- end
20
-
21
- def method_3
22
- method_4
23
- end
24
-
25
- def method_4
26
- end
27
- end
28
-
29
- # -- Tests ----
30
- class LineNumbersTest < TestCase
31
- if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.3')
32
- def test_function_line_no
33
- numbers = LineNumbers.new
34
-
35
- result = RubyProf::Profile.profile do
36
- numbers.method_1
37
- end
38
-
39
- # Sort methods by name to have stable results
40
- methods = result.threads.first.methods.sort_by(&:full_name)
41
- assert_equal(6, methods.length)
42
-
43
- # Method 0
44
- method = methods[0]
45
- assert_equal('Integer#times', method.full_name)
46
- assert_equal(0, method.line)
47
-
48
- assert_equal(1, method.call_trees.callers.count)
49
- call_tree = method.call_trees.callers[0]
50
- assert_equal('LineNumbers#method_2', call_tree.parent.target.full_name)
51
- assert_equal(15, call_tree.line)
52
-
53
- assert_equal(1, method.call_trees.callees.count)
54
- call_tree = method.call_trees.callees[0]
55
- assert_equal('LineNumbers#method_3', call_tree.target.full_name)
56
- assert_equal(17, call_tree.line)
57
-
58
- # Method 1
59
- method = methods[1]
60
- assert_equal('LineNumbers#method_1', method.full_name)
61
- assert_equal(7, method.line)
62
-
63
- assert_equal(1, method.call_trees.callers.count)
64
- call_tree = method.call_trees.callers[0]
65
- assert_equal('LineNumbersTest#test_function_line_no', call_tree.parent.target.full_name)
66
- assert_equal(36, call_tree.line)
67
-
68
- assert_equal(2, method.call_trees.callees.count)
69
- call_tree = method.call_trees.callees[0]
70
- assert_equal('LineNumbers#method_2', call_tree.target.full_name)
71
- assert_equal(8, call_tree.line)
72
-
73
- call_tree = method.call_trees.callees[1]
74
- assert_equal('LineNumbers#method_3', call_tree.target.full_name)
75
- assert_equal(10, call_tree.line)
76
-
77
- # Method 2
78
- method = methods[2]
79
- assert_equal('LineNumbers#method_2', method.full_name)
80
- assert_equal(13, method.line)
81
-
82
- assert_equal(1, method.call_trees.callers.count)
83
- call_tree = method.call_trees.callers[0]
84
- assert_equal('LineNumbers#method_1', call_tree.parent.target.full_name)
85
- assert_equal(8, call_tree.line)
86
-
87
- assert_equal(1, method.call_trees.callees.count)
88
- call_tree = method.call_trees.callees[0]
89
- assert_equal('Integer#times', call_tree.target.full_name)
90
- assert_equal(15, call_tree.line)
91
-
92
- # Method 3
93
- method = methods[3]
94
- assert_equal('LineNumbers#method_3', method.full_name)
95
- assert_equal(21, method.line)
96
-
97
- assert_equal(2, method.call_trees.callers.count)
98
- call_tree = method.call_trees.callers[0]
99
- assert_equal('Integer#times', call_tree.parent.target.full_name)
100
- assert_equal(17, call_tree.line)
101
-
102
- call_tree = method.call_trees.callers[1]
103
- assert_equal('LineNumbers#method_1', call_tree.parent.target.full_name)
104
- assert_equal(10, call_tree.line)
105
-
106
- assert_equal(1, method.call_trees.callees.count)
107
- call_tree = method.call_trees.callees[0]
108
- assert_equal('LineNumbers#method_4', call_tree.target.full_name)
109
- assert_equal(22, call_tree.line)
110
-
111
- # Method 4
112
- method = methods[4]
113
- assert_equal('LineNumbers#method_4', method.full_name)
114
- assert_equal(25, method.line)
115
-
116
- assert_equal(1, method.call_trees.callers.count)
117
- call_tree = method.call_trees.callers[0]
118
- assert_equal('LineNumbers#method_3', call_tree.parent.target.full_name)
119
- assert_equal(22, call_tree.line)
120
-
121
- assert_equal(0, method.call_trees.callees.count)
122
-
123
- # Method 5
124
- method = methods[5]
125
- assert_equal('LineNumbersTest#test_function_line_no', method.full_name)
126
- assert_equal(36, method.line)
127
-
128
- assert_equal(0, method.call_trees.callers.count)
129
-
130
- assert_equal(1, method.call_trees.callees.count)
131
- call_tree = method.call_trees.callees[0]
132
- assert_equal('LineNumbers#method_1', call_tree.target.full_name)
133
- assert_equal(36, call_tree.line)
134
- end
135
- elsif Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.4')
136
- def test_function_line_no
137
- numbers = LineNumbers.new
138
-
139
- result = RubyProf::Profile.profile do
140
- numbers.method_1
141
- end
142
-
143
- # Sort methods by name to have stable results
144
- methods = result.threads.first.methods.sort_by(&:full_name)
145
- assert_equal(9, methods.length)
146
-
147
- # Method 0
148
- method = methods[0]
149
- assert_equal('Integer#<', method.full_name)
150
- assert_equal(0, method.line)
151
-
152
- assert_equal(1, method.call_trees.callers.count)
153
- call_tree = method.call_trees.callers[0]
154
- assert_equal('Integer#times', call_tree.parent.target.full_name)
155
- assert_equal(236, call_tree.line)
156
-
157
- assert_equal(0, method.call_trees.callees.count)
158
-
159
- # Method 1
160
- method = methods[1]
161
- assert_equal('Integer#succ', method.full_name)
162
- assert_equal(0, method.line)
163
-
164
- assert_equal(1, method.call_trees.callers.count)
165
- call_tree = method.call_trees.callers[0]
166
- assert_equal('Integer#times', call_tree.parent.target.full_name)
167
- assert_equal(238, call_tree.line)
168
-
169
- assert_equal(0, method.call_trees.callees.count)
170
-
171
- # Method 2
172
- method = methods[2]
173
- assert_equal('Integer#times', method.full_name)
174
- assert_equal(231, method.line)
175
-
176
- assert_equal(1, method.call_trees.callers.count)
177
- call_tree = method.call_trees.callers[0]
178
- assert_equal('LineNumbers#method_2', call_tree.parent.target.full_name)
179
- assert_equal(15, call_tree.line)
180
-
181
- assert_equal(4, method.call_trees.callees.count)
182
-
183
- call_tree = method.call_trees.callees[0]
184
- assert_equal('Kernel#block_given?', call_tree.target.full_name)
185
- assert_equal(232, call_tree.line)
186
-
187
- call_tree = method.call_trees.callees[1]
188
- assert_equal('Integer#<', call_tree.target.full_name)
189
- assert_equal(236, call_tree.line)
190
-
191
- call_tree = method.call_trees.callees[2]
192
- assert_equal('LineNumbers#method_3', call_tree.target.full_name)
193
- assert_equal(17, call_tree.line)
194
-
195
- call_tree = method.call_trees.callees[3]
196
- assert_equal('Integer#succ', call_tree.target.full_name)
197
- assert_equal(238, call_tree.line)
198
-
199
- # Method 3
200
- method = methods[3]
201
- assert_equal('Kernel#block_given?', method.full_name)
202
- assert_equal(0, method.line)
203
-
204
- assert_equal(1, method.call_trees.callers.count)
205
- call_tree = method.call_trees.callers[0]
206
- assert_equal('Integer#times', call_tree.parent.target.full_name)
207
- assert_equal(232, call_tree.line)
208
-
209
- assert_equal(0, method.call_trees.callees.count)
210
-
211
- # Method 4
212
- method = methods[4]
213
- assert_equal('LineNumbers#method_1', method.full_name)
214
- assert_equal(7, method.line)
215
-
216
- assert_equal(1, method.call_trees.callers.count)
217
- call_tree = method.call_trees.callers[0]
218
- assert_equal('LineNumbersTest#test_function_line_no', call_tree.parent.target.full_name)
219
- assert_equal(140, call_tree.line)
220
-
221
- assert_equal(2, method.call_trees.callees.count)
222
- call_tree = method.call_trees.callees[0]
223
- assert_equal('LineNumbers#method_2', call_tree.target.full_name)
224
- assert_equal(8, call_tree.line)
225
-
226
- call_tree = method.call_trees.callees[1]
227
- assert_equal('LineNumbers#method_3', call_tree.target.full_name)
228
- assert_equal(10, call_tree.line)
229
-
230
- # Method 5
231
- method = methods[5]
232
- assert_equal('LineNumbers#method_2', method.full_name)
233
- assert_equal(13, method.line)
234
-
235
- assert_equal(1, method.call_trees.callers.count)
236
- call_tree = method.call_trees.callers[0]
237
- assert_equal('LineNumbers#method_1', call_tree.parent.target.full_name)
238
- assert_equal(8, call_tree.line)
239
-
240
- assert_equal(1, method.call_trees.callees.count)
241
- call_tree = method.call_trees.callees[0]
242
- assert_equal('Integer#times', call_tree.target.full_name)
243
- assert_equal(15, call_tree.line)
244
-
245
- # Method 6
246
- method = methods[6]
247
- assert_equal('LineNumbers#method_3', method.full_name)
248
- assert_equal(21, method.line)
249
-
250
- assert_equal(2, method.call_trees.callers.count)
251
- call_tree = method.call_trees.callers[0]
252
- assert_equal('Integer#times', call_tree.parent.target.full_name)
253
- assert_equal(17, call_tree.line)
254
-
255
- call_tree = method.call_trees.callers[1]
256
- assert_equal('LineNumbers#method_1', call_tree.parent.target.full_name)
257
- assert_equal(10, call_tree.line)
258
-
259
- assert_equal(1, method.call_trees.callees.count)
260
- call_tree = method.call_trees.callees[0]
261
- assert_equal('LineNumbers#method_4', call_tree.target.full_name)
262
- assert_equal(22, call_tree.line)
263
-
264
- # Method 7
265
- method = methods[7]
266
- assert_equal('LineNumbers#method_4', method.full_name)
267
- assert_equal(25, method.line)
268
-
269
- assert_equal(1, method.call_trees.callers.count)
270
- call_tree = method.call_trees.callers[0]
271
- assert_equal('LineNumbers#method_3', call_tree.parent.target.full_name)
272
- assert_equal(22, call_tree.line)
273
-
274
- assert_equal(0, method.call_trees.callees.count)
275
-
276
- # Method 8
277
- method = methods[8]
278
- assert_equal('LineNumbersTest#test_function_line_no', method.full_name)
279
- assert_equal(140, method.line)
280
-
281
- assert_equal(0, method.call_trees.callers.count)
282
-
283
- assert_equal(1, method.call_trees.callees.count)
284
- call_tree = method.call_trees.callees[0]
285
- assert_equal('LineNumbers#method_1', call_tree.target.full_name)
286
- assert_equal(140, call_tree.line)
287
- end
288
- elsif Gem::Version.new(RUBY_VERSION) < Gem::Version.new('4.0')
289
- def test_function_line_no
290
- numbers = LineNumbers.new
291
-
292
- result = RubyProf::Profile.profile do
293
- numbers.method_1
294
- end
295
-
296
- # Sort methods by name to have stable results
297
- methods = result.threads.first.methods.sort_by(&:full_name)
298
- assert_equal(8, methods.length)
299
-
300
- # Method 0
301
- method = methods[0]
302
- assert_equal('Integer#<', method.full_name)
303
- assert_equal(0, method.line)
304
-
305
- assert_equal(1, method.call_trees.callers.count)
306
- call_tree = method.call_trees.callers[0]
307
- assert_equal('Integer#times', call_tree.parent.target.full_name)
308
- assert_equal(256, call_tree.line)
309
-
310
- assert_equal(0, method.call_trees.callees.count)
311
-
312
- # Method 1
313
- method = methods[1]
314
- assert_equal('Integer#succ', method.full_name)
315
- assert_equal(0, method.line)
316
-
317
- assert_equal(1, method.call_trees.callers.count)
318
- call_tree = method.call_trees.callers[0]
319
- assert_equal('Integer#times', call_tree.parent.target.full_name)
320
- assert_equal(258, call_tree.line)
321
-
322
- assert_equal(0, method.call_trees.callees.count)
323
-
324
- # Method 2
325
- method = methods[2]
326
- assert_equal('Integer#times', method.full_name)
327
- assert_equal(250, method.line)
328
-
329
- assert_equal(1, method.call_trees.callers.count)
330
- call_tree = method.call_trees.callers[0]
331
- assert_equal('LineNumbers#method_2', call_tree.parent.target.full_name)
332
- assert_equal(15, call_tree.line)
333
-
334
- assert_equal(3, method.call_trees.callees.count)
335
-
336
- call_tree = method.call_trees.callees[0]
337
- assert_equal('Integer#<', call_tree.target.full_name)
338
- assert_equal(256, call_tree.line)
339
-
340
- call_tree = method.call_trees.callees[1]
341
- assert_equal('LineNumbers#method_3', call_tree.target.full_name)
342
- assert_equal(17, call_tree.line)
343
-
344
- call_tree = method.call_trees.callees[2]
345
- assert_equal('Integer#succ', call_tree.target.full_name)
346
- assert_equal(258, call_tree.line)
347
-
348
- # Method 3
349
- method = methods[3]
350
- assert_equal('LineNumbers#method_1', method.full_name)
351
- assert_equal(7, method.line)
352
-
353
- assert_equal(1, method.call_trees.callers.count)
354
- call_tree = method.call_trees.callers[0]
355
- assert_equal('LineNumbersTest#test_function_line_no', call_tree.parent.target.full_name)
356
- assert_equal(293, call_tree.line)
357
-
358
- assert_equal(2, method.call_trees.callees.count)
359
- call_tree = method.call_trees.callees[0]
360
- assert_equal('LineNumbers#method_2', call_tree.target.full_name)
361
- assert_equal(8, call_tree.line)
362
-
363
- call_tree = method.call_trees.callees[1]
364
- assert_equal('LineNumbers#method_3', call_tree.target.full_name)
365
- assert_equal(10, call_tree.line)
366
-
367
- # Method 4
368
- method = methods[4]
369
- assert_equal('LineNumbers#method_2', method.full_name)
370
- assert_equal(13, method.line)
371
-
372
- assert_equal(1, method.call_trees.callers.count)
373
- call_tree = method.call_trees.callers[0]
374
- assert_equal('LineNumbers#method_1', call_tree.parent.target.full_name)
375
- assert_equal(8, call_tree.line)
376
-
377
- assert_equal(1, method.call_trees.callees.count)
378
- call_tree = method.call_trees.callees[0]
379
- assert_equal('Integer#times', call_tree.target.full_name)
380
- assert_equal(15, call_tree.line)
381
-
382
- # Method 5
383
- method = methods[5]
384
- assert_equal('LineNumbers#method_3', method.full_name)
385
- assert_equal(21, method.line)
386
-
387
- assert_equal(2, method.call_trees.callers.count)
388
- call_tree = method.call_trees.callers[0]
389
- assert_equal('Integer#times', call_tree.parent.target.full_name)
390
- assert_equal(17, call_tree.line)
391
-
392
- call_tree = method.call_trees.callers[1]
393
- assert_equal('LineNumbers#method_1', call_tree.parent.target.full_name)
394
- assert_equal(10, call_tree.line)
395
-
396
- assert_equal(1, method.call_trees.callees.count)
397
- call_tree = method.call_trees.callees[0]
398
- assert_equal('LineNumbers#method_4', call_tree.target.full_name)
399
- assert_equal(22, call_tree.line)
400
-
401
- # Method 6
402
- method = methods[6]
403
- assert_equal('LineNumbers#method_4', method.full_name)
404
- assert_equal(25, method.line)
405
-
406
- assert_equal(1, method.call_trees.callers.count)
407
- call_tree = method.call_trees.callers[0]
408
- assert_equal('LineNumbers#method_3', call_tree.parent.target.full_name)
409
- assert_equal(22, call_tree.line)
410
-
411
- assert_equal(0, method.call_trees.callees.count)
412
-
413
- # Method 7
414
- method = methods[7]
415
- assert_equal('LineNumbersTest#test_function_line_no', method.full_name)
416
- assert_equal(293, method.line)
417
-
418
- assert_equal(0, method.call_trees.callers.count)
419
-
420
- assert_equal(1, method.call_trees.callees.count)
421
- call_tree = method.call_trees.callees[0]
422
- assert_equal('LineNumbers#method_1', call_tree.target.full_name)
423
- assert_equal(293, call_tree.line)
424
- end
425
- else
426
- def test_function_line_no
427
- numbers = LineNumbers.new
428
-
429
- result = RubyProf::Profile.profile do
430
- numbers.method_1
431
- end
432
-
433
- # Sort methods by name to have stable results
434
- methods = result.threads.first.methods.sort_by(&:full_name)
435
- assert_equal(8, methods.length)
436
-
437
- # Method 0
438
- method = methods[0]
439
- assert_equal('Integer#<', method.full_name)
440
- assert_equal(0, method.line)
441
-
442
- assert_equal(1, method.call_trees.callers.count)
443
- call_tree = method.call_trees.callers[0]
444
- assert_equal('Integer#times', call_tree.parent.target.full_name)
445
- assert_equal(261, call_tree.line)
446
-
447
- assert_equal(0, method.call_trees.callees.count)
448
-
449
- # Method 1
450
- method = methods[1]
451
- assert_equal('Integer#succ', method.full_name)
452
- assert_equal(0, method.line)
453
-
454
- assert_equal(1, method.call_trees.callers.count)
455
- call_tree = method.call_trees.callers[0]
456
- assert_equal('Integer#times', call_tree.parent.target.full_name)
457
- assert_equal(263, call_tree.line)
458
-
459
- assert_equal(0, method.call_trees.callees.count)
460
-
461
- # Method 2
462
- method = methods[2]
463
- assert_equal('Integer#times', method.full_name)
464
- assert_equal(255, method.line)
465
-
466
- assert_equal(1, method.call_trees.callers.count)
467
- call_tree = method.call_trees.callers[0]
468
- assert_equal('LineNumbers#method_2', call_tree.parent.target.full_name)
469
- assert_equal(15, call_tree.line)
470
-
471
- assert_equal(3, method.call_trees.callees.count)
472
-
473
- call_tree = method.call_trees.callees[0]
474
- assert_equal('Integer#<', call_tree.target.full_name)
475
- assert_equal(261, call_tree.line)
476
-
477
- call_tree = method.call_trees.callees[1]
478
- assert_equal('LineNumbers#method_3', call_tree.target.full_name)
479
- assert_equal(17, call_tree.line)
480
-
481
- call_tree = method.call_trees.callees[2]
482
- assert_equal('Integer#succ', call_tree.target.full_name)
483
- assert_equal(263, call_tree.line)
484
-
485
- # Method 3
486
- method = methods[3]
487
- assert_equal('LineNumbers#method_1', method.full_name)
488
- assert_equal(7, method.line)
489
-
490
- assert_equal(1, method.call_trees.callers.count)
491
- call_tree = method.call_trees.callers[0]
492
- assert_equal('LineNumbersTest#test_function_line_no', call_tree.parent.target.full_name)
493
- assert_equal(430, call_tree.line)
494
-
495
- assert_equal(2, method.call_trees.callees.count)
496
- call_tree = method.call_trees.callees[0]
497
- assert_equal('LineNumbers#method_2', call_tree.target.full_name)
498
- assert_equal(8, call_tree.line)
499
-
500
- call_tree = method.call_trees.callees[1]
501
- assert_equal('LineNumbers#method_3', call_tree.target.full_name)
502
- assert_equal(10, call_tree.line)
503
-
504
- # Method 4
505
- method = methods[4]
506
- assert_equal('LineNumbers#method_2', method.full_name)
507
- assert_equal(13, method.line)
508
-
509
- assert_equal(1, method.call_trees.callers.count)
510
- call_tree = method.call_trees.callers[0]
511
- assert_equal('LineNumbers#method_1', call_tree.parent.target.full_name)
512
- assert_equal(8, call_tree.line)
513
-
514
- assert_equal(1, method.call_trees.callees.count)
515
- call_tree = method.call_trees.callees[0]
516
- assert_equal('Integer#times', call_tree.target.full_name)
517
- assert_equal(15, call_tree.line)
518
-
519
- # Method 5
520
- method = methods[5]
521
- assert_equal('LineNumbers#method_3', method.full_name)
522
- assert_equal(21, method.line)
523
-
524
- assert_equal(2, method.call_trees.callers.count)
525
- call_tree = method.call_trees.callers[0]
526
- assert_equal('Integer#times', call_tree.parent.target.full_name)
527
- assert_equal(17, call_tree.line)
528
-
529
- call_tree = method.call_trees.callers[1]
530
- assert_equal('LineNumbers#method_1', call_tree.parent.target.full_name)
531
- assert_equal(10, call_tree.line)
532
-
533
- assert_equal(1, method.call_trees.callees.count)
534
- call_tree = method.call_trees.callees[0]
535
- assert_equal('LineNumbers#method_4', call_tree.target.full_name)
536
- assert_equal(22, call_tree.line)
537
-
538
- # Method 6
539
- method = methods[6]
540
- assert_equal('LineNumbers#method_4', method.full_name)
541
- assert_equal(25, method.line)
542
-
543
- assert_equal(1, method.call_trees.callers.count)
544
- call_tree = method.call_trees.callers[0]
545
- assert_equal('LineNumbers#method_3', call_tree.parent.target.full_name)
546
- assert_equal(22, call_tree.line)
547
-
548
- assert_equal(0, method.call_trees.callees.count)
549
-
550
- # Method 7
551
- method = methods[7]
552
- assert_equal('LineNumbersTest#test_function_line_no', method.full_name)
553
- assert_equal(430, method.line)
554
-
555
- assert_equal(0, method.call_trees.callers.count)
556
-
557
- assert_equal(1, method.call_trees.callees.count)
558
- call_tree = method.call_trees.callees[0]
559
- assert_equal('LineNumbers#method_1', call_tree.target.full_name)
560
- assert_equal(430, call_tree.line)
561
- end
562
- end
563
- end
data/test/marshal_test.rb DELETED
@@ -1,144 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- require File.expand_path("../test_helper", __FILE__)
5
- class MarshalTest < TestCase
6
- def verify_profile(profile_1, profile_2)
7
- verify_threads(profile_1.threads, profile_2.threads)
8
- assert_equal(profile_1.measure_mode, profile_2.measure_mode)
9
- assert_equal(profile_1.track_allocations?, profile_2.track_allocations?)
10
- end
11
-
12
- def verify_threads(threads_1, threads_2)
13
- assert_equal(threads_1.count, threads_2.count)
14
- threads_1.count.times do |i|
15
- thread_1 = threads_1[i]
16
- thread_2 = threads_2[i]
17
- assert_nil(thread_2.id)
18
- assert_equal(thread_1.fiber_id, thread_2.fiber_id)
19
- verify_call_info(thread_1.call_tree, thread_2.call_tree)
20
-
21
- verify_methods(thread_1.methods, thread_2.methods)
22
- end
23
- end
24
-
25
- def verify_methods(methods_1, methods_2)
26
- assert_equal(methods_1.count, methods_2.count)
27
-
28
- methods_1.count.times do |i|
29
- method_1 = methods_1[i]
30
- method_2 = methods_2[i]
31
-
32
- assert_equal(method_1.klass_name, method_2.klass_name)
33
- assert_equal(method_1.klass_flags, method_2.klass_flags)
34
-
35
- assert_equal(method_1.method_name, method_2.method_name)
36
- assert_equal(method_1.full_name, method_2.full_name)
37
-
38
- assert_equal(method_1.recursive?, method_2.recursive?)
39
-
40
- if method_1.source_file
41
- assert_equal(method_1.source_file, method_2.source_file)
42
- else
43
- assert_nil(method_1.source_file)
44
- assert_nil(method_2.source_file)
45
- end
46
-
47
- assert_equal(method_1.line, method_2.line)
48
-
49
- verify_measurement(method_1.measurement, method_2.measurement)
50
- verify_call_infos(method_1.call_trees, method_2.call_trees)
51
- verify_allocations(method_1.allocations, method_2.allocations)
52
- end
53
- end
54
-
55
- def verify_allocations(allocations_1, allocations_2)
56
- assert_equal(allocations_1.count, allocations_2.count)
57
-
58
- allocations_1.count.times do |i|
59
- allocation_1 = allocations_1[i]
60
- allocation_2 = allocations_2[i]
61
-
62
- assert_equal(allocation_1.klass_name, allocation_2.klass_name)
63
- assert_equal(allocation_1.klass_flags, allocation_2.klass_flags)
64
-
65
- assert_equal(allocation_1.count, allocation_2.count)
66
-
67
- assert_equal(allocation_1.source_file, allocation_2.source_file)
68
- assert_equal(allocation_1.line, allocation_2.line)
69
- end
70
- end
71
-
72
- def verify_call_infos(call_infos_1, call_infos_2)
73
- assert_equal(call_infos_1.call_trees.count, call_infos_2.call_trees.count)
74
- call_infos_1.call_trees.count.times do |i|
75
- call_info_1 = call_infos_1.call_trees[i]
76
- call_info_2 = call_infos_2.call_trees[i]
77
- verify_call_info(call_info_1, call_info_2)
78
- end
79
- end
80
-
81
- def verify_call_info(call_info_1, call_info_2)
82
- assert_equal(call_info_1.target, call_info_2.target)
83
-
84
- if call_info_1.parent&.target
85
- assert_equal(call_info_1.parent&.target, call_info_2.parent&.target)
86
- else
87
- assert_nil(call_info_1.parent&.target)
88
- assert_nil(call_info_2.parent&.target)
89
- end
90
-
91
- assert_equal(call_info_1.depth, call_info_2.depth)
92
-
93
- if call_info_1.source_file
94
- assert_equal(call_info_1.source_file, call_info_2.source_file) #
95
- else
96
- assert_nil(call_info_1.source_file)
97
- assert_nil(call_info_2.source_file)
98
- end
99
-
100
- assert_equal(call_info_1.line, call_info_2.line)
101
-
102
- verify_measurement(call_info_1.measurement, call_info_2.measurement)
103
- end
104
-
105
- def verify_measurement(measurement_1, measurement_2)
106
- assert_equal(measurement_1.total_time, measurement_2.total_time)
107
- assert_equal(measurement_1.self_time, measurement_2.self_time)
108
- assert_equal(measurement_1.wait_time, measurement_2.wait_time)
109
- assert_equal(measurement_1.called, measurement_2.called)
110
- end
111
-
112
- def test_marshal_1
113
- profile_1 = RubyProf::Profile.profile(measure_mode: RubyProf::WALL_TIME) do
114
- 1.times { RubyProf::C1.new.sleep_wait }
115
- end
116
-
117
- data = Marshal.dump(profile_1)
118
- profile_2 = Marshal.load(data)
119
-
120
- verify_profile(profile_1, profile_2)
121
- end
122
-
123
- def test_marshal_2
124
- profile_1 = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME, track_allocations: true) do
125
- 1.times { RubyProf::C1.new.sleep_wait }
126
- end
127
-
128
- data = Marshal.dump(profile_1)
129
- profile_2 = Marshal.load(data)
130
-
131
- verify_profile(profile_1, profile_2)
132
- end
133
-
134
- def test_singleton
135
- profile_1 = RubyProf::Profile.profile do
136
- SingletonTest.instance.busy_wait
137
- end
138
-
139
- data = Marshal.dump(profile_1)
140
- profile_2 = Marshal.load(data)
141
-
142
- verify_profile(profile_1, profile_2)
143
- end
144
- end