Module: RSpecTelemetry::Trace::Viewer::ReportView
- Defined in:
- lib/rspec_telemetry/trace/viewer/report_view.rb
Defined Under Namespace
Classes: Row
Constant Summary collapse
- TITLES =
{examples: "slowest examples", factories: "factories by self time"}.freeze
Class Method Summary collapse
- .aggregate(document) ⇒ Object
- .detail(payload) ⇒ Object
- .dur(ms) ⇒ Object
- .example_rows(document) ⇒ Object
- .factory_rows(document) ⇒ Object
- .rows(document, view) ⇒ Object
- .title(view) ⇒ Object
Class Method Details
.aggregate(document) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/rspec_telemetry/trace/viewer/report_view.rb', line 65 def self.aggregate(document) acc = FactoryAggregation::Accumulator.new document.events.each do |event| next unless event.op == "factory" fields = event.fields acc.add( factory: fields["factory"], strategy: fields["strategy"], duration_ms: fields["duration_ms"], self_duration_ms: fields["self_duration_ms"] ) end acc end |
.detail(payload) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/rspec_telemetry/trace/viewer/report_view.rb', line 51 def self.detail(payload) return [] unless payload.is_a?(FactoryAggregation::Stat) [ "FACTORY #{payload.key}", "", "count: #{payload.count}", "self total: #{Format.ms(payload.self_total_ms)} (children excluded)", "total: #{Format.ms(payload.total_ms)} (children included)", "avg: #{Format.ms(payload.avg_ms)}", "max: #{Format.ms(payload.max_ms)}" ] end |
.dur(ms) ⇒ Object
82 |
# File 'lib/rspec_telemetry/trace/viewer/report_view.rb', line 82 def self.dur(ms) = (Format.ms(ms) || "-").rjust(8) |
.example_rows(document) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/rspec_telemetry/trace/viewer/report_view.rb', line 28 def self.example_rows(document) document.actions.sort_by { |action| -(action.duration_ms || 0.0) }.map do |action| tag = action.failed? ? " [#{action.status.upcase}]" : "" Row.new( text: "#{dur(action.duration_ms)} #{action.label}#{tag}", style: action.failed? ? :error : :plain, source: action.source, payload: action ) end end |
.factory_rows(document) ⇒ Object
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/rspec_telemetry/trace/viewer/report_view.rb', line 40 def self.factory_rows(document) aggregate(document).top.map do |stat| Row.new( text: "#{dur(stat.self_total_ms)} #{stat.key} ×#{stat.count} total #{Format.ms(stat.total_ms)}", style: :plain, source: nil, payload: stat ) end end |
.rows(document, view) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/rspec_telemetry/trace/viewer/report_view.rb', line 17 def self.rows(document, view) case view when :examples example_rows(document) when :factories factory_rows(document) else [] end end |
.title(view) ⇒ Object
15 |
# File 'lib/rspec_telemetry/trace/viewer/report_view.rb', line 15 def self.title(view) = TITLES[view] |