ruby-prof 0.12.1 → 0.12.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. data/CHANGES +5 -1
  2. data/Rakefile +25 -7
  3. data/bin/ruby-prof +2 -2
  4. data/doc/LICENSE.html +155 -0
  5. data/doc/README_rdoc.html +640 -0
  6. data/doc/Rack.html +167 -0
  7. data/doc/Rack/RubyProf.html +319 -0
  8. data/doc/RubyProf.html +999 -0
  9. data/doc/RubyProf/AbstractPrinter.html +580 -0
  10. data/doc/RubyProf/AggregateCallInfo.html +570 -0
  11. data/doc/RubyProf/CallInfo.html +512 -0
  12. data/doc/RubyProf/CallInfoPrinter.html +190 -0
  13. data/doc/RubyProf/CallInfoVisitor.html +332 -0
  14. data/doc/RubyProf/CallStackPrinter.html +1597 -0
  15. data/doc/RubyProf/CallTreePrinter.html +413 -0
  16. data/doc/RubyProf/Cmd.html +669 -0
  17. data/doc/RubyProf/DotPrinter.html +312 -0
  18. data/doc/RubyProf/FlatPrinter.html +229 -0
  19. data/doc/RubyProf/FlatPrinterWithLineNumbers.html +267 -0
  20. data/doc/RubyProf/GraphHtmlPrinter.html +622 -0
  21. data/doc/RubyProf/GraphPrinter.html +209 -0
  22. data/doc/RubyProf/MethodInfo.html +713 -0
  23. data/doc/RubyProf/MultiPrinter.html +407 -0
  24. data/doc/RubyProf/Profile.html +821 -0
  25. data/doc/RubyProf/ProfileTask.html +532 -0
  26. data/doc/RubyProf/Test.html +578 -0
  27. data/doc/RubyProf/Thread.html +262 -0
  28. data/doc/created.rid +31 -0
  29. data/doc/examples/flat_txt.html +191 -0
  30. data/doc/examples/graph_txt.html +305 -0
  31. data/doc/images/add.png +0 -0
  32. data/doc/images/brick.png +0 -0
  33. data/doc/images/brick_link.png +0 -0
  34. data/doc/images/bug.png +0 -0
  35. data/doc/images/bullet_black.png +0 -0
  36. data/doc/images/bullet_toggle_minus.png +0 -0
  37. data/doc/images/bullet_toggle_plus.png +0 -0
  38. data/doc/images/date.png +0 -0
  39. data/doc/images/delete.png +0 -0
  40. data/doc/images/find.png +0 -0
  41. data/doc/images/loadingAnimation.gif +0 -0
  42. data/doc/images/macFFBgHack.png +0 -0
  43. data/doc/images/package.png +0 -0
  44. data/doc/images/page_green.png +0 -0
  45. data/doc/images/page_white_text.png +0 -0
  46. data/doc/images/page_white_width.png +0 -0
  47. data/doc/images/plugin.png +0 -0
  48. data/doc/images/ruby.png +0 -0
  49. data/doc/images/tag_blue.png +0 -0
  50. data/doc/images/tag_green.png +0 -0
  51. data/doc/images/transparent.png +0 -0
  52. data/doc/images/wrench.png +0 -0
  53. data/doc/images/wrench_orange.png +0 -0
  54. data/doc/images/zoom.png +0 -0
  55. data/doc/index.html +639 -0
  56. data/doc/js/darkfish.js +153 -0
  57. data/doc/js/jquery.js +18 -0
  58. data/doc/js/navigation.js +142 -0
  59. data/doc/js/search.js +94 -0
  60. data/doc/js/search_index.js +1 -0
  61. data/doc/js/searcher.js +228 -0
  62. data/doc/rdoc.css +543 -0
  63. data/doc/table_of_contents.html +462 -0
  64. data/examples/empty.png +0 -0
  65. data/examples/minus.png +0 -0
  66. data/examples/plus.png +0 -0
  67. data/ext/ruby_prof/extconf.rb +5 -1
  68. data/ext/ruby_prof/rp_call_info.c +1 -1
  69. data/ext/ruby_prof/rp_measure_gc_time.c +6 -10
  70. data/ext/ruby_prof/rp_measure_memory.c +0 -1
  71. data/ext/ruby_prof/rp_stack.c +0 -5
  72. data/ext/ruby_prof/vc/ruby_prof_18.vcxproj +0 -2
  73. data/ext/ruby_prof/vc/ruby_prof_19.vcxproj +1 -3
  74. data/ext/ruby_prof/vc/ruby_prof_20.vcxproj +1 -3
  75. data/ext/ruby_prof/version.h +2 -2
  76. data/lib/ruby-prof/compatibility.rb +8 -3
  77. data/lib/ruby-prof/images/empty.png +0 -0
  78. data/lib/ruby-prof/images/minus.png +0 -0
  79. data/lib/ruby-prof/images/plus.png +0 -0
  80. data/lib/ruby-prof/task.rb +0 -0
  81. data/ruby-prof.gemspec +2 -1
  82. data/test/aggregate_test.rb +0 -0
  83. data/test/basic_test.rb +0 -0
  84. data/test/duplicate_names_test.rb +0 -0
  85. data/test/dynamic_method_test.rb +8 -1
  86. data/test/enumerable_test.rb +0 -0
  87. data/test/exceptions_test.rb +0 -0
  88. data/test/exclude_threads_test.rb +0 -0
  89. data/test/exec_test.rb +0 -0
  90. data/test/line_number_test.rb +0 -0
  91. data/test/measure_gc_runs_test.rb +4 -1
  92. data/test/measure_gc_time_test.rb +10 -3
  93. data/test/measure_memory_test.rb +3 -8
  94. data/test/measure_process_time_test.rb +10 -4
  95. data/test/method_elimination_test.rb +1 -2
  96. data/test/module_test.rb +0 -0
  97. data/test/multi_printer_test.rb +5 -6
  98. data/test/no_method_class_test.rb +0 -0
  99. data/test/pause_resume_test.rb +6 -8
  100. data/test/printers_test.rb +0 -0
  101. data/test/recursive_test.rb +0 -0
  102. data/test/singleton_test.rb +0 -0
  103. data/test/stack_printer_test.rb +8 -5
  104. data/test/stack_test.rb +0 -0
  105. data/test/start_stop_test.rb +0 -0
  106. data/test/test_helper.rb +16 -4
  107. data/test/thread_test.rb +0 -0
  108. data/test/unique_call_path_test.rb +0 -0
  109. metadata +90 -17
