module Minitest::PerformanceRegression
Constants
- VERSION
Public Instance Methods
check_performance_regression_on(name)
click to toggle source
# File lib/minitest/perf_regression.rb, line 8 def check_performance_regression_on(name) define_method("test_performance_regression_on_#{name}") do nbr_of_samples = 20 timestamp = Time.now prefix_filename = "perfregr_#{name}_" perfregr_files = Dir.entries('.').grep(/^#{prefix_filename}/).sort result_jsons = [] result = Benchmark.observe_and_summarize(nbr_of_samples) do |x| x.report("name #{timestamp}") { send name } end result_jsons << JSON.parse(result) File.open("#{prefix_filename}#{timestamp.to_i}.json", 'w') do |file| file.write(result) end if perfregr_files.empty? assert true else previous_result_json = nil File.open(perfregr_files.last, 'r') do |file| result_jsons << JSON.load(file) end best, is_h0_rejected = Benchmark.aggregate_and_rank(result_jsons) refute is_h0_rejected, "Performance Regression for #{name} run at #{timestamp}" end end end