| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2014 The Chromium Authors. All rights reserved. | 2 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """try_job_rietveld.py testcases.""" | 6 """try_job_rietveld.py testcases.""" |
| 7 | 7 |
| 8 import test_env | 8 import test_env |
| 9 from common import find_depot_tools | 9 from common import find_depot_tools |
| 10 | 10 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 [{'timestamp': datetime.datetime.utcnow(), 'key': 'test_key_1'}], | 30 [{'timestamp': datetime.datetime.utcnow(), 'key': 'test_key_1'}], |
| 31 [{'timestamp': (datetime.datetime.utcnow() - | 31 [{'timestamp': (datetime.datetime.utcnow() - |
| 32 datetime.timedelta(hours=5, minutes=59)), | 32 datetime.timedelta(hours=5, minutes=59)), |
| 33 'key': 'test_key_2'}, | 33 'key': 'test_key_2'}, |
| 34 {'timestamp': (datetime.datetime.utcnow() - | 34 {'timestamp': (datetime.datetime.utcnow() - |
| 35 datetime.timedelta(hours=6, minutes=1)), | 35 datetime.timedelta(hours=6, minutes=1)), |
| 36 'key': 'test_key_3'}] | 36 'key': 'test_key_3'}] |
| 37 ] | 37 ] |
| 38 | 38 |
| 39 | 39 |
| 40 class MockBuildRequestsDB(object): | |
| 41 | |
| 42 def __init__(self): | |
| 43 self._build_requests = [] | |
| 44 | |
| 45 def addBuildRequest(self, build_request): | |
| 46 self._build_requests.append(build_request) | |
| 47 | |
| 48 def getBuildRequests(self): | |
| 49 return self._build_requests | |
| 50 | |
| 51 | |
| 52 class MockBuildSetsDB(object): | 40 class MockBuildSetsDB(object): |
| 53 | 41 |
| 54 def __init__(self): | 42 def __init__(self): |
| 55 self._buildset_props = {} | 43 self._buildset_props = {} |
| 56 | 44 |
| 57 def addBuildSetProperties(self, bsid, buildset_props): | 45 def addBuildSetProperties(self, bsid, buildset_props): |
| 58 self._buildset_props[bsid] = buildset_props | 46 self._buildset_props[bsid] = buildset_props |
| 59 | 47 |
| 60 def getBuildsetProperties(self, bsid): | 48 def getBuildsetProperties(self, bsid): |
| 61 return self._buildset_props[bsid] | 49 return self._buildset_props[bsid] |
| 62 | 50 |
| 51 def getRecentBuildsets(self, count): |
| 52 return [{'bsid': bsid} for bsid in self._buildset_props.keys()][:count] |
| 53 |
| 63 | 54 |
| 64 class MockDBCollection(object): | 55 class MockDBCollection(object): |
| 65 | 56 |
| 66 buildrequests = None | |
| 67 buildsets = None | 57 buildsets = None |
| 68 | 58 |
| 69 def __init__(self): | 59 def __init__(self): |
| 70 self.buildrequests = MockBuildRequestsDB() | |
| 71 self.buildsets = MockBuildSetsDB() | 60 self.buildsets = MockBuildSetsDB() |
| 72 | 61 |
| 73 | 62 |
| 74 class MockMaster(object): | 63 class MockMaster(object): |
| 75 | 64 |
| 76 db = None | 65 db = None |
| 77 | 66 |
| 78 def __init__(self): | 67 def __init__(self): |
| 79 self.db = MockDBCollection() | 68 self.db = MockDBCollection() |
| 80 | 69 |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 poller = try_job_rietveld._RietveldPollerWithCache(TEST_BASE_URL, 60) | 146 poller = try_job_rietveld._RietveldPollerWithCache(TEST_BASE_URL, 60) |
| 158 poller.master = self._mockMaster | 147 poller.master = self._mockMaster |
| 159 poller.setServiceParent(self._mockTJR) | 148 poller.setServiceParent(self._mockTJR) |
| 160 poller.poll() | 149 poller.poll() |
| 161 self._mockTJR.clear() | 150 self._mockTJR.clear() |
| 162 poller.poll() | 151 poller.poll() |
| 163 self.assertEquals(len(self._mockTJR.submitted_jobs), 0) | 152 self.assertEquals(len(self._mockTJR.submitted_jobs), 0) |
| 164 | 153 |
| 165 def testDoesNotResubmitJobsAlreadyOnMaster(self): | 154 def testDoesNotResubmitJobsAlreadyOnMaster(self): |
| 166 poller = try_job_rietveld._RietveldPollerWithCache(TEST_BASE_URL, 60) | 155 poller = try_job_rietveld._RietveldPollerWithCache(TEST_BASE_URL, 60) |
| 167 self._mockMaster.db.buildrequests.addBuildRequest({'buildsetid': 42}) | |
| 168 self._mockMaster.db.buildsets.addBuildSetProperties( | 156 self._mockMaster.db.buildsets.addBuildSetProperties( |
| 169 42, {'try_job_key': ('test_key_1', 'Try bot')}) | 157 42, {'try_job_key': ('test_key_1', 'Try bot')}) |
| 170 poller.master = self._mockMaster | 158 poller.master = self._mockMaster |
| 171 poller.setServiceParent(self._mockTJR) | 159 poller.setServiceParent(self._mockTJR) |
| 172 poller.poll() | 160 poller.poll() |
| 173 self.assertEquals(len(self._mockTJR.submitted_jobs), 1) | 161 self.assertEquals(len(self._mockTJR.submitted_jobs), 1) |
| 174 self.assertEquals(self._mockTJR.submitted_jobs[0]['key'], 'test_key_2') | 162 self.assertEquals(self._mockTJR.submitted_jobs[0]['key'], 'test_key_2') |
| 175 | 163 |
| 164 def testShouldLimitNumberOfBuildsetsUsedForInit(self): |
| 165 self.mock(try_job_rietveld, 'MAX_RECENT_BUILDSETS_TO_INIT_CACHE', 1) |
| 166 poller = try_job_rietveld._RietveldPollerWithCache(TEST_BASE_URL, 60) |
| 167 self._mockMaster.db.buildsets.addBuildSetProperties( |
| 168 24, {'try_job_key': ('test_key_2', 'Try bot')}) |
| 169 self._mockMaster.db.buildsets.addBuildSetProperties( |
| 170 42, {'try_job_key': ('test_key_1', 'Try bot')}) |
| 171 poller.master = self._mockMaster |
| 172 poller.setServiceParent(self._mockTJR) |
| 173 poller.poll() |
| 174 self.assertEquals(len(self._mockTJR.submitted_jobs), 1) |
| 175 self.assertEquals(self._mockTJR.submitted_jobs[0]['key'], 'test_key_1') |
| 176 |
| 176 | 177 |
| 177 if __name__ == '__main__': | 178 if __name__ == '__main__': |
| 178 unittest.main() | 179 unittest.main() |
| OLD | NEW |