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 |