Module: RSpecTelemetry::Trace::Viewer::Label
- Defined in:
- lib/rspec_telemetry/trace/viewer/label.rb
Defined Under Namespace
Classes: Segment
Class Method Summary collapse
- .action_segments(action) ⇒ Object
- .category(entry) ⇒ Object
- .compact(value) ⇒ Object
- .event_segments(event) ⇒ Object
- .extra(fields) ⇒ Object
- .factory_segments(fields) ⇒ Object
- .name(fields) ⇒ Object
- .plain(entry) ⇒ Object
- .seg(text, style) ⇒ Object
- .segments(entry) ⇒ Object
- .timing(fields) ⇒ Object
- .traits(list) ⇒ Object
Class Method Details
.action_segments(action) ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/rspec_telemetry/trace/viewer/label.rb', line 33 def self.action_segments(action) tag = action.failed? ? " [#{action.status.upcase}]" : "" style = action.failed? ? :error : :action segments = [seg("EXAMPLE #{action.label}#{tag}", style)] segments << seg(" at: #{action.source}", :dim) if action.source segments end |
.category(entry) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/rspec_telemetry/trace/viewer/label.rb', line 20 def self.category(entry) if entry.is_a?(Document::Action) return entry.failed? ? :error : :action end case entry.op when "factory" entry.fields["depth"].to_i.positive? ? :dim : :plain else :plain end end |
.compact(value) ⇒ Object
76 77 78 79 80 |
# File 'lib/rspec_telemetry/trace/viewer/label.rb', line 76 def self.compact(value) return "" if value.nil? || value.empty? Format.value(value) end |
.event_segments(event) ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/rspec_telemetry/trace/viewer/label.rb', line 41 def self.event_segments(event) case event.op when "factory" factory_segments(event.fields) else [seg("#{event.op.upcase} #{compact(extra(event.fields))}", :plain)] end end |
.extra(fields) ⇒ Object
70 71 72 |
# File 'lib/rspec_telemetry/trace/viewer/label.rb', line 70 def self.extra(fields) fields.reject { |key, _| Document::INFRA_FIELDS.include?(key) } end |
.factory_segments(fields) ⇒ Object
50 51 52 53 54 |
# File 'lib/rspec_telemetry/trace/viewer/label.rb', line 50 def self.factory_segments(fields) depth = fields["depth"].to_i style = depth.positive? ? :dim : :plain [seg("#{" " * depth}FACTORY #{name(fields)}#{traits(fields["traits"])} #{timing(fields)}", style)] end |
.name(fields) ⇒ Object
56 |
# File 'lib/rspec_telemetry/trace/viewer/label.rb', line 56 def self.name(fields) = "#{fields["factory"]}:#{fields["strategy"]}" |
.plain(entry) ⇒ Object
18 |
# File 'lib/rspec_telemetry/trace/viewer/label.rb', line 18 def self.plain(entry) = segments(entry).map(&:text).join |
.seg(text, style) ⇒ Object
74 |
# File 'lib/rspec_telemetry/trace/viewer/label.rb', line 74 def self.seg(text, style) = Segment.new(text: text, style: style) |
.segments(entry) ⇒ Object
12 13 14 15 16 |
# File 'lib/rspec_telemetry/trace/viewer/label.rb', line 12 def self.segments(entry) return action_segments(entry) if entry.is_a?(Document::Action) event_segments(entry) end |
.timing(fields) ⇒ Object
58 59 60 61 62 63 64 |
# File 'lib/rspec_telemetry/trace/viewer/label.rb', line 58 def self.timing(fields) total = Format.ms(fields["duration_ms"]) self_ms = fields["self_duration_ms"] return total.to_s unless self_ms && self_ms != fields["duration_ms"] "#{total} (self #{Format.ms(self_ms)})" end |
.traits(list) ⇒ Object
66 67 68 |
# File 'lib/rspec_telemetry/trace/viewer/label.rb', line 66 def self.traits(list) list.nil? || list.empty? ? "" : " [#{Array(list).join(",")}]" end |