Code review comment for lp:~al-maisan/launchpad/ibuilder-api-cleanup-505647
- ibuilder-api-cleanup-505647
- Merge into devel
Revision history for this message
Muharem Hrnjadovic (al-maisan) wrote : | # |
1 | === modified file 'lib/lp/buildmaster/manager.py' |
2 | --- lib/lp/buildmaster/manager.py 2010-01-10 23:59:31 +0000 |
3 | +++ lib/lp/buildmaster/manager.py 2010-01-11 03:39:35 +0000 |
4 | @@ -344,7 +344,7 @@ |
5 | candidate = builder.findAndStartJob(buildd_slave=slave) |
6 | if candidate is not None: |
7 | recording_slaves.append(slave) |
8 | - transaction.commit() |
9 | + transaction.commit() |
10 | |
11 | return recording_slaves |
12 | |
13 | |
14 | === modified file 'lib/lp/soyuz/tests/test_builder.py' |
15 | --- lib/lp/soyuz/tests/test_builder.py 2010-01-11 03:03:19 +0000 |
16 | +++ lib/lp/soyuz/tests/test_builder.py 2010-01-11 03:43:47 +0000 |
17 | @@ -35,11 +35,9 @@ |
18 | # Create some i386 builders ready to build PPA builds. Two |
19 | # already exist in sampledata so we'll use those first. |
20 | self.builder1 = getUtility(IBuilderSet)['bob'] |
21 | - self.frog_builder = removeSecurityProxy( |
22 | - getUtility(IBuilderSet)['frog']) |
23 | + self.frog_builder = getUtility(IBuilderSet)['frog'] |
24 | self.builder3 = self.factory.makeBuilder(name='builder3') |
25 | - self.builder4 = removeSecurityProxy( |
26 | - self.factory.makeBuilder(name='builder4')) |
27 | + self.builder4 = self.factory.makeBuilder(name='builder4') |
28 | self.builder5 = self.factory.makeBuilder(name='builder5') |
29 | self.builders = [ |
30 | self.builder1, |
31 | @@ -65,8 +63,7 @@ |
32 | self.publisher.prepareBreezyAutotest() |
33 | |
34 | self.bob_builder = getUtility(IBuilderSet)['bob'] |
35 | - self.frog_builder = removeSecurityProxy( |
36 | - getUtility(IBuilderSet)['frog']) |
37 | + self.frog_builder = getUtility(IBuilderSet)['frog'] |
38 | |
39 | # Disable bob so only frog is available. |
40 | self.bob_builder.manual = True |
41 | @@ -85,7 +82,8 @@ |
42 | # there's only one builder available. |
43 | |
44 | # Asking frog to find a candidate should give us the joesppa build. |
45 | - next_job = self.frog_builder._findBuildCandidate() |
46 | + next_job = removeSecurityProxy( |
47 | + self.frog_builder)._findBuildCandidate() |
48 | build = getUtility(IBuildSet).getByQueueEntry(next_job) |
49 | self.assertEqual('joesppa', build.archive.name) |
50 | |
51 | @@ -93,7 +91,8 @@ |
52 | # returned. |
53 | self.bob_builder.builderok = False |
54 | self.bob_builder.manual = False |
55 | - next_job = self.frog_builder._findBuildCandidate() |
56 | + next_job = removeSecurityProxy( |
57 | + self.frog_builder)._findBuildCandidate() |
58 | build = getUtility(IBuildSet).getByQueueEntry(next_job) |
59 | self.assertEqual('joesppa', build.archive.name) |
60 | |
61 | @@ -166,7 +165,7 @@ |
62 | def test_findBuildCandidate_first_build_started(self): |
63 | # A PPA cannot start a build if it would use 80% or more of the |
64 | # builders. |
65 | - next_job = self.builder4._findBuildCandidate() |
66 | + next_job = removeSecurityProxy(self.builder4)._findBuildCandidate() |
67 | build = getUtility(IBuildSet).getByQueueEntry(next_job) |
68 | self.failIfEqual('joesppa', build.archive.name) |
69 | |
70 | @@ -174,7 +173,7 @@ |
71 | # When joe's first ppa build finishes, his fourth i386 build |
72 | # will be the next build candidate. |
73 | self.joe_builds[0].buildstate = BuildStatus.FAILEDTOBUILD |
74 | - next_job = self.builder4._findBuildCandidate() |
75 | + next_job = removeSecurityProxy(self.builder4)._findBuildCandidate() |
76 | build = getUtility(IBuildSet).getByQueueEntry(next_job) |
77 | self.failUnlessEqual('joesppa', build.archive.name) |
78 | |
79 | @@ -183,7 +182,7 @@ |
80 | # for the one architecture. |
81 | self.ppa_joe.private = True |
82 | self.ppa_joe.buildd_secret = 'sekrit' |
83 | - next_job = self.builder4._findBuildCandidate() |
84 | + next_job = removeSecurityProxy(self.builder4)._findBuildCandidate() |
85 | build = getUtility(IBuildSet).getByQueueEntry(next_job) |
86 | self.failUnlessEqual('joesppa', build.archive.name) |
87 | |
88 | @@ -209,7 +208,8 @@ |
89 | # Normal archives are not restricted to serial builds per |
90 | # arch. |
91 | |
92 | - next_job = self.frog_builder._findBuildCandidate() |
93 | + next_job = removeSecurityProxy( |
94 | + self.frog_builder)._findBuildCandidate() |
95 | build = getUtility(IBuildSet).getByQueueEntry(next_job) |
96 | self.failUnlessEqual('primary', build.archive.name) |
97 | self.failUnlessEqual('gedit', build.sourcepackagerelease.name) |
98 | @@ -218,7 +218,8 @@ |
99 | # second non-ppa build for the same archive as the next candidate. |
100 | build.buildstate = BuildStatus.BUILDING |
101 | build.builder = self.frog_builder |
102 | - next_job = self.frog_builder._findBuildCandidate() |
103 | + next_job = removeSecurityProxy( |
104 | + self.frog_builder)._findBuildCandidate() |
105 | build = getUtility(IBuildSet).getByQueueEntry(next_job) |
106 | self.failUnlessEqual('primary', build.archive.name) |
107 | self.failUnlessEqual('firefox', build.sourcepackagerelease.name) |
Björn Tillenius wrote: buildmaster/ manager. py' buildmaster/ manager. py 2009-07-26 14:19:49 +0000 buildmaster/ manager. py 2010-01-11 03:08:16 +0000 commit( ) findBuildCandid ate() builder. name, builder.url, builder.vm_host) setSlaveForTest ing(slave) dispatchBuildCa ndidate( candidate) findAndStartJob (buildd_ slave=slave) slaves. append( slave) commit( )
> Review: Needs Information
> On Mon, Jan 11, 2010 at 03:08:17AM -0000, Muharem Hrnjadovic wrote:
>> === modified file 'lib/lp/
>> --- lib/lp/
>> +++ lib/lp/
>> @@ -340,17 +340,9 @@
>> transaction.
>> continue
>>
>> - candidate = builder.
>> - if candidate is None:
>> - self.logger.debug(
>> - "No build candidates available for builder.")
>> - continue
>> -
>> slave = RecordingSlave(
>> - builder.
>> -
>> - builder.
>> - if builder.currentjob is not None:
>> + candidate = builder.
>> + if candidate is not None:
>> recording_
>> transaction.
>
> Here you changed it to commit when no candidates are found...
Good catch! I have indented the commit() line above to preserve the old
behaviour.
>> === modified file 'lib/lp/ soyuz/scripts/ buildd. py' soyuz/scripts/ buildd. py 2009-10-26 18:40:04 +0000 soyuz/scripts/ buildd. py 2010-01-11 03:08:16 +0000 is_available: warn('builder is not available. Ignored.') findBuildCandid ate() findAndStartJob () dispatchBuildCa ndidate( candidate)
>> --- lib/lp/
>> +++ lib/lp/
>> @@ -201,12 +201,10 @@
>> if not builder.
>> self.logger.
>> continue
>> - candidate = builder.
>> +
>> + candidate = builder.
>> if candidate is None:
>> - self.logger.debug(
>> - "No candidates available for builder.")
>> continue
>> - builder.
>> self.txn.commit()
>
> ... but here you retain the behaviour of not commiting when no candidate
> is found. Why was one place changed, but not the other?
The issue above is fixed now.
>> === modified file 'lib/lp/ soyuz/tests/ test_builder. py' soyuz/tests/ test_builder. py 2009-12-02 15:18:46 +0000 soyuz/tests/ test_builder. py 2010-01-11 03:08:16 +0000 IBuilderSet) ['bob'] IBuilderSet) ['frog' ] roxy( IBuilderSet) ['frog' ])
>> --- lib/lp/
>> +++ lib/lp/
>
>> @@ -34,13 +35,15 @@
>> # Create some i386 builders ready to build PPA builds. Two
>> # already exist in sampledata so we'll use those first.
>> self.builder1 = getUtility(
>> - self.builder2 = getUtility(
>> + self.frog_builder = removeSecurityP
>> + getUtility(
>
> Why doesn't frog_builder have a security proxy? If it's just to call
> private methods, it's better to remove the proxy when you call the
> method. If you start passing frog_builder to methods in your tests, you
> might get things passing in the tests, while failing in real code.
> Better to be safe and only unwrap the objects when you know it's safe.
Good point! Revised the code accordingly.
>> self.builder3 = self.factory. makeBuilder( name='builder3' ) makeBuilder( name='builder4' ) roxy( makeBuilder( name='builder4' ))
>> - self.builder4 = self.factory.
>> + self.builder4 = removeSecurityP
>> + self.factory.
>
> Same comment here.
Yup. Fixed.
>> self.builder5 = self.factory. makeBuilder( name='builder5' ) prepareBreezyAu totest( ) IBuilderSet) ['bob'] IBuilderSet) ['frog' ] roxy( IBuilderSet) ['frog' ])
>> self.builders = [
>> self.builder1,
>> - self.builder2,
>> + self.frog_builder,
>> self.builder3,
>> self.builder4,
>> self.builder5,
>> @@ -62,7 +65,8 @@
>> self.publisher.
>>
>> self.bob_builder = getUtility(
>> - self.frog_builder = getUtility(
>> + self.frog_builder = removeSecurityP
>> + getUtility(
>
> And here.
Fixed as well.
> review needsinformation
Please see the enclosed incremental diff.
Best regards
--
Muharem Hrnjadovic <email address hidden>
Public key id : B2BBFCFC
Key fingerprint : A5A3 CC67 2B87 D641 103F 5602 219F 6B60 B2BB FCFC