Changeset 108094 in webkit
- Timestamp:
- Feb 17, 2012 10:47:05 AM (12 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ChangeLog
r108053 r108094 1 2012-02-17 Ryosuke Niwa <rniwa@webkit.org> 2 3 perf-o-matic needs model unit tests 4 https://bugs.webkit.org/show_bug.cgi?id=78885 5 6 Reviewed by Adam Barth. 7 8 Added unit tests for models.py. 9 10 Also renamed modelFromNumericId to model_from_numeric_id and moved set_persitent_cache and get_persistent_cache 11 from controller to PersistentCache.set_cache and PersistentCahce.set_cache respectively. 12 13 * Websites/webkit-perf.appspot.com/controller.py: 14 (cache_manifest): 15 (CachedManifestHandler.get): 16 (cache_dashboard): 17 (CachedDashboardHandler.get): 18 (cache_runs): 19 (CachedRunsHandler.get): 20 * Websites/webkit-perf.appspot.com/create_handler.py: 21 (CreateHandler._create_builder): 22 (CreateHandler._create_builder.execute): 23 * Websites/webkit-perf.appspot.com/models.py: 24 (create_in_transaction_with_numeric_id_holder): 25 (model_from_numeric_id): 26 (Builder): 27 (Builder.create): 28 (Builder.update_password): 29 (Builder._hashed_password): 30 (TestResult.key_name): 31 (ReportLog.get_value): 32 (ReportLog._integer_in_payload): 33 (ReportLog): 34 (ReportLog.timestamp): 35 (PersistentCache): 36 (PersistentCache.set_cache): 37 (PersistentCache.set_cache.execute): 38 (PersistentCache.get_cache): 39 * Websites/webkit-perf.appspot.com/models_unittest.py: Added. 40 (HelperTests): 41 (HelperTests.setUp): 42 (HelperTests.tearDown): 43 (HelperTests._assert_there_is_exactly_one_id_holder_and_matches): 44 (HelperTests.test_create_in_transaction_with_numeric_id_holder): 45 (HelperTests.test_create_in_transaction_with_numeric_id_holder.execute): 46 (HelperTests.test_failing_in_create_in_transaction_with_numeric_id_holder): 47 (HelperTests.test_failing_in_create_in_transaction_with_numeric_id_holder.execute): 48 (HelperTests.test_raising_in_create_in_transaction_with_numeric_id_holder): 49 (HelperTests.test_raising_in_create_in_transaction_with_numeric_id_holder.execute): 50 (HelperTests.test_delete_model_with_numeric_id_holder): 51 (HelperTests.test_delete_model_with_numeric_id_holder.execute): 52 (HelperTests.test_model_from_numeric_id): 53 (HelperTests.test_model_from_numeric_id.execute): 54 (BuilderTests): 55 (BuilderTests.setUp): 56 (BuilderTests.tearDown): 57 (BuilderTests.test_create): 58 (BuilderTests.test_update_password): 59 (BuilderTests.test_hashed_password): 60 (BuilderTests.test_authenticate): 61 (ReportLog): 62 (ReportLog.setUp): 63 (ReportLog.tearDown): 64 (ReportLog._create_log_with_payload): 65 (ReportLog.test_parsed_payload): 66 (ReportLog.test_get_value): 67 (ReportLog.test_results): 68 (ReportLog.test_builder): 69 (ReportLog.test_build_number): 70 (ReportLog.test_webkit_revision): 71 (ReportLog.chromium_revision): 72 (PersistentCacheTests): 73 (PersistentCacheTests.setUp): 74 (PersistentCacheTests.tearDown): 75 (PersistentCacheTests._assert_persistent_cache): 76 (PersistentCacheTests.test_set): 77 (PersistentCacheTests.test_get): 78 * Websites/webkit-perf.appspot.com/runs_handler.py: 79 (RunsHandler.post): 80 1 81 2012-02-17 Carlos Garcia Campos <cgarcia@igalia.com> 2 82 -
trunk/Websites/webkit-perf.appspot.com/controller.py
r107590 r108094 29 29 30 30 import webapp2 31 from google.appengine.api import memcache32 31 from google.appengine.api import taskqueue 33 32 from google.appengine.ext import db … … 37 36 38 37 39 def set_persistent_cache(name, value):40 memcache.set(name, value)41 42 def execute():43 cache = PersistentCache.get_by_key_name(name)44 if cache:45 cache.value = value46 cache.put()47 else:48 PersistentCache(key_name=name, value=value).put()49 50 db.run_in_transaction(execute)51 52 53 def get_persistent_cache(name):54 value = memcache.get(name)55 if value:56 return value57 cache = PersistentCache.get_by_key_name(name)58 memcache.set(name, cache.value)59 return cache.value60 61 62 38 def cache_manifest(cache): 63 set_persistent_cache('manifest', cache)39 PersistentCache.set_cache('manifest', cache) 64 40 65 41 … … 71 47 def get(self): 72 48 self.response.headers['Content-Type'] = 'application/json' 73 manifest = get_persistent_cache('manifest')49 manifest = PersistentCache.get_cache('manifest') 74 50 if manifest: 75 51 self.response.out.write(manifest) … … 79 55 80 56 def cache_dashboard(cache): 81 set_persistent_cache('dashboard', cache)57 PersistentCache.set_cache('dashboard', cache) 82 58 83 59 … … 89 65 def get(self): 90 66 self.response.headers['Content-Type'] = 'application/json' 91 dashboard = get_persistent_cache('dashboard')67 dashboard = PersistentCache.get_cache('dashboard') 92 68 if dashboard: 93 69 self.response.out.write(dashboard) … … 97 73 98 74 def cache_runs(test_id, branch_id, platform_id, cache): 99 set_persistent_cache(Test.cache_key(test_id, branch_id, platform_id), cache)75 PersistentCache.set_cache(Test.cache_key(test_id, branch_id, platform_id), cache) 100 76 101 77 … … 118 94 platform_id = 0 119 95 120 runs = get_persistent_cache(Test.cache_key(test_id, branch_id, platform_id))96 runs = PersistentCache.get_cache(Test.cache_key(test_id, branch_id, platform_id)) 121 97 if runs: 122 98 self.response.out.write(runs) -
trunk/Websites/webkit-perf.appspot.com/create_handler.py
r107274 r108094 71 71 return 'Invalid name or password' 72 72 73 password = Builder.hashed_password(password)74 75 73 def execute(): 76 74 message = None … … 78 76 if bot: 79 77 message = 'Updating the password since bot "%s" already exists' % name 80 bot. password = password78 bot.update_password(password) 81 79 else: 82 bot = Builder(name=name, password=password, key_name=name) 83 bot.put() 80 Builder.create(name, password) 84 81 return message 85 82 -
trunk/Websites/webkit-perf.appspot.com/models.py
r107531 r108094 34 34 from datetime import datetime 35 35 from google.appengine.ext import db 36 from google.appengine.api import memcache 36 37 37 38 … … 45 46 id_holder.put() 46 47 id_holder = NumericIdHolder.get(id_holder.key()) 47 owner = db.run_in_transaction(callback, id_holder.key().id()) 48 if owner: 49 id_holder.owner = owner 50 id_holder.put() 51 else: 52 id_holder.delete() 48 owner = None 49 try: 50 owner = db.run_in_transaction(callback, id_holder.key().id()) 51 if owner: 52 id_holder.owner = owner 53 id_holder.put() 54 finally: 55 if not owner: 56 id_holder.delete() 53 57 return owner 54 58 … … 60 64 61 65 62 def model FromNumericId(id, expected_kind):66 def model_from_numeric_id(id, expected_kind): 63 67 id_holder = NumericIdHolder.get_by_id(id) 64 68 return id_holder.owner if id_holder and id_holder.owner and isinstance(id_holder.owner, expected_kind) else None … … 79 83 password = db.StringProperty(required=True) 80 84 85 @staticmethod 86 def create(name, raw_password): 87 return Builder(name=name, password=Builder._hashed_password(raw_password), key_name=name).put() 88 89 def update_password(self, raw_password): 90 self.password = Builder._hashed_password(raw_password) 91 self.put() 92 81 93 def authenticate(self, raw_password): 82 94 return self.password == hashlib.sha256(raw_password).hexdigest() 83 95 84 96 @staticmethod 85 def hashed_password(raw_password):97 def _hashed_password(raw_password): 86 98 return hashlib.sha256(raw_password).hexdigest() 87 99 … … 123 135 124 136 125 # Temporarily store log reports sent by bots126 137 class ReportLog(db.Model): 127 138 timestamp = db.DateTimeProperty(required=True) … … 141 152 if not self._parsed_payload(): 142 153 return None 143 return self._parsed.get(keyName , '')154 return self._parsed.get(keyName) 144 155 145 156 def results(self): … … 173 184 try: 174 185 return int(self.get_value(keyName)) 186 except TypeError: 187 return None 175 188 except ValueError: 176 189 return None 177 190 191 # FIXME: We also have timestamp as a member variable. 178 192 def timestamp(self): 179 193 try: … … 185 199 186 200 187 # Used when memcache entry is evicted188 201 class PersistentCache(db.Model): 189 202 value = db.TextProperty(required=True) 203 204 @staticmethod 205 def set_cache(name, value): 206 memcache.set(name, value) 207 208 def execute(): 209 cache = PersistentCache.get_by_key_name(name) 210 if cache: 211 cache.value = value 212 cache.put() 213 else: 214 PersistentCache(key_name=name, value=value).put() 215 216 db.run_in_transaction(execute) 217 218 @staticmethod 219 def get_cache(name): 220 value = memcache.get(name) 221 if value: 222 return value 223 cache = PersistentCache.get_by_key_name(name) 224 if not cache: 225 return None 226 memcache.set(name, cache.value) 227 return cache.value -
trunk/Websites/webkit-perf.appspot.com/runs_handler.py
r107274 r108094 42 42 from models import Test 43 43 from models import TestResult 44 from models import model FromNumericId44 from models import model_from_numeric_id 45 45 46 46 … … 63 63 64 64 builds = Build.all() 65 builds.filter('branch =', model FromNumericId(branch_id, Branch))66 builds.filter('platform =', model FromNumericId(platform_id, Platform))65 builds.filter('branch =', model_from_numeric_id(branch_id, Branch)) 66 builds.filter('platform =', model_from_numeric_id(platform_id, Platform)) 67 67 68 test = model FromNumericId(test_id, Test)68 test = model_from_numeric_id(test_id, Test) 69 69 test_name = test.name if test else None 70 70 test_runs = []
Note: See TracChangeset
for help on using the changeset viewer.