Chromium Code Reviews| Index: frontend/croschart/views.py |
| diff --git a/frontend/croschart/views.py b/frontend/croschart/views.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b1c1ab5d904e5a53da474895feee23efb1ce94fb |
| --- /dev/null |
| +++ b/frontend/croschart/views.py |
| @@ -0,0 +1,137 @@ |
| +# Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| +import os |
| + |
| +import django.http |
| +from django.shortcuts import render_to_response |
| + |
| +from autotest_lib.frontend.croschart import models |
| +from autotest_lib.frontend.croschart.gviz_python import gviz_api |
| + |
| + |
| +class ChartException(Exception): |
| + pass |
| + |
| + |
| +def CommonPlotChart(boards, netbook, from_build, to_build, |
| + test_name, test_key, width, height): |
| + try: |
| + tpl_gviz_id = '%s-%s' % (test_name, test_key) |
| + tpl_gviz_title = test_name |
| + tpl_perf_key = test_key |
| + tpl_width = width |
| + tpl_height = height |
| + gviz_data, tpl_job_tags = models.GetChartData( |
| + boards, netbook, from_build, to_build, test_name, test_key) |
| + if not gviz_data: |
| + raise ChartException |
| + # Use gviz_api to create efficient data tables. |
| + data_table = gviz_api.DataTable({ |
| + 'build': ('string', 'Build'), |
| + tpl_perf_key: ('number', tpl_perf_key)}) |
| + data_table.LoadData(gviz_data) |
| + tpl_gviz_js = data_table.ToJSon(['build', tpl_perf_key]) |
| + tpl_colors = ['red', 'blue', 'green', 'black'] |
| + return render_to_response('plot_chart.html', locals()) |
| + except: |
| + return render_to_response('plot_unavailable.html', locals()) |
| + |
| + |
| +# Responds to restful request. |
| +def PlotChartFromBuilds(request, boards, netbook, from_build, to_build, |
| + test_name, test_key, width, height): |
| + return CommonPlotChart(boards, netbook, from_build, to_build, |
| + test_name, test_key, width, height) |
| + |
| + |
| +def PlotChart(request, boards, netbook, test_name, test_key, width, height): |
| + from_build = to_build = None |
| + return CommonPlotChart(boards, netbook, from_build, to_build, |
| + test_name, test_key, width, height) |
| + |
| + |
| +def CommonFrameCharts(tpl_boards, tpl_netbook, tpl_width, tpl_height): |
| + tpl_charts = [ |
| + ('platform_BootPerfServer', 'seconds_kernel_to_startup'), |
|
ericli
2011/04/13 22:07:47
I would refactor it out to some config file, so
1
truty
2011/04/14 19:01:51
I actually spent a fair amount of time trying to g
|
| + ('platform_BootPerfServer', 'seconds_kernel_to_startup_done'), |
| + ('platform_BootPerfServer', 'seconds_kernel_to_x_started'), |
| + ('platform_BootPerfServer', 'seconds_kernel_to_chrome_exec'), |
| + ('platform_BootPerfServer', 'seconds_kernel_to_chrome_main'), |
| + ('platform_BootPerfServer', 'seconds_kernel_to_login'), |
| + ('platform_BootPerfServer', 'seconds_kernel_to_network'), |
| + ('platform_BootPerfServer', 'seconds_power_on_to_login'), |
| + ('platform_BootPerfServer', 'seconds_reboot_time'), |
| + ('platform_BootPerfServer', 'seconds_shutdown_time'), |
| + ('platform_BootPerfServer', 'rdbytes_kernel_to_startup'), |
| + ('platform_BootPerfServer', 'rdbytes_kernel_to_startup_done'), |
| + ('platform_BootPerfServer', 'rdbytes_kernel_to_x_started'), |
| + ('platform_BootPerfServer', 'rdbytes_kernel_to_chrome_exec'), |
| + ('platform_BootPerfServer', 'rdbytes_kernel_to_chrome_main'), |
| + ('platform_BootPerfServer', 'rdbytes_kernel_to_login'), |
| + ('platform_BootPerfServer', 'seconds_firmware_boot'), |
| + ('desktopui_ChromeFirstRender', 'seconds_chrome_first_tab'), |
| + ('build_RootFilesystemSize', 'bytes_rootfs_prod'), |
| + ('build_RootFilesystemSize', 'bytes_rootfs_test'), |
| + ('power_LoadTest.WIFI', 'w_energy_rate'), |
| + ('power_LoadTest.WIFI', 'minutes_battery_life'), |
| + ('power_LoadTest.WIRED', 'w_energy_rate'), |
| + ('power_LoadTest.WIRED', 'minutes_battery_life'), |
| + ('power_Idle', 'w_energy_rate'), |
| + ('power_Resume', 'seconds_system_resume'), |
| + ('power_Resume', 'seconds_system_suspend'), |
| + ('power_Resume', 'seconds_system_resume_firmware'), |
| + ('power_Resume', 'seconds_system_resume_kernel'), |
| + ('hardware_MemoryThroughput', 'mb_per_sec_memory_cp_256k_seq'), |
| + ('hardware_MemoryThroughput', 'mb_per_sec_memory_r_256k_ran'), |
| + ('hardware_MemoryThroughput', 'mb_per_sec_memory_rw_256k_seq'), |
| + ('hardware_MemoryThroughput', 'mb_per_sec_memory_set_256k_seq'), |
| + ('hardware_MemoryThroughput', 'mb_per_sec_memory_w_256k_seq'), |
| + ('desktopui_PageCyclerTests', 'PageCyclerTest.Alexa_usFile'), |
| + ('desktopui_PageCyclerTests', 'PageCyclerTest.MozFile'), |
| + ('desktopui_PageCyclerTests', 'PageCyclerTest.Moz2File'), |
| + ('desktopui_PageCyclerTests', 'PageCyclerTest.DhtmlFile'), |
| + ('desktopui_PageCyclerTests', 'PageCyclerTest.Intl1File'), |
| + ('desktopui_PageCyclerTests', 'PageCyclerTest.Intl2File'), |
| + ('desktopui_PageCyclerTests', 'PageCyclerTest.BloatFile'), |
| + ('desktopui_V8Bench', 'score_crypto'), |
| + ('desktopui_V8Bench', 'score_deltablue'), |
| + ('desktopui_V8Bench', 'score_earleyboyer'), |
| + ('desktopui_V8Bench', 'score_raytrace'), |
| + ('desktopui_V8Bench', 'score_regexp'), |
| + ('desktopui_V8Bench', 'score_richards'), |
| + ('desktopui_V8Bench', 'score_splay'), |
| + ('desktopui_V8Bench', 'score_total')] |
| + return render_to_response('charts.html', locals()) |
| + |
| + |
| +def FrameCharts(request): |
| + boards = 'x86-mario-r12' |
|
ericli
2011/04/13 22:07:47
sounds like boards = ['x86-mario-r12'] is more app
truty
2011/04/14 19:01:51
Removed. This was for demos.
|
| + netbook = 'MARIO_MP' |
| + width = 320 |
| + height = 240 |
| + return CommonFrameCharts(boards, netbook, width, height) |
| + |
| + |
| +def FrameChartsBoardNetbook(request, boards, netbook, width, height): |
| + return CommonFrameCharts(boards, netbook, width, height) |
| + |
| + |
| +def FrameChartsTestsKeys(request, boards, netbook, from_build, to_build, |
| + test_key_names, width, height): |
| + tpl_width = width |
| + tpl_height = height |
| + tpl_boards = boards |
| + tpl_netbook = netbook |
| + tpl_from_build = from_build |
| + tpl_to_build = to_build |
| + tpl_charts = [c.split(',') for c in test_key_names.split('&')] |
| + return render_to_response('charts.html', locals()) |
| + |
| + |
| +# Populate a chart landing page. |
| +def ChartChoices(request): |
| + # Get some builds, tests and keys. |
| + # It'd be really nice to map keys to tests. |
| + return django.http.HttpResponse( |
| + 'In ChartChoices UI <tbd>.') |