Changeset 106321 in webkit
- Timestamp:
- Jan 30, 2012 7:14:19 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ChangeLog
r106308 r106321 1 2012-01-30 Ryosuke Niwa <rniwa@webkit.org> 2 3 Python code in webkit-perf.appspot.com uses camelCase 4 https://bugs.webkit.org/show_bug.cgi?id=77392 5 6 Reviewed by Adam Barth. 7 8 Use PEP8 style naming conventions instead of camelCase. 9 10 * Websites/webkit-perf.appspot.com/create_handler.py: 11 (CreateHandler.post): 12 (CreateHandler._create_builder): 13 (CreateHandler._create_branch): 14 (CreateHandler._create_platform): 15 * Websites/webkit-perf.appspot.com/dashboard_handler.py: 16 (DashboardHandler.get): 17 * Websites/webkit-perf.appspot.com/manifest_handler.py: 18 (ManifestHandler.get): 19 * Websites/webkit-perf.appspot.com/merge_tests_handler.py: 20 (MergeTestsHandler.post): 21 * Websites/webkit-perf.appspot.com/models.py: 22 (create_in_transaction_with_numeric_id_holder): 23 (delete_model_with_numeric_id_holder): 24 (modelFromNumericId): 25 (Builder.authenticate): 26 (Builder.hashed_password): 27 (Test.cache_key): 28 * Websites/webkit-perf.appspot.com/report_handler.py: 29 (ReportHandler.post): 30 (ReportHandler._model_by_key_name_in_body_or_error): 31 (ReportHandler._integer_in_body): 32 (ReportHandler._timestamp_in_body): 33 (ReportHandler.bypass_authentication): 34 (ReportHandler._results_are_valid): 35 (ReportHandler._results_are_valid._is_float_convertible): 36 (ReportHandler._create_build_if_possible): 37 (ReportHandler._create_build_if_possible.execute): 38 (ReportHandler._add_test_if_needed): 39 (ReportHandler._add_test_if_needed.execute): 40 (ReportHandler): 41 (AdminReportHandler.bypass_authentication): 42 * Websites/webkit-perf.appspot.com/runs_handler.py: 43 (RunsHandler.get): 44 1 45 2012-01-30 Ryosuke Niwa <rniwa@webkit.org> 2 46 -
trunk/Websites/webkit-perf.appspot.com/create_handler.py
r106308 r106321 38 38 from models import NumericIdHolder 39 39 from models import Platform 40 from models import create InTransactionWithNumericIdHolder40 from models import create_in_transaction_with_numeric_id_holder 41 41 42 42 … … 55 55 56 56 if model == 'builder': 57 error = self._create Builder(name, password)57 error = self._create_builder(name, password) 58 58 elif model == 'branch': 59 error = self._create Branch(key, name)59 error = self._create_branch(key, name) 60 60 elif model == 'platform': 61 error = self._create Platform(key, name)61 error = self._create_platform(key, name) 62 62 else: 63 63 error = "Unknown model type: %s\n" % model … … 67 67 self.response.out.write(error + '\n' if error else 'OK') 68 68 69 def _create Builder(self, name, password):69 def _create_builder(self, name, password): 70 70 if not name or not password: 71 71 return 'Invalid name or password' 72 72 73 password = Builder.hashed Password(password)73 password = Builder.hashed_password(password) 74 74 75 75 def execute(): … … 86 86 return db.run_in_transaction(execute) 87 87 88 def _create Branch(self, key, name):88 def _create_branch(self, key, name): 89 89 if not key or not name: 90 90 return 'Invalid key or name' … … 100 100 return branch 101 101 102 create InTransactionWithNumericIdHolder(execute)102 create_in_transaction_with_numeric_id_holder(execute) 103 103 return error[0] 104 104 105 def _create Platform(self, key, name):105 def _create_platform(self, key, name): 106 106 if not key or not name: 107 107 return 'Invalid key name' … … 117 117 return platform 118 118 119 create InTransactionWithNumericIdHolder(execute)119 create_in_transaction_with_numeric_id_holder(execute) 120 120 return error[0] -
trunk/Websites/webkit-perf.appspot.com/dashboard_handler.py
r106308 r106321 42 42 def get(self): 43 43 self.response.headers['Content-Type'] = 'application/json; charset=utf-8'; 44 45 44 cache = memcache.get('dashboard') 46 45 if cache: … … 48 47 return 49 48 50 webkit Trunk = Branch.get_by_key_name('webkit-trunk')49 webkit_trunk = Branch.get_by_key_name('webkit-trunk') 51 50 52 51 # FIXME: Determine popular branches, platforms, and tests 53 52 dashboard = { 54 53 'defaultBranch': 'WebKit trunk', 55 'branchToId': {webkit Trunk.name: webkitTrunk.id},54 'branchToId': {webkit_trunk.name: webkit_trunk.id}, 56 55 'platformToId': {}, 57 56 'testToId': {}, -
trunk/Websites/webkit-perf.appspot.com/manifest_handler.py
r106308 r106321 47 47 return 48 48 49 test Map = {}50 platform IdMap = {}51 branch IdMap = {}49 test_map = {} 50 platform_id_map = {} 51 branch_id_map = {} 52 52 for test in Test.all(): 53 branch Ids = [Branch.get(branchKey).id for branchKey in test.branches]54 platform Ids = [Platform.get(platformKey).id for platformKey in test.platforms]55 test Map[test.id] = {53 branch_ids = [Branch.get(branch_key).id for branch_key in test.branches] 54 platform_ids = [Platform.get(platform_key).id for platform_key in test.platforms] 55 test_map[test.id] = { 56 56 'name': test.name, 57 'branchIds': branch Ids,58 'platformIds': platform Ids,57 'branchIds': branch_ids, 58 'platformIds': platform_ids, 59 59 } 60 60 61 for platform Id in platformIds:62 platform IdMap.setdefault(platformId, {'tests': [], 'branches': []})63 platform IdMap[platformId]['tests'].append(test.id)64 platform IdMap[platformId]['branches'] += branchIds61 for platform_id in platform_ids: 62 platform_id_map.setdefault(platformId, {'tests': [], 'branches': []}) 63 platform_id_map[platform_id]['tests'].append(test.id) 64 platform_id_map[platform_id]['branches'] += branch_ids 65 65 66 for branch Id in branchIds:67 branch IdMap.setdefault(branchId, {'tests': [], 'platforms': []})68 branch IdMap[branchId]['tests'].append(test.id)69 branch IdMap[branchId]['platforms'] += platformIds66 for branch_id in branch_ids: 67 branch_id_map.setdefault(branchId, {'tests': [], 'platforms': []}) 68 branch_id_map[branch_id]['tests'].append(test.id) 69 branch_id_map[branch_id]['platforms'] += platform_ids 70 70 71 platform Map = {}71 platform_map = {} 72 72 for platform in Platform.all(): 73 if platform.id not in platform IdMap:73 if platform.id not in platform_id_map: 74 74 continue 75 platform Map[platform.id] = {75 platform_map[platform.id] = { 76 76 'name': platform.name, 77 'testIds': list(set(platform IdMap[platform.id]['tests'])),78 'branchIds': list(set(platform IdMap[platform.id]['branches'])),77 'testIds': list(set(platform_id_map[platform.id]['tests'])), 78 'branchIds': list(set(platform_id_map[platform.id]['branches'])), 79 79 } 80 80 81 branch Map = {}81 branch_map = {} 82 82 for branch in Branch.all(): 83 if branch.id not in branch IdMap:83 if branch.id not in branch_id_map: 84 84 continue 85 branch Map[branch.id] = {85 branch_map[branch.id] = { 86 86 'name': branch.name, 87 'testIds': list(set(branch IdMap[branch.id]['tests'])),88 'platformIds': list(set(branch IdMap[branch.id]['platforms'])),87 'testIds': list(set(branch_id_map[branch.id]['tests'])), 88 'platformIds': list(set(branch_id_map[branch.id]['platforms'])), 89 89 } 90 90 91 result = json.dumps({'testMap': test Map, 'platformMap': platformMap, 'branchMap': branchMap})91 result = json.dumps({'testMap': test_map, 'platformMap': platform_map, 'branchMap': branch_map}) 92 92 self.response.out.write(result) 93 93 memcache.add('manifest', result) -
trunk/Websites/webkit-perf.appspot.com/merge_tests_handler.py
r106308 r106321 36 36 from models import Test 37 37 from models import TestResult 38 from models import delete ModelWithNumericIdHolder38 from models import delete_model_with_numeric_id_holder 39 39 40 40 … … 52 52 return 53 53 54 merged Results = TestResult.all()55 merged Results.filter('name =', merge.name)56 for result in merged Results:54 merged_results = TestResult.all() 55 merged_results.filter('name =', merge.name) 56 for result in merged_results: 57 57 result.name = into.name 58 58 result.put() … … 62 62 memcache.flush_all() 63 63 64 delete ModelWithNumericIdHolder(merge)64 delete_model_with_numeric_id_holder(merge) 65 65 66 66 self.response.out.write('OK') -
trunk/Websites/webkit-perf.appspot.com/models.py
r106308 r106321 39 39 40 40 41 def create InTransactionWithNumericIdHolder(callback):42 id Holder = NumericIdHolder()43 id Holder.put()44 id Holder = NumericIdHolder.get(idHolder.key())45 owner = db.run_in_transaction(callback, id Holder.key().id())41 def create_in_transaction_with_numeric_id_holder(callback): 42 id_holder = NumericIdHolder() 43 id_holder.put() 44 id_holder = NumericIdHolder.get(id_holder.key()) 45 owner = db.run_in_transaction(callback, id_holder.key().id()) 46 46 if owner: 47 id Holder.owner = owner48 id Holder.put()47 id_holder.owner = owner 48 id_holder.put() 49 49 else: 50 id Holder.delete()50 id_holder.delete() 51 51 return owner 52 52 53 def deleteModelWithNumericIdHolder(model): 54 idHolder = NumericIdHolder.get_by_id(model.id) 53 54 def delete_model_with_numeric_id_holder(model): 55 id_holder = NumericIdHolder.get_by_id(model.id) 55 56 model.delete() 56 id Holder.delete()57 id_holder.delete() 57 58 58 59 59 def modelFromNumericId(id, expected Kind):60 id Holder = NumericIdHolder.get_by_id(id)61 return id Holder.owner if idHolder and idHolder.owner and isinstance(idHolder.owner, expectedKind) else None60 def modelFromNumericId(id, expected_kind): 61 id_holder = NumericIdHolder.get_by_id(id) 62 return id_holder.owner if id_holder and id_holder.owner and isinstance(id_holder.owner, expected_kind) else None 62 63 63 64 … … 76 77 password = db.StringProperty(required=True) 77 78 78 def authenticate(self, raw Password):79 return self.password == hashlib.sha256(raw Password).hexdigest()79 def authenticate(self, raw_password): 80 return self.password == hashlib.sha256(raw_password).hexdigest() 80 81 81 82 @staticmethod 82 def hashed Password(rawPassword):83 return hashlib.sha256(raw Password).hexdigest()83 def hashed_password(raw_password): 84 return hashlib.sha256(raw_password).hexdigest() 84 85 85 86 … … 101 102 102 103 @staticmethod 103 def cache Key(testId, branchId, platformId):104 return 'runs:%d,%d,%d' % (test Id, branchId, platformId)104 def cache_key(test_id, branch_id, platform_id): 105 return 'runs:%d,%d,%d' % (test_id, branch_id, platform_id) 105 106 106 107 -
trunk/Websites/webkit-perf.appspot.com/report_handler.py
r106308 r106321 45 45 from models import Test 46 46 from models import TestResult 47 from models import create InTransactionWithNumericIdHolder47 from models import create_in_transaction_with_numeric_id_holder 48 48 49 49 … … 64 64 return self._output('Failed to parse the payload as a json. Report key: %d' % log.key().id()) 65 65 66 builder = self._model ByKeyNameInBodyOrError(Builder, 'builder-name')67 branch = self._model ByKeyNameInBodyOrError(Branch, 'branch')68 platform = self._model ByKeyNameInBodyOrError(Platform, 'platform')69 build Number = self._integerInBody('build-number')70 revision = self._integer InBody('revision')71 timestamp = self._timestamp InBody()66 builder = self._model_by_key_name_in_body_or_error(Builder, 'builder-name') 67 branch = self._model_by_key_name_in_body_or_error(Branch, 'branch') 68 platform = self._model_by_key_name_in_body_or_error(Platform, 'platform') 69 build_number = self._integer_in_body('build-number') 70 revision = self._integer_in_body('revision') 71 timestamp = self._timestamp_in_body() 72 72 73 73 failed = False 74 if builder and not (self.bypass Authentication() or builder.authenticate(self._body.get('password', ''))):74 if builder and not (self.bypass_authentication() or builder.authenticate(self._body.get('password', ''))): 75 75 self._output('Authentication failed') 76 76 failed = True 77 77 78 if not self._results AreValid():78 if not self._results_are_valid(): 79 79 self._output("The payload doesn't contain results or results are malformed") 80 80 failed = True 81 81 82 if not (builder and branch and platform and build Number and revision and timestamp) or failed:82 if not (builder and branch and platform and build_number and revision and timestamp) or failed: 83 83 return 84 84 85 build = self._create BuildIfPossible(builder, buildNumber, branch, platform, revision, timestamp)85 build = self._create_build_if_possible(builder, build_number, branch, platform, revision, timestamp) 86 86 if not build: 87 87 return 88 88 89 for test Name, result in self._body['results'].iteritems():90 test = self._add TestIfNeeded(testName, branch, platform)91 memcache.delete(Test.cache Key(test.id, branch.id, platform.id))89 for test_name, result in self._body['results'].iteritems(): 90 test = self._add_test_if_needed(test_name, branch, platform) 91 memcache.delete(Test.cache_key(test.id, branch.id, platform.id)) 92 92 if isinstance(result, dict): 93 TestResult(name=test Name, build=build, value=float(result.get('avg', 0)), valueMedian=float(result.get('median', 0)),93 TestResult(name=test_name, build=build, value=float(result.get('avg', 0)), valueMedian=float(result.get('median', 0)), 94 94 valueStdev=float(result.get('stdev', 0)), valueMin=float(result.get('min', 0)), valueMax=float(result.get('max', 0))).put() 95 95 else: 96 TestResult(name=test Name, build=build, value=float(result)).put()96 TestResult(name=test_name, build=build, value=float(result)).put() 97 97 98 98 log = ReportLog.get(log.key()) … … 105 105 return self._output('OK') 106 106 107 def _model ByKeyNameInBodyOrError(self, model, keyName):107 def _model_by_key_name_in_body_or_error(self, model, keyName): 108 108 key = self._body.get(keyName, '') 109 109 instance = key and model.get_by_key_name(key) … … 112 112 return instance 113 113 114 def _integer InBody(self, key):114 def _integer_in_body(self, key): 115 115 value = self._body.get(key, '') 116 116 try: … … 119 119 return self._output('Invalid %s: "%s"' % (key.replace('-', ' '), value)) 120 120 121 def _timestamp InBody(self):121 def _timestamp_in_body(self): 122 122 value = self._body.get('timestamp', '') 123 123 try: … … 129 129 self.response.out.write(message + '\n') 130 130 131 def bypass Authentication(self):131 def bypass_authentication(self): 132 132 return False 133 133 134 def _results AreValid(self):134 def _results_are_valid(self): 135 135 136 def _is FloatConvertible(value):136 def _is_float_convertible(value): 137 137 try: 138 138 float(value) … … 147 147 if isinstance(testResult, dict): 148 148 for value in testResult.values(): 149 if not _is FloatConvertible(value):149 if not _is_float_convertible(value): 150 150 return False 151 151 if 'avg' not in testResult: 152 152 return False 153 153 continue 154 if not _is FloatConvertible(testResult):154 if not _is_float_convertible(testResult): 155 155 return False 156 156 157 157 return True 158 158 159 def _create BuildIfPossible(self, builder, buildNumber, branch, platform, revision, timestamp):159 def _create_build_if_possible(self, builder, build_number, branch, platform, revision, timestamp): 160 160 key_name = builder.name + ':' + str(int(time.mktime(timestamp.timetuple()))) 161 161 … … 165 165 return self._output('The build at %s already exists for %s' % (str(timestamp), builder.name)) 166 166 167 return Build(branch=branch, platform=platform, builder=builder, buildNumber=build Number,168 timestamp=timestamp, revision=revision, key _name=key_name).put()167 return Build(branch=branch, platform=platform, builder=builder, buildNumber=build_number, 168 timestamp=timestamp, revision=revision, keyName=key_name).put() 169 169 return db.run_in_transaction(execute) 170 170 171 def _add TestIfNeeded(self, testName, branch, platform):171 def _add_test_if_needed(self, test_name, branch, platform): 172 172 173 173 def execute(id): 174 test = Test.get_by_key_name(test Name)174 test = Test.get_by_key_name(test_name) 175 175 returnValue = None 176 176 if not test: 177 test = Test(id=id, name=test Name, key_name=testName)177 test = Test(id=id, name=test_name, key_name=test_name) 178 178 returnValue = test 179 179 if branch.key() not in test.branches: … … 183 183 test.put() 184 184 return returnValue 185 return create InTransactionWithNumericIdHolder(execute) or Test.get_by_key_name(testName)185 return create_in_transaction_with_numeric_id_holder(execute) or Test.get_by_key_name(test_name) 186 186 187 187 188 188 class AdminReportHandler(ReportHandler): 189 def bypass Authentication(self):189 def bypass_authentication(self): 190 190 return True -
trunk/Websites/webkit-perf.appspot.com/runs_handler.py
r106308 r106321 50 50 51 51 try: 52 test Id = int(self.request.get('id', 0))53 branch Id = int(self.request.get('branchid', 0))54 platform Id = int(self.request.get('platformid', 0))52 test_id = int(self.request.get('id', 0)) 53 branch_id = int(self.request.get('branchid', 0)) 54 platform_id = int(self.request.get('platformid', 0)) 55 55 except TypeError: 56 56 # FIXME: Output an error here 57 test Id = 058 branch Id = 059 platform Id = 057 test_id = 0 58 branch_id = 0 59 platform_id = 0 60 60 61 61 # FIXME: Just fetch builds specified by "days" 62 62 # days = self.request.get('days', 365) 63 63 64 cache Key = Test.cacheKey(testId, branchId, platformId)65 cache = memcache.get(cache Key)64 cache_key = Test.cache_key(test_id, branch_id, platform_id) 65 cache = memcache.get(cache_key) 66 66 if cache: 67 67 self.response.out.write(cache) … … 69 69 70 70 builds = Build.all() 71 builds.filter('branch =', modelFromNumericId(branch Id, Branch))72 builds.filter('platform =', modelFromNumericId(platform Id, Platform))71 builds.filter('branch =', modelFromNumericId(branch_id, Branch)) 72 builds.filter('platform =', modelFromNumericId(platform_id, Platform)) 73 73 74 test = modelFromNumericId(test Id, Test)75 test Name = test.name if test else None74 test = modelFromNumericId(test_id, Test) 75 test_name = test.name if test else None 76 76 test_runs = [] 77 77 averages = {} … … 81 81 for build in builds: 82 82 results = TestResult.all() 83 results.filter('name =', test Name)83 results.filter('name =', test_name) 84 84 results.filter('build =', build) 85 85 for result in results: … … 102 102 'stat': 'ok'}) 103 103 self.response.out.write(result) 104 memcache.add(cache Key, result)104 memcache.add(cache_key, result)
Note: See TracChangeset
for help on using the changeset viewer.