Class: Kumi::Core::Analyzer::PassManager::Instrumentation

Inherits:
Object
  • Object
show all
Defined in:
lib/kumi/core/analyzer/pass_manager.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pass_name, options) ⇒ Instrumentation

Returns a new instance of Instrumentation.



205
206
207
208
209
# File 'lib/kumi/core/analyzer/pass_manager.rb', line 205

def initialize(pass_name, options)
  @pass_name = pass_name
  @debug = options[:debug_enabled]
  @profiling = options[:profiling_enabled]
end

Instance Attribute Details

#pass_nameObject (readonly)

Returns the value of attribute pass_name.



203
204
205
# File 'lib/kumi/core/analyzer/pass_manager.rb', line 203

def pass_name
  @pass_name
end

Instance Method Details

#after_failure(exception) ⇒ Object



225
226
227
228
229
230
# File 'lib/kumi/core/analyzer/pass_manager.rb', line 225

def after_failure(exception)
  return unless @debug

  logs = Debug.drain_log + [{ level: :error, id: :exception, message: exception.message, error_class: exception.class.name }]
  Debug.emit(pass: @pass_name, diff: {}, elapsed_ms: elapsed_ms, logs: logs)
end

#after_success(state) ⇒ Object



217
218
219
220
221
222
223
# File 'lib/kumi/core/analyzer/pass_manager.rb', line 217

def after_success(state)
  return unless @debug

  after = state.to_h
  enforce_frozen!(after) if ENV["KUMI_DEBUG_REQUIRE_FROZEN"] == "1"
  Debug.emit(pass: @pass_name, diff: Debug.diff_state(@before, after), elapsed_ms: elapsed_ms, logs: Debug.drain_log)
end

#before(state) ⇒ Object



211
212
213
214
215
# File 'lib/kumi/core/analyzer/pass_manager.rb', line 211

def before(state)
  @before = state.to_h if @debug
  Debug.reset_log(pass: @pass_name) if @debug
  @t0 = Process.clock_gettime(Process::CLOCK_MONOTONIC) if @profiling
end