class InfluxReporter::Util::Inspector
Constants
- DEFAULTS
- NEWLINE
- SPACE
Public Class Methods
new(config = {})
click to toggle source
# File lib/influx_reporter/util/inspector.rb, line 13 def initialize(config = {}) @config = DEFAULTS.merge(config) end
Public Instance Methods
ms(nanos)
click to toggle source
# File lib/influx_reporter/util/inspector.rb, line 17 def ms(nanos) nanos.to_f / 1_000_000 end
transaction(transaction, opts = {})
click to toggle source
# File lib/influx_reporter/util/inspector.rb, line 21 def transaction(transaction, opts = {}) w = @config[:width].to_f f = w / ms(transaction.duration) traces = transaction.traces traces = traces.each_with_object([]) do |trace, state| descriptions = [ "#{trace.signature} - #{trace.kind}", "transaction:#{trace.transaction.endpoint}" ] if opts[:include_parents] descriptions << "parents:#{trace.parents.map(&:signature).join(',')}" end descriptions << "duration:#{ms trace.duration}ms - rel:#{ms trace.relative_start}ms" start_diff = ms(trace.start_time) - ms(transaction.start_time) indent = (start_diff.floor * f).to_i longest_desc_length = descriptions.map(&:length).max desc_indent = [[indent, w - longest_desc_length].min, 0].max lines = descriptions.map do |desc| "#{SPACE * desc_indent}#{desc}" end if trace.duration span = (ms(trace.duration) * f).ceil.to_i lines << "#{SPACE * indent}+#{'-' * [(span - 2), 0].max}+" else lines << "#{SPACE * indent}UNFINISHED" end state << lines.join("\n") end.join("\n") <<-STR.gsub(/^\s{8}/, '') \n#{'=' * w.to_i} #{transaction.endpoint} - kind:#{transaction.kind} - #{transaction.duration.to_f / 1_000_000}ms +#{'-' * (w.to_i - 2)}+ #{traces} STR rescue => e puts e puts e.backtrace.join("\n") transaction.inspect end