From: <dfr...@us...> - 2007-09-12 09:04:01
|
Revision: 13559 http://jikesrvm.svn.sourceforge.net/jikesrvm/?rev=13559&view=rev Author: dframpton-oss Date: 2007-09-12 01:59:17 -0700 (Wed, 12 Sep 2007) Log Message: ----------- Lots of minor updates to image format, including link-behind large versions of images. Modified Paths: -------------- cattrack/trunk/app/controllers/results/test_case_statistic_controller.rb cattrack/trunk/app/helpers/results/test_run_helper.rb cattrack/trunk/app/models/report/performance_report_statistic_renderer.rb cattrack/trunk/app/views/results/test_run/performance_report.haml cattrack/trunk/app/views/results/test_run/statistics_report.haml Modified: cattrack/trunk/app/controllers/results/test_case_statistic_controller.rb =================================================================== --- cattrack/trunk/app/controllers/results/test_case_statistic_controller.rb 2007-09-12 05:52:24 UTC (rev 13558) +++ cattrack/trunk/app/controllers/results/test_case_statistic_controller.rb 2007-09-12 08:59:17 UTC (rev 13559) @@ -18,7 +18,10 @@ def show # NOTE: statistic includes .png extension statistic = params[:statistic_key] - image = Report::PerformanceReportStatisticRenderer.new(test_run, statistic[0,statistic.length-4]).to_image + statistic = statistic[0,statistic.length-4] if (statistic =~ /.png$/) + large = (statistic =~ /.large$/) + statistic = statistic[0, statistic.length-6] if large + image = Report::PerformanceReportStatisticRenderer.new(test_run, statistic, large).to_image send_data(image, :type => 'image/png', :filename => statistic, :disposition => 'inline') end end Modified: cattrack/trunk/app/helpers/results/test_run_helper.rb =================================================================== --- cattrack/trunk/app/helpers/results/test_run_helper.rb 2007-09-12 05:52:24 UTC (rev 13558) +++ cattrack/trunk/app/helpers/results/test_run_helper.rb 2007-09-12 08:59:17 UTC (rev 13559) @@ -34,10 +34,16 @@ link_to('Show', options) end - def stat_img(row) - "#{row['build_configuration_name']}/#{row['test_configuration_name']}/#{row['group_name']}/#{row['test_case_name']}/#{row['name']}.png" + def stat_img(row,large) + extension = if large then '.large' else '' end + "#{row['build_configuration_name']}/#{row['test_configuration_name']}/#{row['group_name']}/#{row['test_case_name']}/#{row['name']}#{extension}.png" end + def perf_img(group, bm, set, stat, large) + extension = if large then '.large' else '' end + "production/default/#{group}/#{bm}-#{set}/#{bm}-#{set}-#{stat}#{extension}.png" + end + def perf_stat(test_run_id, row) str_value = row["test_run_#{test_run_id}"] return '' unless str_value Modified: cattrack/trunk/app/models/report/performance_report_statistic_renderer.rb =================================================================== --- cattrack/trunk/app/models/report/performance_report_statistic_renderer.rb 2007-09-12 05:52:24 UTC (rev 13558) +++ cattrack/trunk/app/models/report/performance_report_statistic_renderer.rb 2007-09-12 08:59:17 UTC (rev 13559) @@ -12,9 +12,10 @@ # class Report::PerformanceReportStatisticRenderer - def initialize(test_run, statistic_key) + def initialize(test_run, statistic_key, large) @test_run = test_run @statistic_key = statistic_key + @large = large end def get_limits() @@ -139,7 +140,9 @@ require 'rvg/rvg' limits = get_limits(); results = get_results(); - rvg = Magick::RVG.new(240.0, 50.0).viewbox(0, 0, 240, 50) do |canvas| + x_size = if @large then 960.0 else 240.0 end + y_size = if @large then 200.0 else 50.0 end + rvg = Magick::RVG.new(x_size, y_size).viewbox(0, 0, 240, 50) do |canvas| if results.length > 0 then oldest = limits['oldest'].to_i best = limits['best'].to_f @@ -165,6 +168,8 @@ latest_score = get_score(latest, best, less_is_more) latest_score = 100 if latest_score == 100.0 # print the most recent score + moving_avg_length = 5 + moving_avg = 0.0 if (failed) then canvas.text(210, 35) do |result| result.tspan("FAIL").styles(:text_anchor=>'middle', :font_size=>20, :font_family=>font, :fill=>'red', :font_weight => 'bold') @@ -172,16 +177,15 @@ else score_color = 'black' score_style = 'normal' - if (results.length >= 6) then - avg = 0.0 - for i in (1..5) - avg += (results[i]['value'].to_f / 5.0) + if (results.length >= (moving_avg_length + 1)) then + for i in (1..moving_avg_length) + moving_avg += (results[i]['value'].to_f / moving_avg_length) end if (less_is_more) then - if latest > (avg + 1 * std_dev) then + if latest > (moving_avg + 1 * std_dev) then score_color = 'red' score_style = 'bold' - elsif latest < (avg - 1 * std_dev) then + elsif latest < (moving_avg - 1 * std_dev) then score_color = 'green' score_style = 'bold' end @@ -190,10 +194,10 @@ canvas.line(190, 10, 230, 10).styles(:stroke=>'red', :stroke_width => 1.00) end else - if latest > (avg + 1 * std_dev) then + if latest > (moving_avg + 1 * std_dev) then score_color = 'green' score_style = 'bold' - elsif latest < (avg - 1 * std_dev) + elsif latest < (moving_avg - 1 * std_dev) score_color = 'red' if score_style = 'bold' end @@ -218,33 +222,61 @@ start_y = y_off - ((latest_score - worst_score) * y_scale) first_x = start_x first_y = start_y - results.each do |r| + last_avg_high = y_off - (get_score(moving_avg + std_dev, best, less_is_more) - worst_score) * y_scale + last_avg_low = y_off - (get_score(moving_avg - std_dev, best, less_is_more) - worst_score) * y_scale + last_avg = moving_avg + last_drawn = 100000.0 + average_index = moving_avg_length + 1 + results[1..results.length-1].each do |r| end_x = x_off - get_x(r['age'].to_i, step) * x_scale value = r['value'].to_f - end_y = y_off - ((get_score(value, best, less_is_more) - worst_score) * y_scale) + score = get_score(value, best, less_is_more) + end_y = y_off - (score - worst_score) * y_scale + revision = r['revision'] + if (average_index < results.length) then + avg_high = y_off - (get_score(moving_avg + std_dev, best, less_is_more) - worst_score) * y_scale + avg_low = y_off - (get_score(moving_avg - std_dev, best, less_is_more) - worst_score) * y_scale + canvas.polygon(start_x, last_avg_high, end_x, avg_high, end_x, avg_low, start_x, last_avg_low).styles(:fill=>'blue', :opacity => 0.1, :stroke_opacity => 0) + last_avg_high = avg_high + last_avg_low = avg_low + last_avg = moving_avg + moving_avg -= results[average_index - moving_avg_length]['value'].to_f / moving_avg_length.to_f + moving_avg += results[average_index]['value'].to_f / moving_avg_length.to_f + average_index += 1 + end + canvas.circle(1.5, start_x, start_y).styles(:fill=>'black') if @large if (value == best and max_x == nil) then max_x = end_x - max_rev = r['revision'] + max_rev = revision canvas.circle(3, max_x, y_mar).styles(:stroke=>'green', :stroke_width => 1.5, :fill => 'transparent') end if (value == worst and not (best == worst) and min_x == nil) then min_x = end_x - min_rev = r['revision'] + min_rev = revision canvas.circle(3, min_x, y_off).styles(:stroke=>'red', :stroke_width => 1.5, :fill => 'transparent') end canvas.line(start_x, start_y, end_x, end_y).styles(:stroke=>'black', :stroke_width => 1.00) + if @large and (end_x + 3.0) < last_drawn then + last_drawn = end_x + canvas.text(end_x + 1, 6).rotate(270) do |result| + result.tspan("r#{revision}").styles(:text_anchor=>'middle', :font_size=>2.00, :font_family=>font_small) + end + canvas.text(end_x + 1, y_res + 2 * y_mar - 5.0).rotate(270) do |result| + result.tspan("#{score}").styles(:text_anchor=>'middle', :font_size=>2.00, :font_family=>font_small) + end + end start_x = end_x start_y = end_y end canvas.circle(1.5, first_x, first_y).styles(:fill=>'black') canvas.circle(1.5, start_x, start_y).styles(:fill=>'black') - if min_x then + if min_x and not @large then min_x = 35.0 if min_x < 35.0 canvas.text(min_x, y_res + 2 * y_mar - 2.0) do |result| result.tspan("r#{min_rev} (#{worst_score})").styles(:text_anchor=>'middle', :font_size=>8, :font_family=>font_small, :fill=>'red') end end - if max_x then + if max_x and not @large then max_x = 20.0 if max_x < 20.0 canvas.text(max_x, 10) do |result| result.tspan("r#{max_rev}").styles(:text_anchor=>'middle', :font_size=>8, :font_family=>font_small, :fill=>'green') Modified: cattrack/trunk/app/views/results/test_run/performance_report.haml =================================================================== --- cattrack/trunk/app/views/results/test_run/performance_report.haml 2007-09-12 05:52:24 UTC (rev 13558) +++ cattrack/trunk/app/views/results/test_run/performance_report.haml 2007-09-12 08:59:17 UTC (rev 13559) @@ -14,15 +14,19 @@ %tr %th.benchmark jbb2005 %td - %img{:src => "production/default/perf-jbb2005/jbb2005/jbb2005.png"} + %a{:href => "production/default/perf-jbb2005/jbb2005/jbb2005.large.png"} + %img{:src => "production/default/perf-jbb2005/jbb2005/jbb2005.png"} %td - %img{:src => "production/default/perf-jbb2005/jbb2005GC/jbb2005GC.png"} + %a{:href => "production/default/perf-jbb2005/jbb2005GC/jbb2005GC.large.png"} + %img{:src => "production/default/perf-jbb2005/jbb2005GC/jbb2005GC.png"} %tr %th.benchmark jbb2000 %td - %img{:src => "production/default/perf-jbb2000/jbb2000/jbb2000.png"} + %a{:href => "production/default/perf-jbb2000/jbb2000/jbb2000.large.png"} + %img{:src => "production/default/perf-jbb2000/jbb2000/jbb2000.png"} %td - %img{:src => "production/default/perf-jbb2000/jbb2000GC/jbb2000GC.png"} + %a{:href => "production/default/perf-jbb2000/jbb2000GC/jbb2000GC.large.png"} + %img{:src => "production/default/perf-jbb2000/jbb2000GC/jbb2000GC.png"} %h2 Performance for DaCapo/SPECjvm98 %table.perf @@ -35,20 +39,26 @@ %tr{:class => cycle('odd','even')} %th.benchmark=bm %td - %img{:src => "production/default/perf-dacapo/#{bm}-1/#{bm}-1-time.png"} + %a{:href => perf_img('perf-dacapo',bm,'1','time', true)} + %img{:src => perf_img('perf-dacapo',bm,'1','time', false)} %td - %img{:src => "production/default/perf-dacapo/#{bm}-3/#{bm}-3-time.png"} + %a{:href => perf_img('perf-dacapo',bm,'3','time', true)} + %img{:src => perf_img('perf-dacapo',bm,'3','time', false)} %td - %img{:src => "production/default/perf-dacapo/#{bm}-10/#{bm}-10-time.png"} + %a{:href => perf_img('perf-dacapo',bm,'10','time', true)} + %img{:src => perf_img('perf-dacapo',bm,'10','time', false)} - spec_bm.each do |bm| %tr{:class => cycle('odd','even')} %th.benchmark=bm %td - %img{:src => "production/default/perf-jvm98/#{bm}-1/#{bm}-1-time.png"} + %a{:href => perf_img('perf-jvm98',bm,'1','time', true)} + %img{:src => perf_img('perf-jvm98',bm,'1','time', false)} %td - %img{:src => "production/default/perf-jvm98/#{bm}-3/#{bm}-3-time.png"} + %a{:href => perf_img('perf-jvm98',bm,'3','time', true)} + %img{:src => perf_img('perf-jvm98',bm,'3','time', false)} %td - %img{:src => "production/default/perf-jvm98/#{bm}-10/#{bm}-10-time.png"} + %a{:href => perf_img('perf-jvm98',bm,'10','time', true)} + %img{:src => perf_img('perf-jvm98',bm,'10','time', false)} %h2 Mutator Performance for DaCapo/SPECjvm98 %table.perf %tr @@ -60,20 +70,26 @@ %tr{:class => cycle('odd','even')} %th.benchmark=bm %td - %img{:src => "production/default/perf-dacapo/#{bm}-1/#{bm}-1-time.mu.png"} + %a{:href => perf_img('perf-dacapo',bm,'1','time.mu', true)} + %img{:src => perf_img('perf-dacapo',bm,'1','time.mu', false)} %td - %img{:src => "production/default/perf-dacapo/#{bm}-3/#{bm}-3-time.mu.png"} + %a{:href => perf_img('perf-dacapo',bm,'3','time.mu', true)} + %img{:src => perf_img('perf-dacapo',bm,'3','time.mu', false)} %td - %img{:src => "production/default/perf-dacapo/#{bm}-10/#{bm}-10-time.mu.png"} + %a{:href => perf_img('perf-dacapo',bm,'10','time.mu', true)} + %img{:src => perf_img('perf-dacapo',bm,'10','time.mu', false)} - spec_bm.each do |bm| %tr{:class => cycle('odd','even')} %th.benchmark=bm %td - %img{:src => "production/default/perf-jvm98/#{bm}-1/#{bm}-1-time.mu.png"} + %a{:href => perf_img('perf-jvm98',bm,'1','time.mu', true)} + %img{:src => perf_img('perf-jvm98',bm,'1','time.mu', false)} %td - %img{:src => "production/default/perf-jvm98/#{bm}-3/#{bm}-3-time.mu.png"} + %a{:href => perf_img('perf-jvm98',bm,'3','time.mu', true)} + %img{:src => perf_img('perf-jvm98',bm,'3','time.mu', false)} %td - %img{:src => "production/default/perf-jvm98/#{bm}-10/#{bm}-10-time.mu.png"} + %a{:href => perf_img('perf-jvm98',bm,'10','time.mu', true)} + %img{:src => perf_img('perf-jvm98',bm,'10','time.mu', false)} %h2 GC Performance for DaCapo/SPECjvm98 %table.perf %tr @@ -85,20 +101,26 @@ %tr{:class => cycle('odd','even')} %th.benchmark=bm %td - %img{:src => "production/default/perf-dacapo/#{bm}-1/#{bm}-1-time.gc.png"} + %a{:href => perf_img('perf-dacapo',bm,'1','time.gc', true)} + %img{:src => perf_img('perf-dacapo',bm,'1','time.gc', false)} %td - %img{:src => "production/default/perf-dacapo/#{bm}-3/#{bm}-3-time.gc.png"} + %a{:href => perf_img('perf-dacapo',bm,'3','time.gc', true)} + %img{:src => perf_img('perf-dacapo',bm,'3','time.gc', false)} %td - %img{:src => "production/default/perf-dacapo/#{bm}-10/#{bm}-10-time.gc.png"} + %a{:href => perf_img('perf-dacapo',bm,'10','time.gc', true)} + %img{:src => perf_img('perf-dacapo',bm,'10','time.gc', false)} - spec_bm.each do |bm| %tr{:class => cycle('odd','even')} %th.benchmark=bm %td - %img{:src => "production/default/perf-jvm98/#{bm}-1/#{bm}-1-time.gc.png"} + %a{:href => perf_img('perf-jvm98',bm,'1','time.gc', true)} + %img{:src => perf_img('perf-jvm98',bm,'1','time.gc', false)} %td - %img{:src => "production/default/perf-jvm98/#{bm}-3/#{bm}-3-time.gc.png"} + %a{:href => perf_img('perf-jvm98',bm,'3','time.gc', true)} + %img{:src => perf_img('perf-jvm98',bm,'3','time.gc', false)} %td - %img{:src => "production/default/perf-jvm98/#{bm}-10/#{bm}-10-time.gc.png"} + %a{:href => perf_img('perf-jvm98',bm,'10','time.gc', true)} + %img{:src => perf_img('perf-jvm98',bm,'10','time.gc', false)} %h2 GC Performance Numbers (Tight Heap) %table.perf %tr @@ -110,17 +132,23 @@ %tr{:class => cycle('odd','even')} %th.benchmark=bm %td - %img{:src => "production/default/perf-dacapo/#{bm}-3GC/#{bm}-3GC-time.png"} + %a{:href => perf_img('perf-dacapo',bm,'3GC','time', true)} + %img{:src => perf_img('perf-dacapo',bm,'3GC','time', false)} %td - %img{:src => "production/default/perf-dacapo/#{bm}-3GC/#{bm}-3GC-time.mu.png"} + %a{:href => perf_img('perf-dacapo',bm,'3GC','time.mu', true)} + %img{:src => perf_img('perf-dacapo',bm,'3GC','time.mu', false)} %td - %img{:src => "production/default/perf-dacapo/#{bm}-3GC/#{bm}-3GC-time.gc.png"} + %a{:href => perf_img('perf-dacapo',bm,'3GC','time.gc', true)} + %img{:src => perf_img('perf-dacapo',bm,'3GC','time.gc', false)} - spec_bm.each do |bm| %tr{:class => cycle('odd','even')} %th.benchmark=bm %td - %img{:src => "production/default/perf-jvm98/#{bm}-3GC/#{bm}-3GC-time.png"} + %a{:href => perf_img('perf-jvm98',bm,'3GC','time', true)} + %img{:src => perf_img('perf-jvm98',bm,'3GC','time', false)} %td - %img{:src => "production/default/perf-jvm98/#{bm}-3GC/#{bm}-3GC-time.mu.png"} + %a{:href => perf_img('perf-jvm98',bm,'3GC','time.mu', true)} + %img{:src => perf_img('perf-jvm98',bm,'3GC','time.mu', false)} %td - %img{:src => "production/default/perf-jvm98/#{bm}-3GC/#{bm}-3GC-time.gc.png"} + %a{:href => perf_img('perf-jvm98',bm,'3GC','time.gc', true)} + %img{:src => perf_img('perf-jvm98',bm,'3GC','time.gc', false)} Modified: cattrack/trunk/app/views/results/test_run/statistics_report.haml =================================================================== --- cattrack/trunk/app/views/results/test_run/statistics_report.haml 2007-09-12 05:52:24 UTC (rev 13558) +++ cattrack/trunk/app/views/results/test_run/statistics_report.haml 2007-09-12 08:59:17 UTC (rev 13559) @@ -25,17 +25,18 @@ %tr %th.pivot - @report.test_runs.each do |tr| - %th.column= tr.label + %th.column= tr.label %th.column chart %tr %th.row Success Rate - @report.test_runs.each do |tr| - %td= h("#{tr.successes.size}/#{tr.test_case_executions.size}") + %td= h("#{tr.successes.size}/#{tr.test_case_executions.size}") %td - @report.statistics.each do |r| %tr %th.row= h(r['name']) - @report.test_runs.each do |tr| - %td= perf_stat(tr.id, r) - %td - %img{:src => stat_img(r)} + %td= perf_stat(tr.id, r) + %td + %a{:href => stat_img(r,true)} + %img{:src => stat_img(r,false)} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |