Skip to content

Commit

Permalink
adding per suite totalling and bumping the cutoffs to 5 and 15
Browse files Browse the repository at this point in the history
  • Loading branch information
knzai committed Feb 3, 2009
1 parent f2e1b3f commit a0e99f3
Showing 1 changed file with 33 additions and 14 deletions.
47 changes: 33 additions & 14 deletions lib/test_benchmark.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@
require 'test/unit/testcase'
require 'test/unit/ui/console/testrunner'

class Test::Unit::UI::Console::TestRunner
class Test::Unit::UI::Console::TestRunner
DISPLAY_LIMIT = 15
SUITE_DISPLAY_LIMIT = 5

alias attach_to_mediator_old attach_to_mediator
# def attach_to_mediator_old
# @mediator.add_listener(TestResult::FAULT, &method(:add_fault))
Expand All @@ -23,31 +26,36 @@ def attach_to_mediator
alias started_old started
def started(result)
started_old(result)
@benchmark_times = {}
@test_benchmarks = {}
@suite_benchmarks = {}
end

alias finished_old finished
def finished(elapsed_time)
finished_old(elapsed_time)
output_benchmarks
output_benchmarks(:suite)
puts "\n"
end

alias test_started_old test_started
def test_started(name)
test_started_old(name)
@benchmark_times[name] = Time.now
@test_benchmarks[name] = Time.now
end

alias test_finished_old test_finished
def test_finished(name)
test_finished_old(name)
@benchmark_times[name] = Time.now - @benchmark_times[name]
@test_benchmarks[name] = Time.now - @test_benchmarks[name]
end

def test_suite_started(suite_name)
@suite_benchmarks[suite_name] = Time.now
end

def test_suite_finished(suite_name)
@suite_benchmarks[suite_name] = Time.now - @suite_benchmarks[suite_name]
output_benchmarks(suite_name) if full_output?
end

Expand All @@ -60,29 +68,40 @@ def full_output?
end

def select_by_suite_name(suite_name)
@benchmark_times.select{ |k,v| k.include?(suite_name) }
if suite_name == :suite
@suite_benchmarks.select{ |k,v| @test_benchmarks.detect{ |k1,v1| k1.include?(k) } }
elsif suite_name
@test_benchmarks.select{ |k,v| k.include?(suite_name) }
else
@test_benchmarks
end
end

def prep_benchmarks(suite_name=nil)
benchmarks = suite_name ? select_by_suite_name(suite_name) : @benchmark_times
benchmarks = select_by_suite_name(suite_name)
return if benchmarks.nil? || benchmarks.empty?
benchmarks = benchmarks.sort(&@@sort_by_time)
benchmarks = benchmarks.slice(0,10) unless full_output?
benchmarks
unless full_output?
cutoff = (suite_name == :suite) ? SUITE_DISPLAY_LIMIT : DISPLAY_LIMIT
benchmarks = benchmarks.slice(0, cutoff)
end
benchmarks.map(&@@format_benchmark_row)
end

def header(suite_name)
if suite_name
"\nTest Benchmark Times: #{suite_name}"
if suite_name == :suite
"\nTest Benchmark Times: Suite Totals:\n"
elsif suite_name
"\nTest Benchmark Times: #{suite_name}\n"
else
"\nOVERALL TEST BENCHMARK TIMES"
"\nTEST BENCHMARK TIMES: OVERALL\n"
end
end

def output_benchmarks(suite_name=nil)
benchmarks = prep_benchmarks(suite_name)
return if benchmarks.empty?
strings = benchmarks.map(&@@format_benchmark_row)
puts header(suite_name) + "\n" + strings.join("\n") + "\n\n"
return if benchmarks.nil? || benchmarks.empty?
puts header(suite_name) + benchmarks.join("\n") + "\n"
end
end

Expand Down

0 comments on commit a0e99f3

Please sign in to comment.