Class: Crawlscope::ServerTiming::Summary
- Inherits:
-
Object
- Object
- Crawlscope::ServerTiming::Summary
- Defined in:
- lib/crawlscope/server_timing/summary.rb
Constant Summary collapse
- WORST_PAGE_LIMIT =
10
Instance Attribute Summary collapse
-
#pages ⇒ Object
readonly
Returns the value of attribute pages.
Instance Method Summary collapse
- #coverage ⇒ Object
- #duration_pages ⇒ Object
-
#initialize(pages) ⇒ Summary
constructor
A new instance of Summary.
- #invalid_count ⇒ Object
- #metrics ⇒ Object
- #present? ⇒ Boolean
- #signals ⇒ Object
- #worst_pages(limit: WORST_PAGE_LIMIT) ⇒ Object
Constructor Details
#initialize(pages) ⇒ Summary
Returns a new instance of Summary.
10 11 12 13 14 15 16 |
# File 'lib/crawlscope/server_timing/summary.rb', line 10 def initialize(pages) @pages = pages @timings = pages.filter_map do |page| timing = page.server_timing [page, timing] if timing.present? end end |
Instance Attribute Details
#pages ⇒ Object (readonly)
Returns the value of attribute pages.
8 9 10 |
# File 'lib/crawlscope/server_timing/summary.rb', line 8 def pages @pages end |
Instance Method Details
#coverage ⇒ Object
52 53 54 |
# File 'lib/crawlscope/server_timing/summary.rb', line 52 def coverage @timings.size end |
#duration_pages ⇒ Object
22 23 24 |
# File 'lib/crawlscope/server_timing/summary.rb', line 22 def duration_pages @timings.count { |_page, timing| timing.any?(&:timed?) } end |
#invalid_count ⇒ Object
26 27 28 |
# File 'lib/crawlscope/server_timing/summary.rb', line 26 def invalid_count @timings.sum { |_page, timing| timing.invalid_count } end |
#metrics ⇒ Object
30 31 32 33 34 35 |
# File 'lib/crawlscope/server_timing/summary.rb', line 30 def metrics timed_metrics .group_by { |_page, metric| [metric.name, metric.description] } .map { |(name, description), samples| metric_summary(name, description, samples) } .sort_by { |metric| [-metric[:p95], -metric[:maximum], metric[:name]] } end |
#present? ⇒ Boolean
18 19 20 |
# File 'lib/crawlscope/server_timing/summary.rb', line 18 def present? @timings.any? end |
#signals ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/crawlscope/server_timing/summary.rb', line 37 def signals all_metrics .reject { |_page, metric| metric.timed? } .group_by { |_page, metric| [metric.name, metric.description] } .map { |(name, description), samples| signal_summary(name, description, samples) } .sort_by { |signal| [-signal[:samples], signal[:name], signal[:description].to_s] } end |
#worst_pages(limit: WORST_PAGE_LIMIT) ⇒ Object
45 46 47 48 49 50 |
# File 'lib/crawlscope/server_timing/summary.rb', line 45 def worst_pages(limit: WORST_PAGE_LIMIT) @timings .filter_map { |page, timing| worst_metric(page, timing) } .min_by(limit) { |sample| [-sample[:metric].duration, sample[:page].url] } .sort_by { |sample| [-sample[:metric].duration, sample[:page].url] } end |