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,3286 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- require File.expand_path('../test_helper', __FILE__)
5
- require_relative './measure_times'
6
-
7
-
8
- class MeasureProcessTimeTest < TestCase
9
- def setup
10
- super
11
- # These tests run too fast for Windows to detect any used process time
12
- skip if windows?
13
-
14
- GC.start
15
- end
16
-
17
- if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.3')
18
- def test_class_methods_sleep
19
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
20
- RubyProf::C1.sleep_wait
21
- end
22
-
23
- thread = result.threads.first
24
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
25
-
26
- methods = thread.methods.sort.reverse
27
- assert_equal(3, methods.length)
28
-
29
- # Check times
30
- method = methods[0]
31
- assert_equal('MeasureProcessTimeTest#test_class_methods_sleep', method.full_name)
32
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
33
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
34
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
35
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
36
-
37
- method = methods[1]
38
- assert_equal('<Class::RubyProf::C1>#sleep_wait', method.full_name)
39
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
40
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
41
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
42
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
43
-
44
- method = methods[2]
45
- assert_equal('Kernel#sleep', method.full_name)
46
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
47
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
48
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
49
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
50
- end
51
-
52
- def test_class_methods_sleep_threaded
53
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
54
- background_thread = Thread.new do
55
- RubyProf::C1.sleep_wait
56
- end
57
- background_thread.join
58
- end
59
-
60
- assert_equal(2, result.threads.count)
61
-
62
- thread = result.threads.first
63
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
64
- methods = thread.methods.sort.reverse
65
- assert_equal(4, methods.length)
66
-
67
- # Check times
68
- method = methods[0]
69
- assert_equal('MeasureProcessTimeTest#test_class_methods_sleep_threaded', method.full_name)
70
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
71
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
72
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
73
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
74
-
75
- method = methods[1]
76
- assert(['Thread#join', '<Class::Thread>#new'].include?(method.full_name))
77
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
78
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
79
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
80
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
81
-
82
- method = methods[2]
83
- assert(['Thread#join', '<Class::Thread>#new'].include?(method.full_name))
84
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
85
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
86
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
87
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
88
-
89
- method = methods[3]
90
- assert_equal('Thread#initialize', method.full_name)
91
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
92
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
93
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
94
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
95
-
96
- thread = result.threads.last
97
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
98
- methods = thread.methods.sort.reverse
99
- assert_equal(3, methods.length)
100
-
101
- # Check times
102
- method = methods[0]
103
- assert_equal('MeasureProcessTimeTest#test_class_methods_sleep_threaded', method.full_name)
104
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
105
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
106
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
107
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
108
-
109
- method = methods[1]
110
- assert_equal('<Class::RubyProf::C1>#sleep_wait', method.full_name)
111
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
112
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
113
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
114
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
115
-
116
- method = methods[2]
117
- assert_equal('Kernel#sleep', method.full_name)
118
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
119
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
120
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
121
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
122
- end
123
-
124
- def test_class_methods_busy
125
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
126
- RubyProf::C1.busy_wait
127
- end
128
-
129
- thread = result.threads.first
130
- assert_in_delta(0.08, thread.total_time, 0.05 * delta_multiplier)
131
-
132
- methods = thread.methods.sort.reverse
133
- assert_equal(5, methods.length)
134
-
135
- # Check times
136
- method = methods[0]
137
- assert_equal('MeasureProcessTimeTest#test_class_methods_busy', method.full_name)
138
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
139
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
140
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
141
- assert_in_delta(0.1, method.children_time, 0.05 * delta_multiplier)
142
-
143
- method = methods[1]
144
- assert_equal('<Class::RubyProf::C1>#busy_wait', method.full_name)
145
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
146
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
147
- assert_in_delta(0.06, method.self_time, 0.05 * delta_multiplier)
148
- assert_in_delta(0.07, method.children_time, 0.05 * delta_multiplier)
149
-
150
- method = methods[2]
151
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
152
- assert_in_delta(0.05, method.total_time, 0.05 * delta_multiplier)
153
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
154
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
155
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
156
- end
157
-
158
- def test_class_methods_busy_threaded
159
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
160
- background_thread = Thread.new do
161
- RubyProf::C1.busy_wait
162
- end
163
- background_thread.join
164
- end
165
-
166
- assert_equal(2, result.threads.count)
167
-
168
- thread = result.threads.first
169
- assert_in_delta(0.1, thread.total_time, 0.05 * delta_multiplier)
170
-
171
- methods = thread.methods.sort.reverse
172
- assert_equal(4, methods.length)
173
-
174
- # Check times
175
- method = methods[0]
176
- assert_equal('MeasureProcessTimeTest#test_class_methods_busy_threaded', method.full_name)
177
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
178
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
179
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
180
- assert_in_delta(0.1, method.children_time, 0.05 * delta_multiplier)
181
-
182
- method = methods[1]
183
- assert_equal('Thread#join', method.full_name)
184
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
185
- assert_in_delta(0.1, method.wait_time, 0.05 * delta_multiplier)
186
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
187
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
188
-
189
- method = methods[2]
190
- assert_equal('<Class::Thread>#new', method.full_name)
191
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
192
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
193
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
194
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
195
-
196
- method = methods[3]
197
- assert_equal('Thread#initialize', method.full_name)
198
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
199
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
200
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
201
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
202
-
203
- thread = result.threads.last
204
- assert_in_delta(0.1, thread.total_time, 0.05 * delta_multiplier)
205
-
206
- methods = thread.methods.sort.reverse
207
- assert_equal(5, methods.length)
208
-
209
- # Check times
210
- method = methods[0]
211
- assert_equal('MeasureProcessTimeTest#test_class_methods_busy_threaded', method.full_name)
212
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
213
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
214
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
215
- assert_in_delta(0.1, method.children_time, 0.05 * delta_multiplier)
216
-
217
- method = methods[1]
218
- assert_equal('<Class::RubyProf::C1>#busy_wait', method.full_name)
219
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
220
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
221
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
222
- assert_in_delta(0.05, method.children_time, 0.05 * delta_multiplier)
223
-
224
- method = methods[2]
225
- assert('<Module::Process>#clock_gettime' == method.full_name ||
226
- 'Float#<' == method.full_name)
227
- assert_in_delta(0.05, method.total_time, 0.05 * delta_multiplier)
228
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
229
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
230
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
231
- end
232
-
233
- def test_instance_methods_sleep
234
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
235
- RubyProf::C1.new.sleep_wait
236
- end
237
-
238
- thread = result.threads.first
239
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
240
-
241
- methods = thread.methods.sort.reverse
242
- assert_equal(5, methods.length)
243
-
244
- # Check times
245
- method = methods[0]
246
- assert_equal('MeasureProcessTimeTest#test_instance_methods_sleep', method.full_name)
247
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
248
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
249
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
250
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
251
-
252
- method = methods[1]
253
- assert_equal('RubyProf::C1#sleep_wait', method.full_name)
254
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
255
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
256
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
257
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
258
-
259
- method = methods[2]
260
- assert_equal('Class#new', method.full_name)
261
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
262
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
263
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
264
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
265
-
266
- method = methods[3]
267
- assert_equal('Kernel#sleep', method.full_name)
268
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
269
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
270
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
271
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
272
-
273
- method = methods[4]
274
- assert_equal('BasicObject#initialize', method.full_name)
275
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
276
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
277
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
278
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
279
- end
280
-
281
- def test_instance_methods_sleep_block
282
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
283
- 1.times { RubyProf::C1.new.sleep_wait }
284
- end
285
-
286
- thread = result.threads.first
287
- methods = thread.methods.sort.reverse
288
- assert_equal(6, methods.length)
289
-
290
- # Check times
291
- method = methods[0]
292
- assert_equal("MeasureProcessTimeTest#test_instance_methods_sleep_block", method.full_name)
293
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
294
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
295
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
296
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
297
-
298
- method = methods[1]
299
- assert_equal('Integer#times', method.full_name)
300
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
301
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
302
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
303
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
304
-
305
- method = methods[2]
306
- assert_equal('RubyProf::C1#sleep_wait', method.full_name)
307
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
308
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
309
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
310
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
311
-
312
- method = methods[3]
313
- assert_equal('Class#new', method.full_name)
314
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
315
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
316
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
317
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
318
-
319
- method = methods[4]
320
- assert_equal('Kernel#sleep', method.full_name)
321
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
322
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
323
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
324
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
325
-
326
- method = methods[5]
327
- assert_equal('BasicObject#initialize', method.full_name)
328
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
329
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
330
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
331
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
332
- end
333
-
334
- def test_instance_methods_sleep_threaded
335
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
336
- background_thread = Thread.new do
337
- RubyProf::C1.new.sleep_wait
338
- end
339
- background_thread.join
340
- end
341
-
342
- assert_equal(2, result.threads.count)
343
-
344
- thread = result.threads.first
345
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
346
-
347
- methods = thread.methods.sort.reverse
348
- assert_equal(4, methods.length)
349
-
350
- # Check times
351
- method = methods[0]
352
- assert_equal('MeasureProcessTimeTest#test_instance_methods_sleep_threaded', method.full_name)
353
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
354
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
355
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
356
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
357
-
358
- method = methods[1]
359
- assert_equal('Thread#join', method.full_name)
360
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
361
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
362
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
363
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
364
-
365
- method = methods[2]
366
- assert_equal('<Class::Thread>#new', method.full_name)
367
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
368
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
369
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
370
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
371
-
372
- method = methods[3]
373
- assert_equal('Thread#initialize', method.full_name)
374
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
375
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
376
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
377
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
378
-
379
- thread = result.threads.last
380
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
381
-
382
- methods = thread.methods.sort.reverse
383
- assert_equal(5, methods.length)
384
-
385
- # Check times
386
- method = methods[0]
387
- assert_equal('MeasureProcessTimeTest#test_instance_methods_sleep_threaded', method.full_name)
388
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
389
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
390
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
391
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
392
-
393
- method = methods[1]
394
- assert_equal('RubyProf::C1#sleep_wait', method.full_name)
395
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
396
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
397
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
398
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
399
-
400
- method = methods[2]
401
- assert_equal('Class#new', method.full_name)
402
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
403
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
404
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
405
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
406
-
407
- method = methods[3]
408
- assert_equal('Kernel#sleep', method.full_name)
409
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
410
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
411
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
412
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
413
-
414
- method = methods[4]
415
- assert_equal('BasicObject#initialize', method.full_name)
416
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
417
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
418
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
419
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
420
- end
421
-
422
- def test_instance_methods_busy
423
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
424
- RubyProf::C1.new.busy_wait
425
- end
426
-
427
- thread = result.threads.first
428
- assert_in_delta(0.2, thread.total_time, 0.05 * delta_multiplier)
429
-
430
- methods = thread.methods.sort.reverse
431
- assert_equal(7, methods.length)
432
-
433
- # Check times
434
- method = methods[0]
435
- assert_equal('MeasureProcessTimeTest#test_instance_methods_busy', method.full_name)
436
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
437
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
438
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
439
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
440
-
441
- method = methods[1]
442
- assert_equal('RubyProf::C1#busy_wait', method.full_name)
443
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
444
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
445
- assert_in_delta(0.09, method.self_time, 0.05 * delta_multiplier)
446
- assert_in_delta(0.11, method.children_time, 0.05 * delta_multiplier)
447
-
448
- method = methods[2]
449
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
450
- assert_in_delta(0.033, method.total_time, 0.05 * delta_multiplier)
451
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
452
- assert_in_delta(0.033, method.self_time, 0.05 * delta_multiplier)
453
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
454
-
455
- method = methods[3]
456
- assert_includes(['Float#<', 'Float#-'], method.full_name)
457
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
458
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
459
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
460
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
461
-
462
- method = methods[4]
463
- assert_includes(['Float#<', 'Float#-'], method.full_name)
464
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
465
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
466
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
467
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
468
-
469
- method = methods[5]
470
- assert_equal('Class#new', method.full_name)
471
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
472
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
473
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
474
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
475
-
476
- method = methods[6]
477
- assert_equal('BasicObject#initialize', method.full_name)
478
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
479
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
480
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
481
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
482
- end
483
-
484
- def test_instance_methods_busy_block
485
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
486
- 1.times { RubyProf::C1.new.busy_wait }
487
- end
488
-
489
- thread = result.threads.first
490
- methods = thread.methods.sort.reverse
491
- assert_equal(8, methods.length)
492
-
493
- # Check times
494
- method = methods[0]
495
- assert_equal("MeasureProcessTimeTest#test_instance_methods_busy_block", method.full_name)
496
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
497
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
498
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
499
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
500
-
501
- method = methods[1]
502
- assert_equal('Integer#times', method.full_name)
503
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
504
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
505
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
506
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
507
-
508
- method = methods[2]
509
- assert_equal('RubyProf::C1#busy_wait', method.full_name)
510
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
511
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
512
- assert_in_delta(0.09, method.self_time, 0.05 * delta_multiplier)
513
- assert_in_delta(0.11, method.children_time, 0.05 * delta_multiplier)
514
-
515
- method = methods[3]
516
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
517
- assert_in_delta(0.033, method.total_time, 0.05 * delta_multiplier)
518
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
519
- assert_in_delta(0.033, method.self_time, 0.05 * delta_multiplier)
520
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
521
-
522
- method = methods[4]
523
- assert_includes(['Float#<', 'Float#-'], method.full_name)
524
- assert_in_delta(0.03, method.total_time, 0.03)
525
- assert_in_delta(0.03, method.wait_time, 0.03)
526
- assert_in_delta(0.03, method.self_time, 0.03)
527
- assert_in_delta(0.03, method.children_time, 0.03)
528
-
529
- method = methods[5]
530
- assert_includes(['Float#<', 'Float#-'], method.full_name)
531
- assert_in_delta(0.03, method.total_time, 0.03)
532
- assert_in_delta(0.03, method.wait_time, 0.03)
533
- assert_in_delta(0.03, method.self_time, 0.03)
534
- assert_in_delta(0.03, method.children_time, 0.03)
535
-
536
- method = methods[6]
537
- assert_equal('Class#new', method.full_name)
538
- assert_in_delta(0.0, method.total_time, 0.01)
539
- assert_in_delta(0.0, method.wait_time, 0.01)
540
- assert_in_delta(0.0, method.self_time, 0.01)
541
- assert_in_delta(0.0, method.children_time, 0.01)
542
-
543
- method = methods[7]
544
- assert_equal('BasicObject#initialize', method.full_name)
545
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
546
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
547
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
548
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
549
- end
550
-
551
- def test_instance_methods_busy_threaded
552
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
553
- background_thread = Thread.new do
554
- RubyProf::C1.new.busy_wait
555
- end
556
- background_thread.join
557
- end
558
-
559
- assert_equal(2, result.threads.count)
560
-
561
- thread = result.threads.first
562
- assert_in_delta(0.2, thread.total_time, 0.05 * delta_multiplier)
563
-
564
- methods = thread.methods.sort.reverse
565
- assert_equal(4, methods.length)
566
-
567
- # Check times
568
- method = methods[0]
569
- assert_equal('MeasureProcessTimeTest#test_instance_methods_busy_threaded', method.full_name)
570
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
571
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
572
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
573
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
574
-
575
- method = methods[1]
576
- assert_equal('Thread#join', method.full_name)
577
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
578
- assert_in_delta(0.2, method.wait_time, 0.05 * delta_multiplier)
579
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
580
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
581
-
582
- method = methods[2]
583
- assert_equal('<Class::Thread>#new', method.full_name)
584
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
585
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
586
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
587
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
588
-
589
- method = methods[3]
590
- assert_equal('Thread#initialize', method.full_name)
591
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
592
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
593
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
594
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
595
-
596
- thread = result.threads.last
597
- assert_in_delta(0.2, thread.total_time, 0.05 * delta_multiplier)
598
-
599
- methods = thread.methods.sort.reverse
600
- assert_equal(7, methods.length)
601
-
602
- # Check times
603
- method = methods[0]
604
- assert_equal('MeasureProcessTimeTest#test_instance_methods_busy_threaded', method.full_name)
605
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
606
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
607
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
608
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
609
-
610
- method = methods[1]
611
- assert_equal('RubyProf::C1#busy_wait', method.full_name)
612
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
613
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
614
- assert_in_delta(0.1, method.self_time, 0.05 * delta_multiplier)
615
- assert_in_delta(0.1, method.children_time, 0.05 * delta_multiplier)
616
-
617
- method = methods[2]
618
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
619
- assert_in_delta(0.03, method.total_time, 0.05 * delta_multiplier)
620
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
621
- assert_in_delta(0.03, method.self_time, 0.05 * delta_multiplier)
622
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
623
-
624
- method = methods[3]
625
- assert_includes(['Float#<', 'Float#-'], method.full_name)
626
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
627
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
628
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
629
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
630
-
631
- method = methods[4]
632
- assert_includes(['Float#<', 'Float#-'], method.full_name)
633
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
634
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
635
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
636
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
637
-
638
- method = methods[5]
639
- assert_equal('Class#new', method.full_name)
640
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
641
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
642
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
643
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
644
-
645
- method = methods[6]
646
- assert_equal('BasicObject#initialize', method.full_name)
647
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
648
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
649
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
650
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
651
- end
652
-
653
- def test_module_methods_sleep
654
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
655
- RubyProf::C2.sleep_wait
656
- end
657
-
658
- thread = result.threads.first
659
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
660
-
661
- methods = thread.methods.sort.reverse
662
- assert_equal(3, methods.length)
663
-
664
- # Check times
665
- method = methods[0]
666
- assert_equal('MeasureProcessTimeTest#test_module_methods_sleep', method.full_name)
667
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
668
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
669
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
670
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
671
-
672
- method = methods[1]
673
- assert_equal('RubyProf::M1#sleep_wait', method.full_name)
674
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
675
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
676
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
677
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
678
-
679
- method = methods[2]
680
- assert_equal('Kernel#sleep', method.full_name)
681
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
682
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
683
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
684
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
685
- end
686
-
687
- def test_module_methods_busy
688
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
689
- RubyProf::C2.busy_wait
690
- end
691
-
692
- thread = result.threads.first
693
- assert_in_delta(0.3, thread.total_time, 0.05 * delta_multiplier)
694
-
695
- methods = thread.methods.sort.reverse
696
- assert_equal(5, methods.length)
697
-
698
- # Check times
699
- method = methods[0]
700
- assert_equal('MeasureProcessTimeTest#test_module_methods_busy', method.full_name)
701
- assert_in_delta(0.3, method.total_time, 0.05 * delta_multiplier)
702
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
703
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
704
- assert_in_delta(0.3, method.children_time, 0.05 * delta_multiplier)
705
-
706
- method = methods[1]
707
- assert_equal('RubyProf::M1#busy_wait', method.full_name)
708
- assert_in_delta(0.3, method.total_time, 0.05 * delta_multiplier)
709
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
710
- assert_in_delta(0.15, method.self_time, 0.05 * delta_multiplier)
711
- assert_in_delta(0.15, method.children_time, 0.05 * delta_multiplier)
712
-
713
- method = methods[2]
714
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
715
- assert_in_delta(0.05, method.total_time, 0.05 * delta_multiplier)
716
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
717
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
718
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
719
- end
720
-
721
- def test_module_instance_methods_sleep
722
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
723
- RubyProf::C2.new.sleep_wait
724
- end
725
-
726
- thread = result.threads.first
727
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
728
-
729
- methods = thread.methods.sort.reverse
730
- assert_equal(5, methods.length)
731
-
732
- # Check times
733
- method = methods[0]
734
- assert_equal('MeasureProcessTimeTest#test_module_instance_methods_sleep', method.full_name)
735
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
736
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
737
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
738
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
739
-
740
- method = methods[1]
741
- assert_equal('RubyProf::M1#sleep_wait', method.full_name)
742
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
743
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
744
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
745
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
746
-
747
- method = methods[2]
748
- assert_equal('Class#new', method.full_name)
749
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
750
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
751
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
752
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
753
-
754
- method = methods[3]
755
- assert_equal('Kernel#sleep', method.full_name)
756
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
757
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
758
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
759
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
760
-
761
- method = methods[4]
762
- assert_equal('BasicObject#initialize', method.full_name)
763
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
764
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
765
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
766
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
767
- end
768
-
769
- def test_module_instance_methods_busy
770
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
771
- RubyProf::C2.new.busy_wait
772
- end
773
-
774
- thread = result.threads.first
775
- assert_in_delta(0.3, thread.total_time, 0.05 * delta_multiplier)
776
-
777
- methods = thread.methods.sort.reverse
778
- assert_equal(7, methods.length)
779
-
780
- # Check times
781
- method = methods[0]
782
- assert_equal('MeasureProcessTimeTest#test_module_instance_methods_busy', method.full_name)
783
- assert_in_delta(0.3, method.total_time, 0.05 * delta_multiplier)
784
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
785
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
786
- assert_in_delta(0.3, method.children_time, 0.05 * delta_multiplier)
787
-
788
- method = methods[1]
789
- assert_equal('RubyProf::M1#busy_wait', method.full_name)
790
- assert_in_delta(0.3, method.total_time, 0.05 * delta_multiplier)
791
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
792
- assert_in_delta(0.15, method.self_time, 0.05 * delta_multiplier)
793
- assert_in_delta(0.15, method.children_time, 0.05 * delta_multiplier)
794
-
795
- method = methods[2]
796
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
797
- assert_in_delta(0.05, method.total_time, 0.05 * delta_multiplier)
798
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
799
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
800
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
801
-
802
- method = methods[3]
803
- assert_includes(['Float#<', 'Float#-'], method.full_name)
804
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
805
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
806
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
807
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
808
-
809
- method = methods[4]
810
- assert_includes(['Float#<', 'Float#-'], method.full_name)
811
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
812
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
813
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
814
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
815
-
816
- method = methods[5]
817
- assert_equal('Class#new', method.full_name)
818
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
819
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
820
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
821
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
822
-
823
- method = methods[6]
824
- assert_equal('BasicObject#initialize', method.full_name)
825
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
826
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
827
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
828
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
829
- end
830
- elsif Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.4')
831
- def test_class_methods_sleep
832
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
833
- RubyProf::C1.sleep_wait
834
- end
835
-
836
- thread = result.threads.first
837
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
838
-
839
- methods = thread.methods.sort.reverse
840
- assert_equal(3, methods.length)
841
-
842
- # Check times
843
- method = methods[0]
844
- assert_equal('MeasureProcessTimeTest#test_class_methods_sleep', method.full_name)
845
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
846
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
847
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
848
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
849
-
850
- method = methods[1]
851
- assert_equal('<Class::RubyProf::C1>#sleep_wait', method.full_name)
852
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
853
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
854
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
855
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
856
-
857
- method = methods[2]
858
- assert_equal('Kernel#sleep', method.full_name)
859
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
860
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
861
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
862
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
863
- end
864
-
865
- def test_class_methods_sleep_threaded
866
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
867
- background_thread = Thread.new do
868
- RubyProf::C1.sleep_wait
869
- end
870
- background_thread.join
871
- end
872
-
873
- assert_equal(2, result.threads.count)
874
-
875
- thread = result.threads.first
876
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
877
- methods = thread.methods.sort.reverse
878
- assert_equal(4, methods.length)
879
-
880
- # Check times
881
- method = methods[0]
882
- assert_equal('MeasureProcessTimeTest#test_class_methods_sleep_threaded', method.full_name)
883
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
884
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
885
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
886
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
887
-
888
- method = methods[1]
889
- assert(['Thread#join', '<Class::Thread>#new'].include?(method.full_name))
890
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
891
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
892
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
893
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
894
-
895
- method = methods[2]
896
- assert(['Thread#join', '<Class::Thread>#new'].include?(method.full_name))
897
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
898
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
899
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
900
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
901
-
902
- method = methods[3]
903
- assert_equal('Thread#initialize', method.full_name)
904
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
905
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
906
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
907
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
908
-
909
- thread = result.threads.last
910
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
911
- methods = thread.methods.sort.reverse
912
- assert_equal(3, methods.length)
913
-
914
- # Check times
915
- method = methods[0]
916
- assert_equal('MeasureProcessTimeTest#test_class_methods_sleep_threaded', method.full_name)
917
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
918
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
919
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
920
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
921
-
922
- method = methods[1]
923
- assert_equal('<Class::RubyProf::C1>#sleep_wait', method.full_name)
924
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
925
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
926
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
927
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
928
-
929
- method = methods[2]
930
- assert_equal('Kernel#sleep', method.full_name)
931
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
932
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
933
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
934
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
935
- end
936
-
937
- def test_class_methods_busy
938
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
939
- RubyProf::C1.busy_wait
940
- end
941
-
942
- thread = result.threads.first
943
- assert_in_delta(0.08, thread.total_time, 0.05 * delta_multiplier)
944
-
945
- methods = thread.methods.sort.reverse
946
- assert_equal(5, methods.length)
947
-
948
- # Check times
949
- method = methods[0]
950
- assert_equal('MeasureProcessTimeTest#test_class_methods_busy', method.full_name)
951
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
952
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
953
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
954
- assert_in_delta(0.1, method.children_time, 0.05 * delta_multiplier)
955
-
956
- method = methods[1]
957
- assert_equal('<Class::RubyProf::C1>#busy_wait', method.full_name)
958
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
959
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
960
- assert_in_delta(0.06, method.self_time, 0.05 * delta_multiplier)
961
- assert_in_delta(0.07, method.children_time, 0.05 * delta_multiplier)
962
-
963
- method = methods[2]
964
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
965
- assert_in_delta(0.05, method.total_time, 0.05 * delta_multiplier)
966
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
967
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
968
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
969
- end
970
-
971
- def test_class_methods_busy_threaded
972
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
973
- background_thread = Thread.new do
974
- RubyProf::C1.busy_wait
975
- end
976
- background_thread.join
977
- end
978
-
979
- assert_equal(2, result.threads.count)
980
-
981
- thread = result.threads.first
982
- assert_in_delta(0.1, thread.total_time, 0.05 * delta_multiplier)
983
-
984
- methods = thread.methods.sort.reverse
985
- assert_equal(4, methods.length)
986
-
987
- # Check times
988
- method = methods[0]
989
- assert_equal('MeasureProcessTimeTest#test_class_methods_busy_threaded', method.full_name)
990
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
991
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
992
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
993
- assert_in_delta(0.1, method.children_time, 0.05 * delta_multiplier)
994
-
995
- method = methods[1]
996
- assert_equal('Thread#join', method.full_name)
997
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
998
- assert_in_delta(0.1, method.wait_time, 0.05 * delta_multiplier)
999
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1000
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1001
-
1002
- method = methods[2]
1003
- assert_equal('<Class::Thread>#new', method.full_name)
1004
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1005
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1006
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1007
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1008
-
1009
- method = methods[3]
1010
- assert_equal('Thread#initialize', method.full_name)
1011
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1012
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1013
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1014
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1015
-
1016
- thread = result.threads.last
1017
- assert_in_delta(0.1, thread.total_time, 0.05 * delta_multiplier)
1018
-
1019
- methods = thread.methods.sort.reverse
1020
- assert_equal(5, methods.length)
1021
-
1022
- # Check times
1023
- method = methods[0]
1024
- assert_equal('MeasureProcessTimeTest#test_class_methods_busy_threaded', method.full_name)
1025
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
1026
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1027
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1028
- assert_in_delta(0.1, method.children_time, 0.05 * delta_multiplier)
1029
-
1030
- method = methods[1]
1031
- assert_equal('<Class::RubyProf::C1>#busy_wait', method.full_name)
1032
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
1033
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1034
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
1035
- assert_in_delta(0.05, method.children_time, 0.05 * delta_multiplier)
1036
-
1037
- method = methods[2]
1038
- assert('<Module::Process>#clock_gettime' == method.full_name ||
1039
- 'Float#<' == method.full_name)
1040
- assert_in_delta(0.05, method.total_time, 0.05 * delta_multiplier)
1041
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1042
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
1043
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1044
- end
1045
-
1046
- def test_instance_methods_sleep
1047
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
1048
- RubyProf::C1.new.sleep_wait
1049
- end
1050
-
1051
- thread = result.threads.first
1052
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
1053
-
1054
- methods = thread.methods.sort.reverse
1055
- assert_equal(5, methods.length)
1056
-
1057
- # Check times
1058
- method = methods[0]
1059
- assert_equal('MeasureProcessTimeTest#test_instance_methods_sleep', method.full_name)
1060
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1061
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1062
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1063
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1064
-
1065
- method = methods[1]
1066
- assert_equal('RubyProf::C1#sleep_wait', method.full_name)
1067
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1068
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1069
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1070
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1071
-
1072
- method = methods[2]
1073
- assert_equal('Class#new', method.full_name)
1074
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1075
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1076
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1077
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1078
-
1079
- method = methods[3]
1080
- assert_equal('Kernel#sleep', method.full_name)
1081
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1082
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1083
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1084
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1085
-
1086
- method = methods[4]
1087
- assert_equal('BasicObject#initialize', method.full_name)
1088
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1089
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1090
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1091
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1092
- end
1093
-
1094
- def test_instance_methods_sleep_block
1095
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
1096
- 1.times { RubyProf::C1.new.sleep_wait }
1097
- end
1098
-
1099
- thread = result.threads.first
1100
- methods = thread.methods.sort.reverse
1101
- assert_equal(9, methods.length)
1102
-
1103
- # Check times
1104
- method = methods[0]
1105
- assert_equal("MeasureProcessTimeTest#test_instance_methods_sleep_block", method.full_name)
1106
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1107
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1108
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1109
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1110
-
1111
- method = methods[1]
1112
- assert_equal('Integer#times', method.full_name)
1113
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1114
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1115
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1116
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1117
-
1118
- method = methods[2]
1119
- assert_equal('RubyProf::C1#sleep_wait', method.full_name)
1120
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1121
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1122
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1123
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1124
-
1125
- method = methods[3]
1126
- assert_equal('Kernel#block_given?', method.full_name)
1127
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1128
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1129
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1130
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1131
-
1132
- method = methods[4]
1133
- assert_equal('Integer#succ', method.full_name)
1134
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1135
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1136
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1137
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1138
-
1139
- method = methods[5]
1140
- assert_equal('Integer#<', method.full_name)
1141
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1142
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1143
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1144
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1145
-
1146
- method = methods[6]
1147
- assert_equal('Class#new', method.full_name)
1148
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1149
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1150
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1151
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1152
-
1153
- method = methods[7]
1154
- assert_equal('Kernel#sleep', method.full_name)
1155
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1156
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1157
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1158
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1159
-
1160
- method = methods[8]
1161
- assert_equal('BasicObject#initialize', method.full_name)
1162
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1163
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1164
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1165
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1166
- end
1167
-
1168
- def test_instance_methods_sleep_threaded
1169
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
1170
- background_thread = Thread.new do
1171
- RubyProf::C1.new.sleep_wait
1172
- end
1173
- background_thread.join
1174
- end
1175
-
1176
- assert_equal(2, result.threads.count)
1177
-
1178
- thread = result.threads.first
1179
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
1180
-
1181
- methods = thread.methods.sort.reverse
1182
- assert_equal(4, methods.length)
1183
-
1184
- # Check times
1185
- method = methods[0]
1186
- assert_equal('MeasureProcessTimeTest#test_instance_methods_sleep_threaded', method.full_name)
1187
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1188
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1189
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1190
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1191
-
1192
- method = methods[1]
1193
- assert_equal('Thread#join', method.full_name)
1194
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1195
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1196
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1197
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1198
-
1199
- method = methods[2]
1200
- assert_equal('<Class::Thread>#new', method.full_name)
1201
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1202
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1203
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1204
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1205
-
1206
- method = methods[3]
1207
- assert_equal('Thread#initialize', method.full_name)
1208
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1209
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1210
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1211
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1212
-
1213
- thread = result.threads.last
1214
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
1215
-
1216
- methods = thread.methods.sort.reverse
1217
- assert_equal(5, methods.length)
1218
-
1219
- # Check times
1220
- method = methods[0]
1221
- assert_equal('MeasureProcessTimeTest#test_instance_methods_sleep_threaded', method.full_name)
1222
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1223
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1224
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1225
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1226
-
1227
- method = methods[1]
1228
- assert_equal('RubyProf::C1#sleep_wait', method.full_name)
1229
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1230
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1231
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1232
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1233
-
1234
- method = methods[2]
1235
- assert_equal('Class#new', method.full_name)
1236
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1237
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1238
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1239
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1240
-
1241
- method = methods[3]
1242
- assert_equal('Kernel#sleep', method.full_name)
1243
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1244
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1245
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1246
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1247
-
1248
- method = methods[4]
1249
- assert_equal('BasicObject#initialize', method.full_name)
1250
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1251
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1252
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1253
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1254
- end
1255
-
1256
- def test_instance_methods_busy
1257
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
1258
- RubyProf::C1.new.busy_wait
1259
- end
1260
-
1261
- thread = result.threads.first
1262
- assert_in_delta(0.2, thread.total_time, 0.05 * delta_multiplier)
1263
-
1264
- methods = thread.methods.sort.reverse
1265
- assert_equal(7, methods.length)
1266
-
1267
- # Check times
1268
- method = methods[0]
1269
- assert_equal('MeasureProcessTimeTest#test_instance_methods_busy', method.full_name)
1270
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
1271
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1272
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1273
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
1274
-
1275
- method = methods[1]
1276
- assert_equal('RubyProf::C1#busy_wait', method.full_name)
1277
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
1278
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1279
- assert_in_delta(0.09, method.self_time, 0.05 * delta_multiplier)
1280
- assert_in_delta(0.11, method.children_time, 0.05 * delta_multiplier)
1281
-
1282
- method = methods[2]
1283
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
1284
- assert_in_delta(0.033, method.total_time, 0.05 * delta_multiplier)
1285
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1286
- assert_in_delta(0.033, method.self_time, 0.05 * delta_multiplier)
1287
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1288
-
1289
- method = methods[3]
1290
- assert_includes(['Float#<', 'Float#-'], method.full_name)
1291
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1292
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1293
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1294
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1295
-
1296
- method = methods[4]
1297
- assert_includes(['Float#<', 'Float#-'], method.full_name)
1298
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1299
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1300
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1301
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1302
-
1303
- method = methods[5]
1304
- assert_equal('Class#new', method.full_name)
1305
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1306
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1307
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1308
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1309
-
1310
- method = methods[6]
1311
- assert_equal('BasicObject#initialize', method.full_name)
1312
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1313
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1314
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1315
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1316
- end
1317
-
1318
- def test_instance_methods_busy_block
1319
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
1320
- 1.times { RubyProf::C1.new.busy_wait }
1321
- end
1322
-
1323
- thread = result.threads.first
1324
- methods = thread.methods.sort.reverse
1325
- assert_equal(11, methods.length)
1326
-
1327
- # Check times
1328
- method = methods[0]
1329
- assert_equal("MeasureProcessTimeTest#test_instance_methods_busy_block", method.full_name)
1330
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
1331
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1332
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1333
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
1334
-
1335
- method = methods[1]
1336
- assert_equal('Integer#times', method.full_name)
1337
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
1338
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1339
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1340
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
1341
-
1342
- method = methods[2]
1343
- assert_equal('RubyProf::C1#busy_wait', method.full_name)
1344
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
1345
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1346
- assert_in_delta(0.09, method.self_time, 0.05 * delta_multiplier)
1347
- assert_in_delta(0.11, method.children_time, 0.05 * delta_multiplier)
1348
-
1349
- method = methods[3]
1350
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
1351
- assert_in_delta(0.033, method.total_time, 0.05 * delta_multiplier)
1352
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1353
- assert_in_delta(0.033, method.self_time, 0.05 * delta_multiplier)
1354
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1355
-
1356
- method = methods[4]
1357
- assert_includes(['Float#<', 'Float#-'], method.full_name)
1358
- assert_in_delta(0.03, method.total_time, 0.03)
1359
- assert_in_delta(0.03, method.wait_time, 0.03)
1360
- assert_in_delta(0.03, method.self_time, 0.03)
1361
- assert_in_delta(0.03, method.children_time, 0.03)
1362
-
1363
- method = methods[5]
1364
- assert_includes(['Float#<', 'Float#-'], method.full_name)
1365
- assert_in_delta(0.03, method.total_time, 0.03)
1366
- assert_in_delta(0.03, method.wait_time, 0.03)
1367
- assert_in_delta(0.03, method.self_time, 0.03)
1368
- assert_in_delta(0.03, method.children_time, 0.03)
1369
-
1370
- method = methods[6]
1371
- assert_equal('Kernel#block_given?', method.full_name)
1372
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1373
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1374
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1375
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1376
-
1377
- method = methods[7]
1378
- assert_equal('Integer#succ', method.full_name)
1379
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1380
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1381
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1382
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1383
-
1384
- method = methods[8]
1385
- assert_equal('Integer#<', method.full_name)
1386
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1387
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1388
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1389
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1390
-
1391
- method = methods[9]
1392
- assert_equal('Class#new', method.full_name)
1393
- assert_in_delta(0.0, method.total_time, 0.01)
1394
- assert_in_delta(0.0, method.wait_time, 0.01)
1395
- assert_in_delta(0.0, method.self_time, 0.01)
1396
- assert_in_delta(0.0, method.children_time, 0.01)
1397
-
1398
- method = methods[10]
1399
- assert_equal('BasicObject#initialize', method.full_name)
1400
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1401
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1402
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1403
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1404
- end
1405
-
1406
- def test_instance_methods_busy_threaded
1407
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
1408
- background_thread = Thread.new do
1409
- RubyProf::C1.new.busy_wait
1410
- end
1411
- background_thread.join
1412
- end
1413
-
1414
- assert_equal(2, result.threads.count)
1415
-
1416
- thread = result.threads.first
1417
- assert_in_delta(0.2, thread.total_time, 0.05 * delta_multiplier)
1418
-
1419
- methods = thread.methods.sort.reverse
1420
- assert_equal(4, methods.length)
1421
-
1422
- # Check times
1423
- method = methods[0]
1424
- assert_equal('MeasureProcessTimeTest#test_instance_methods_busy_threaded', method.full_name)
1425
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
1426
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1427
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1428
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
1429
-
1430
- method = methods[1]
1431
- assert_equal('Thread#join', method.full_name)
1432
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
1433
- assert_in_delta(0.2, method.wait_time, 0.05 * delta_multiplier)
1434
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1435
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1436
-
1437
- method = methods[2]
1438
- assert_equal('<Class::Thread>#new', method.full_name)
1439
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1440
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1441
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1442
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1443
-
1444
- method = methods[3]
1445
- assert_equal('Thread#initialize', method.full_name)
1446
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1447
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1448
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1449
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1450
-
1451
- thread = result.threads.last
1452
- assert_in_delta(0.2, thread.total_time, 0.05 * delta_multiplier)
1453
-
1454
- methods = thread.methods.sort.reverse
1455
- assert_equal(7, methods.length)
1456
-
1457
- # Check times
1458
- method = methods[0]
1459
- assert_equal('MeasureProcessTimeTest#test_instance_methods_busy_threaded', method.full_name)
1460
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
1461
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1462
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1463
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
1464
-
1465
- method = methods[1]
1466
- assert_equal('RubyProf::C1#busy_wait', method.full_name)
1467
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
1468
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1469
- assert_in_delta(0.1, method.self_time, 0.05 * delta_multiplier)
1470
- assert_in_delta(0.1, method.children_time, 0.05 * delta_multiplier)
1471
-
1472
- method = methods[2]
1473
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
1474
- assert_in_delta(0.03, method.total_time, 0.05 * delta_multiplier)
1475
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1476
- assert_in_delta(0.03, method.self_time, 0.05 * delta_multiplier)
1477
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1478
-
1479
- method = methods[3]
1480
- assert_includes(['Float#<', 'Float#-'], method.full_name)
1481
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1482
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1483
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1484
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1485
-
1486
- method = methods[4]
1487
- assert_includes(['Float#<', 'Float#-'], method.full_name)
1488
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1489
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1490
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1491
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1492
-
1493
- method = methods[5]
1494
- assert_equal('Class#new', method.full_name)
1495
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1496
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1497
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1498
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1499
-
1500
- method = methods[6]
1501
- assert_equal('BasicObject#initialize', method.full_name)
1502
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1503
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1504
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1505
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1506
- end
1507
-
1508
- def test_module_methods_sleep
1509
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
1510
- RubyProf::C2.sleep_wait
1511
- end
1512
-
1513
- thread = result.threads.first
1514
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
1515
-
1516
- methods = thread.methods.sort.reverse
1517
- assert_equal(3, methods.length)
1518
-
1519
- # Check times
1520
- method = methods[0]
1521
- assert_equal('MeasureProcessTimeTest#test_module_methods_sleep', method.full_name)
1522
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1523
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1524
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1525
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1526
-
1527
- method = methods[1]
1528
- assert_equal('RubyProf::M1#sleep_wait', method.full_name)
1529
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1530
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1531
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1532
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1533
-
1534
- method = methods[2]
1535
- assert_equal('Kernel#sleep', method.full_name)
1536
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1537
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1538
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1539
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1540
- end
1541
-
1542
- def test_module_methods_busy
1543
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
1544
- RubyProf::C2.busy_wait
1545
- end
1546
-
1547
- thread = result.threads.first
1548
- assert_in_delta(0.3, thread.total_time, 0.05 * delta_multiplier)
1549
-
1550
- methods = thread.methods.sort.reverse
1551
- assert_equal(5, methods.length)
1552
-
1553
- # Check times
1554
- method = methods[0]
1555
- assert_equal('MeasureProcessTimeTest#test_module_methods_busy', method.full_name)
1556
- assert_in_delta(0.3, method.total_time, 0.05 * delta_multiplier)
1557
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1558
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1559
- assert_in_delta(0.3, method.children_time, 0.05 * delta_multiplier)
1560
-
1561
- method = methods[1]
1562
- assert_equal('RubyProf::M1#busy_wait', method.full_name)
1563
- assert_in_delta(0.3, method.total_time, 0.05 * delta_multiplier)
1564
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1565
- assert_in_delta(0.15, method.self_time, 0.05 * delta_multiplier)
1566
- assert_in_delta(0.15, method.children_time, 0.05 * delta_multiplier)
1567
-
1568
- method = methods[2]
1569
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
1570
- assert_in_delta(0.05, method.total_time, 0.05 * delta_multiplier)
1571
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1572
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
1573
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1574
- end
1575
-
1576
- def test_module_instance_methods_sleep
1577
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
1578
- RubyProf::C2.new.sleep_wait
1579
- end
1580
-
1581
- thread = result.threads.first
1582
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
1583
-
1584
- methods = thread.methods.sort.reverse
1585
- assert_equal(5, methods.length)
1586
-
1587
- # Check times
1588
- method = methods[0]
1589
- assert_equal('MeasureProcessTimeTest#test_module_instance_methods_sleep', method.full_name)
1590
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1591
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1592
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1593
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1594
-
1595
- method = methods[1]
1596
- assert_equal('RubyProf::M1#sleep_wait', method.full_name)
1597
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1598
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1599
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1600
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1601
-
1602
- method = methods[2]
1603
- assert_equal('Class#new', method.full_name)
1604
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1605
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1606
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1607
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1608
-
1609
- method = methods[3]
1610
- assert_equal('Kernel#sleep', method.full_name)
1611
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1612
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1613
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1614
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1615
-
1616
- method = methods[4]
1617
- assert_equal('BasicObject#initialize', method.full_name)
1618
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1619
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1620
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1621
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1622
- end
1623
-
1624
- def test_module_instance_methods_busy
1625
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
1626
- RubyProf::C2.new.busy_wait
1627
- end
1628
-
1629
- thread = result.threads.first
1630
- assert_in_delta(0.3, thread.total_time, 0.05 * delta_multiplier)
1631
-
1632
- methods = thread.methods.sort.reverse
1633
- assert_equal(7, methods.length)
1634
-
1635
- # Check times
1636
- method = methods[0]
1637
- assert_equal('MeasureProcessTimeTest#test_module_instance_methods_busy', method.full_name)
1638
- assert_in_delta(0.3, method.total_time, 0.05 * delta_multiplier)
1639
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1640
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1641
- assert_in_delta(0.3, method.children_time, 0.05 * delta_multiplier)
1642
-
1643
- method = methods[1]
1644
- assert_equal('RubyProf::M1#busy_wait', method.full_name)
1645
- assert_in_delta(0.3, method.total_time, 0.05 * delta_multiplier)
1646
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1647
- assert_in_delta(0.15, method.self_time, 0.05 * delta_multiplier)
1648
- assert_in_delta(0.15, method.children_time, 0.05 * delta_multiplier)
1649
-
1650
- method = methods[2]
1651
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
1652
- assert_in_delta(0.05, method.total_time, 0.05 * delta_multiplier)
1653
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1654
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
1655
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1656
-
1657
- method = methods[3]
1658
- assert_includes(['Float#<', 'Float#-'], method.full_name)
1659
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1660
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1661
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1662
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1663
-
1664
- method = methods[4]
1665
- assert_includes(['Float#<', 'Float#-'], method.full_name)
1666
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1667
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1668
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1669
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1670
-
1671
- method = methods[5]
1672
- assert_equal('Class#new', method.full_name)
1673
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1674
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1675
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1676
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1677
-
1678
- method = methods[6]
1679
- assert_equal('BasicObject#initialize', method.full_name)
1680
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1681
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1682
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1683
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1684
- end
1685
- elsif Gem::Version.new(RUBY_VERSION) < Gem::Version.new('4.0')
1686
- def test_class_methods_sleep
1687
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
1688
- RubyProf::C1.sleep_wait
1689
- end
1690
-
1691
- thread = result.threads.first
1692
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
1693
-
1694
- methods = thread.methods.sort.reverse
1695
- assert_equal(3, methods.length)
1696
-
1697
- # Check times
1698
- method = methods[0]
1699
- assert_equal('MeasureProcessTimeTest#test_class_methods_sleep', method.full_name)
1700
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1701
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1702
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1703
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1704
-
1705
- method = methods[1]
1706
- assert_equal('<Class::RubyProf::C1>#sleep_wait', method.full_name)
1707
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1708
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1709
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1710
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1711
-
1712
- method = methods[2]
1713
- assert_equal('Kernel#sleep', method.full_name)
1714
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1715
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1716
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1717
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1718
- end
1719
-
1720
- def test_class_methods_sleep_threaded
1721
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
1722
- background_thread = Thread.new do
1723
- RubyProf::C1.sleep_wait
1724
- end
1725
- background_thread.join
1726
- end
1727
-
1728
- assert_equal(2, result.threads.count)
1729
-
1730
- thread = result.threads.first
1731
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
1732
-
1733
- methods = thread.methods.sort.reverse
1734
- assert_equal(4, methods.length)
1735
-
1736
- # Check times
1737
- method = methods[0]
1738
- assert_equal('MeasureProcessTimeTest#test_class_methods_sleep_threaded', method.full_name)
1739
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1740
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1741
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1742
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1743
-
1744
- method = methods[1]
1745
- assert_equal('Thread#join', method.full_name)
1746
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1747
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1748
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1749
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1750
-
1751
- method = methods[2]
1752
- assert_equal('<Class::Thread>#new', method.full_name)
1753
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1754
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1755
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1756
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1757
-
1758
- method = methods[3]
1759
- assert_equal('Thread#initialize', method.full_name)
1760
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1761
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1762
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1763
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1764
-
1765
- thread = result.threads.last
1766
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
1767
-
1768
- methods = thread.methods.sort.reverse
1769
- assert_equal(3, methods.length)
1770
-
1771
- # Check times
1772
- method = methods[0]
1773
- assert_equal('MeasureProcessTimeTest#test_class_methods_sleep_threaded', method.full_name)
1774
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1775
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1776
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1777
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1778
-
1779
- method = methods[1]
1780
- assert_equal('<Class::RubyProf::C1>#sleep_wait', method.full_name)
1781
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1782
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1783
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1784
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1785
-
1786
- method = methods[2]
1787
- assert_equal('Kernel#sleep', method.full_name)
1788
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1789
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1790
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1791
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1792
- end
1793
-
1794
- def test_class_methods_busy
1795
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
1796
- RubyProf::C1.busy_wait
1797
- end
1798
-
1799
- thread = result.threads.first
1800
- assert_in_delta(0.08, thread.total_time, 0.05 * delta_multiplier)
1801
-
1802
- methods = thread.methods.sort.reverse
1803
- assert_equal(5, methods.length)
1804
-
1805
- # Check times
1806
- method = methods[0]
1807
- assert_equal('MeasureProcessTimeTest#test_class_methods_busy', method.full_name)
1808
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
1809
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1810
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1811
- assert_in_delta(0.1, method.children_time, 0.05 * delta_multiplier)
1812
-
1813
- method = methods[1]
1814
- assert_equal('<Class::RubyProf::C1>#busy_wait', method.full_name)
1815
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
1816
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1817
- assert_in_delta(0.06, method.self_time, 0.05 * delta_multiplier)
1818
- assert_in_delta(0.07, method.children_time, 0.05 * delta_multiplier)
1819
-
1820
- method = methods[2]
1821
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
1822
- assert_in_delta(0.05, method.total_time, 0.05 * delta_multiplier)
1823
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1824
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
1825
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1826
- end
1827
-
1828
- def test_class_methods_busy_threaded
1829
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
1830
- background_thread = Thread.new do
1831
- RubyProf::C1.busy_wait
1832
- end
1833
- background_thread.join
1834
- end
1835
-
1836
- assert_equal(2, result.threads.count)
1837
-
1838
- thread = result.threads.first
1839
- assert_in_delta(0.1, thread.total_time, 0.05 * delta_multiplier)
1840
-
1841
- methods = thread.methods.sort.reverse
1842
- assert_equal(4, methods.length)
1843
-
1844
- # Check times
1845
- method = methods[0]
1846
- assert_equal('MeasureProcessTimeTest#test_class_methods_busy_threaded', method.full_name)
1847
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
1848
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1849
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1850
- assert_in_delta(0.1, method.children_time, 0.05 * delta_multiplier)
1851
-
1852
- method = methods[1]
1853
- assert_equal('Thread#join', method.full_name)
1854
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
1855
- assert_in_delta(0.1, method.wait_time, 0.05 * delta_multiplier)
1856
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1857
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1858
-
1859
- method = methods[2]
1860
- assert_equal('<Class::Thread>#new', method.full_name)
1861
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1862
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1863
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1864
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1865
-
1866
- method = methods[3]
1867
- assert_equal('Thread#initialize', method.full_name)
1868
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1869
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1870
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1871
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1872
-
1873
- thread = result.threads.last
1874
- assert_in_delta(0.1, thread.total_time, 0.05 * delta_multiplier)
1875
-
1876
- methods = thread.methods.sort.reverse
1877
- assert_equal(5, methods.length)
1878
-
1879
- # Check times
1880
- method = methods[0]
1881
- assert_equal('MeasureProcessTimeTest#test_class_methods_busy_threaded', method.full_name)
1882
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
1883
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1884
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1885
- assert_in_delta(0.1, method.children_time, 0.05 * delta_multiplier)
1886
-
1887
- method = methods[1]
1888
- assert_equal('<Class::RubyProf::C1>#busy_wait', method.full_name)
1889
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
1890
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1891
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
1892
- assert_in_delta(0.05, method.children_time, 0.05 * delta_multiplier)
1893
-
1894
- method = methods[2]
1895
- assert('<Module::Process>#clock_gettime' == method.full_name ||
1896
- 'Float#<' == method.full_name)
1897
- assert_in_delta(0.05, method.total_time, 0.05 * delta_multiplier)
1898
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1899
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
1900
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1901
- end
1902
-
1903
- def test_instance_methods_sleep
1904
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
1905
- RubyProf::C1.new.sleep_wait
1906
- end
1907
-
1908
- thread = result.threads.first
1909
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
1910
-
1911
- methods = thread.methods.sort.reverse
1912
- assert_equal(5, methods.length)
1913
-
1914
- # Check times
1915
- method = methods[0]
1916
- assert_equal('MeasureProcessTimeTest#test_instance_methods_sleep', method.full_name)
1917
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1918
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1919
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1920
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1921
-
1922
- method = methods[1]
1923
- assert_equal('RubyProf::C1#sleep_wait', method.full_name)
1924
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1925
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1926
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1927
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1928
-
1929
- method = methods[2]
1930
- assert_equal('Class#new', method.full_name)
1931
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1932
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1933
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1934
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1935
-
1936
- method = methods[3]
1937
- assert_equal('Kernel#sleep', method.full_name)
1938
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1939
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1940
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1941
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1942
-
1943
- method = methods[4]
1944
- assert_equal('BasicObject#initialize', method.full_name)
1945
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1946
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1947
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1948
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1949
- end
1950
-
1951
- def test_instance_methods_sleep_block
1952
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
1953
- 1.times { RubyProf::C1.new.sleep_wait }
1954
- end
1955
-
1956
- thread = result.threads.first
1957
- methods = thread.methods.sort.reverse
1958
- assert_equal(8, methods.length)
1959
-
1960
- # Check times
1961
- method = methods[0]
1962
- assert_equal("MeasureProcessTimeTest#test_instance_methods_sleep_block", method.full_name)
1963
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1964
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1965
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1966
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1967
-
1968
- method = methods[1]
1969
- assert_equal('Integer#times', method.full_name)
1970
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1971
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1972
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1973
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1974
-
1975
- method = methods[2]
1976
- assert_equal('RubyProf::C1#sleep_wait', method.full_name)
1977
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1978
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1979
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1980
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1981
-
1982
- method = methods[3]
1983
- assert_equal('Integer#succ', method.full_name)
1984
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1985
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1986
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1987
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1988
-
1989
- method = methods[4]
1990
- assert_equal('Integer#<', method.full_name)
1991
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1992
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
1993
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
1994
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
1995
-
1996
- method = methods[5]
1997
- assert_equal('Class#new', method.full_name)
1998
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
1999
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2000
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2001
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2002
-
2003
- method = methods[6]
2004
- assert_equal('Kernel#sleep', method.full_name)
2005
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2006
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2007
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2008
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2009
-
2010
- method = methods[7]
2011
- assert_equal('BasicObject#initialize', method.full_name)
2012
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2013
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2014
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2015
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2016
- end
2017
-
2018
- def test_instance_methods_sleep_threaded
2019
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
2020
- background_thread = Thread.new do
2021
- RubyProf::C1.new.sleep_wait
2022
- end
2023
- background_thread.join
2024
- end
2025
-
2026
- assert_equal(2, result.threads.count)
2027
-
2028
- thread = result.threads.first
2029
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
2030
-
2031
- methods = thread.methods.sort.reverse
2032
- assert_equal(4, methods.length)
2033
-
2034
- # Check times
2035
- method = methods[0]
2036
- assert_equal('MeasureProcessTimeTest#test_instance_methods_sleep_threaded', method.full_name)
2037
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2038
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2039
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2040
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2041
-
2042
- method = methods[1]
2043
- assert_equal('Thread#join', method.full_name)
2044
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2045
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2046
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2047
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2048
-
2049
- method = methods[2]
2050
- assert_equal('<Class::Thread>#new', method.full_name)
2051
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2052
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2053
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2054
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2055
-
2056
- method = methods[3]
2057
- assert_equal('Thread#initialize', method.full_name)
2058
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2059
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2060
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2061
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2062
-
2063
- thread = result.threads.last
2064
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
2065
-
2066
- methods = thread.methods.sort.reverse
2067
- assert_equal(5, methods.length)
2068
-
2069
- # Check times
2070
- method = methods[0]
2071
- assert_equal('MeasureProcessTimeTest#test_instance_methods_sleep_threaded', method.full_name)
2072
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2073
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2074
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2075
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2076
-
2077
- method = methods[1]
2078
- assert_equal('RubyProf::C1#sleep_wait', method.full_name)
2079
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2080
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2081
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2082
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2083
-
2084
- method = methods[2]
2085
- assert_equal('Class#new', method.full_name)
2086
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2087
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2088
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2089
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2090
-
2091
- method = methods[3]
2092
- assert_equal('Kernel#sleep', method.full_name)
2093
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2094
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2095
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2096
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2097
-
2098
- method = methods[4]
2099
- assert_equal('BasicObject#initialize', method.full_name)
2100
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2101
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2102
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2103
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2104
- end
2105
-
2106
- def test_instance_methods_busy
2107
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
2108
- RubyProf::C1.new.busy_wait
2109
- end
2110
-
2111
- thread = result.threads.first
2112
- assert_in_delta(0.2, thread.total_time, 0.05 * delta_multiplier)
2113
-
2114
- methods = thread.methods.sort.reverse
2115
- assert_equal(7, methods.length)
2116
-
2117
- # Check times
2118
- method = methods[0]
2119
- assert_equal('MeasureProcessTimeTest#test_instance_methods_busy', method.full_name)
2120
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
2121
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2122
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2123
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
2124
-
2125
- method = methods[1]
2126
- assert_equal('RubyProf::C1#busy_wait', method.full_name)
2127
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
2128
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2129
- assert_in_delta(0.09, method.self_time, 0.05 * delta_multiplier)
2130
- assert_in_delta(0.11, method.children_time, 0.05 * delta_multiplier)
2131
-
2132
- method = methods[2]
2133
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
2134
- assert_in_delta(0.033, method.total_time, 0.05 * delta_multiplier)
2135
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2136
- assert_in_delta(0.033, method.self_time, 0.05 * delta_multiplier)
2137
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2138
-
2139
- method = methods[3]
2140
- assert_includes(['Float#<', 'Float#-'], method.full_name)
2141
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2142
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2143
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2144
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2145
-
2146
- method = methods[4]
2147
- assert_includes(['Float#<', 'Float#-'], method.full_name)
2148
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2149
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2150
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2151
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2152
-
2153
- method = methods[5]
2154
- assert_equal('Class#new', method.full_name)
2155
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2156
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2157
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2158
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2159
-
2160
- method = methods[6]
2161
- assert_equal('BasicObject#initialize', method.full_name)
2162
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2163
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2164
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2165
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2166
- end
2167
-
2168
- def test_instance_methods_busy_block
2169
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
2170
- 1.times { RubyProf::C1.new.busy_wait }
2171
- end
2172
-
2173
- thread = result.threads.first
2174
- methods = thread.methods.sort.reverse
2175
- assert_equal(10, methods.length)
2176
-
2177
- # Check times
2178
- method = methods[0]
2179
- assert_equal("MeasureProcessTimeTest#test_instance_methods_busy_block", method.full_name)
2180
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
2181
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2182
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2183
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
2184
-
2185
- method = methods[1]
2186
- assert_equal('Integer#times', method.full_name)
2187
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
2188
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2189
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2190
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
2191
-
2192
- method = methods[2]
2193
- assert_equal('RubyProf::C1#busy_wait', method.full_name)
2194
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
2195
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2196
- assert_in_delta(0.09, method.self_time, 0.05 * delta_multiplier)
2197
- assert_in_delta(0.11, method.children_time, 0.05 * delta_multiplier)
2198
-
2199
- method = methods[3]
2200
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
2201
- assert_in_delta(0.033, method.total_time, 0.05 * delta_multiplier)
2202
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2203
- assert_in_delta(0.033, method.self_time, 0.05 * delta_multiplier)
2204
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2205
-
2206
- method = methods[4]
2207
- assert_includes(['Float#<', 'Float#-'], method.full_name)
2208
- assert_in_delta(0.03, method.total_time, 0.03)
2209
- assert_in_delta(0.03, method.wait_time, 0.03)
2210
- assert_in_delta(0.03, method.self_time, 0.03)
2211
- assert_in_delta(0.03, method.children_time, 0.03)
2212
-
2213
- method = methods[5]
2214
- assert_includes(['Float#<', 'Float#-'], method.full_name)
2215
- assert_in_delta(0.03, method.total_time, 0.03)
2216
- assert_in_delta(0.03, method.wait_time, 0.03)
2217
- assert_in_delta(0.03, method.self_time, 0.03)
2218
- assert_in_delta(0.03, method.children_time, 0.03)
2219
-
2220
- method = methods[6]
2221
- assert_equal('Integer#succ', method.full_name)
2222
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2223
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2224
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2225
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2226
-
2227
- method = methods[7]
2228
- assert_equal('Integer#<', method.full_name)
2229
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2230
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2231
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2232
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2233
-
2234
- method = methods[8]
2235
- assert_equal('Class#new', method.full_name)
2236
- assert_in_delta(0.0, method.total_time, 0.01)
2237
- assert_in_delta(0.0, method.wait_time, 0.01)
2238
- assert_in_delta(0.0, method.self_time, 0.01)
2239
- assert_in_delta(0.0, method.children_time, 0.01)
2240
-
2241
- method = methods[9]
2242
- assert_equal('BasicObject#initialize', method.full_name)
2243
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2244
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2245
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2246
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2247
- end
2248
-
2249
- def test_instance_methods_busy_threaded
2250
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
2251
- background_thread = Thread.new do
2252
- RubyProf::C1.new.busy_wait
2253
- end
2254
- background_thread.join
2255
- end
2256
-
2257
- assert_equal(2, result.threads.count)
2258
-
2259
- thread = result.threads.first
2260
- assert_in_delta(0.2, thread.total_time, 0.05 * delta_multiplier)
2261
-
2262
- methods = thread.methods.sort.reverse
2263
- assert_equal(4, methods.length)
2264
-
2265
- # Check times
2266
- method = methods[0]
2267
- assert_equal('MeasureProcessTimeTest#test_instance_methods_busy_threaded', method.full_name)
2268
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
2269
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2270
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2271
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
2272
-
2273
- method = methods[1]
2274
- assert_equal('Thread#join', method.full_name)
2275
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
2276
- assert_in_delta(0.2, method.wait_time, 0.05 * delta_multiplier)
2277
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2278
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2279
-
2280
- method = methods[2]
2281
- assert_equal('<Class::Thread>#new', method.full_name)
2282
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2283
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2284
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2285
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2286
-
2287
- method = methods[3]
2288
- assert_equal('Thread#initialize', method.full_name)
2289
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2290
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2291
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2292
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2293
-
2294
- thread = result.threads.last
2295
- assert_in_delta(0.2, thread.total_time, 0.05 * delta_multiplier)
2296
-
2297
- methods = thread.methods.sort.reverse
2298
- assert_equal(7, methods.length)
2299
-
2300
- # Check times
2301
- method = methods[0]
2302
- assert_equal('MeasureProcessTimeTest#test_instance_methods_busy_threaded', method.full_name)
2303
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
2304
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2305
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2306
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
2307
-
2308
- method = methods[1]
2309
- assert_equal('RubyProf::C1#busy_wait', method.full_name)
2310
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
2311
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2312
- assert_in_delta(0.1, method.self_time, 0.05 * delta_multiplier)
2313
- assert_in_delta(0.1, method.children_time, 0.05 * delta_multiplier)
2314
-
2315
- method = methods[2]
2316
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
2317
- assert_in_delta(0.03, method.total_time, 0.05 * delta_multiplier)
2318
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2319
- assert_in_delta(0.03, method.self_time, 0.05 * delta_multiplier)
2320
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2321
-
2322
- method = methods[3]
2323
- assert_includes(['Float#<', 'Float#-'], method.full_name)
2324
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2325
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2326
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2327
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2328
-
2329
- method = methods[4]
2330
- assert_includes(['Float#<', 'Float#-'], method.full_name)
2331
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2332
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2333
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2334
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2335
-
2336
- method = methods[5]
2337
- assert_equal('Class#new', method.full_name)
2338
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2339
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2340
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2341
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2342
-
2343
- method = methods[6]
2344
- assert_equal('BasicObject#initialize', method.full_name)
2345
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2346
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2347
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2348
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2349
- end
2350
-
2351
- def test_module_methods_sleep
2352
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
2353
- RubyProf::C2.sleep_wait
2354
- end
2355
-
2356
- thread = result.threads.first
2357
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
2358
-
2359
- methods = thread.methods.sort.reverse
2360
- assert_equal(3, methods.length)
2361
-
2362
- # Check times
2363
- method = methods[0]
2364
- assert_equal('MeasureProcessTimeTest#test_module_methods_sleep', method.full_name)
2365
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2366
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2367
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2368
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2369
-
2370
- method = methods[1]
2371
- assert_equal('RubyProf::M1#sleep_wait', method.full_name)
2372
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2373
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2374
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2375
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2376
-
2377
- method = methods[2]
2378
- assert_equal('Kernel#sleep', method.full_name)
2379
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2380
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2381
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2382
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2383
- end
2384
-
2385
- def test_module_methods_busy
2386
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
2387
- RubyProf::C2.busy_wait
2388
- end
2389
-
2390
- thread = result.threads.first
2391
- assert_in_delta(0.3, thread.total_time, 0.05 * delta_multiplier)
2392
-
2393
- methods = thread.methods.sort.reverse
2394
- assert_equal(5, methods.length)
2395
-
2396
- # Check times
2397
- method = methods[0]
2398
- assert_equal('MeasureProcessTimeTest#test_module_methods_busy', method.full_name)
2399
- assert_in_delta(0.3, method.total_time, 0.05 * delta_multiplier)
2400
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2401
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2402
- assert_in_delta(0.3, method.children_time, 0.05 * delta_multiplier)
2403
-
2404
- method = methods[1]
2405
- assert_equal('RubyProf::M1#busy_wait', method.full_name)
2406
- assert_in_delta(0.3, method.total_time, 0.05 * delta_multiplier)
2407
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2408
- assert_in_delta(0.15, method.self_time, 0.05 * delta_multiplier)
2409
- assert_in_delta(0.15, method.children_time, 0.05 * delta_multiplier)
2410
-
2411
- method = methods[2]
2412
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
2413
- assert_in_delta(0.05, method.total_time, 0.05 * delta_multiplier)
2414
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2415
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
2416
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2417
- end
2418
-
2419
- def test_module_instance_methods_sleep
2420
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
2421
- RubyProf::C2.new.sleep_wait
2422
- end
2423
-
2424
- thread = result.threads.first
2425
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
2426
-
2427
- methods = thread.methods.sort.reverse
2428
- assert_equal(5, methods.length)
2429
-
2430
- # Check times
2431
- method = methods[0]
2432
- assert_equal('MeasureProcessTimeTest#test_module_instance_methods_sleep', method.full_name)
2433
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2434
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2435
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2436
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2437
-
2438
- method = methods[1]
2439
- assert_equal('RubyProf::M1#sleep_wait', method.full_name)
2440
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2441
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2442
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2443
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2444
-
2445
- method = methods[2]
2446
- assert_equal('Class#new', method.full_name)
2447
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2448
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2449
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2450
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2451
-
2452
- method = methods[3]
2453
- assert_equal('Kernel#sleep', method.full_name)
2454
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2455
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2456
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2457
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2458
-
2459
- method = methods[4]
2460
- assert_equal('BasicObject#initialize', method.full_name)
2461
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2462
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2463
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2464
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2465
- end
2466
-
2467
- def test_module_instance_methods_busy
2468
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
2469
- RubyProf::C2.new.busy_wait
2470
- end
2471
-
2472
- thread = result.threads.first
2473
- assert_in_delta(0.3, thread.total_time, 0.05 * delta_multiplier)
2474
-
2475
- methods = thread.methods.sort.reverse
2476
- assert_equal(7, methods.length)
2477
-
2478
- # Check times
2479
- method = methods[0]
2480
- assert_equal('MeasureProcessTimeTest#test_module_instance_methods_busy', method.full_name)
2481
- assert_in_delta(0.3, method.total_time, 0.05 * delta_multiplier)
2482
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2483
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2484
- assert_in_delta(0.3, method.children_time, 0.05 * delta_multiplier)
2485
-
2486
- method = methods[1]
2487
- assert_equal('RubyProf::M1#busy_wait', method.full_name)
2488
- assert_in_delta(0.3, method.total_time, 0.05 * delta_multiplier)
2489
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2490
- assert_in_delta(0.15, method.self_time, 0.05 * delta_multiplier)
2491
- assert_in_delta(0.15, method.children_time, 0.05 * delta_multiplier)
2492
-
2493
- method = methods[2]
2494
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
2495
- assert_in_delta(0.05, method.total_time, 0.05 * delta_multiplier)
2496
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2497
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
2498
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2499
-
2500
- method = methods[3]
2501
- assert_includes(['Float#<', 'Float#-'], method.full_name)
2502
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2503
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2504
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2505
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2506
-
2507
- method = methods[4]
2508
- assert_includes(['Float#<', 'Float#-'], method.full_name)
2509
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2510
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2511
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2512
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2513
-
2514
- method = methods[5]
2515
- assert_equal('Class#new', method.full_name)
2516
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2517
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2518
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2519
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2520
-
2521
- method = methods[6]
2522
- assert_equal('BasicObject#initialize', method.full_name)
2523
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2524
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2525
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2526
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2527
- end
2528
- else
2529
- def test_class_methods_sleep
2530
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
2531
- RubyProf::C1.sleep_wait
2532
- end
2533
-
2534
- thread = result.threads.first
2535
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
2536
-
2537
- methods = thread.methods.sort.reverse
2538
- assert_equal(3, methods.length)
2539
-
2540
- # Check times
2541
- method = methods[0]
2542
- assert_equal('MeasureProcessTimeTest#test_class_methods_sleep', method.full_name)
2543
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2544
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2545
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2546
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2547
-
2548
- method = methods[1]
2549
- assert_equal('<Class::RubyProf::C1>#sleep_wait', method.full_name)
2550
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2551
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2552
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2553
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2554
-
2555
- method = methods[2]
2556
- assert_equal('Kernel#sleep', method.full_name)
2557
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2558
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2559
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2560
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2561
- end
2562
-
2563
- def test_class_methods_sleep_threaded
2564
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
2565
- background_thread = Thread.new do
2566
- RubyProf::C1.sleep_wait
2567
- end
2568
- background_thread.join
2569
- end
2570
-
2571
- assert_equal(2, result.threads.count)
2572
-
2573
- thread = result.threads.first
2574
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
2575
- methods = thread.methods.sort.reverse
2576
- assert_equal(4, methods.length)
2577
-
2578
- # Check times
2579
- method = methods[0]
2580
- assert_equal('MeasureProcessTimeTest#test_class_methods_sleep_threaded', method.full_name)
2581
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2582
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2583
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2584
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2585
-
2586
- method = methods[1]
2587
- assert(['Thread#join', '<Class::Thread>#new'].include?(method.full_name))
2588
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2589
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2590
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2591
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2592
-
2593
- method = methods[2]
2594
- assert(['Thread#join', '<Class::Thread>#new'].include?(method.full_name))
2595
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2596
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2597
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2598
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2599
-
2600
- method = methods[3]
2601
- assert_equal('Thread#initialize', method.full_name)
2602
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2603
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2604
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2605
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2606
-
2607
- thread = result.threads.last
2608
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
2609
-
2610
- methods = thread.methods.sort.reverse
2611
- assert_equal(3, methods.length)
2612
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
2613
-
2614
- # Check times
2615
- method = methods[0]
2616
- assert_equal('MeasureProcessTimeTest#test_class_methods_sleep_threaded', method.full_name)
2617
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2618
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2619
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2620
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2621
-
2622
- method = methods[1]
2623
- assert_equal('<Class::RubyProf::C1>#sleep_wait', method.full_name)
2624
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2625
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2626
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2627
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2628
-
2629
- method = methods[2]
2630
- assert_equal('Kernel#sleep', method.full_name)
2631
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2632
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2633
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2634
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2635
- end
2636
-
2637
- def test_class_methods_busy
2638
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
2639
- RubyProf::C1.busy_wait
2640
- end
2641
-
2642
- thread = result.threads.first
2643
- assert_in_delta(0.08, thread.total_time, 0.05 * delta_multiplier)
2644
-
2645
- methods = thread.methods.sort.reverse
2646
- assert_equal(5, methods.length)
2647
-
2648
- # Check times
2649
- method = methods[0]
2650
- assert_equal('MeasureProcessTimeTest#test_class_methods_busy', method.full_name)
2651
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
2652
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2653
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2654
- assert_in_delta(0.1, method.children_time, 0.05 * delta_multiplier)
2655
-
2656
- method = methods[1]
2657
- assert_equal('<Class::RubyProf::C1>#busy_wait', method.full_name)
2658
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
2659
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2660
- assert_in_delta(0.06, method.self_time, 0.05 * delta_multiplier)
2661
- assert_in_delta(0.07, method.children_time, 0.05 * delta_multiplier)
2662
-
2663
- method = methods[2]
2664
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
2665
- assert_in_delta(0.05, method.total_time, 0.05 * delta_multiplier)
2666
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2667
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
2668
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2669
- end
2670
-
2671
- def test_class_methods_busy_threaded
2672
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
2673
- background_thread = Thread.new do
2674
- RubyProf::C1.busy_wait
2675
- end
2676
- background_thread.join
2677
- end
2678
-
2679
- assert_equal(2, result.threads.count)
2680
-
2681
- thread = result.threads.first
2682
- assert_in_delta(0.1, thread.total_time, 0.05 * delta_multiplier)
2683
-
2684
- methods = thread.methods.sort.reverse
2685
- assert_equal(4, methods.length)
2686
-
2687
- # Check times
2688
- method = methods[0]
2689
- assert_equal('MeasureProcessTimeTest#test_class_methods_busy_threaded', method.full_name)
2690
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
2691
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2692
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2693
- assert_in_delta(0.1, method.children_time, 0.05 * delta_multiplier)
2694
-
2695
- method = methods[1]
2696
- assert_equal('Thread#join', method.full_name)
2697
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
2698
- assert_in_delta(0.1, method.wait_time, 0.05 * delta_multiplier)
2699
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2700
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2701
-
2702
- method = methods[2]
2703
- assert_equal('<Class::Thread>#new', method.full_name)
2704
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2705
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2706
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2707
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2708
-
2709
- method = methods[3]
2710
- assert_equal('Thread#initialize', method.full_name)
2711
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2712
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2713
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2714
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2715
-
2716
- thread = result.threads.last
2717
- assert_in_delta(0.1, thread.total_time, 0.05 * delta_multiplier)
2718
-
2719
- methods = thread.methods.sort.reverse
2720
- assert_equal(5, methods.length)
2721
-
2722
- # Check times
2723
- method = methods[0]
2724
- assert_equal('MeasureProcessTimeTest#test_class_methods_busy_threaded', method.full_name)
2725
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
2726
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2727
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2728
- assert_in_delta(0.1, method.children_time, 0.05 * delta_multiplier)
2729
-
2730
- method = methods[1]
2731
- assert_equal('<Class::RubyProf::C1>#busy_wait', method.full_name)
2732
- assert_in_delta(0.1, method.total_time, 0.05 * delta_multiplier)
2733
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2734
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
2735
- assert_in_delta(0.05, method.children_time, 0.05 * delta_multiplier)
2736
-
2737
- method = methods[2]
2738
- assert('<Module::Process>#clock_gettime' == method.full_name ||
2739
- 'Float#<' == method.full_name)
2740
- assert_in_delta(0.05, method.total_time, 0.05 * delta_multiplier)
2741
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2742
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
2743
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2744
- end
2745
-
2746
- def test_instance_methods_sleep
2747
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
2748
- RubyProf::C1.new.sleep_wait
2749
- end
2750
-
2751
- thread = result.threads.first
2752
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
2753
-
2754
- methods = thread.methods.sort.reverse
2755
- assert_equal(4, methods.length)
2756
-
2757
- # Check times
2758
- method = methods[0]
2759
- assert_equal('MeasureProcessTimeTest#test_instance_methods_sleep', method.full_name)
2760
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2761
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2762
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2763
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2764
-
2765
- method = methods[1]
2766
- assert_equal('RubyProf::C1#sleep_wait', method.full_name)
2767
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2768
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2769
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2770
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2771
-
2772
- method = methods[2]
2773
- assert_equal('BasicObject#initialize', method.full_name)
2774
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2775
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2776
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2777
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2778
-
2779
- method = methods[3]
2780
- assert_equal('Kernel#sleep', method.full_name)
2781
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2782
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2783
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2784
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2785
- end
2786
-
2787
- def test_instance_methods_sleep_block
2788
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
2789
- 1.times { RubyProf::C1.new.sleep_wait }
2790
- end
2791
-
2792
- thread = result.threads.first
2793
- methods = thread.methods.sort.reverse
2794
- assert_equal(7, methods.length)
2795
-
2796
- # Check times
2797
- method = methods[0]
2798
- assert_equal("MeasureProcessTimeTest#test_instance_methods_sleep_block", method.full_name)
2799
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2800
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2801
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2802
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2803
-
2804
- method = methods[1]
2805
- assert_equal('Integer#times', method.full_name)
2806
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2807
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2808
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2809
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2810
-
2811
- method = methods[2]
2812
- assert_equal('RubyProf::C1#sleep_wait', method.full_name)
2813
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2814
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2815
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2816
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2817
-
2818
- method = methods[3]
2819
- assert_equal('Integer#succ', method.full_name)
2820
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2821
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2822
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2823
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2824
-
2825
- method = methods[4]
2826
- assert_equal('Integer#<', method.full_name)
2827
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2828
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2829
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2830
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2831
-
2832
- method = methods[5]
2833
- assert_equal('BasicObject#initialize', method.full_name)
2834
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2835
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2836
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2837
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2838
-
2839
- method = methods[6]
2840
- assert_equal('Kernel#sleep', method.full_name)
2841
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2842
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2843
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2844
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2845
- end
2846
-
2847
- def test_instance_methods_sleep_threaded
2848
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
2849
- background_thread = Thread.new do
2850
- RubyProf::C1.new.sleep_wait
2851
- end
2852
- background_thread.join
2853
- end
2854
-
2855
- printer = RubyProf::MultiPrinter.new(result)
2856
- printer.print
2857
-
2858
- assert_equal(2, result.threads.count)
2859
-
2860
- thread = result.threads.first
2861
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
2862
- methods = thread.methods.sort.reverse
2863
- assert_equal(4, methods.length)
2864
-
2865
- # Check times
2866
- method = methods[0]
2867
- assert_equal('MeasureProcessTimeTest#test_instance_methods_sleep_threaded', method.full_name)
2868
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2869
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2870
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2871
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2872
-
2873
- method = methods[1]
2874
- assert_equal('Thread#join', method.full_name)
2875
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2876
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2877
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2878
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2879
-
2880
- method = methods[2]
2881
- assert(['Thread#join', '<Class::Thread>#new'].include?(method.full_name))
2882
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2883
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2884
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2885
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2886
-
2887
- method = methods[3]
2888
- assert_equal('Thread#initialize', method.full_name)
2889
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2890
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2891
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2892
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2893
-
2894
- thread = result.threads.last
2895
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
2896
- end
2897
-
2898
- def test_instance_methods_busy
2899
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
2900
- RubyProf::C1.new.busy_wait
2901
- end
2902
-
2903
- thread = result.threads.first
2904
- assert_in_delta(0.2, thread.total_time, 0.05 * delta_multiplier)
2905
-
2906
- methods = thread.methods.sort.reverse
2907
- assert_equal(6, methods.length)
2908
-
2909
- # Check times
2910
- method = methods[0]
2911
- assert_equal('MeasureProcessTimeTest#test_instance_methods_busy', method.full_name)
2912
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
2913
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2914
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2915
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
2916
-
2917
- method = methods[1]
2918
- assert_equal('RubyProf::C1#busy_wait', method.full_name)
2919
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
2920
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2921
- assert_in_delta(0.09, method.self_time, 0.05 * delta_multiplier)
2922
- assert_in_delta(0.11, method.children_time, 0.05 * delta_multiplier)
2923
-
2924
- method = methods[2]
2925
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
2926
- assert_in_delta(0.033, method.total_time, 0.05 * delta_multiplier)
2927
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2928
- assert_in_delta(0.033, method.self_time, 0.05 * delta_multiplier)
2929
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2930
-
2931
- method = methods[3]
2932
- assert_includes(['Float#<', 'Float#-'], method.full_name)
2933
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2934
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2935
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2936
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2937
-
2938
- method = methods[4]
2939
- assert_includes(['Float#<', 'Float#-'], method.full_name)
2940
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2941
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2942
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2943
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2944
-
2945
- method = methods[5]
2946
- assert_equal('BasicObject#initialize', method.full_name)
2947
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
2948
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2949
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2950
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2951
- end
2952
-
2953
- def test_instance_methods_busy_block
2954
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
2955
- 1.times { RubyProf::C1.new.busy_wait }
2956
- end
2957
-
2958
- thread = result.threads.first
2959
- methods = thread.methods.sort.reverse
2960
- assert_equal(9, methods.length)
2961
-
2962
- # Check times
2963
- method = methods[0]
2964
- assert_equal("MeasureProcessTimeTest#test_instance_methods_busy_block", method.full_name)
2965
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
2966
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2967
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2968
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
2969
-
2970
- method = methods[1]
2971
- assert_equal('Integer#times', method.full_name)
2972
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
2973
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2974
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
2975
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
2976
-
2977
- method = methods[2]
2978
- assert_equal('RubyProf::C1#busy_wait', method.full_name)
2979
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
2980
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2981
- assert_in_delta(0.09, method.self_time, 0.05 * delta_multiplier)
2982
- assert_in_delta(0.11, method.children_time, 0.05 * delta_multiplier)
2983
-
2984
- method = methods[3]
2985
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
2986
- assert_in_delta(0.033, method.total_time, 0.05 * delta_multiplier)
2987
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
2988
- assert_in_delta(0.033, method.self_time, 0.05 * delta_multiplier)
2989
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
2990
-
2991
- method = methods[4]
2992
- assert_includes(['Float#<', 'Float#-'], method.full_name)
2993
- assert_in_delta(0.03, method.total_time, 0.03)
2994
- assert_in_delta(0.03, method.wait_time, 0.03)
2995
- assert_in_delta(0.03, method.self_time, 0.03)
2996
- assert_in_delta(0.03, method.children_time, 0.03)
2997
-
2998
- method = methods[5]
2999
- assert_includes(['Float#<', 'Float#-'], method.full_name)
3000
- assert_in_delta(0.03, method.total_time, 0.03)
3001
- assert_in_delta(0.03, method.wait_time, 0.03)
3002
- assert_in_delta(0.03, method.self_time, 0.03)
3003
- assert_in_delta(0.03, method.children_time, 0.03)
3004
-
3005
- method = methods[6]
3006
- assert_equal('Integer#succ', method.full_name)
3007
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3008
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3009
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3010
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3011
-
3012
- method = methods[7]
3013
- assert_equal('Integer#<', method.full_name)
3014
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3015
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3016
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3017
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3018
-
3019
- method = methods[8]
3020
- assert_equal('BasicObject#initialize', method.full_name)
3021
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3022
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3023
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3024
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3025
- end
3026
-
3027
- def test_instance_methods_busy_threaded
3028
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
3029
- background_thread = Thread.new do
3030
- RubyProf::C1.new.busy_wait
3031
- end
3032
- background_thread.join
3033
- end
3034
-
3035
- assert_equal(2, result.threads.count)
3036
-
3037
- thread = result.threads.first
3038
- assert_in_delta(0.2, thread.total_time, 0.05 * delta_multiplier)
3039
-
3040
- methods = thread.methods.sort.reverse
3041
- assert_equal(4, methods.length)
3042
-
3043
- # Check times
3044
- method = methods[0]
3045
- assert_equal('MeasureProcessTimeTest#test_instance_methods_busy_threaded', method.full_name)
3046
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
3047
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3048
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3049
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
3050
-
3051
- method = methods[1]
3052
- assert_equal('Thread#join', method.full_name)
3053
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
3054
- assert_in_delta(0.2, method.wait_time, 0.05 * delta_multiplier)
3055
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3056
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3057
-
3058
- method = methods[2]
3059
- assert_equal('<Class::Thread>#new', method.full_name)
3060
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3061
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3062
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3063
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3064
-
3065
- method = methods[3]
3066
- assert_equal('Thread#initialize', method.full_name)
3067
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3068
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3069
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3070
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3071
-
3072
- thread = result.threads.last
3073
- assert_in_delta(0.2, thread.total_time, 0.05 * delta_multiplier)
3074
-
3075
- methods = thread.methods.sort.reverse
3076
- assert_equal(6, methods.length)
3077
-
3078
- # Check times
3079
- method = methods[0]
3080
- assert_equal('MeasureProcessTimeTest#test_instance_methods_busy_threaded', method.full_name)
3081
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
3082
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3083
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3084
- assert_in_delta(0.2, method.children_time, 0.05 * delta_multiplier)
3085
-
3086
- method = methods[1]
3087
- assert_equal('RubyProf::C1#busy_wait', method.full_name)
3088
- assert_in_delta(0.2, method.total_time, 0.05 * delta_multiplier)
3089
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3090
- assert_in_delta(0.1, method.self_time, 0.05 * delta_multiplier)
3091
- assert_in_delta(0.1, method.children_time, 0.05 * delta_multiplier)
3092
-
3093
- method = methods[2]
3094
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
3095
- assert_in_delta(0.03, method.total_time, 0.05 * delta_multiplier)
3096
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3097
- assert_in_delta(0.03, method.self_time, 0.05 * delta_multiplier)
3098
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3099
-
3100
- method = methods[3]
3101
- assert_includes(['Float#<', 'Float#-'], method.full_name)
3102
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3103
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3104
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3105
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3106
-
3107
- method = methods[4]
3108
- assert_includes(['Float#<', 'Float#-'], method.full_name)
3109
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3110
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3111
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3112
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3113
-
3114
- method = methods[5]
3115
- assert_equal('BasicObject#initialize', method.full_name)
3116
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3117
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3118
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3119
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3120
- end
3121
-
3122
- def test_module_methods_sleep
3123
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
3124
- RubyProf::C2.sleep_wait
3125
- end
3126
-
3127
- thread = result.threads.first
3128
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
3129
-
3130
- methods = thread.methods.sort.reverse
3131
- assert_equal(3, methods.length)
3132
-
3133
- # Check times
3134
- method = methods[0]
3135
- assert_equal('MeasureProcessTimeTest#test_module_methods_sleep', method.full_name)
3136
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3137
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3138
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3139
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3140
-
3141
- method = methods[1]
3142
- assert_equal('RubyProf::M1#sleep_wait', method.full_name)
3143
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3144
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3145
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3146
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3147
-
3148
- method = methods[2]
3149
- assert_equal('Kernel#sleep', method.full_name)
3150
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3151
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3152
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3153
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3154
- end
3155
-
3156
- def test_module_methods_busy
3157
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
3158
- RubyProf::C2.busy_wait
3159
- end
3160
-
3161
- thread = result.threads.first
3162
- assert_in_delta(0.3, thread.total_time, 0.05 * delta_multiplier)
3163
-
3164
- methods = thread.methods.sort.reverse
3165
- assert_equal(5, methods.length)
3166
-
3167
- # Check times
3168
- method = methods[0]
3169
- assert_equal('MeasureProcessTimeTest#test_module_methods_busy', method.full_name)
3170
- assert_in_delta(0.3, method.total_time, 0.05 * delta_multiplier)
3171
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3172
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3173
- assert_in_delta(0.3, method.children_time, 0.05 * delta_multiplier)
3174
-
3175
- method = methods[1]
3176
- assert_equal('RubyProf::M1#busy_wait', method.full_name)
3177
- assert_in_delta(0.3, method.total_time, 0.05 * delta_multiplier)
3178
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3179
- assert_in_delta(0.15, method.self_time, 0.05 * delta_multiplier)
3180
- assert_in_delta(0.15, method.children_time, 0.05 * delta_multiplier)
3181
-
3182
- method = methods[2]
3183
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
3184
- assert_in_delta(0.05, method.total_time, 0.05 * delta_multiplier)
3185
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3186
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
3187
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3188
- end
3189
-
3190
- def test_module_instance_methods_sleep
3191
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
3192
- RubyProf::C2.new.sleep_wait
3193
- end
3194
-
3195
- thread = result.threads.first
3196
- assert_in_delta(0.0, thread.total_time, 0.05 * delta_multiplier)
3197
-
3198
- methods = thread.methods.sort.reverse
3199
- assert_equal(4, methods.length)
3200
-
3201
- # Check times
3202
- method = methods[0]
3203
- assert_equal('MeasureProcessTimeTest#test_module_instance_methods_sleep', method.full_name)
3204
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3205
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3206
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3207
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3208
-
3209
- method = methods[1]
3210
- assert_equal('RubyProf::M1#sleep_wait', method.full_name)
3211
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3212
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3213
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3214
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3215
-
3216
- method = methods[2]
3217
- assert_equal('BasicObject#initialize', method.full_name)
3218
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3219
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3220
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3221
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3222
-
3223
- method = methods[3]
3224
- assert_equal('Kernel#sleep', method.full_name)
3225
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3226
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3227
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3228
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3229
- end
3230
-
3231
- def test_module_instance_methods_busy
3232
- result = RubyProf::Profile.profile(measure_mode: RubyProf::PROCESS_TIME) do
3233
- RubyProf::C2.new.busy_wait
3234
- end
3235
-
3236
- thread = result.threads.first
3237
- assert_in_delta(0.3, thread.total_time, 0.05 * delta_multiplier)
3238
-
3239
- methods = thread.methods.sort.reverse
3240
- assert_equal(6, methods.length)
3241
-
3242
- # Check times
3243
- method = methods[0]
3244
- assert_equal('MeasureProcessTimeTest#test_module_instance_methods_busy', method.full_name)
3245
- assert_in_delta(0.3, method.total_time, 0.05 * delta_multiplier)
3246
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3247
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3248
- assert_in_delta(0.3, method.children_time, 0.05 * delta_multiplier)
3249
-
3250
- method = methods[1]
3251
- assert_equal('RubyProf::M1#busy_wait', method.full_name)
3252
- assert_in_delta(0.3, method.total_time, 0.05 * delta_multiplier)
3253
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3254
- assert_in_delta(0.15, method.self_time, 0.05 * delta_multiplier)
3255
- assert_in_delta(0.15, method.children_time, 0.05 * delta_multiplier)
3256
-
3257
- method = methods[2]
3258
- assert_equal('<Module::Process>#clock_gettime', method.full_name)
3259
- assert_in_delta(0.05, method.total_time, 0.05 * delta_multiplier)
3260
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3261
- assert_in_delta(0.05, method.self_time, 0.05 * delta_multiplier)
3262
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3263
-
3264
- method = methods[3]
3265
- assert_includes(['Float#<', 'Float#-'], method.full_name)
3266
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3267
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3268
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3269
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3270
-
3271
- method = methods[4]
3272
- assert_includes(['Float#<', 'Float#-'], method.full_name)
3273
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3274
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3275
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3276
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3277
-
3278
- method = methods[5]
3279
- assert_equal('BasicObject#initialize', method.full_name)
3280
- assert_in_delta(0.0, method.total_time, 0.05 * delta_multiplier)
3281
- assert_in_delta(0.0, method.wait_time, 0.05 * delta_multiplier)
3282
- assert_in_delta(0.0, method.self_time, 0.05 * delta_multiplier)
3283
- assert_in_delta(0.0, method.children_time, 0.05 * delta_multiplier)
3284
- end
3285
- end
3286
- end