Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(896)

Side by Side Diff: gm/rebaseline_server/results.py

Issue 287473002: rename rebaseline_server JSON constants to be more consistent (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 2
3 """ 3 """
4 Copyright 2013 Google Inc. 4 Copyright 2013 Google Inc.
5 5
6 Use of this source code is governed by a BSD-style license that can be 6 Use of this source code is governed by a BSD-style license that can be
7 found in the LICENSE file. 7 found in the LICENSE file.
8 8
9 Repackage expected/actual GM results as needed by our HTML rebaseline viewer. 9 Repackage expected/actual GM results as needed by our HTML rebaseline viewer.
10 """ 10 """
(...skipping 13 matching lines...) Expand all
24 # so any dirs that are already in the PYTHONPATH will be preferred. 24 # so any dirs that are already in the PYTHONPATH will be preferred.
25 PARENT_DIRECTORY = os.path.dirname(os.path.realpath(__file__)) 25 PARENT_DIRECTORY = os.path.dirname(os.path.realpath(__file__))
26 GM_DIRECTORY = os.path.dirname(PARENT_DIRECTORY) 26 GM_DIRECTORY = os.path.dirname(PARENT_DIRECTORY)
27 if GM_DIRECTORY not in sys.path: 27 if GM_DIRECTORY not in sys.path:
28 sys.path.append(GM_DIRECTORY) 28 sys.path.append(GM_DIRECTORY)
29 import gm_json 29 import gm_json
30 import imagepairset 30 import imagepairset
31 31
32 # Keys used to link an image to a particular GM test. 32 # Keys used to link an image to a particular GM test.
33 # NOTE: Keep these in sync with static/constants.js 33 # NOTE: Keep these in sync with static/constants.js
34 REBASELINE_SERVER_SCHEMA_VERSION_NUMBER = 3 34 VALUE__HEADER__SCHEMA_VERSION = 3
35 KEY__EXPECTATIONS__BUGS = gm_json.JSONKEY_EXPECTEDRESULTS_BUGS 35 KEY__EXPECTATIONS__BUGS = gm_json.JSONKEY_EXPECTEDRESULTS_BUGS
36 KEY__EXPECTATIONS__IGNOREFAILURE = gm_json.JSONKEY_EXPECTEDRESULTS_IGNOREFAILURE 36 KEY__EXPECTATIONS__IGNOREFAILURE = gm_json.JSONKEY_EXPECTEDRESULTS_IGNOREFAILURE
37 KEY__EXPECTATIONS__REVIEWED = gm_json.JSONKEY_EXPECTEDRESULTS_REVIEWED 37 KEY__EXPECTATIONS__REVIEWED = gm_json.JSONKEY_EXPECTEDRESULTS_REVIEWED
38 KEY__EXTRACOLUMN__BUILDER = 'builder' 38 KEY__EXTRACOLUMNS__BUILDER = 'builder'
39 KEY__EXTRACOLUMN__CONFIG = 'config' 39 KEY__EXTRACOLUMNS__CONFIG = 'config'
40 KEY__EXTRACOLUMN__RESULT_TYPE = 'resultType' 40 KEY__EXTRACOLUMNS__RESULT_TYPE = 'resultType'
41 KEY__EXTRACOLUMN__TEST = 'test' 41 KEY__EXTRACOLUMNS__TEST = 'test'
42 KEY__HEADER = 'header'
43 KEY__HEADER__DATAHASH = 'dataHash' 42 KEY__HEADER__DATAHASH = 'dataHash'
44 KEY__HEADER__IS_EDITABLE = 'isEditable' 43 KEY__HEADER__IS_EDITABLE = 'isEditable'
45 KEY__HEADER__IS_EXPORTED = 'isExported' 44 KEY__HEADER__IS_EXPORTED = 'isExported'
46 KEY__HEADER__IS_STILL_LOADING = 'resultsStillLoading' 45 KEY__HEADER__IS_STILL_LOADING = 'resultsStillLoading'
47 KEY__HEADER__RESULTS_ALL = 'all' 46 KEY__HEADER__RESULTS_ALL = 'all'
48 KEY__HEADER__RESULTS_FAILURES = 'failures' 47 KEY__HEADER__RESULTS_FAILURES = 'failures'
49 KEY__HEADER__SCHEMA_VERSION = 'schemaVersion' 48 KEY__HEADER__SCHEMA_VERSION = 'schemaVersion'
50 KEY__HEADER__TIME_NEXT_UPDATE_AVAILABLE = 'timeNextUpdateAvailable' 49 KEY__HEADER__TIME_NEXT_UPDATE_AVAILABLE = 'timeNextUpdateAvailable'
51 KEY__HEADER__TIME_UPDATED = 'timeUpdated' 50 KEY__HEADER__TIME_UPDATED = 'timeUpdated'
52 KEY__HEADER__TYPE = 'type' 51 KEY__HEADER__TYPE = 'type'
53 KEY__NEW_IMAGE_URL = 'newImageUrl'
54 KEY__RESULT_TYPE__FAILED = gm_json.JSONKEY_ACTUALRESULTS_FAILED 52 KEY__RESULT_TYPE__FAILED = gm_json.JSONKEY_ACTUALRESULTS_FAILED
55 KEY__RESULT_TYPE__FAILUREIGNORED = gm_json.JSONKEY_ACTUALRESULTS_FAILUREIGNORED 53 KEY__RESULT_TYPE__FAILUREIGNORED = gm_json.JSONKEY_ACTUALRESULTS_FAILUREIGNORED
56 KEY__RESULT_TYPE__NOCOMPARISON = gm_json.JSONKEY_ACTUALRESULTS_NOCOMPARISON 54 KEY__RESULT_TYPE__NOCOMPARISON = gm_json.JSONKEY_ACTUALRESULTS_NOCOMPARISON
57 KEY__RESULT_TYPE__SUCCEEDED = gm_json.JSONKEY_ACTUALRESULTS_SUCCEEDED 55 KEY__RESULT_TYPE__SUCCEEDED = gm_json.JSONKEY_ACTUALRESULTS_SUCCEEDED
58 56
59 IMAGE_FILENAME_RE = re.compile(gm_json.IMAGE_FILENAME_PATTERN) 57 IMAGE_FILENAME_RE = re.compile(gm_json.IMAGE_FILENAME_PATTERN)
60 IMAGE_FILENAME_FORMATTER = '%s_%s.png' # pass in (testname, config) 58 IMAGE_FILENAME_FORMATTER = '%s_%s.png' # pass in (testname, config)
61 59
62 DEFAULT_ACTUALS_DIR = '.gm-actuals' 60 DEFAULT_ACTUALS_DIR = '.gm-actuals'
63 DEFAULT_GENERATED_IMAGES_ROOT = os.path.join( 61 DEFAULT_GENERATED_IMAGES_ROOT = os.path.join(
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 results_type: string indicating which set of results to return; 94 results_type: string indicating which set of results to return;
97 must be one of the RESULTS_* constants 95 must be one of the RESULTS_* constants
98 reload_seconds: if specified, note that new results may be available once 96 reload_seconds: if specified, note that new results may be available once
99 these results are reload_seconds old 97 these results are reload_seconds old
100 is_editable: whether clients are allowed to submit new baselines 98 is_editable: whether clients are allowed to submit new baselines
101 is_exported: whether these results are being made available to other 99 is_exported: whether these results are being made available to other
102 network hosts 100 network hosts
103 """ 101 """
104 response_dict = self._results[results_type] 102 response_dict = self._results[results_type]
105 time_updated = self.get_timestamp() 103 time_updated = self.get_timestamp()
106 response_dict[KEY__HEADER] = { 104 response_dict[imagepairset.KEY__ROOT__HEADER] = {
107 KEY__HEADER__SCHEMA_VERSION: ( 105 KEY__HEADER__SCHEMA_VERSION: (
108 REBASELINE_SERVER_SCHEMA_VERSION_NUMBER), 106 VALUE__HEADER__SCHEMA_VERSION),
109 107
110 # Timestamps: 108 # Timestamps:
111 # 1. when this data was last updated 109 # 1. when this data was last updated
112 # 2. when the caller should check back for new data (if ever) 110 # 2. when the caller should check back for new data (if ever)
113 KEY__HEADER__TIME_UPDATED: time_updated, 111 KEY__HEADER__TIME_UPDATED: time_updated,
114 KEY__HEADER__TIME_NEXT_UPDATE_AVAILABLE: ( 112 KEY__HEADER__TIME_NEXT_UPDATE_AVAILABLE: (
115 (time_updated+reload_seconds) if reload_seconds else None), 113 (time_updated+reload_seconds) if reload_seconds else None),
116 114
117 # The type we passed to get_results_of_type() 115 # The type we passed to get_results_of_type()
118 KEY__HEADER__TYPE: results_type, 116 KEY__HEADER__TYPE: results_type,
119 117
120 # Hash of dataset, which the client must return with any edits-- 118 # Hash of dataset, which the client must return with any edits--
121 # this ensures that the edits were made to a particular dataset. 119 # this ensures that the edits were made to a particular dataset.
122 KEY__HEADER__DATAHASH: str(hash(repr( 120 KEY__HEADER__DATAHASH: str(hash(repr(
123 response_dict[imagepairset.KEY__IMAGEPAIRS]))), 121 response_dict[imagepairset.KEY__ROOT__IMAGEPAIRS]))),
124 122
125 # Whether the server will accept edits back. 123 # Whether the server will accept edits back.
126 KEY__HEADER__IS_EDITABLE: is_editable, 124 KEY__HEADER__IS_EDITABLE: is_editable,
127 125
128 # Whether the service is accessible from other hosts. 126 # Whether the service is accessible from other hosts.
129 KEY__HEADER__IS_EXPORTED: is_exported, 127 KEY__HEADER__IS_EXPORTED: is_exported,
130 } 128 }
131 return response_dict 129 return response_dict
132 130
133 def get_timestamp(self): 131 def get_timestamp(self):
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 295
298 @staticmethod 296 @staticmethod
299 def get_multilevel(input_dict, *keys): 297 def get_multilevel(input_dict, *keys):
300 """ Returns input_dict[key1][key2][...], or None if any key is not found. 298 """ Returns input_dict[key1][key2][...], or None if any key is not found.
301 """ 299 """
302 for key in keys: 300 for key in keys:
303 if input_dict == None: 301 if input_dict == None:
304 return None 302 return None
305 input_dict = input_dict.get(key, None) 303 input_dict = input_dict.get(key, None)
306 return input_dict 304 return input_dict
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698