Module: TestProf::RubyProf

Extended by:
Logging
Defined in:
lib/test_prof/ruby_prof.rb

Overview

RubyProf wrapper.

Has 2 modes: global and per-example.

Example:

# To activate global profiling you can use env variable
TEST_RUBY_PROF=1 rspec ...

# or in your code
TestProf::RubyProf.run

To profile a specific examples add :rprof tag to it:

it "is doing heavy stuff", :rprof do
  ...
end

Defined Under Namespace

Classes: Configuration, Report

Constant Summary

Constants included from Logging

Logging::COLORS

Class Method Summary collapse

Methods included from Logging

build_log_msg, colorize, log

Class Method Details

.configObject



150
151
152
# File 'lib/test_prof/ruby_prof.rb', line 150

def config
  @config ||= Configuration.new
end

.configure {|config| ... } ⇒ Object

Yields:



154
155
156
# File 'lib/test_prof/ruby_prof.rb', line 154

def configure
  yield config
end

.profileObject



174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
# File 'lib/test_prof/ruby_prof.rb', line 174

def profile
  return if locked?
  return unless init_ruby_prof

  options = {
    merge_fibers: true
  }

  options[:include_threads] = [Thread.current] unless
    config.include_threads?

  profiler = ::RubyProf::Profile.new(options)
  profiler.start

  Report.new(profiler)
end

.runObject

Run RubyProf and automatically dump a report when the process exits.

Use this method to profile the whole run.



162
163
164
165
166
167
168
169
170
171
172
# File 'lib/test_prof/ruby_prof.rb', line 162

def run
  report = profile

  return unless report

  @locked = true

  log :info, "RubyProf enabled"

  at_exit { report.dump("total") }
end