Changeset 112829 in webkit
- Timestamp:
- Apr 1, 2012 9:48:35 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ChangeLog
r112824 r112829 1 2012-04-01 Ryosuke Niwa <rniwa@webkit.org> 2 3 perf-o-matic should store test results' units 4 https://bugs.webkit.org/show_bug.cgi?id=82852 5 6 Reviewed by Kentaro Hara. 7 8 * Websites/webkit-perf.appspot.com/models.py: 9 (Test): 10 (Test.update_or_insert): Added "unit" to the argument list. 11 (Test.update_or_insert.execute): Store the unit. 12 (ReportLog.results_are_well_formed): Moved from ReportHandler. 13 (ReportLog.results_are_well_formed._is_float_convertible): Ditto. 14 * Websites/webkit-perf.appspot.com/models_unittest.py: 15 (TestModelTests.test_update_or_insert): Added a test case for "unit" argument. 16 (TestModelTests.test_update_or_insert_to_update): Ditto. 17 (ReportLogTests.test_results_are_well_formed): Added. 18 (ReportLogTests.test_results_are_well_formed.assert_results_are_well_formed): Added. 19 * Websites/webkit-perf.appspot.com/report_handler.py: 20 (ReportHandler.post): Calls ReportLog.results_are_well_formed. 21 * Websites/webkit-perf.appspot.com/report_process_handler.py: 22 (ReportProcessHandler.post): Passes results['unit'] to Test.update_or_insert. 23 1 24 2012-04-01 Ryosuke Niwa <rniwa@webkit.org> 2 25 -
trunk/Tools/ChangeLog
r112816 r112829 1 2012-04-01 Ryosuke Niwa <rniwa@webkit.org> 2 3 perf-o-matic should store test results' units 4 https://bugs.webkit.org/show_bug.cgi?id=82852 5 6 Reviewed by Kentaro Hara. 7 8 Include units in the results JSON. 9 10 * Scripts/webkitpy/performance_tests/perftestsrunner.py: 11 (PerfTestsRunner._process_chromium_style_test_result): 12 (PerfTestsRunner._process_parser_test_result): 13 1 14 2012-04-01 Tony Tseung <tseung@apple.com> 2 15 -
trunk/Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py
r112140 r112829 251 251 resultLine = self._inspector_result_regex.match(line) 252 252 if resultLine: 253 # FIXME: Store the unit 253 254 self._results[resultLine.group('name').replace(' ', '')] = float(resultLine.group('value')) 254 255 self._buildbot_output.write("%s\n" % line) … … 287 288 score_regex = re.compile(r'^(?P<key>' + r'|'.join(keys) + r')\s+(?P<value>[0-9\.]+)\s*(?P<unit>.*)') 288 289 unit = "ms" 290 289 291 for line in re.split('\n', output.text): 290 292 score = score_regex.match(line) … … 301 303 if test_failed or set(keys) != set(results.keys()): 302 304 return True 305 306 results['unit'] = unit 307 303 308 self._results[filesystem.join(category, test_name).replace('\\', '/')] = results 304 309 self._buildbot_output.write('RESULT %s: %s= %s %s\n' % (category, test_name, results['avg'], unit)) -
trunk/Websites/webkit-perf.appspot.com/models.py
r112822 r112829 149 149 branches = db.ListProperty(db.Key) 150 150 platforms = db.ListProperty(db.Key) 151 unit = db.StringProperty() 151 152 hidden = db.BooleanProperty() 152 153 153 154 @staticmethod 154 def update_or_insert(test_name, branch, platform ):155 def update_or_insert(test_name, branch, platform, unit=None): 155 156 existing_test = [None] 156 157 … … 162 163 if platform.key() not in test.platforms: 163 164 test.platforms.append(platform.key()) 165 test.unit = unit 164 166 test.put() 165 167 existing_test[0] = test … … 252 254 def results(self): 253 255 return self.get_value('results') 256 257 def results_are_well_formed(self): 258 259 def _is_float_convertible(value): 260 try: 261 float(value) 262 return True 263 except TypeError: 264 return False 265 except ValueError: 266 return False 267 268 if not isinstance(self.results(), dict): 269 return False 270 271 for testResult in self.results().values(): 272 if isinstance(testResult, dict): 273 for key, value in testResult.iteritems(): 274 if key != "unit" and not _is_float_convertible(value): 275 return False 276 if 'avg' not in testResult: 277 return False 278 continue 279 if not _is_float_convertible(testResult): 280 return False 281 282 return True 254 283 255 284 def builder(self): -
trunk/Websites/webkit-perf.appspot.com/models_unittest.py
r110210 r112829 266 266 self.assertEqual(test.branches, [branch.key()]) 267 267 self.assertEqual(test.platforms, [platform.key()]) 268 self.assertEqual(test.unit, None) 268 269 self.assertOnlyInstance(test) 269 270 … … 276 277 other_branch = Branch.create_if_possible('other-branch', 'Other Branch') 277 278 other_platform = Platform.create_if_possible('other-platform', 'Other Platform') 278 test = Test.update_or_insert('some-test', other_branch, other_platform )279 test = Test.update_or_insert('some-test', other_branch, other_platform, 'ms') 279 280 self.assertOnlyInstance(test) 280 281 self.assertEqualUnorderedList(test.branches, [branch.key(), other_branch.key()]) 281 282 self.assertEqualUnorderedList(test.platforms, [platform.key(), other_platform.key()]) 282 283 test = Test.get(test.key()) 284 self.assertEqualUnorderedList(test.branches, [branch.key(), other_branch.key()]) 285 self.assertEqualUnorderedList(test.platforms, [platform.key(), other_platform.key()]) 283 self.assertEqualUnorderedList(test.unit, 'ms') 286 284 287 285 def test_merge(self): … … 434 432 self.assertEqual(log.results(), None) 435 433 434 def test_results_are_well_formed(self): 435 436 def assert_results_are_well_formed(json, expected): 437 self.assertEqual(self._create_log_with_payload(json).results_are_well_formed(), expected) 438 439 assert_results_are_well_formed('{"results": 123}', False) 440 assert_results_are_well_formed('{"results": {"test": 123}}', True) 441 assert_results_are_well_formed('{"results": {"test": 123, "other-test": 456}}', True) 442 assert_results_are_well_formed('{"results": {"test": 123, "other-test": 456, "bad-test": "hi"}}', False) 443 assert_results_are_well_formed('{"results": {"test": {"avg": 456}}}', True) 444 assert_results_are_well_formed('{"results": {"test": {"avg": 456, "median": "hello"}}}', False) 445 assert_results_are_well_formed('{"results": {"test": {"avg": 456, "median": 789}}}', True) 446 assert_results_are_well_formed('{"results": {"test": {"avg": 456, "unit": "bytes"}}}', True) 447 436 448 def test_builder(self): 437 449 log = self._create_log_with_payload('{"key": "value"}') -
trunk/Websites/webkit-perf.appspot.com/report_handler.py
r107532 r112829 70 70 self._output('Authentication failed') 71 71 72 if not self._results_are_valid(log):72 if not log.results_are_well_formed(): 73 73 self._output("The payload doesn't contain results or results are malformed") 74 74 … … 88 88 return False 89 89 90 def _results_are_valid(self, log):91 92 def _is_float_convertible(value):93 try:94 float(value)95 return True96 except TypeError:97 return False98 except ValueError:99 return False100 101 if not isinstance(log.results(), dict):102 return False103 104 for testResult in log.results().values():105 if isinstance(testResult, dict):106 for value in testResult.values():107 if not _is_float_convertible(value):108 return False109 if 'avg' not in testResult:110 return False111 continue112 if not _is_float_convertible(testResult):113 return False114 115 return True116 117 90 118 91 class AdminReportHandler(ReportHandler): -
trunk/Websites/webkit-perf.appspot.com/report_process_handler.py
r110210 r112829 59 59 60 60 for test_name, result_value in log.results().iteritems(): 61 test = Test.update_or_insert(test_name, branch, platform )61 test = Test.update_or_insert(test_name, branch, platform, result_value.get('unit')) 62 62 result = TestResult.get_or_insert_from_parsed_json(test_name, build, result_value) 63 63 runs = Runs.get_by_objects(branch, platform, test)
Note: See TracChangeset
for help on using the changeset viewer.