Changeset 109418 in webkit
- Timestamp:
- Mar 1, 2012 1:55:49 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ChangeLog
r109402 r109418 1 2012-03-01 Ryosuke Niwa <rniwa@webkit.org> 2 3 Perf-o-matic: generate dashboard images for 30, 90, and 365 days 4 https://bugs.webkit.org/show_bug.cgi?id=80016 5 6 Reviewed by Eric Seidel. 7 8 Add the ability to generate graphs for 30, 90, and 365 day graphs but only occasionally 9 according to the heuristics in DashboardImage.needs_update. 10 11 Also fix a bug in Runs.chart_params that y-axis grid was set to an incorrect value. 12 13 * Websites/webkit-perf.appspot.com/controller.py: 14 (schedule_runs_update): 15 (RunsChartHandler.post): 16 * Websites/webkit-perf.appspot.com/json_generators.py: 17 (Runs.chart_params): 18 * Websites/webkit-perf.appspot.com/json_generators_unittest.py: 19 (RunsTest.test_chart_params_with_value): 20 * Websites/webkit-perf.appspot.com/models.py: 21 (DashboardImage): 22 (DashboardImage.needs_update): 23 * Websites/webkit-perf.appspot.com/models_unittest.py: 24 (HelperTests._assert_there_is_exactly_one_id_holder_and_matches): 25 (HelperTests.test_create_in_transaction_with_numeric_id_holder.execute): 26 (HelperTests.test_create_in_transaction_with_numeric_id_holder): 27 (HelperTests.test_failing_in_create_in_transaction_with_numeric_id_holder): 28 (HelperTests.test_raising_in_create_in_transaction_with_numeric_id_holder): 29 (HelperTests.test_delete_model_with_numeric_id_holder.execute): 30 (HelperTests.test_delete_model_with_numeric_id_holder): 31 (HelperTests.test_model_from_numeric_id.execute): 32 (HelperTests): 33 (HelperTests.test_model_from_numeric_id): 34 (BranchTests.test_create_if_possible): 35 (PlatformTests.test_create_if_possible): 36 (BuilderTests.test_create): 37 (BuilderTests.test_update_password): 38 (BuilderTests.test_hashed_password): 39 (BuilderTests.test_authenticate): 40 (_create_some_builder): 41 (_create_build): 42 (BuildTests.test_get_or_insert_from_log): 43 (TestModelTests.test_update_or_insert): 44 (TestModelTests.test_update_or_insert_to_update): 45 (TestModelTests.test_merge): 46 (TestResultTests.test_get_or_insert_value): 47 (TestResultTests.test_get_or_insert_stat_value): 48 (TestResultTests.test_replace_to_change_test_name): 49 (TestResultTests.test_replace_to_change_test_name_with_stat_value): 50 (TestResultTests.test_replace_to_change_test_name_overrides_conflicting_result): 51 (ReportLogTests._create_log_with_payload): 52 (ReportLogTests.test_builder): 53 (ReportLogTests.test_branch): 54 (ReportLogTests.test_platform): 55 (PersistentCacheTests._assert_persistent_cache): 56 (PersistentCacheTests.test_set): 57 (PersistentCacheTests.test_get): 58 (DashboardImageTests): 59 (DashboardImageTests.test_needs_update): 60 1 61 2012-03-01 Kangil Han <kangil.han@samsung.com> 2 62 -
trunk/Websites/webkit-perf.appspot.com/controller.py
r109320 r109418 100 100 def schedule_runs_update(test_id, branch_id, platform_id): 101 101 taskqueue.add(url='/api/test/runs/update', params={'id': test_id, 'branchid': branch_id, 'platformid': platform_id}) 102 taskqueue.add(url='/api/test/runs/chart', params={'id': test_id, 'branchid': branch_id, 'platformid': platform_id, 103 'displayDays': 7}) 102 for display_days in [7, 30, 90, 365]: 103 if DashboardImage.needs_update(branch_id, test_id, platform_id, display_days): 104 taskqueue.add(url='/api/test/runs/chart', params={'id': test_id, 'branchid': branch_id, 'platformid': platform_id, 105 'displayDays': display_days}) 104 106 105 107 … … 168 170 image=dashboard_chart_file.read()).put() 169 171 170 self.response.out.write('Fetched http://chart.googleapis.com/chart?%s' % urllib.urlencode(params))171 172 172 173 173 class DashboardImageHandler(webapp2.RequestHandler): -
trunk/Websites/webkit-perf.appspot.com/json_generators.py
r109190 r109418 183 183 'stat': 'ok'} 184 184 185 def chart_params(self, display_days, now=datetime.now() ):185 def chart_params(self, display_days, now=datetime.now().replace(hour=12, minute=0, second=0, microsecond=0)): 186 186 chart_data_x = [] 187 187 chart_data_y = [] … … 197 197 chart_data_y.append(result.value) 198 198 199 dates = [end_time + timedelta(day - display_days) for day in range(0, display_days + 1)]199 dates = [end_time - timedelta(display_days / 7.0 * (7 - i)) for i in range(0, 8)] 200 200 201 201 y_max = max(chart_data_y) * 1.1 202 y_grid_step = y_max / 5 203 y_axis_label_step = int(y_grid_step + 0.5) # This won't work for decimal numbers 202 y_axis_label_step = int(y_max / 5 + 0.5) # This won't work for decimal numbers 204 203 205 204 return { … … 212 211 'chs': '360x240', # Image size: 360px by 240px 213 212 'chco': 'ff0000', # Plot line color 214 'chg': '%f, %f,0,0' % (100 / (len(dates) - 1), y_grid_step), # X, Y grid line step sizes - max for Xis 100.213 'chg': '%f,20,0,0' % (100 / (len(dates) - 1)), # X, Y grid line step sizes - max is 100. 215 214 'chls': '3', # Line thickness 216 215 'chf': 'bg,s,eff6fd', # Transparent background -
trunk/Websites/webkit-perf.appspot.com/json_generators_unittest.py
r109190 r109418 331 331 self.assertEqual(y_min, 0) 332 332 self.assertEqual(y_max, int(52 * 1.1)) 333 self.assertEqual(split_as_int(params['chg']), [int(100 / 7), int(52 * 1.1 / 5), 0, 0]) 334 333 self.assertEqual(split_as_int(params['chg']), [int(100 / 7), 20, 0, 0]) 334 335 params = Runs(some_branch, some_platform, 'some-test').chart_params(14, end_time) 336 self.assertEqual(params['chxl'], '0:|Feb 14|Feb 16|Feb 18|Feb 20|Feb 22|Feb 24|Feb 26|Feb 28') 337 self.assertEqual(split_as_int(params['chxr']), [1, 0, 57, int(52 * 1.1 / 5 + 0.5)]) 338 x_min, x_max, y_min, y_max = split_as_int(params['chds']) 339 self.assertEqual(datetime.fromtimestamp(x_min), datetime(2011, 2, 14, 12, 0, 0)) 340 self.assertEqual(datetime.fromtimestamp(x_max), end_time) 341 self.assertEqual(y_min, 0) 342 self.assertEqual(y_max, int(52 * 1.1)) 343 self.assertEqual(split_as_int(params['chg']), [int(100 / 7), 20, 0, 0]) 335 344 336 345 -
trunk/Websites/webkit-perf.appspot.com/models.py
r109190 r109418 30 30 import hashlib 31 31 import json 32 import math 32 33 import re 33 34 34 35 from datetime import datetime 36 from datetime import timedelta 35 37 from google.appengine.ext import db 36 38 from google.appengine.api import memcache … … 327 329 class DashboardImage(db.Model): 328 330 image = db.BlobProperty(required=True) 331 createdAt = db.DateTimeProperty(required=True, auto_now=True) 332 333 @classmethod 334 def needs_update(cls, branch_id, platform_id, test_id, display_days, now=datetime.now()): 335 if display_days < 10: 336 return True 337 image = DashboardImage.get_by_key_name(cls.key_name(branch_id, platform_id, test_id, display_days)) 338 duration = math.sqrt(display_days) / 10 339 # e.g. 13 hours for 30 days, 23 hours for 90 days, and 46 hours for 365 days 340 return not image or image.createdAt < now - timedelta(duration) 329 341 330 342 @staticmethod -
trunk/Websites/webkit-perf.appspot.com/models_unittest.py
r109057 r109418 32 32 33 33 from datetime import datetime 34 from datetime import timedelta 34 35 from google.appengine.api import memcache 35 36 from google.appengine.ext import testbed 36 37 from time import mktime 38 39 from models import NumericIdHolder 40 from models import Branch 41 from models import Platform 42 from models import Builder 43 from models import Build 44 from models import Test 45 from models import TestResult 46 from models import ReportLog 47 from models import PersistentCache 48 from models import DashboardImage 49 from models import create_in_transaction_with_numeric_id_holder 50 from models import delete_model_with_numeric_id_holder 51 from models import model_from_numeric_id 37 52 38 53 … … 66 81 class HelperTests(DataStoreTestsBase): 67 82 def _assert_there_is_exactly_one_id_holder_and_matches(self, id): 68 id_holders = models.NumericIdHolder.all().fetch(5)83 id_holders = NumericIdHolder.all().fetch(5) 69 84 self.assertEqual(len(id_holders), 1) 70 85 self.assertTrue(id_holders[0]) … … 74 89 75 90 def execute(id): 76 return models.Branch(id=id, name='some branch', key_name='some-branch').put()77 78 self.assertThereIsNoInstanceOf( models.Branch)79 self.assertThereIsNoInstanceOf( models.NumericIdHolder)80 81 self.assertTrue( models.create_in_transaction_with_numeric_id_holder(execute))82 83 branches = models.Branch.all().fetch(5)91 return Branch(id=id, name='some branch', key_name='some-branch').put() 92 93 self.assertThereIsNoInstanceOf(Branch) 94 self.assertThereIsNoInstanceOf(NumericIdHolder) 95 96 self.assertTrue(create_in_transaction_with_numeric_id_holder(execute)) 97 98 branches = Branch.all().fetch(5) 84 99 self.assertEqual(len(branches), 1) 85 100 self.assertEqual(branches[0].name, 'some branch') … … 93 108 return None 94 109 95 self.assertThereIsNoInstanceOf( models.Branch)96 self.assertThereIsNoInstanceOf( models.NumericIdHolder)97 98 self.assertFalse( models.create_in_transaction_with_numeric_id_holder(execute))99 100 self.assertThereIsNoInstanceOf( models.Branch)101 self.assertThereIsNoInstanceOf( models.NumericIdHolder)110 self.assertThereIsNoInstanceOf(Branch) 111 self.assertThereIsNoInstanceOf(NumericIdHolder) 112 113 self.assertFalse(create_in_transaction_with_numeric_id_holder(execute)) 114 115 self.assertThereIsNoInstanceOf(Branch) 116 self.assertThereIsNoInstanceOf(NumericIdHolder) 102 117 103 118 def test_raising_in_create_in_transaction_with_numeric_id_holder(self): … … 107 122 return None 108 123 109 self.assertThereIsNoInstanceOf( models.Branch)110 self.assertThereIsNoInstanceOf( models.NumericIdHolder)111 112 self.assertRaises(TypeError, models.create_in_transaction_with_numeric_id_holder, (execute))113 114 self.assertThereIsNoInstanceOf( models.Branch)115 self.assertThereIsNoInstanceOf( models.NumericIdHolder)124 self.assertThereIsNoInstanceOf(Branch) 125 self.assertThereIsNoInstanceOf(NumericIdHolder) 126 127 self.assertRaises(TypeError, create_in_transaction_with_numeric_id_holder, (execute)) 128 129 self.assertThereIsNoInstanceOf(Branch) 130 self.assertThereIsNoInstanceOf(NumericIdHolder) 116 131 117 132 def test_delete_model_with_numeric_id_holder(self): 118 133 119 134 def execute(id): 120 return models.Branch(id=id, name='some branch', key_name='some-branch').put()121 122 branch = models.Branch.get(models.create_in_transaction_with_numeric_id_holder(execute))135 return Branch(id=id, name='some branch', key_name='some-branch').put() 136 137 branch = Branch.get(create_in_transaction_with_numeric_id_holder(execute)) 123 138 self.assertOnlyInstance(branch) 124 139 125 models.delete_model_with_numeric_id_holder(branch)126 127 self.assertThereIsNoInstanceOf( models.Branch)128 self.assertThereIsNoInstanceOf( models.NumericIdHolder)140 delete_model_with_numeric_id_holder(branch) 141 142 self.assertThereIsNoInstanceOf(Branch) 143 self.assertThereIsNoInstanceOf(NumericIdHolder) 129 144 130 145 def test_model_from_numeric_id(self): 131 146 132 147 def execute(id): 133 return models.Branch(id=id, name='some branch', key_name='some-branch').put()134 135 branch = models.Branch.get(models.create_in_transaction_with_numeric_id_holder(execute))136 137 self.assertEqual(model s.model_from_numeric_id(branch.id, models.Branch).key(), branch.key())138 self.assertEqual(model s.model_from_numeric_id(branch.id + 1, models.Branch), None)139 models.delete_model_with_numeric_id_holder(branch)140 self.assertEqual(model s.model_from_numeric_id(branch.id, models.Branch), None)148 return Branch(id=id, name='some branch', key_name='some-branch').put() 149 150 branch = Branch.get(create_in_transaction_with_numeric_id_holder(execute)) 151 152 self.assertEqual(model_from_numeric_id(branch.id, Branch).key(), branch.key()) 153 self.assertEqual(model_from_numeric_id(branch.id + 1, Branch), None) 154 delete_model_with_numeric_id_holder(branch) 155 self.assertEqual(model_from_numeric_id(branch.id, Branch), None) 141 156 142 157 143 158 class BranchTests(DataStoreTestsBase): 144 159 def test_create_if_possible(self): 145 self.assertThereIsNoInstanceOf( models.Branch)146 147 branch = models.Branch.create_if_possible('some-branch', 'some branch')160 self.assertThereIsNoInstanceOf(Branch) 161 162 branch = Branch.create_if_possible('some-branch', 'some branch') 148 163 self.assertTrue(branch) 149 164 self.assertTrue(branch.key().name(), 'some-branch') … … 151 166 self.assertOnlyInstance(branch) 152 167 153 self.assertFalse( models.Branch.create_if_possible('some-branch', 'some other branch'))168 self.assertFalse(Branch.create_if_possible('some-branch', 'some other branch')) 154 169 self.assertTrue(branch.name, 'some branch') 155 170 self.assertOnlyInstance(branch) … … 158 173 class PlatformTests(DataStoreTestsBase): 159 174 def test_create_if_possible(self): 160 self.assertThereIsNoInstanceOf( models.Platform)161 162 platform = models.Platform.create_if_possible('some-platform', 'some platform')175 self.assertThereIsNoInstanceOf(Platform) 176 177 platform = Platform.create_if_possible('some-platform', 'some platform') 163 178 self.assertTrue(platform) 164 179 self.assertTrue(platform.key().name(), 'some-platform') … … 166 181 self.assertOnlyInstance(platform) 167 182 168 self.assertFalse( models.Platform.create_if_possible('some-platform', 'some other platform'))183 self.assertFalse(Platform.create_if_possible('some-platform', 'some other platform')) 169 184 self.assertTrue(platform.name, 'some platform') 170 185 self.assertOnlyInstance(platform) … … 173 188 class BuilderTests(DataStoreTestsBase): 174 189 def test_create(self): 175 builder_key = models.Builder.create('some builder', 'some password')190 builder_key = Builder.create('some builder', 'some password') 176 191 self.assertTrue(builder_key) 177 builder = models.Builder.get(builder_key)192 builder = Builder.get(builder_key) 178 193 self.assertEqual(builder.key().name(), 'some builder') 179 194 self.assertEqual(builder.name, 'some builder') 180 self.assertEqual(builder.password, models.Builder._hashed_password('some password'))195 self.assertEqual(builder.password, Builder._hashed_password('some password')) 181 196 182 197 def test_update_password(self): 183 builder = models.Builder.get(models.Builder.create('some builder', 'some password'))184 self.assertEqual(builder.password, models.Builder._hashed_password('some password'))198 builder = Builder.get(Builder.create('some builder', 'some password')) 199 self.assertEqual(builder.password, Builder._hashed_password('some password')) 185 200 builder.update_password('other password') 186 self.assertEqual(builder.password, models.Builder._hashed_password('other password'))201 self.assertEqual(builder.password, Builder._hashed_password('other password')) 187 202 188 203 # Make sure it's saved 189 builder = models.Builder.get(builder.key())190 self.assertEqual(builder.password, models.Builder._hashed_password('other password'))204 builder = Builder.get(builder.key()) 205 self.assertEqual(builder.password, Builder._hashed_password('other password')) 191 206 192 207 def test_hashed_password(self): 193 self.assertNotEqual( models.Builder._hashed_password('some password'), 'some password')194 self.assertFalse('some password' in models.Builder._hashed_password('some password'))195 self.assertEqual(len( models.Builder._hashed_password('some password')), 64)208 self.assertNotEqual(Builder._hashed_password('some password'), 'some password') 209 self.assertFalse('some password' in Builder._hashed_password('some password')) 210 self.assertEqual(len(Builder._hashed_password('some password')), 64) 196 211 197 212 def test_authenticate(self): 198 builder = models.Builder.get(models.Builder.create('some builder', 'some password'))213 builder = Builder.get(Builder.create('some builder', 'some password')) 199 214 self.assertTrue(builder.authenticate('some password')) 200 215 self.assertFalse(builder.authenticate('bad password')) … … 202 217 203 218 def _create_some_builder(): 204 branch = models.Branch.create_if_possible('some-branch', 'Some Branch')205 platform = models.Platform.create_if_possible('some-platform', 'Some Platform')206 builder_key = models.Builder.create('some-builder', 'Some Builder')207 return branch, platform, models.Builder.get(builder_key)219 branch = Branch.create_if_possible('some-branch', 'Some Branch') 220 platform = Platform.create_if_possible('some-platform', 'Some Platform') 221 builder_key = Builder.create('some-builder', 'Some Builder') 222 return branch, platform, Builder.get(builder_key) 208 223 209 224 210 225 def _create_build(branch, platform, builder, key_name='some-build'): 211 build_key = models.Build(key_name=key_name, branch=branch, platform=platform, builder=builder,226 build_key = Build(key_name=key_name, branch=branch, platform=platform, builder=builder, 212 227 buildNumber=1, revision=100, timestamp=datetime.now()).put() 213 return models.Build.get(build_key)228 return Build.get(build_key) 214 229 215 230 … … 219 234 220 235 timestamp = datetime.now().replace(microsecond=0) 221 log = models.ReportLog(timestamp=timestamp, headers='some headers',236 log = ReportLog(timestamp=timestamp, headers='some headers', 222 237 payload='{"branch": "some-branch", "platform": "some-platform", "builder-name": "some-builder",' + 223 238 '"build-number": 123, "webkit-revision": 456, "timestamp": %d}' % int(mktime(timestamp.timetuple()))) 224 239 225 self.assertThereIsNoInstanceOf( models.Build)226 227 build = models.Build.get_or_insert_from_log(log)240 self.assertThereIsNoInstanceOf(Build) 241 242 build = Build.get_or_insert_from_log(log) 228 243 self.assertTrue(build) 229 244 self.assertEqual(build.branch.key(), branch.key()) … … 240 255 class TestModelTests(DataStoreTestsBase): 241 256 def test_update_or_insert(self): 242 branch = models.Branch.create_if_possible('some-branch', 'Some Branch')243 platform = models.Platform.create_if_possible('some-platform', 'Some Platform')244 245 self.assertThereIsNoInstanceOf( models.Test)246 247 test = models.Test.update_or_insert('some-test', branch, platform)257 branch = Branch.create_if_possible('some-branch', 'Some Branch') 258 platform = Platform.create_if_possible('some-platform', 'Some Platform') 259 260 self.assertThereIsNoInstanceOf(Test) 261 262 test = Test.update_or_insert('some-test', branch, platform) 248 263 self.assertTrue(test) 249 264 self.assertEqual(test.branches, [branch.key()]) … … 252 267 253 268 def test_update_or_insert_to_update(self): 254 branch = models.Branch.create_if_possible('some-branch', 'Some Branch')255 platform = models.Platform.create_if_possible('some-platform', 'Some Platform')256 test = models.Test.update_or_insert('some-test', branch, platform)269 branch = Branch.create_if_possible('some-branch', 'Some Branch') 270 platform = Platform.create_if_possible('some-platform', 'Some Platform') 271 test = Test.update_or_insert('some-test', branch, platform) 257 272 self.assertOnlyInstance(test) 258 273 259 other_branch = models.Branch.create_if_possible('other-branch', 'Other Branch')260 other_platform = models.Platform.create_if_possible('other-platform', 'Other Platform')261 test = models.Test.update_or_insert('some-test', other_branch, other_platform)274 other_branch = Branch.create_if_possible('other-branch', 'Other Branch') 275 other_platform = Platform.create_if_possible('other-platform', 'Other Platform') 276 test = Test.update_or_insert('some-test', other_branch, other_platform) 262 277 self.assertOnlyInstance(test) 263 278 self.assertEqualUnorderedList(test.branches, [branch.key(), other_branch.key()]) 264 279 self.assertEqualUnorderedList(test.platforms, [platform.key(), other_platform.key()]) 265 280 266 test = models.Test.get(test.key())281 test = Test.get(test.key()) 267 282 self.assertEqualUnorderedList(test.branches, [branch.key(), other_branch.key()]) 268 283 self.assertEqualUnorderedList(test.platforms, [platform.key(), other_platform.key()]) … … 271 286 branch, platform, builder = _create_some_builder() 272 287 some_build = _create_build(branch, platform, builder) 273 some_result = models.TestResult.get_or_insert_from_parsed_json('some-test', some_build, 50)274 some_test = models.Test.update_or_insert('some-test', branch, platform)288 some_result = TestResult.get_or_insert_from_parsed_json('some-test', some_build, 50) 289 some_test = Test.update_or_insert('some-test', branch, platform) 275 290 276 291 other_build = _create_build(branch, platform, builder, 'other-build') 277 other_result = models.TestResult.get_or_insert_from_parsed_json('other-test', other_build, 30)278 other_test = models.Test.update_or_insert('other-test', branch, platform)292 other_result = TestResult.get_or_insert_from_parsed_json('other-test', other_build, 30) 293 other_test = Test.update_or_insert('other-test', branch, platform) 279 294 280 295 self.assertOnlyInstances([some_result, other_result]) … … 286 301 287 302 some_test.merge(other_test) 288 results_for_some_test = models.TestResult.all()303 results_for_some_test = TestResult.all() 289 304 results_for_some_test.filter('name =', 'some-test') 290 305 results_for_some_test = results_for_some_test.fetch(5) … … 304 319 branch, platform, builder = _create_some_builder() 305 320 build = _create_build(branch, platform, builder) 306 self.assertThereIsNoInstanceOf( models.TestResult)307 result = models.TestResult.get_or_insert_from_parsed_json('some-test', build, 50)321 self.assertThereIsNoInstanceOf(TestResult) 322 result = TestResult.get_or_insert_from_parsed_json('some-test', build, 50) 308 323 self.assertOnlyInstance(result) 309 324 self.assertEqual(result.name, 'some-test') … … 318 333 branch, platform, builder = _create_some_builder() 319 334 build = _create_build(branch, platform, builder) 320 self.assertThereIsNoInstanceOf( models.TestResult)321 result = models.TestResult.get_or_insert_from_parsed_json('some-test', build,335 self.assertThereIsNoInstanceOf(TestResult) 336 result = TestResult.get_or_insert_from_parsed_json('some-test', build, 322 337 {"avg": 40, "median": "40.1", "stdev": 3.25, "min": 30.5, "max": 45}) 323 338 self.assertOnlyInstance(result) … … 333 348 branch, platform, builder = _create_some_builder() 334 349 build = _create_build(branch, platform, builder) 335 self.assertThereIsNoInstanceOf( models.TestResult)336 result = models.TestResult.get_or_insert_from_parsed_json('some-test', build, 50)350 self.assertThereIsNoInstanceOf(TestResult) 351 result = TestResult.get_or_insert_from_parsed_json('some-test', build, 50) 337 352 self.assertOnlyInstance(result) 338 353 self.assertEqual(result.name, 'some-test') … … 353 368 branch, platform, builder = _create_some_builder() 354 369 build = _create_build(branch, platform, builder) 355 self.assertThereIsNoInstanceOf( models.TestResult)356 result = models.TestResult.get_or_insert_from_parsed_json('some-test', build,370 self.assertThereIsNoInstanceOf(TestResult) 371 result = TestResult.get_or_insert_from_parsed_json('some-test', build, 357 372 {"avg": 40, "median": "40.1", "stdev": 3.25, "min": 30.5, "max": 45}) 358 373 self.assertOnlyInstance(result) … … 375 390 branch, platform, builder = _create_some_builder() 376 391 build = _create_build(branch, platform, builder) 377 self.assertThereIsNoInstanceOf( models.TestResult)378 result = models.TestResult.get_or_insert_from_parsed_json('some-test', build, 20)392 self.assertThereIsNoInstanceOf(TestResult) 393 result = TestResult.get_or_insert_from_parsed_json('some-test', build, 20) 379 394 self.assertOnlyInstance(result) 380 395 381 conflicting_result = models.TestResult.get_or_insert_from_parsed_json('other-test', build, 10)396 conflicting_result = TestResult.get_or_insert_from_parsed_json('other-test', build, 10) 382 397 383 398 new_result = result.replace_to_change_test_name('other-test') … … 386 401 387 402 self.assertEqual(new_result.name, 'other-test') 388 self.assertEqual( models.TestResult.get(conflicting_result.key()).value, 20)403 self.assertEqual(TestResult.get(conflicting_result.key()).value, 20) 389 404 390 405 391 406 class ReportLogTests(DataStoreTestsBase): 392 407 def _create_log_with_payload(self, payload): 393 return models.ReportLog(timestamp=datetime.now(), headers='some headers', payload=payload)408 return ReportLog(timestamp=datetime.now(), headers='some headers', payload=payload) 394 409 395 410 def test_parsed_payload(self): … … 425 440 self.assertEqual(log.builder(), None) 426 441 427 builder_key = models.Builder.create(builder_name, 'some password')442 builder_key = Builder.create(builder_name, 'some password') 428 443 log = self._create_log_with_payload('{"builder-name": "%s"}' % builder_name) 429 444 self.assertEqual(log.builder().key(), builder_key) … … 436 451 self.assertEqual(log.branch(), None) 437 452 438 branch = models.Branch.create_if_possible("some-branch", "Some Branch")453 branch = Branch.create_if_possible("some-branch", "Some Branch") 439 454 log = self._create_log_with_payload('{"branch": "some-branch"}') 440 455 self.assertEqual(log.branch().key(), branch.key()) … … 447 462 self.assertEqual(log.platform(), None) 448 463 449 platform = models.Platform.create_if_possible("some-platform", "Some Platform")464 platform = Platform.create_if_possible("some-platform", "Some Platform") 450 465 log = self._create_log_with_payload('{"platform": "some-platform"}') 451 466 self.assertEqual(log.platform().key(), platform.key()) … … 481 496 482 497 def _assert_persistent_cache(self, name, value): 483 self.assertEqual( models.PersistentCache.get_by_key_name(name).value, value)498 self.assertEqual(PersistentCache.get_by_key_name(name).value, value) 484 499 self.assertEqual(memcache.get(name), value) 485 500 486 501 def test_set(self): 487 self.assertThereIsNoInstanceOf( models.PersistentCache)488 489 models.PersistentCache.set_cache('some-cache', 'some data')502 self.assertThereIsNoInstanceOf(PersistentCache) 503 504 PersistentCache.set_cache('some-cache', 'some data') 490 505 self._assert_persistent_cache('some-cache', 'some data') 491 506 492 models.PersistentCache.set_cache('some-cache', 'some other data')507 PersistentCache.set_cache('some-cache', 'some other data') 493 508 494 509 self._assert_persistent_cache('some-cache', 'some other data') … … 496 511 def test_get(self): 497 512 self.assertEqual(memcache.get('some-cache'), None) 498 self.assertEqual( models.PersistentCache.get_cache('some-cache'), None)499 500 models.PersistentCache.set_cache('some-cache', 'some data')513 self.assertEqual(PersistentCache.get_cache('some-cache'), None) 514 515 PersistentCache.set_cache('some-cache', 'some data') 501 516 502 517 self.assertEqual(memcache.get('some-cache'), 'some data') 503 self.assertEqual( models.PersistentCache.get_cache('some-cache'), 'some data')518 self.assertEqual(PersistentCache.get_cache('some-cache'), 'some data') 504 519 505 520 memcache.delete('some-cache') 506 521 self.assertEqual(memcache.get('some-cache'), None) 507 self.assertEqual(models.PersistentCache.get_cache('some-cache'), 'some data') 522 self.assertEqual(PersistentCache.get_cache('some-cache'), 'some data') 523 524 525 class DashboardImageTests(DataStoreTestsBase): 526 def test_needs_update(self): 527 self.assertTrue(DashboardImage.needs_update(1, 2, 3, 7)) 528 self.assertTrue(DashboardImage.needs_update(1, 2, 3, 30)) 529 self.assertTrue(DashboardImage.needs_update(1, 2, 3, 60)) 530 self.assertTrue(DashboardImage.needs_update(1, 2, 3, 365)) 531 532 image = DashboardImage(key_name=DashboardImage.key_name(1, 2, 3, 7), image='blah') 533 image.put() 534 self.assertOnlyInstance(image) 535 self.assertTrue(DashboardImage.needs_update(1, 2, 3, 7)) 536 537 DashboardImage(key_name=DashboardImage.key_name(1, 2, 3, 30), image='blah').put() 538 self.assertFalse(DashboardImage.needs_update(1, 2, 3, 30, datetime.now() + timedelta(0, 10))) 539 540 DashboardImage(key_name=DashboardImage.key_name(1, 2, 4, 30), image='blah').put() 541 self.assertTrue(DashboardImage.needs_update(1, 2, 4, 30, datetime.now() + timedelta(1))) 542 543 DashboardImage(key_name=DashboardImage.key_name(1, 2, 3, 90), image='blah').put() 544 self.assertFalse(DashboardImage.needs_update(1, 2, 3, 90, datetime.now() + timedelta(0, 20))) 545 546 DashboardImage(key_name=DashboardImage.key_name(1, 2, 4, 90), image='blah').put() 547 self.assertTrue(DashboardImage.needs_update(1, 2, 4, 90, datetime.now() + timedelta(1))) 548 549 DashboardImage(key_name=DashboardImage.key_name(1, 2, 3, 365), image='blah').put() 550 self.assertFalse(DashboardImage.needs_update(1, 2, 3, 365, datetime.now() + timedelta(1))) 551 552 DashboardImage(key_name=DashboardImage.key_name(1, 2, 4, 365), image='blah').put() 553 self.assertTrue(DashboardImage.needs_update(1, 2, 4, 365, datetime.now() + timedelta(10))) 508 554 509 555
Note: See TracChangeset
for help on using the changeset viewer.