data/examples/empty.png CHANGED
File without changes
data/examples/minus.png CHANGED
File without changes
data/examples/plus.png CHANGED
File without changes
@@ -34,6 +34,10 @@ def add_define(name, value = nil)
34
34
  end
35
35
  end
36
36
 
37
+ # if have_func("rb_gc_enable_stats")
38
+ # add_define("TOGGLE_GC_STATS", 1)
39
+ # end
40
+
37
41
  require 'rubygems'
38
42
  unless Gem.win_platform? || RUBY_PLATFORM =~ /darwin/
39
43
  $LDFLAGS += " -lrt" # for clock_gettime
@@ -50,4 +54,4 @@ if RUBY_VERSION > "1.9"
50
54
  add_define("THREADS_INHERIT_EVENT_FLAGS", (threads.size == 2) ? "1" : "0")
51
55
  end
52
56
 
53
- create_makefile("ruby_prof")
57
+ create_makefile("ruby_prof")
@@ -48,7 +48,7 @@ static void
48
48
  prof_call_info_free(prof_call_info_t *call_info)
49
49
  {
50
50
  prof_call_info_ruby_gc_free(call_info);
51
- xfree(call_info->call_infos);
51
+ st_free_table(call_info->call_infos);
52
52
  xfree(call_info);
53
53
  }
54
54
 
