Sha256: 71779ed61bbfdc2117801db8ec06304f8967333d5389fcb9a281a97be2f43a7b
Contents?: true
Size: 1.99 KB
Versions: 2
Compression:
Stored size: 1.99 KB
Contents
# frozen_string_literal: true RSpec::Support.require_rspec_core "formatters/base_text_formatter" class LoggingFormatter < RSpec::Core::Formatters::ProgressFormatter RSpec::Core::Formatters.register self, :example_started, :example_passed, :dump_profile def initialize(output) @profile = [] reset! ActiveSupport::Notifications.subscribe("http.ldp", method(:record_request)) super end def record_request(*_unused, data) @request_count += 1 @request_count_by_name[data[:name]] += 1 end def example_passed(passed) super @profile << { description: passed.example.full_description, count: @request_count, location: passed.example.location, count_by_name: @request_count_by_name } end def example_started(_passed) reset! end def reset! @request_count = 0 @request_count_by_name = { 'HEAD' => 0, 'GET' => 0, 'POST' => 0, 'DELETE' => 0, 'PUT' => 0, 'PATCH' => 0 } end def dump_profile(profile) dump_most_ldp_exampes(profile) output.puts "" dump_slowest_examples(profile) end private def dump_most_ldp_exampes(_prof) output.puts "Examples with the most LDP requests" top = @profile.sort_by { |hash| hash[:count] }.last(10) top.each do |hash| result = hash[:count_by_name].select { |_, v| v.positive? } next if result.empty? output.puts " #{hash[:description]}" output.puts " #{hash[:location]}" output.puts " Total LDP: #{hash[:count]} #{result}" end end def dump_slowest_examples(profile) output.puts "Slowest examples" profile.slowest_examples.each do |slowest_example| output.puts " #{slowest_example.full_description}" output.puts " #{slowest_example.location}" output.puts " #{slowest_example.execution_result.run_time} seconds" end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
hyrax-5.0.0 | spec/support/logging_formatter.rb |
hyrax-5.0.0.rc3 | spec/support/logging_formatter.rb |