Merge lp:~salgado/launchpad/tech-debt into lp:launchpad
- tech-debt
- Merge into devel
Proposed by
Guilherme Salgado
Status: | Merged | ||||
---|---|---|---|---|---|
Approved by: | Ian Booth | ||||
Approved revision: | no longer in the source branch. | ||||
Merged at revision: | 14777 | ||||
Proposed branch: | lp:~salgado/launchpad/tech-debt | ||||
Merge into: | lp:launchpad | ||||
Diff against target: |
512 lines (+67/-59) 10 files modified
lib/lp/buildmaster/interfaces/builder.py (+1/-6) lib/lp/buildmaster/model/builder.py (+1/-18) lib/lp/buildmaster/tests/test_builder.py (+8/-5) lib/lp/buildmaster/tests/test_manager.py (+15/-10) lib/lp/buildmaster/tests/test_packagebuild.py (+2/-1) lib/lp/code/model/tests/test_sourcepackagerecipebuild.py (+2/-1) lib/lp/soyuz/tests/test_binarypackagebuild.py (+4/-1) lib/lp/soyuz/tests/test_binarypackagebuildbehavior.py (+29/-15) lib/lp/translations/stories/buildfarm/xx-build-summary.txt (+3/-1) lib/lp/translations/tests/test_translationtemplatesbuildbehavior.py (+2/-1) |
||||
To merge this branch: | bzr merge lp:~salgado/launchpad/tech-debt | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ian Booth (community) | Approve | ||
Review via email: mp+92390@code.launchpad.net |
Commit message
[bug=888010] [r=wallyworld]
Description of the change
Remove Builder.
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'lib/lp/buildmaster/interfaces/builder.py' | |||
2 | --- lib/lp/buildmaster/interfaces/builder.py 2012-01-11 08:52:22 +0000 | |||
3 | +++ lib/lp/buildmaster/interfaces/builder.py 2012-02-10 05:25:23 +0000 | |||
4 | @@ -193,9 +193,6 @@ | |||
5 | 193 | def failBuilder(reason): | 193 | def failBuilder(reason): |
6 | 194 | """Mark builder as failed for a given reason.""" | 194 | """Mark builder as failed for a given reason.""" |
7 | 195 | 195 | ||
8 | 196 | def setSlaveForTesting(proxy): | ||
9 | 197 | """Sets the RPC proxy through which to operate the build slave.""" | ||
10 | 198 | |||
11 | 199 | def verifySlaveBuildCookie(slave_build_id): | 196 | def verifySlaveBuildCookie(slave_build_id): |
12 | 200 | """Verify that a slave's build cookie is consistent. | 197 | """Verify that a slave's build cookie is consistent. |
13 | 201 | 198 | ||
14 | @@ -337,11 +334,9 @@ | |||
15 | 337 | or immediately if it's a non-virtual slave. | 334 | or immediately if it's a non-virtual slave. |
16 | 338 | """ | 335 | """ |
17 | 339 | 336 | ||
19 | 340 | def findAndStartJob(buildd_slave=None): | 337 | def findAndStartJob(): |
20 | 341 | """Find a job to run and send it to the buildd slave. | 338 | """Find a job to run and send it to the buildd slave. |
21 | 342 | 339 | ||
22 | 343 | :param buildd_slave: An optional buildd slave that this builder should | ||
23 | 344 | talk to. | ||
24 | 345 | :return: A Deferred whose value is the `IBuildQueue` instance | 340 | :return: A Deferred whose value is the `IBuildQueue` instance |
25 | 346 | found or None if no job was found. | 341 | found or None if no job was found. |
26 | 347 | """ | 342 | """ |
27 | 348 | 343 | ||
28 | === modified file 'lib/lp/buildmaster/model/builder.py' | |||
29 | --- lib/lp/buildmaster/model/builder.py 2012-01-24 10:09:47 +0000 | |||
30 | +++ lib/lp/buildmaster/model/builder.py 2012-02-10 05:25:23 +0000 | |||
31 | @@ -540,25 +540,11 @@ | |||
32 | 540 | 540 | ||
33 | 541 | return d.addCallback(got_resume_ok).addErrback(got_resume_bad) | 541 | return d.addCallback(got_resume_ok).addErrback(got_resume_bad) |
34 | 542 | 542 | ||
35 | 543 | _testing_slave = None | ||
36 | 544 | |||
37 | 545 | @cachedproperty | 543 | @cachedproperty |
38 | 546 | def slave(self): | 544 | def slave(self): |
39 | 547 | """See IBuilder.""" | 545 | """See IBuilder.""" |
40 | 548 | # When testing it's possible to substitute the slave object, which is | ||
41 | 549 | # usually an XMLRPC client, with a stub object that removes the need | ||
42 | 550 | # to actually create a buildd slave in various states - which can be | ||
43 | 551 | # hard to create. We cannot use the property cache because it is | ||
44 | 552 | # cleared on transaction boundaries, hence the low tech approach. | ||
45 | 553 | if self._testing_slave is not None: | ||
46 | 554 | return self._testing_slave | ||
47 | 555 | return BuilderSlave.makeBuilderSlave(self.url, self.vm_host) | 546 | return BuilderSlave.makeBuilderSlave(self.url, self.vm_host) |
48 | 556 | 547 | ||
49 | 557 | def setSlaveForTesting(self, proxy): | ||
50 | 558 | """See IBuilder.""" | ||
51 | 559 | self._testing_slave = proxy | ||
52 | 560 | del get_property_cache(self).slave | ||
53 | 561 | |||
54 | 562 | def startBuild(self, build_queue_item, logger): | 548 | def startBuild(self, build_queue_item, logger): |
55 | 563 | """See IBuilder.""" | 549 | """See IBuilder.""" |
56 | 564 | self.current_build_behavior = build_queue_item.required_build_behavior | 550 | self.current_build_behavior = build_queue_item.required_build_behavior |
57 | @@ -845,7 +831,7 @@ | |||
58 | 845 | self.failBuilder(error_message) | 831 | self.failBuilder(error_message) |
59 | 846 | return defer.succeed(None) | 832 | return defer.succeed(None) |
60 | 847 | 833 | ||
62 | 848 | def findAndStartJob(self, buildd_slave=None): | 834 | def findAndStartJob(self): |
63 | 849 | """See IBuilder.""" | 835 | """See IBuilder.""" |
64 | 850 | # XXX This method should be removed in favour of two separately | 836 | # XXX This method should be removed in favour of two separately |
65 | 851 | # called methods that find and dispatch the job. It will | 837 | # called methods that find and dispatch the job. It will |
66 | @@ -857,9 +843,6 @@ | |||
67 | 857 | logger.debug("No build candidates available for builder.") | 843 | logger.debug("No build candidates available for builder.") |
68 | 858 | return defer.succeed(None) | 844 | return defer.succeed(None) |
69 | 859 | 845 | ||
70 | 860 | if buildd_slave is not None: | ||
71 | 861 | self.setSlaveForTesting(buildd_slave) | ||
72 | 862 | |||
73 | 863 | d = self._dispatchBuildCandidate(candidate) | 846 | d = self._dispatchBuildCandidate(candidate) |
74 | 864 | return d.addCallback(lambda ignored: candidate) | 847 | return d.addCallback(lambda ignored: candidate) |
75 | 865 | 848 | ||
76 | 866 | 849 | ||
77 | === modified file 'lib/lp/buildmaster/tests/test_builder.py' | |||
78 | --- lib/lp/buildmaster/tests/test_builder.py 2012-01-11 08:52:22 +0000 | |||
79 | +++ lib/lp/buildmaster/tests/test_builder.py 2012-02-10 05:25:23 +0000 | |||
80 | @@ -205,7 +205,7 @@ | |||
81 | 205 | processor = self.factory.makeProcessor(name="i386") | 205 | processor = self.factory.makeProcessor(name="i386") |
82 | 206 | builder = self.factory.makeBuilder( | 206 | builder = self.factory.makeBuilder( |
83 | 207 | processor=processor, virtualized=True, vm_host="bladh") | 207 | processor=processor, virtualized=True, vm_host="bladh") |
85 | 208 | builder.setSlaveForTesting(OkSlave()) | 208 | self.patch(BuilderSlave, 'makeBuilderSlave', FakeMethod(OkSlave())) |
86 | 209 | distroseries = self.factory.makeDistroSeries() | 209 | distroseries = self.factory.makeDistroSeries() |
87 | 210 | das = self.factory.makeDistroArchSeries( | 210 | das = self.factory.makeDistroArchSeries( |
88 | 211 | distroseries=distroseries, architecturetag="i386", | 211 | distroseries=distroseries, architecturetag="i386", |
89 | @@ -370,7 +370,8 @@ | |||
90 | 370 | builder, build = self._setupBinaryBuildAndBuilder() | 370 | builder, build = self._setupBinaryBuildAndBuilder() |
91 | 371 | candidate = build.queueBuild() | 371 | candidate = build.queueBuild() |
92 | 372 | building_slave = BuildingSlave() | 372 | building_slave = BuildingSlave() |
94 | 373 | builder.setSlaveForTesting(building_slave) | 373 | self.patch( |
95 | 374 | BuilderSlave, 'makeBuilderSlave', FakeMethod(building_slave)) | ||
96 | 374 | candidate.markAsBuilding(builder) | 375 | candidate.markAsBuilding(builder) |
97 | 375 | 376 | ||
98 | 376 | # At this point we should see a valid behaviour on the builder: | 377 | # At this point we should see a valid behaviour on the builder: |
99 | @@ -405,7 +406,7 @@ | |||
100 | 405 | build_status=None, logtail=False, filemap=None, | 406 | build_status=None, logtail=False, filemap=None, |
101 | 406 | dependencies=None): | 407 | dependencies=None): |
102 | 407 | builder = self.factory.makeBuilder() | 408 | builder = self.factory.makeBuilder() |
104 | 408 | builder.setSlaveForTesting(slave) | 409 | self.patch(BuilderSlave, 'makeBuilderSlave', FakeMethod(slave)) |
105 | 409 | d = builder.slaveStatus() | 410 | d = builder.slaveStatus() |
106 | 410 | 411 | ||
107 | 411 | def got_status(status_dict): | 412 | def got_status(status_dict): |
108 | @@ -458,13 +459,15 @@ | |||
109 | 458 | 459 | ||
110 | 459 | def test_isAvailable_with_slave_fault(self): | 460 | def test_isAvailable_with_slave_fault(self): |
111 | 460 | builder = self.factory.makeBuilder() | 461 | builder = self.factory.makeBuilder() |
113 | 461 | builder.setSlaveForTesting(BrokenSlave()) | 462 | self.patch( |
114 | 463 | BuilderSlave, 'makeBuilderSlave', FakeMethod(BrokenSlave())) | ||
115 | 462 | d = builder.isAvailable() | 464 | d = builder.isAvailable() |
116 | 463 | return d.addCallback(self.assertFalse) | 465 | return d.addCallback(self.assertFalse) |
117 | 464 | 466 | ||
118 | 465 | def test_isAvailable_with_slave_idle(self): | 467 | def test_isAvailable_with_slave_idle(self): |
119 | 466 | builder = self.factory.makeBuilder() | 468 | builder = self.factory.makeBuilder() |
121 | 467 | builder.setSlaveForTesting(OkSlave()) | 469 | self.patch( |
122 | 470 | BuilderSlave, 'makeBuilderSlave', FakeMethod(OkSlave())) | ||
123 | 468 | d = builder.isAvailable() | 471 | d = builder.isAvailable() |
124 | 469 | return d.addCallback(self.assertTrue) | 472 | return d.addCallback(self.assertTrue) |
125 | 470 | 473 | ||
126 | 471 | 474 | ||
127 | === modified file 'lib/lp/buildmaster/tests/test_manager.py' | |||
128 | --- lib/lp/buildmaster/tests/test_manager.py 2012-01-20 15:42:44 +0000 | |||
129 | +++ lib/lp/buildmaster/tests/test_manager.py 2012-02-10 05:25:23 +0000 | |||
130 | @@ -33,7 +33,10 @@ | |||
131 | 33 | NewBuildersScanner, | 33 | NewBuildersScanner, |
132 | 34 | SlaveScanner, | 34 | SlaveScanner, |
133 | 35 | ) | 35 | ) |
135 | 36 | from lp.buildmaster.model.builder import Builder | 36 | from lp.buildmaster.model.builder import ( |
136 | 37 | Builder, | ||
137 | 38 | BuilderSlave, | ||
138 | 39 | ) | ||
139 | 37 | from lp.buildmaster.tests.harness import BuilddManagerTestSetup | 40 | from lp.buildmaster.tests.harness import BuilddManagerTestSetup |
140 | 38 | from lp.buildmaster.tests.mock_slaves import ( | 41 | from lp.buildmaster.tests.mock_slaves import ( |
141 | 39 | BrokenSlave, | 42 | BrokenSlave, |
142 | @@ -134,7 +137,7 @@ | |||
143 | 134 | # Reset sampledata builder. | 137 | # Reset sampledata builder. |
144 | 135 | builder = getUtility(IBuilderSet)[BOB_THE_BUILDER_NAME] | 138 | builder = getUtility(IBuilderSet)[BOB_THE_BUILDER_NAME] |
145 | 136 | self._resetBuilder(builder) | 139 | self._resetBuilder(builder) |
147 | 137 | builder.setSlaveForTesting(OkSlave()) | 140 | self.patch(BuilderSlave, 'makeBuilderSlave', FakeMethod(OkSlave())) |
148 | 138 | # Set this to 1 here so that _checkDispatch can make sure it's | 141 | # Set this to 1 here so that _checkDispatch can make sure it's |
149 | 139 | # reset to 0 after a successful dispatch. | 142 | # reset to 0 after a successful dispatch. |
150 | 140 | builder.failure_count = 1 | 143 | builder.failure_count = 1 |
151 | @@ -246,7 +249,8 @@ | |||
152 | 246 | 249 | ||
153 | 247 | login('foo.bar@canonical.com') | 250 | login('foo.bar@canonical.com') |
154 | 248 | builder.builderok = True | 251 | builder.builderok = True |
156 | 249 | builder.setSlaveForTesting(BuildingSlave(build_id='8-1')) | 252 | self.patch(BuilderSlave, 'makeBuilderSlave', |
157 | 253 | FakeMethod(BuildingSlave(build_id='8-1'))) | ||
158 | 250 | transaction.commit() | 254 | transaction.commit() |
159 | 251 | login(ANONYMOUS) | 255 | login(ANONYMOUS) |
160 | 252 | 256 | ||
161 | @@ -263,7 +267,7 @@ | |||
162 | 263 | def test_scan_with_nothing_to_dispatch(self): | 267 | def test_scan_with_nothing_to_dispatch(self): |
163 | 264 | factory = LaunchpadObjectFactory() | 268 | factory = LaunchpadObjectFactory() |
164 | 265 | builder = factory.makeBuilder() | 269 | builder = factory.makeBuilder() |
166 | 266 | builder.setSlaveForTesting(OkSlave()) | 270 | self.patch(BuilderSlave, 'makeBuilderSlave', FakeMethod(OkSlave())) |
167 | 267 | scanner = self._getScanner(builder_name=builder.name) | 271 | scanner = self._getScanner(builder_name=builder.name) |
168 | 268 | d = scanner.scan() | 272 | d = scanner.scan() |
169 | 269 | return d.addCallback(self._checkNoDispatch, builder) | 273 | return d.addCallback(self._checkNoDispatch, builder) |
170 | @@ -272,7 +276,7 @@ | |||
171 | 272 | # Reset sampledata builder. | 276 | # Reset sampledata builder. |
172 | 273 | builder = getUtility(IBuilderSet)[BOB_THE_BUILDER_NAME] | 277 | builder = getUtility(IBuilderSet)[BOB_THE_BUILDER_NAME] |
173 | 274 | self._resetBuilder(builder) | 278 | self._resetBuilder(builder) |
175 | 275 | builder.setSlaveForTesting(OkSlave()) | 279 | self.patch(BuilderSlave, 'makeBuilderSlave', FakeMethod(OkSlave())) |
176 | 276 | builder.manual = True | 280 | builder.manual = True |
177 | 277 | scanner = self._getScanner() | 281 | scanner = self._getScanner() |
178 | 278 | d = scanner.scan() | 282 | d = scanner.scan() |
179 | @@ -283,7 +287,7 @@ | |||
180 | 283 | # Reset sampledata builder. | 287 | # Reset sampledata builder. |
181 | 284 | builder = getUtility(IBuilderSet)[BOB_THE_BUILDER_NAME] | 288 | builder = getUtility(IBuilderSet)[BOB_THE_BUILDER_NAME] |
182 | 285 | self._resetBuilder(builder) | 289 | self._resetBuilder(builder) |
184 | 286 | builder.setSlaveForTesting(OkSlave()) | 290 | self.patch(BuilderSlave, 'makeBuilderSlave', FakeMethod(OkSlave())) |
185 | 287 | builder.builderok = False | 291 | builder.builderok = False |
186 | 288 | scanner = self._getScanner() | 292 | scanner = self._getScanner() |
187 | 289 | d = scanner.scan() | 293 | d = scanner.scan() |
188 | @@ -295,7 +299,8 @@ | |||
189 | 295 | def test_scan_of_broken_slave(self): | 299 | def test_scan_of_broken_slave(self): |
190 | 296 | builder = getUtility(IBuilderSet)[BOB_THE_BUILDER_NAME] | 300 | builder = getUtility(IBuilderSet)[BOB_THE_BUILDER_NAME] |
191 | 297 | self._resetBuilder(builder) | 301 | self._resetBuilder(builder) |
193 | 298 | builder.setSlaveForTesting(BrokenSlave()) | 302 | self.patch( |
194 | 303 | BuilderSlave, 'makeBuilderSlave', FakeMethod(BrokenSlave())) | ||
195 | 299 | builder.failure_count = 0 | 304 | builder.failure_count = 0 |
196 | 300 | scanner = self._getScanner(builder_name=builder.name) | 305 | scanner = self._getScanner(builder_name=builder.name) |
197 | 301 | d = scanner.scan() | 306 | d = scanner.scan() |
198 | @@ -390,7 +395,7 @@ | |||
199 | 390 | getUtility(IBuilderSet)[BOB_THE_BUILDER_NAME]) | 395 | getUtility(IBuilderSet)[BOB_THE_BUILDER_NAME]) |
200 | 391 | self._resetBuilder(builder) | 396 | self._resetBuilder(builder) |
201 | 392 | self.assertEqual(0, builder.failure_count) | 397 | self.assertEqual(0, builder.failure_count) |
203 | 393 | builder.setSlaveForTesting(slave) | 398 | self.patch(BuilderSlave, 'makeBuilderSlave', FakeMethod(slave)) |
204 | 394 | builder.vm_host = "fake_vm_host" | 399 | builder.vm_host = "fake_vm_host" |
205 | 395 | 400 | ||
206 | 396 | scanner = self._getScanner() | 401 | scanner = self._getScanner() |
207 | @@ -434,7 +439,7 @@ | |||
208 | 434 | # For now, we can only cancel virtual builds. | 439 | # For now, we can only cancel virtual builds. |
209 | 435 | builder.virtualized = True | 440 | builder.virtualized = True |
210 | 436 | builder.vm_host = "fake_vm_host" | 441 | builder.vm_host = "fake_vm_host" |
212 | 437 | builder.setSlaveForTesting(slave) | 442 | self.patch(BuilderSlave, 'makeBuilderSlave', FakeMethod(slave)) |
213 | 438 | transaction.commit() | 443 | transaction.commit() |
214 | 439 | login(ANONYMOUS) | 444 | login(ANONYMOUS) |
215 | 440 | buildqueue = builder.currentjob | 445 | buildqueue = builder.currentjob |
216 | @@ -508,7 +513,7 @@ | |||
217 | 508 | slave = OkSlave() | 513 | slave = OkSlave() |
218 | 509 | slave.resume = fake_resume | 514 | slave.resume = fake_resume |
219 | 510 | self.builder.vm_host = "fake_vm_host" | 515 | self.builder.vm_host = "fake_vm_host" |
221 | 511 | self.builder.setSlaveForTesting(slave) | 516 | self.patch(BuilderSlave, 'makeBuilderSlave', FakeMethod(slave)) |
222 | 512 | buildqueue = self.builder.currentjob | 517 | buildqueue = self.builder.currentjob |
223 | 513 | build = getUtility(IBinaryPackageBuildSet).getByQueueEntry(buildqueue) | 518 | build = getUtility(IBinaryPackageBuildSet).getByQueueEntry(buildqueue) |
224 | 514 | build.status = BuildStatus.CANCELLING | 519 | build.status = BuildStatus.CANCELLING |
225 | 515 | 520 | ||
226 | === modified file 'lib/lp/buildmaster/tests/test_packagebuild.py' | |||
227 | --- lib/lp/buildmaster/tests/test_packagebuild.py 2012-01-11 08:52:22 +0000 | |||
228 | +++ lib/lp/buildmaster/tests/test_packagebuild.py 2012-02-10 05:25:23 +0000 | |||
229 | @@ -26,6 +26,7 @@ | |||
230 | 26 | IPackageBuildSet, | 26 | IPackageBuildSet, |
231 | 27 | IPackageBuildSource, | 27 | IPackageBuildSource, |
232 | 28 | ) | 28 | ) |
233 | 29 | from lp.buildmaster.model.builder import BuilderSlave | ||
234 | 29 | from lp.buildmaster.model.buildfarmjob import BuildFarmJob | 30 | from lp.buildmaster.model.buildfarmjob import BuildFarmJob |
235 | 30 | from lp.buildmaster.model.packagebuild import PackageBuild | 31 | from lp.buildmaster.model.packagebuild import PackageBuild |
236 | 31 | from lp.buildmaster.tests.mock_slaves import WaitingSlave | 32 | from lp.buildmaster.tests.mock_slaves import WaitingSlave |
237 | @@ -303,7 +304,7 @@ | |||
238 | 303 | self.build.buildqueue_record.setDateStarted(UTC_NOW) | 304 | self.build.buildqueue_record.setDateStarted(UTC_NOW) |
239 | 304 | self.slave = WaitingSlave('BuildStatus.OK') | 305 | self.slave = WaitingSlave('BuildStatus.OK') |
240 | 305 | self.slave.valid_file_hashes.append('test_file_hash') | 306 | self.slave.valid_file_hashes.append('test_file_hash') |
242 | 306 | builder.setSlaveForTesting(self.slave) | 307 | self.patch(BuilderSlave, 'makeBuilderSlave', FakeMethod(self.slave)) |
243 | 307 | 308 | ||
244 | 308 | # We overwrite the buildmaster root to use a temp directory. | 309 | # We overwrite the buildmaster root to use a temp directory. |
245 | 309 | tempdir = tempfile.mkdtemp() | 310 | tempdir = tempfile.mkdtemp() |
246 | 310 | 311 | ||
247 | === modified file 'lib/lp/code/model/tests/test_sourcepackagerecipebuild.py' | |||
248 | --- lib/lp/code/model/tests/test_sourcepackagerecipebuild.py 2012-01-11 08:52:22 +0000 | |||
249 | +++ lib/lp/code/model/tests/test_sourcepackagerecipebuild.py 2012-02-10 05:25:23 +0000 | |||
250 | @@ -21,6 +21,7 @@ | |||
251 | 21 | from lp.app.errors import NotFoundError | 21 | from lp.app.errors import NotFoundError |
252 | 22 | from lp.buildmaster.enums import BuildStatus | 22 | from lp.buildmaster.enums import BuildStatus |
253 | 23 | from lp.buildmaster.interfaces.buildqueue import IBuildQueue | 23 | from lp.buildmaster.interfaces.buildqueue import IBuildQueue |
254 | 24 | from lp.buildmaster.model.builder import BuilderSlave | ||
255 | 24 | from lp.buildmaster.model.buildfarmjob import BuildFarmJob | 25 | from lp.buildmaster.model.buildfarmjob import BuildFarmJob |
256 | 25 | from lp.buildmaster.model.packagebuild import PackageBuild | 26 | from lp.buildmaster.model.packagebuild import PackageBuild |
257 | 26 | from lp.buildmaster.tests.mock_slaves import WaitingSlave | 27 | from lp.buildmaster.tests.mock_slaves import WaitingSlave |
258 | @@ -608,7 +609,7 @@ | |||
259 | 608 | result=True) | 609 | result=True) |
260 | 609 | queue_record.builder = self.factory.makeBuilder() | 610 | queue_record.builder = self.factory.makeBuilder() |
261 | 610 | slave = WaitingSlave('BuildStatus.OK') | 611 | slave = WaitingSlave('BuildStatus.OK') |
263 | 611 | queue_record.builder.setSlaveForTesting(slave) | 612 | self.patch(BuilderSlave, 'makeBuilderSlave', FakeMethod(slave)) |
264 | 612 | return build | 613 | return build |
265 | 613 | 614 | ||
266 | 614 | def assertDeferredNotifyCount(self, status, build, expected_count): | 615 | def assertDeferredNotifyCount(self, status, build, expected_count): |
267 | 615 | 616 | ||
268 | === modified file 'lib/lp/soyuz/tests/test_binarypackagebuild.py' | |||
269 | --- lib/lp/soyuz/tests/test_binarypackagebuild.py 2012-01-11 08:52:22 +0000 | |||
270 | +++ lib/lp/soyuz/tests/test_binarypackagebuild.py 2012-02-10 05:25:23 +0000 | |||
271 | @@ -18,6 +18,7 @@ | |||
272 | 18 | from lp.buildmaster.interfaces.builder import IBuilderSet | 18 | from lp.buildmaster.interfaces.builder import IBuilderSet |
273 | 19 | from lp.buildmaster.interfaces.buildqueue import IBuildQueue | 19 | from lp.buildmaster.interfaces.buildqueue import IBuildQueue |
274 | 20 | from lp.buildmaster.interfaces.packagebuild import IPackageBuild | 20 | from lp.buildmaster.interfaces.packagebuild import IPackageBuild |
275 | 21 | from lp.buildmaster.model.builder import BuilderSlave | ||
276 | 21 | from lp.buildmaster.model.buildqueue import BuildQueue | 22 | from lp.buildmaster.model.buildqueue import BuildQueue |
277 | 22 | from lp.buildmaster.tests.mock_slaves import WaitingSlave | 23 | from lp.buildmaster.tests.mock_slaves import WaitingSlave |
278 | 23 | from lp.buildmaster.tests.test_packagebuild import ( | 24 | from lp.buildmaster.tests.test_packagebuild import ( |
279 | @@ -48,6 +49,7 @@ | |||
280 | 48 | logout, | 49 | logout, |
281 | 49 | TestCaseWithFactory, | 50 | TestCaseWithFactory, |
282 | 50 | ) | 51 | ) |
283 | 52 | from lp.testing.fakemethod import FakeMethod | ||
284 | 51 | from lp.testing.layers import ( | 53 | from lp.testing.layers import ( |
285 | 52 | DatabaseFunctionalLayer, | 54 | DatabaseFunctionalLayer, |
286 | 53 | LaunchpadZopelessLayer, | 55 | LaunchpadZopelessLayer, |
287 | @@ -522,7 +524,8 @@ | |||
288 | 522 | self.build = gedit_src_hist.createMissingBuilds()[0] | 524 | self.build = gedit_src_hist.createMissingBuilds()[0] |
289 | 523 | 525 | ||
290 | 524 | self.builder = self.factory.makeBuilder() | 526 | self.builder = self.factory.makeBuilder() |
292 | 525 | self.builder.setSlaveForTesting(WaitingSlave('BuildStatus.OK')) | 527 | self.patch(BuilderSlave, 'makeBuilderSlave', |
293 | 528 | FakeMethod(WaitingSlave('BuildStatus.OK'))) | ||
294 | 526 | self.build.buildqueue_record.markAsBuilding(self.builder) | 529 | self.build.buildqueue_record.markAsBuilding(self.builder) |
295 | 527 | 530 | ||
296 | 528 | def testDependencies(self): | 531 | def testDependencies(self): |
297 | 529 | 532 | ||
298 | === modified file 'lib/lp/soyuz/tests/test_binarypackagebuildbehavior.py' | |||
299 | --- lib/lp/soyuz/tests/test_binarypackagebuildbehavior.py 2012-01-20 15:42:44 +0000 | |||
300 | +++ lib/lp/soyuz/tests/test_binarypackagebuildbehavior.py 2012-02-10 05:25:23 +0000 | |||
301 | @@ -18,6 +18,7 @@ | |||
302 | 18 | from zope.security.proxy import removeSecurityProxy | 18 | from zope.security.proxy import removeSecurityProxy |
303 | 19 | 19 | ||
304 | 20 | from lp.buildmaster.enums import BuildStatus | 20 | from lp.buildmaster.enums import BuildStatus |
305 | 21 | from lp.buildmaster.model.builder import BuilderSlave | ||
306 | 21 | from lp.buildmaster.tests.mock_slaves import ( | 22 | from lp.buildmaster.tests.mock_slaves import ( |
307 | 22 | AbortedSlave, | 23 | AbortedSlave, |
308 | 23 | AbortingSlave, | 24 | AbortingSlave, |
309 | @@ -40,6 +41,7 @@ | |||
310 | 40 | from lp.soyuz.enums import ArchivePurpose | 41 | from lp.soyuz.enums import ArchivePurpose |
311 | 41 | from lp.testing import TestCaseWithFactory | 42 | from lp.testing import TestCaseWithFactory |
312 | 42 | from lp.testing.dbuser import switch_dbuser | 43 | from lp.testing.dbuser import switch_dbuser |
313 | 44 | from lp.testing.fakemethod import FakeMethod | ||
314 | 43 | from lp.testing.layers import LaunchpadZopelessLayer | 45 | from lp.testing.layers import LaunchpadZopelessLayer |
315 | 44 | 46 | ||
316 | 45 | 47 | ||
317 | @@ -138,7 +140,7 @@ | |||
318 | 138 | archive = self.factory.makeArchive(virtualized=False) | 140 | archive = self.factory.makeArchive(virtualized=False) |
319 | 139 | slave = OkSlave() | 141 | slave = OkSlave() |
320 | 140 | builder = self.factory.makeBuilder(virtualized=False) | 142 | builder = self.factory.makeBuilder(virtualized=False) |
322 | 141 | builder.setSlaveForTesting(slave) | 143 | self.patch(BuilderSlave, 'makeBuilderSlave', FakeMethod(slave)) |
323 | 142 | build = self.factory.makeBinaryPackageBuild( | 144 | build = self.factory.makeBinaryPackageBuild( |
324 | 143 | builder=builder, archive=archive) | 145 | builder=builder, archive=archive) |
325 | 144 | lf = self.factory.makeLibraryFileAlias() | 146 | lf = self.factory.makeLibraryFileAlias() |
326 | @@ -158,7 +160,7 @@ | |||
327 | 158 | slave = OkSlave() | 160 | slave = OkSlave() |
328 | 159 | builder = self.factory.makeBuilder( | 161 | builder = self.factory.makeBuilder( |
329 | 160 | virtualized=True, vm_host="foohost") | 162 | virtualized=True, vm_host="foohost") |
331 | 161 | builder.setSlaveForTesting(slave) | 163 | self.patch(BuilderSlave, 'makeBuilderSlave', FakeMethod(slave)) |
332 | 162 | build = self.factory.makeBinaryPackageBuild( | 164 | build = self.factory.makeBinaryPackageBuild( |
333 | 163 | builder=builder, archive=archive) | 165 | builder=builder, archive=archive) |
334 | 164 | lf = self.factory.makeLibraryFileAlias() | 166 | lf = self.factory.makeLibraryFileAlias() |
335 | @@ -181,7 +183,7 @@ | |||
336 | 181 | virtualized=False, purpose=ArchivePurpose.PARTNER) | 183 | virtualized=False, purpose=ArchivePurpose.PARTNER) |
337 | 182 | slave = OkSlave() | 184 | slave = OkSlave() |
338 | 183 | builder = self.factory.makeBuilder(virtualized=False) | 185 | builder = self.factory.makeBuilder(virtualized=False) |
340 | 184 | builder.setSlaveForTesting(slave) | 186 | self.patch(BuilderSlave, 'makeBuilderSlave', FakeMethod(slave)) |
341 | 185 | build = self.factory.makeBinaryPackageBuild( | 187 | build = self.factory.makeBinaryPackageBuild( |
342 | 186 | builder=builder, archive=archive) | 188 | builder=builder, archive=archive) |
343 | 187 | lf = self.factory.makeLibraryFileAlias() | 189 | lf = self.factory.makeLibraryFileAlias() |
344 | @@ -309,7 +311,8 @@ | |||
345 | 309 | # When a package fails to build, make sure the builder notes are | 311 | # When a package fails to build, make sure the builder notes are |
346 | 310 | # stored and the build status is set as failed. | 312 | # stored and the build status is set as failed. |
347 | 311 | waiting_slave = WaitingSlave('BuildStatus.PACKAGEFAIL') | 313 | waiting_slave = WaitingSlave('BuildStatus.PACKAGEFAIL') |
349 | 312 | self.builder.setSlaveForTesting(waiting_slave) | 314 | self.patch(BuilderSlave, 'makeBuilderSlave', |
350 | 315 | FakeMethod(waiting_slave)) | ||
351 | 313 | 316 | ||
352 | 314 | def got_update(ignored): | 317 | def got_update(ignored): |
353 | 315 | self.assertBuildProperties(self.build) | 318 | self.assertBuildProperties(self.build) |
354 | @@ -322,7 +325,8 @@ | |||
355 | 322 | # Package build was left in dependency wait. | 325 | # Package build was left in dependency wait. |
356 | 323 | DEPENDENCIES = 'baz (>= 1.0.1)' | 326 | DEPENDENCIES = 'baz (>= 1.0.1)' |
357 | 324 | waiting_slave = WaitingSlave('BuildStatus.DEPFAIL', DEPENDENCIES) | 327 | waiting_slave = WaitingSlave('BuildStatus.DEPFAIL', DEPENDENCIES) |
359 | 325 | self.builder.setSlaveForTesting(waiting_slave) | 328 | self.patch(BuilderSlave, 'makeBuilderSlave', |
360 | 329 | FakeMethod(waiting_slave)) | ||
361 | 326 | 330 | ||
362 | 327 | def got_update(ignored): | 331 | def got_update(ignored): |
363 | 328 | self.assertBuildProperties(self.build) | 332 | self.assertBuildProperties(self.build) |
364 | @@ -335,7 +339,8 @@ | |||
365 | 335 | def test_chrootfail_collection(self): | 339 | def test_chrootfail_collection(self): |
366 | 336 | # There was a chroot problem for this build. | 340 | # There was a chroot problem for this build. |
367 | 337 | waiting_slave = WaitingSlave('BuildStatus.CHROOTFAIL') | 341 | waiting_slave = WaitingSlave('BuildStatus.CHROOTFAIL') |
369 | 338 | self.builder.setSlaveForTesting(waiting_slave) | 342 | self.patch(BuilderSlave, 'makeBuilderSlave', |
370 | 343 | FakeMethod(waiting_slave)) | ||
371 | 339 | 344 | ||
372 | 340 | def got_update(ignored): | 345 | def got_update(ignored): |
373 | 341 | self.assertBuildProperties(self.build) | 346 | self.assertBuildProperties(self.build) |
374 | @@ -347,7 +352,8 @@ | |||
375 | 347 | def test_builderfail_collection(self): | 352 | def test_builderfail_collection(self): |
376 | 348 | # The builder failed after we dispatched the build. | 353 | # The builder failed after we dispatched the build. |
377 | 349 | waiting_slave = WaitingSlave('BuildStatus.BUILDERFAIL') | 354 | waiting_slave = WaitingSlave('BuildStatus.BUILDERFAIL') |
379 | 350 | self.builder.setSlaveForTesting(waiting_slave) | 355 | self.patch(BuilderSlave, 'makeBuilderSlave', |
380 | 356 | FakeMethod(waiting_slave)) | ||
381 | 351 | 357 | ||
382 | 352 | def got_update(ignored): | 358 | def got_update(ignored): |
383 | 353 | self.assertEqual( | 359 | self.assertEqual( |
384 | @@ -363,7 +369,8 @@ | |||
385 | 363 | 369 | ||
386 | 364 | def test_building_collection(self): | 370 | def test_building_collection(self): |
387 | 365 | # The builder is still building the package. | 371 | # The builder is still building the package. |
389 | 366 | self.builder.setSlaveForTesting(BuildingSlave()) | 372 | self.patch(BuilderSlave, 'makeBuilderSlave', |
390 | 373 | FakeMethod(BuildingSlave())) | ||
391 | 367 | 374 | ||
392 | 368 | def got_update(ignored): | 375 | def got_update(ignored): |
393 | 369 | # The fake log is returned from the BuildingSlave() mock. | 376 | # The fake log is returned from the BuildingSlave() mock. |
394 | @@ -374,7 +381,8 @@ | |||
395 | 374 | 381 | ||
396 | 375 | def test_aborted_collection(self): | 382 | def test_aborted_collection(self): |
397 | 376 | # The builder aborted the job. | 383 | # The builder aborted the job. |
399 | 377 | self.builder.setSlaveForTesting(AbortedSlave()) | 384 | self.patch(BuilderSlave, 'makeBuilderSlave', |
400 | 385 | FakeMethod(AbortedSlave())) | ||
401 | 378 | 386 | ||
402 | 379 | def got_update(ignored): | 387 | def got_update(ignored): |
403 | 380 | self.assertEqual(BuildStatus.NEEDSBUILD, self.build.status) | 388 | self.assertEqual(BuildStatus.NEEDSBUILD, self.build.status) |
404 | @@ -384,7 +392,8 @@ | |||
405 | 384 | 392 | ||
406 | 385 | def test_aborting_collection(self): | 393 | def test_aborting_collection(self): |
407 | 386 | # The builder is in the process of aborting. | 394 | # The builder is in the process of aborting. |
409 | 387 | self.builder.setSlaveForTesting(AbortingSlave()) | 395 | self.patch(BuilderSlave, 'makeBuilderSlave', |
410 | 396 | FakeMethod(AbortingSlave())) | ||
411 | 388 | 397 | ||
412 | 389 | def got_update(ignored): | 398 | def got_update(ignored): |
413 | 390 | self.assertEqual( | 399 | self.assertEqual( |
414 | @@ -398,7 +407,8 @@ | |||
415 | 398 | # If we collected a build for a superseded/deleted source then | 407 | # If we collected a build for a superseded/deleted source then |
416 | 399 | # the build should get marked superseded as the build results | 408 | # the build should get marked superseded as the build results |
417 | 400 | # get discarded. | 409 | # get discarded. |
419 | 401 | self.builder.setSlaveForTesting(WaitingSlave('BuildStatus.OK')) | 410 | self.patch(BuilderSlave, 'makeBuilderSlave', |
420 | 411 | FakeMethod(WaitingSlave('BuildStatus.OK'))) | ||
421 | 402 | spr = removeSecurityProxy(self.build.source_package_release) | 412 | spr = removeSecurityProxy(self.build.source_package_release) |
422 | 403 | pub = self.build.current_source_publication | 413 | pub = self.build.current_source_publication |
423 | 404 | pub.requestDeletion(spr.creator) | 414 | pub.requestDeletion(spr.creator) |
424 | @@ -412,7 +422,8 @@ | |||
425 | 412 | 422 | ||
426 | 413 | def test_uploading_collection(self): | 423 | def test_uploading_collection(self): |
427 | 414 | # After a successful build, the status should be UPLOADING. | 424 | # After a successful build, the status should be UPLOADING. |
429 | 415 | self.builder.setSlaveForTesting(WaitingSlave('BuildStatus.OK')) | 425 | self.patch(BuilderSlave, 'makeBuilderSlave', |
430 | 426 | FakeMethod(WaitingSlave('BuildStatus.OK'))) | ||
431 | 416 | 427 | ||
432 | 417 | def got_update(ignored): | 428 | def got_update(ignored): |
433 | 418 | self.assertEqual(self.build.status, BuildStatus.UPLOADING) | 429 | self.assertEqual(self.build.status, BuildStatus.UPLOADING) |
434 | @@ -425,7 +436,8 @@ | |||
435 | 425 | 436 | ||
436 | 426 | def test_givenback_collection(self): | 437 | def test_givenback_collection(self): |
437 | 427 | waiting_slave = WaitingSlave('BuildStatus.GIVENBACK') | 438 | waiting_slave = WaitingSlave('BuildStatus.GIVENBACK') |
439 | 428 | self.builder.setSlaveForTesting(waiting_slave) | 439 | self.patch(BuilderSlave, 'makeBuilderSlave', |
440 | 440 | FakeMethod(waiting_slave)) | ||
441 | 429 | score = self.candidate.lastscore | 441 | score = self.candidate.lastscore |
442 | 430 | 442 | ||
443 | 431 | def got_update(ignored): | 443 | def got_update(ignored): |
444 | @@ -440,7 +452,8 @@ | |||
445 | 440 | return d.addCallback(got_update) | 452 | return d.addCallback(got_update) |
446 | 441 | 453 | ||
447 | 442 | def test_log_file_collection(self): | 454 | def test_log_file_collection(self): |
449 | 443 | self.builder.setSlaveForTesting(WaitingSlave('BuildStatus.OK')) | 455 | self.patch(BuilderSlave, 'makeBuilderSlave', |
450 | 456 | FakeMethod(WaitingSlave('BuildStatus.OK'))) | ||
451 | 444 | self.build.status = BuildStatus.FULLYBUILT | 457 | self.build.status = BuildStatus.FULLYBUILT |
452 | 445 | old_tmps = sorted(os.listdir('/tmp')) | 458 | old_tmps = sorted(os.listdir('/tmp')) |
453 | 446 | 459 | ||
454 | @@ -488,7 +501,8 @@ | |||
455 | 488 | def test_private_build_log_storage(self): | 501 | def test_private_build_log_storage(self): |
456 | 489 | # Builds in private archives should have their log uploaded to | 502 | # Builds in private archives should have their log uploaded to |
457 | 490 | # the restricted librarian. | 503 | # the restricted librarian. |
459 | 491 | self.builder.setSlaveForTesting(WaitingSlave('BuildStatus.OK')) | 504 | self.patch(BuilderSlave, 'makeBuilderSlave', |
460 | 505 | FakeMethod(WaitingSlave('BuildStatus.OK'))) | ||
461 | 492 | 506 | ||
462 | 493 | # Go behind Storm's back since the field validator on | 507 | # Go behind Storm's back since the field validator on |
463 | 494 | # Archive.private prevents us from setting it to True with | 508 | # Archive.private prevents us from setting it to True with |
464 | 495 | 509 | ||
465 | === modified file 'lib/lp/translations/stories/buildfarm/xx-build-summary.txt' | |||
466 | --- lib/lp/translations/stories/buildfarm/xx-build-summary.txt 2012-01-15 13:32:27 +0000 | |||
467 | +++ lib/lp/translations/stories/buildfarm/xx-build-summary.txt 2012-02-10 05:25:23 +0000 | |||
468 | @@ -9,12 +9,14 @@ | |||
469 | 9 | 9 | ||
470 | 10 | Create a builder working on a TranslationTemplatesBuild for a branch. | 10 | Create a builder working on a TranslationTemplatesBuild for a branch. |
471 | 11 | 11 | ||
472 | 12 | >>> from testtools.monkey import patch | ||
473 | 12 | >>> from zope.component import getUtility | 13 | >>> from zope.component import getUtility |
474 | 13 | >>> from lp.app.interfaces.launchpad import ILaunchpadCelebrities | 14 | >>> from lp.app.interfaces.launchpad import ILaunchpadCelebrities |
475 | 14 | >>> from lp.services.librarian.interfaces import ( | 15 | >>> from lp.services.librarian.interfaces import ( |
476 | 15 | ... ILibraryFileAliasSet) | 16 | ... ILibraryFileAliasSet) |
477 | 16 | >>> from lp.app.enums import ServiceUsage | 17 | >>> from lp.app.enums import ServiceUsage |
478 | 17 | >>> from lp.buildmaster.interfaces.buildqueue import IBuildQueueSet | 18 | >>> from lp.buildmaster.interfaces.buildqueue import IBuildQueueSet |
479 | 19 | >>> from lp.buildmaster.model.builder import BuilderSlave | ||
480 | 18 | >>> from lp.testing.factory import ( | 20 | >>> from lp.testing.factory import ( |
481 | 19 | ... remove_security_proxy_and_shout_at_engineer) | 21 | ... remove_security_proxy_and_shout_at_engineer) |
482 | 20 | >>> from lp.testing.fakemethod import FakeMethod | 22 | >>> from lp.testing.fakemethod import FakeMethod |
483 | @@ -51,7 +53,7 @@ | |||
484 | 51 | ... fake_chroot) | 53 | ... fake_chroot) |
485 | 52 | 54 | ||
486 | 53 | >>> builder = factory.makeBuilder(vm_host=factory.getUniqueString()) | 55 | >>> builder = factory.makeBuilder(vm_host=factory.getUniqueString()) |
488 | 54 | >>> builder.setSlaveForTesting(FakeSlave()) | 56 | >>> _ = patch(BuilderSlave, 'makeBuilderSlave', FakeMethod(FakeSlave())) |
489 | 55 | >>> buildqueue.markAsBuilding(builder) | 57 | >>> buildqueue.markAsBuilding(builder) |
490 | 56 | 58 | ||
491 | 57 | >>> builder_page = canonical_url(builder) | 59 | >>> builder_page = canonical_url(builder) |
492 | 58 | 60 | ||
493 | === modified file 'lib/lp/translations/tests/test_translationtemplatesbuildbehavior.py' | |||
494 | --- lib/lp/translations/tests/test_translationtemplatesbuildbehavior.py 2012-02-01 05:57:16 +0000 | |||
495 | +++ lib/lp/translations/tests/test_translationtemplatesbuildbehavior.py 2012-02-10 05:25:23 +0000 | |||
496 | @@ -20,6 +20,7 @@ | |||
497 | 20 | IBuildFarmJobBehavior, | 20 | IBuildFarmJobBehavior, |
498 | 21 | ) | 21 | ) |
499 | 22 | from lp.buildmaster.interfaces.buildqueue import IBuildQueueSet | 22 | from lp.buildmaster.interfaces.buildqueue import IBuildQueueSet |
500 | 23 | from lp.buildmaster.model.builder import BuilderSlave | ||
501 | 23 | from lp.buildmaster.tests.mock_slaves import ( | 24 | from lp.buildmaster.tests.mock_slaves import ( |
502 | 24 | SlaveTestHelpers, | 25 | SlaveTestHelpers, |
503 | 25 | WaitingSlave, | 26 | WaitingSlave, |
504 | @@ -79,7 +80,7 @@ | |||
505 | 79 | behavior = IBuildFarmJobBehavior(specific_job) | 80 | behavior = IBuildFarmJobBehavior(specific_job) |
506 | 80 | slave = WaitingSlave() | 81 | slave = WaitingSlave() |
507 | 81 | behavior._builder = removeSecurityProxy(self.factory.makeBuilder()) | 82 | behavior._builder = removeSecurityProxy(self.factory.makeBuilder()) |
509 | 82 | behavior._builder.setSlaveForTesting(slave) | 83 | self.patch(BuilderSlave, 'makeBuilderSlave', FakeMethod(slave)) |
510 | 83 | if use_fake_chroot: | 84 | if use_fake_chroot: |
511 | 84 | lf = self.factory.makeLibraryFileAlias() | 85 | lf = self.factory.makeLibraryFileAlias() |
512 | 85 | self.layer.txn.commit() | 86 | self.layer.txn.commit() |
Thank you, this is a great change.