Module: TestProf::RSpecDissect
- Extended by:
- Logging
- Defined in:
- lib/test_prof/rspec_dissect.rb,
lib/test_prof/rspec_dissect/rspec.rb,
lib/test_prof/rspec_dissect/collectors/let.rb,
lib/test_prof/rspec_dissect/collectors/base.rb,
lib/test_prof/rspec_dissect/collectors/before.rb
Overview
RSpecDissect tracks how much time do you spend in ‘before` hooks and memoization helpers (i.e. `let`) in your tests.
Defined Under Namespace
Modules: Collectors, ExampleInstrumentation, MemoizedInstrumentation
Classes: Configuration, Listener
Constant Summary
collapse
- METRICS =
%w[before let].freeze
Constants included
from Logging
Logging::COLORS
Class Method Summary
collapse
Methods included from Logging
build_log_msg, colorize, log
Class Method Details
.config ⇒ Object
79
80
81
|
# File 'lib/test_prof/rspec_dissect.rb', line 79
def config
@config ||= Configuration.new
end
|
83
84
85
|
# File 'lib/test_prof/rspec_dissect.rb', line 83
def configure
yield config
end
|
.init ⇒ Object
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
# File 'lib/test_prof/rspec_dissect.rb', line 87
def init
RSpec::Core::Example.prepend(ExampleInstrumentation)
RSpec::Core::MemoizedHelpers::ThreadsafeMemoized.prepend(MemoizedInstrumentation)
RSpec::Core::MemoizedHelpers::NonThreadSafeMemoized.prepend(MemoizedInstrumentation)
@data = {}
METRICS.each do |type|
@data["total_#{type}"] = 0.0
end
reset!
log :info, "RSpecDissect enabled"
end
|
.memoization_available? ⇒ Boolean
Whether we are able to track ‘let` usage
122
123
124
|
# File 'lib/test_prof/rspec_dissect.rb', line 122
def memoization_available?
defined?(::RSpec::Core::MemoizedHelpers::ThreadsafeMemoized)
end
|
130
131
132
|
# File 'lib/test_prof/rspec_dissect.rb', line 130
def meta_for(key)
@data[key.to_s][:meta]
end
|
.reset! ⇒ Object
115
116
117
118
119
|
# File 'lib/test_prof/rspec_dissect.rb', line 115
def reset!
METRICS.each do |type|
@data[type.to_s] = {time: 0.0, meta: []}
end
end
|
.time_for(key) ⇒ Object
126
127
128
|
# File 'lib/test_prof/rspec_dissect.rb', line 126
def time_for(key)
@data[key.to_s][:time]
end
|
.total_time_for(key) ⇒ Object
134
135
136
|
# File 'lib/test_prof/rspec_dissect.rb', line 134
def total_time_for(key)
@data["total_#{key}"]
end
|
.track(type, meta = nil) ⇒ Object
104
105
106
107
108
109
110
111
112
113
|
# File 'lib/test_prof/rspec_dissect.rb', line 104
def track(type, meta = nil)
start = TestProf.now
res = yield
delta = (TestProf.now - start)
type = type.to_s
@data[type][:time] += delta
@data[type][:meta] << meta unless meta.nil?
@data["total_#{type}"] += delta
res
end
|