@@ -17,16 +17,16 @@ measure_gc_time()
17
17
  {
18
18
  #if defined(HAVE_RB_GC_TIME)
19
19
  #define MEASURE_GC_TIME_ENABLED Qtrue
20
- const int conversion = 1000000;
20
+ const double conversion = 1000000.0;
21
21
  #if HAVE_LONG_LONG
22
- return NUM2LL(rb_gc_time() / conversion);
22
+ return NUM2LL(rb_gc_time()) / conversion;
23
23
  #else
24
- return NUM2LONG(rb_gc_time() / conversion));
24
+ return NUM2LONG(rb_gc_time()) / conversion;
25
25
  #endif
26
26
 
27
27
  #else
28
28
  #define MEASURE_GC_TIME_ENABLED Qfalse
29
- return 0;
29
+ return 0.0;
30
30
  #endif
31
31
  }
32
32
 
@@ -40,15 +40,11 @@ prof_measurer_t* prof_measurer_gc_time()
40
40
  /* call-seq:
41
41
  measure -> float
42
42
 
43
- Returns the number of GC runs.*/
43
+ Returns the time spent performing GC.*/
44
44
  static VALUE
45
45
  prof_measure_gc_time(VALUE self)
46
46
  {
47
- #if defined(HAVE_LONG_LONG)
48
- return ULL2NUM(measure_gc_time());
49
- #else
50
- return ULONG2NUM(measure_gc_time());
51
- #endif
47
+ return rb_float_new(measure_gc_time());
52
48
  }
53
49
 
54
50
  void rp_init_measure_gc_time()
@@ -25,7 +25,6 @@ static double
25
25
  measure_memory()
