| Index: chrome/test/functional/ispy/server/main_view_handler.py
|
| ===================================================================
|
| --- chrome/test/functional/ispy/server/main_view_handler.py (revision 261231)
|
| +++ chrome/test/functional/ispy/server/main_view_handler.py (working copy)
|
| @@ -1,116 +0,0 @@
|
| -# Copyright 2013 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -"""Request handler to serve the main_view page."""
|
| -
|
| -import jinja2
|
| -import json
|
| -import os
|
| -import re
|
| -import sys
|
| -import webapp2
|
| -
|
| -import ispy_api
|
| -from common import constants
|
| -from common import ispy_utils
|
| -
|
| -import gs_bucket
|
| -import views
|
| -
|
| -JINJA = jinja2.Environment(
|
| - loader=jinja2.FileSystemLoader(os.path.dirname(views.__file__)),
|
| - extensions=['jinja2.ext.autoescape'])
|
| -
|
| -
|
| -class MainViewHandler(webapp2.RequestHandler):
|
| - """Request handler to serve the main_view page."""
|
| -
|
| - def get(self):
|
| - """Handles a get request to the main_view page.
|
| -
|
| - If the test_run parameter is specified, then a page displaying all of
|
| - the failed runs in the test_run will be shown. Otherwise a view listing
|
| - all of the test_runs available for viewing will be displayed.
|
| - """
|
| - test_run = self.request.get('test_run')
|
| - bucket = gs_bucket.GoogleCloudStorageBucket(constants.BUCKET)
|
| - ispy = ispy_utils.ISpyUtils(bucket)
|
| - # Load the view.
|
| - if test_run:
|
| - self._GetForTestRun(test_run, ispy)
|
| - return
|
| - self._GetAllTestRuns(ispy)
|
| -
|
| - def _GetAllTestRuns(self, ispy):
|
| - """Renders a list view of all of the test_runs available in GS.
|
| -
|
| - Args:
|
| - ispy: An instance of ispy_api.ISpyApi.
|
| - """
|
| - template = JINJA.get_template('list_view.html')
|
| - data = {}
|
| - test_runs = set([path.lstrip('/').split('/')[1] for path in
|
| - ispy.GetAllPaths('failures/')])
|
| - base_url = '/?test_run=%s'
|
| - data['links'] = [(test_run, base_url % test_run) for test_run in test_runs]
|
| - self.response.write(template.render(data))
|
| -
|
| - def _GetForTestRun(self, test_run, ispy):
|
| - """Renders a sorted list of failure-rows for a given test_run.
|
| -
|
| - This method will produce a list of failure-rows that are sorted
|
| - in descending order by number of different pixels.
|
| -
|
| - Args:
|
| - test_run: The name of the test_run to render failure rows from.
|
| - ispy: An instance of ispy_api.ISpyApi.
|
| - """
|
| - paths = set([path for path in ispy.GetAllPaths('failures/' + test_run)
|
| - if path.endswith('actual.png')])
|
| - can_rebaseline = ispy_api.ISpyApi(
|
| - ispy.cloud_bucket).CanRebaselineToTestRun(test_run)
|
| - rows = [self._CreateRow(test_run, path, ispy) for path in paths]
|
| -
|
| - # Function that sorts by the different_pixels field in the failure-info.
|
| - def _Sorter(a, b):
|
| - return cmp(b['percent_different'],
|
| - a['percent_different'])
|
| - template = JINJA.get_template('main_view.html')
|
| - self.response.write(
|
| - template.render({'comparisons': sorted(rows, _Sorter),
|
| - 'test_run': test_run,
|
| - 'can_rebaseline': can_rebaseline}))
|
| -
|
| - def _CreateRow(self, test_run, path, ispy):
|
| - """Creates one failure-row.
|
| -
|
| - This method builds a dictionary with the data necessary to display a
|
| - failure in the main_view html template.
|
| -
|
| - Args:
|
| - test_run: The name of the test_run the failure is in.
|
| - path: A path to the failure's actual.png file.
|
| - ispy: An instance of ispy_api.ISpyApi.
|
| -
|
| - Returns:
|
| - A dictionary with fields necessary to render a failure-row
|
| - in the main_view html template.
|
| - """
|
| - res = {}
|
| - res['expectation'] = path.lstrip('/').split('/')[2]
|
| - res['test_run'] = test_run
|
| - res['info'] = json.loads(ispy.cloud_bucket.DownloadFile(
|
| - ispy_utils.GetFailurePath(res['test_run'], res['expectation'],
|
| - 'info.txt')))
|
| - expected = ispy_utils.GetExpectationPath(
|
| - res['expectation'], 'expected.png')
|
| - diff = ispy_utils.GetFailurePath(test_run, res['expectation'], 'diff.png')
|
| - res['percent_different'] = res['info']['fraction_different'] * 100
|
| - res['expected_path'] = expected
|
| - res['diff_path'] = diff
|
| - res['actual_path'] = path
|
| - res['expected'] = ispy.cloud_bucket.GetImageURL(expected)
|
| - res['diff'] = ispy.cloud_bucket.GetImageURL(diff)
|
| - res['actual'] = ispy.cloud_bucket.GetImageURL(path)
|
| - return res
|
|
|