lib/lens/trace.rb in lens-0.0.6 vs lib/lens/trace.rb in lens-0.0.7

- old
+ new

@@ -1,41 +1,71 @@ -require 'rails' - module Lens class Trace def initialize(id) @id = id @data = [] + + @gc_statistics = Lens::GC.new + @gc_statistics.enable + + @allocations_data = Lens::AllocationsData.new + @allocations_data.enable end def add(event) - @data.push event.payload.merge(duration: event.duration) + @data.push event.payload.merge( + etype: event.name, + eduration: event.duration, + estart: event.time.to_f, + efinish: event.end.to_f + ) end def complete(event) - formatted_data = Lens::EventFormatter.new(event, @data).json_formatted - log(formatted_data) + formatter = Lens::EventFormatter.new( + event, + @data, + @gc_statistics.total_time, + @allocations_data + ) + formatted_data = formatter.json_formatted send(formatted_data) Thread.current[:__lens_trace] = nil end - private + private def send(data) - log(data) - Lens.sender.send_to_lens(data) + Worker.instance.push(data) end + end - def log(data) - Rails.logger.info "all [LENS] >>> #{data}" if verbose? + class << Trace + def process(event) + create(event.transaction_id) if first_event?(event) + + if Trace.present? + current.add(event) + current.complete(event) if last_event?(event) + end end - def verbose? - true + def present? + current.present? end - end - class << Trace + private + + def first_event?(event) + event.name == 'start_processing.action_controller' + end + + def last_event?(event) + event.name == 'process_action.action_controller' && + event.payload[:controller] && + event.payload[:action] + end + def current Thread.current[:__lens_trace] end def create(id)