26
26
  {
27
27
  #if defined(HAVE_RB_GC_ALLOCATED_SIZE)
28
- #define TOGGLE_GC_STATS 1
29
28
  #define MEASURE_MEMORY_ENABLED Qtrue
30
29
  #if defined(HAVE_LONG_LONG)
31
30
  return NUM2LL(rb_gc_allocated_size()) / 1024.0;
@@ -84,11 +84,6 @@ prof_stack_pop(prof_stack_t *stack, double measurement)
84
84
 
85
85
  double total_time;
86
86
  double self_time;
87
- #ifdef _MSC_VER
88
- BOOL frame_paused;
89
- #else
90
- _Bool frame_paused;
91
- #endif
92
87
 
93
88
  /* Frame can be null. This can happen if RubProf.start is called from
94
89
  a method that exits. And it can happen if an exception is raised
@@ -44,14 +44,12 @@
44
44
  <ConfigurationType>DynamicLibrary</ConfigurationType>
45
45
  <UseDebugLibraries>true</UseDebugLibraries>
46
46
  <CharacterSet>Unicode</CharacterSet>
47
- <PlatformToolset>v110</PlatformToolset>
48
47
  </PropertyGroup>
49
48
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
50
49
  <ConfigurationType>DynamicLibrary</ConfigurationType>
51
50
  <UseDebugLibraries>false</UseDebugLibraries>
52
51
  <WholeProgramOptimization>true</WholeProgramOptimization>
53
52
  <CharacterSet>Unicode</CharacterSet>
54
- <PlatformToolset>v110</PlatformToolset>
55
53
  </PropertyGroup>
56
54
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
57
55
  <ImportGroup Label="ExtensionSettings">
@@ -20,14 +20,12 @@
20
20
  <ConfigurationType>DynamicLibrary</ConfigurationType>
21
21
  <UseDebugLibraries>true</UseDebugLibraries>
22
22
  <CharacterSet>Unicode</CharacterSet>
23
- <PlatformToolset>v110</PlatformToolset>
24
23
  </PropertyGroup>
25
24
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
26
25
  <ConfigurationType>DynamicLibrary</ConfigurationType>
27
26
  <UseDebugLibraries>false</UseDebugLibraries>
28
27
  <WholeProgramOptimization>true</WholeProgramOptimization>
29
28
  <CharacterSet>Unicode</CharacterSet>
30
- <PlatformToolset>v110</PlatformToolset>
31
29
  </PropertyGroup>
32
30
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
33
31
  <ImportGroup Label="ExtensionSettings">
@@ -55,7 +53,7 @@
55
53
  <WarningLevel>Level3</WarningLevel>
56
54
  <Optimization>Disabled</Optimization>
57
55
  <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RUBY_PROF_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
58
- <AdditionalIncludeDirectories>C:\MinGW\local\ruby193vc\include\ruby-1.9.1;C:\MinGW\local\ruby193vc\include\ruby-1.9.1\i386-mswin32_110;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
56
+ <AdditionalIncludeDirectories>C:\MinGW\local\ruby193vc\include\ruby-1.9.1;C:\MinGW\local\ruby193vc\include\ruby-1.9.1\i386-mswin32_100;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
59
57
  </ClCompile>
60
58
  <Link>
61
59
  <SubSystem>Windows</SubSystem>
@@ -20,14 +20,12 @@
20
20
  <ConfigurationType>DynamicLibrary</ConfigurationType>
21
21
  <UseDebugLibraries>true</UseDebugLibraries>
22
22
  <CharacterSet>Unicode</CharacterSet>
23
- <PlatformToolset>v110</PlatformToolset>
24
23
  </PropertyGroup>
25
24
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
26
25
  <ConfigurationType>DynamicLibrary</ConfigurationType>
27
26
  <UseDebugLibraries>false</UseDebugLibraries>
28
27
  <WholeProgramOptimization>true</WholeProgramOptimization>
29
28
  <CharacterSet>Unicode</CharacterSet>
30
- <PlatformToolset>v110</PlatformToolset>
31
29
  </PropertyGroup>
32
30
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
33
31
  <ImportGroup Label="ExtensionSettings">
@@ -55,7 +53,7 @@
55
53
  <WarningLevel>Level3</WarningLevel>
56
54
  <Optimization>Disabled</Optimization>
57
55
  <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RUBY_PROF_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
58
- <AdditionalIncludeDirectories>C:\MinGW\local\ruby200vc\include\ruby-2.0.0;C:\MinGW\local\ruby200vc\include\ruby-2.0.0\i386-mswin32_110;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
56
+ <AdditionalIncludeDirectories>C:\MinGW\local\ruby200vc\include\ruby-2.0.0;C:\MinGW\local\ruby200vc\include\ruby-2.0.0\i386-mswin32_100;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
59
57
  </ClCompile>
60
58
  <Link>
61
59
  <SubSystem>Windows</SubSystem>
@@ -1,7 +1,7 @@
1
1
  /* Copyright (C) 2005-2013 Shugo Maeda <shugo@ruby-lang.org> and Charlie Savage <cfis@savagexi.com>
2
2
  Please see the LICENSE file for copyright and distribution information */
3
3
 
4
- #define RUBY_PROF_VERSION "0.12.1" // as a string, for easy parsing from rake files
4
+ #define RUBY_PROF_VERSION "0.12.2" // as a string, for easy parsing from rake files
5
5
  #define RUBY_PROF_VERSION_MAJ 0
6
6
  #define RUBY_PROF_VERSION_MIN 12
7
- #define RUBY_PROF_VERSION_MIC 1
7
+ #define RUBY_PROF_VERSION_MIC 2
@@ -152,13 +152,18 @@ private
152
152
 
153
153
  # for GC.allocated_size to work GC statistics should be enabled
154
154
  def self.enable_gc_stats_if_needed
155
- if self.measure_mode == RubyProf::MEMORY && GC.respond_to?(:enable_stats)
155
+ if measure_mode_requires_gc_stats_enabled?
156
156
  @gc_stat_was_enabled = GC.enable_stats
157
157
  end
158
158
  end
159
159
 
160
160
  def self.disable_gc_stats_if_needed(was_enabled=nil)
161
161
  was_enabled ||= defined?(@gc_stat_was_enabled) && @gc_stat_was_enabled
162
- GC.disable_stats if self.measure_mode == RubyProf::MEMORY && GC.respond_to?(:disable_stats) && !was_enabled
162
+ GC.disable_stats if measure_mode_requires_gc_stats_enabled? && !was_enabled
163
163
  end
164
- end
164
+
165
+ def self.measure_mode_requires_gc_stats_enabled?
166
+ GC.respond_to?(:enable_stats) &&
167
+ [RubyProf::MEMORY, RubyProf::GC_TIME, RubyProf::GC_RUNS].include?(measure_mode)
168
+ end
169
+ end
File without changes
File without changes
File without changes
File without changes
data/ruby-prof.gemspec CHANGED
@@ -57,4 +57,5 @@ EOF
57
57
  spec.homepage = 'https://github.com/rdp/ruby-prof'
58
58
  spec.add_development_dependency('minitest')
59
59
  spec.add_development_dependency('rake-compiler')
60
- end
60
+ spec.add_development_dependency('rdoc')
61
+ end
File without changes
data/test/basic_test.rb CHANGED
File without changes
File without changes
@@ -17,7 +17,7 @@ class DynamicMethodTest < Test::Unit::TestCase
17
17
  # Methods called
18
18
  # Kernel#sleep
19
19
  # <Class::BasicObject>#allocate
20
- # #{RubyProf.parent_object}
20
+ # #{RubyProf.parent_object}#inizialize
21
21
  # RubyProf::C1#hello
22
22
  # Class#new
23
23
  # Integer#times
@@ -52,6 +52,13 @@ class DynamicMethodTest < Test::Unit::TestCase
52
52
  assert_in_delta(0.0, methods[4].wait_time, 0.01)
53
53
  assert_in_delta(0.0, methods[4].self_time, 0.01)
54
54
 
55
+ # the timing difference between #initialize and #allocate is so small
56
+ # that we cannot rely on #initialize appearing first.
57
+ # so switch them, if necessary
58
+ if methods[5].full_name =~ /#allocate/
59
+ methods[5], methods[6] = methods[6], methods[5]
60
+ end
61
+
55
62
  assert_equal("#{RubyProf.parent_object}#initialize", methods[5].full_name)
56
63
  assert_in_delta(0.0, methods[5].total_time, 0.01)
57
64
  assert_in_delta(0.0, methods[5].wait_time, 0.01)
File without changes
File without changes
File without changes
data/test/exec_test.rb CHANGED
File without changes
File without changes
@@ -3,7 +3,9 @@
3
3
 
4
4
  require File.expand_path('../test_helper', __FILE__)
5
5
 
6
- class MeasuremeGCRunsTest < Test::Unit::TestCase
6
+ class MeasureGCRunsTest < Test::Unit::TestCase
7
+ include MemoryTestHelper
8
+
7
9
  def test_gc_runs_mode
8
10
  RubyProf::measure_mode = RubyProf::GC_RUNS
9
11
  assert_equal(RubyProf::GC_RUNS, RubyProf::measure_mode)
@@ -18,6 +20,7 @@ class MeasuremeGCRunsTest < Test::Unit::TestCase
18
20
  t = RubyProf.measure_gc_runs
19
21
  assert_kind_of Integer, t
20
22
 
23
+ GC.enable_stats
21
24
  GC.start
22
25
 
23
26
  u = RubyProf.measure_gc_runs
@@ -4,6 +4,8 @@
4
4
  require File.expand_path('../test_helper', __FILE__)
5
5
 
6
6
  class MeasureGCTimeTest < Test::Unit::TestCase
7
+ include MemoryTestHelper
8
+
7
9
  def test_gc_time_mode
8
10
  RubyProf::measure_mode = RubyProf::GC_TIME
9
11
  assert_equal(RubyProf::GC_TIME, RubyProf::measure_mode)
@@ -15,15 +17,20 @@ class MeasureGCTimeTest < Test::Unit::TestCase
15
17
 
16
18
  if RubyProf::GC_TIME_ENABLED
17
19
  def test_gc_time
20
+ RubyProf::measure_mode = RubyProf::GC_TIME
21
+ RubyProf.enable_gc_stats_if_needed
22
+
18
23
  t = RubyProf.measure_gc_time
19
- assert_kind_of Integer, t
24
+ assert_kind_of Float, t
20
25
 
21
26
  GC.start
22
27
 
23
28
  u = RubyProf.measure_gc_time
24
29
  assert u > t, [t, u].inspect
25
- RubyProf::measure_mode = RubyProf::GC_TIME
30
+
26
31
  memory_test_helper
32
+ ensure
33
+ RubyProf.disable_gc_stats_if_needed
27
34
  end
28
35
  end
29
- end
36
+ end
@@ -4,12 +4,7 @@
4
4
  require File.expand_path('../test_helper', __FILE__)
5
5
 
6
6
  class MeasureMemoryTest < Test::Unit::TestCase
7
- def memory_test_helper
8
- result = RubyProf.profile {Array.new}
9
- total = result.threads.values.first.inject(0) { |sum, m| sum + m.total_time }
10
- assert(total < 1_000_000, 'Total should not have subtract overflow error')
11
- total
12
- end
7
+ include MemoryTestHelper
13
8
 
14
9
  def test_memory_mode
15
10
  RubyProf::measure_mode = RubyProf::MEMORY
@@ -23,10 +18,10 @@ class MeasureMemoryTest < Test::Unit::TestCase
23
18
  if RubyProf::MEMORY_ENABLED
24
19
  def test_memory
25
20
  t = RubyProf.measure_memory
26
- assert_kind_of Integer, t
21
+ assert_kind_of Float, t
27
22
 
28
23
  u = RubyProf.measure_memory
29
- assert(u >= t, [t, u].inspect)
24
+ assert(u > t, [t, u].inspect)
30
25
  RubyProf::measure_mode = RubyProf::MEMORY
31
26
  total = memory_test_helper
32
27
  assert(total > 0, 'Should measure more than zero kilobytes of memory usage')
@@ -10,7 +10,6 @@ class MeasureProcessTimeTest < Test::Unit::TestCase
10
10
  end
11
11
 
12
12
  def test_mode
13
- RubyProf::measure_mode = RubyProf::PROCESS_TIME
14
13
  assert_equal(RubyProf::PROCESS_TIME, RubyProf::measure_mode)
15
14
  end
16
15
 
@@ -28,11 +27,18 @@ class MeasureProcessTimeTest < Test::Unit::TestCase
28
27
  total_time = (finish.utime - start.utime) + (finish.stime - start.stime)
29
28
 
30
29
  thread = result.threads.first
31
- assert_in_delta(total_time, thread.total_time, 0.01)
30
+ assert_in_delta(total_time, thread.total_time, 0.03)
32
31
 
33
32
  methods = result.threads.first.methods.sort.reverse
34
33
 
35
- assert_equal(RubyProf.ruby_2? ? 15 : 16, methods.length)
34
+ if RUBY_VERSION =~ /^1\.8/
35
+ methods.reject!{|m| m.full_name =~ /^Fixnum/ || m.full_name == 'Object#find_largest'}
36
+ end
37
+ if RUBY_VERSION =~ /^(1\.9\.2|2\.0)/
38
+ assert_equal 15, methods.length
39
+ else
40
+ assert_equal 16, methods.length
41
+ end
36
42
 
37
43
  # Check times
38
44
  assert_equal("MeasureProcessTimeTest#test_primes", methods[0].full_name)
@@ -53,4 +59,4 @@ class MeasureProcessTimeTest < Test::Unit::TestCase
53
59
  assert_equal("Array#each_index", methods[7].full_name)
54
60
  assert_equal("Kernel#rand", methods[8].full_name)
55
61
  end
56
- end
62
+ end
@@ -2,7 +2,6 @@
2
2
  # encoding: UTF-8
3
3
 
4
4
  require File.expand_path('../test_helper', __FILE__)
5
- require 'tmpdir'
6
5
 
7
6
  # Test data
8
7
  # A
@@ -35,7 +34,7 @@ class MethodEliminationTest < Test::Unit::TestCase
35
34
  result = RubyProf.profile do
36
35
  1000.times { 1+1 }
37
36
  end
38
- method_infos = result.threads.first.methods
37
+ method_infos = result.threads.first.methods.sort.reverse
39
38
  assert(m1 = method_infos[0])
40
39
  assert(c1 = m1.call_infos.first)
41
40
  assert_nil(c1.parent)
data/test/module_test.rb CHANGED
File without changes
@@ -2,7 +2,6 @@
2
2
  # encoding: UTF-8
3
3
 
4
4
  require File.expand_path('../test_helper', __FILE__)
5
- require 'tmpdir'
6
5
 
7
6
  # Test data
8
7
  # A
@@ -50,20 +49,20 @@ class MultiPrinterTest < Test::Unit::TestCase
50
49
  \s*</tr>
51
50
  \s*
52
51
  \s*<tr>
53
- \s*<td><a href="#\d+">\d+</a></td>
52
+ \s*<td><a href="#-?\d+">-?\d+</a></td>
54
53
  \s*<td>([\.0-9]+)</td>
55
54
  \s*</tr>
56
55
  \s*
57
56
  \s*</table>')
58
- assert graph =~ re
57
+ assert_match(re, graph)
59
58
  display_time = $1.to_f
60
- assert_in_delta expected_time, display_time, 0.005
59
+ assert_in_delta expected_time, display_time, 0.5
61
60
  end
62
61
 
63
62
  private
64
63
  def print(result)
65
64
  test = caller.first =~ /in `(.*)'/ ? $1 : "test"
66
- path = Dir::tmpdir
65
+ path = RubyProf.tmpdir
67
66
  profile = "ruby_prof_#{test}"
68
67
  printer = RubyProf::MultiPrinter.new(result)
69
68
  printer.print(:path => path, :profile => profile,
@@ -75,6 +74,6 @@ class MultiPrinterTest < Test::Unit::TestCase
75
74
  GC.start
76
75
  GC.dump_file_and_line_info("heap.dump")
77
76
  end
78
- [File.open(printer.stack_profile){|f|f.read}, File.open(printer.graph_profile){|f|f.read}]
77
+ [File.read(printer.stack_profile), File.read(printer.graph_profile)]
79
78
  end
80
79
  end
File without changes
@@ -31,6 +31,10 @@ class PauseResumeTest < Test::Unit::TestCase
31
31
  # Kernel#sleep
32
32
 
33
33
  methods = result.threads.first.methods.sort_by {|method_info| method_info.full_name}
34
+ # remove methods called by pause/resume
35
+ called_methods = ['Array#include?', 'Fixnum#==', 'Kernel#respond_to?', 'Kernel#respond_to_missing?']
36
+ methods.reject!{|m| called_methods.include?(m.full_name) }
37
+ # TODO: fix pause/resume to not include those methods in the first place
34
38
  assert_equal(3, methods.length)
35
39
 
36
40
  # Check the names
@@ -56,15 +60,12 @@ class PauseResumeTest < Test::Unit::TestCase
56
60
  def test_pause_resume_1
57
61
  profile = RubyProf::Profile.new(RubyProf::WALL_TIME,[])
58
62
 
59
- # Measured
60
63
  profile.start
61
64
  method_1a
62
65
 
63
- # Not measured
64
66
  profile.pause
65
67
  method_1b
66
68
 
67
- # Measured
68
69
  profile.resume
69
70
  method_1c
70
71
 
@@ -79,11 +80,9 @@ class PauseResumeTest < Test::Unit::TestCase
79
80
  def test_pause_resume_2
80
81
  profile = RubyProf::Profile.new(RubyProf::WALL_TIME,[])
81
82
 
82
- # Measured
83
83
  profile.start
84
84
  method_2a
85
85
 
86
- # Not Measured
87
86
  profile.pause
88
87
  sleep 0.5
89
88
  method_2b(profile)
@@ -98,11 +97,10 @@ class PauseResumeTest < Test::Unit::TestCase
98
97
  def test_pause_resume_3
99
98
  profile = RubyProf::Profile.new(RubyProf::WALL_TIME,[])
100
99
 
101
- # Measured
102
100
  profile.start
103
101
  method_3a(profile)
104
- sleep 0.5
105
102
 
103
+ sleep 0.5
106
104
  profile.resume
107
105
  method_3b
108
106
 
@@ -165,4 +163,4 @@ class PauseResumeTest < Test::Unit::TestCase
165
163
  profile.resume; assert !profile.paused?
166
164
  profile.stop ; assert !profile.paused?
167
165
  end
168
- end
166
+ end