timocratic-test_benchmark 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/test_benchmark.rb +52 -27
  2. metadata +1 -1
@@ -6,7 +6,8 @@ require 'test/unit/testcase'
6
6
  require 'test/unit/ui/console/testrunner'
7
7
 
8
8
  class Test::Unit::UI::Console::TestRunner
9
- include Loggable if const_defined?(:Loggable)
9
+ DISPLAY_LIMIT = 15
10
+ SUITE_DISPLAY_LIMIT = 5
10
11
 
11
12
  alias attach_to_mediator_old attach_to_mediator
12
13
  # def attach_to_mediator_old
@@ -25,59 +26,83 @@ class Test::Unit::UI::Console::TestRunner
25
26
  alias started_old started
26
27
  def started(result)
27
28
  started_old(result)
28
- @benchmark_times = {}
29
+ @test_benchmarks = {}
30
+ @suite_benchmarks = {}
29
31
  end
30
32
 
31
33
  alias finished_old finished
32
34
  def finished(elapsed_time)
33
35
  finished_old(elapsed_time)
34
- benchmarks = @benchmark_times.sort{|a, b| b[1] <=> a[1]}
35
- output_benchmarks(benchmarks, true)
36
- benchmarks = benchmarks.slice(0,10) unless ENV['BENCHMARK'] == 'full'
37
- output_benchmarks(benchmarks)
36
+ output_benchmarks
37
+ output_benchmarks(:suite)
38
+ puts "\n"
38
39
  end
39
40
 
40
41
  alias test_started_old test_started
41
42
  def test_started(name)
42
43
  test_started_old(name)
43
- @benchmark_times[name] = Time.now
44
+ @test_benchmarks[name] = Time.now
44
45
  end
45
46
 
46
47
  alias test_finished_old test_finished
47
48
  def test_finished(name)
48
49
  test_finished_old(name)
49
- @benchmark_times[name] = Time.now - @benchmark_times[name]
50
+ @test_benchmarks[name] = Time.now - @test_benchmarks[name]
50
51
  end
51
52
 
52
- def test_suite_started(name)
53
+ def test_suite_started(suite_name)
54
+ @suite_benchmarks[suite_name] = Time.now
53
55
  end
54
56
 
55
- def test_suite_finished(name)
56
- return unless ENV['BENCHMARK'] == 'full'
57
- benchmarks = @benchmark_times.select{ |k,v| k.include?(name) }.sort{|a, b| b[1] <=> a[1]}
58
- output_benchmarks(benchmarks, false, name) unless benchmarks.length == 0
57
+ def test_suite_finished(suite_name)
58
+ @suite_benchmarks[suite_name] = Time.now - @suite_benchmarks[suite_name]
59
+ output_benchmarks(suite_name) if full_output?
59
60
  end
60
61
 
61
- def format_benchmark_row(tuple)
62
- ("%0.3f" % tuple[1]) + " #{tuple[0]}"
62
+ @@format_benchmark_row = lambda {|tuple| ("%0.3f" % tuple[1]) + " #{tuple[0]}"}
63
+ @@sort_by_time = lambda { |a,b| b[1] <=> a[1] }
64
+
65
+ private
66
+ def full_output?
67
+ ENV['BENCHMARK'] == 'full'
63
68
  end
64
-
65
- def output_benchmarks(benchmarks, use_logger=false, name=nil)
66
- return if use_logger && !defined?(logger)
67
- if name
68
- header = "\nTest Benchmark Times: #{name}"
69
+
70
+ def select_by_suite_name(suite_name)
71
+ if suite_name == :suite
72
+ @suite_benchmarks.select{ |k,v| @test_benchmarks.detect{ |k1,v1| k1.include?(k) } }
73
+ elsif suite_name
74
+ @test_benchmarks.select{ |k,v| k.include?(suite_name) }
69
75
  else
70
- header = "\nOVERALL TEST BENCHMARK TIMES"
76
+ @test_benchmarks
77
+ end
78
+ end
79
+
80
+ def prep_benchmarks(suite_name=nil)
81
+ benchmarks = select_by_suite_name(suite_name)
82
+ return if benchmarks.nil? || benchmarks.empty?
83
+ benchmarks = benchmarks.sort(&@@sort_by_time)
84
+ unless full_output?
85
+ cutoff = (suite_name == :suite) ? SUITE_DISPLAY_LIMIT : DISPLAY_LIMIT
86
+ benchmarks = benchmarks.slice(0, cutoff)
71
87
  end
72
- strings = benchmarks.map {|tuple| format_benchmark_row(tuple)}
73
- if use_logger
74
- logger.debug header
75
- logger.debug strings.join("\n")
88
+ benchmarks.map(&@@format_benchmark_row)
89
+ end
90
+
91
+ def header(suite_name)
92
+ if suite_name == :suite
93
+ "\nTest Benchmark Times: Suite Totals:\n"
94
+ elsif suite_name
95
+ "\nTest Benchmark Times: #{suite_name}\n"
76
96
  else
77
- puts header
78
- puts strings
97
+ "\nTEST BENCHMARK TIMES: OVERALL\n"
79
98
  end
80
99
  end
100
+
101
+ def output_benchmarks(suite_name=nil)
102
+ benchmarks = prep_benchmarks(suite_name)
103
+ return if benchmarks.nil? || benchmarks.empty?
104
+ puts header(suite_name) + benchmarks.join("\n") + "\n"
105
+ end
81
106
  end
82
107
 
83
108
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timocratic-test_benchmark
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Connor