Merge lp:~michael.nelson/launchpad/567922-binarypackagebuild-new-table-8 into lp:launchpad/db-devel

Proposed by Michael Nelson
Status: Merged
Approved by: Graham Binns
Approved revision: no longer in the source branch.
Merged at revision: 9405
Proposed branch: lp:~michael.nelson/launchpad/567922-binarypackagebuild-new-table-8
Merge into: lp:launchpad/db-devel
Prerequisite: lp:~michael.nelson/launchpad/567922-binarypackagebuild-new-table-7
Diff against target: 296 lines (+41/-31) (has conflicts)
12 files modified
database/schema/pending/michaeln-build-generalisation.sql (+2/-4)
lib/lp/archivepublisher/domination.py (+6/-5)
lib/lp/archiveuploader/tests/test_buildduploads.py (+2/-2)
lib/lp/archiveuploader/tests/test_ppauploadprocessor.py (+4/-4)
lib/lp/archiveuploader/tests/test_securityuploads.py (+5/-5)
lib/lp/archiveuploader/tests/test_uploadprocessor.py (+1/-1)
lib/lp/buildmaster/model/buildfarmjob.py (+6/-1)
lib/lp/code/interfaces/sourcepackagerecipebuild.py (+4/-0)
lib/lp/code/model/sourcepackagerecipebuild.py (+1/-0)
lib/lp/registry/doc/distroseries.txt (+1/-1)
lib/lp/registry/model/distroseries.py (+5/-4)
lib/lp/soyuz/model/buildpackagejob.py (+4/-4)
Text conflict in lib/canonical/launchpad/security.py
Text conflict in lib/lp/buildmaster/interfaces/buildbase.py
Text conflict in lib/lp/buildmaster/model/buildbase.py
Text conflict in lib/lp/buildmaster/tests/test_buildbase.py
Text conflict in lib/lp/code/model/sourcepackagerecipebuild.py
Text conflict in lib/lp/code/model/tests/test_sourcepackagerecipebuild.py
Text conflict in lib/lp/soyuz/model/binarypackagebuildbehavior.py
To merge this branch: bzr merge lp:~michael.nelson/launchpad/567922-binarypackagebuild-new-table-8
Reviewer Review Type Date Requested Status
Graham Binns (community) Approve
Review via email: mp+25515@code.launchpad.net

Description of the change

This branch is part of a pipeline for

https://blueprints.edge.launchpad.net/soyuz/+spec/build-generalisation
https://dev.launchpad.net/LEP/GeneralBuildHistories

**Note**: The MP correctly mentions conflicts with db-devel but these shouldn't be in the displayed diff (against the previous branch). Some conflicts are due to a reversion of some work that was in db-devel and that I'd already pumped through the pipeline, and I'm waiting for that work to land again on db-devel before re-merging and pumping.

Overview
========
This branch continues the work to switch our BinaryPackageBuild class to the new binarypackagebuild table (using the delegated PackageBuild/BuildFarmJob).

This branch just ensures that the code, registry and translation tests continue to pass. It's mostly mechanical, although there is some SQL which was updated in a previous branch, but was apparently only tested in the translations code :/

This branch is dependent on the pending schema patch in a previous branch.

To test
=======

First update the test db schema (required as the db patch still needs to be updated to remove the old build table):
psql launchpad_ftest_template -f database/schema/pending/michaeln-build-generalisation.sql
bin/py database/schema/security.py -d launchpad_ftest_template

And then:

bin/test -vv -m code.tests -m translations.tests -m registry.tests -m archiveuploader.tests -m archivepublisher.tests

To post a comment you must log in.
Revision history for this message
Graham Binns (gmb) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'database/schema/pending/michaeln-build-generalisation.sql'
2--- database/schema/pending/michaeln-build-generalisation.sql 2010-05-18 14:07:01 +0000
3+++ database/schema/pending/michaeln-build-generalisation.sql 2010-05-18 14:07:27 +0000
4@@ -179,10 +179,8 @@
5
6
7 -- Step 4
8--- Note, to enable parallel development getting the codebase updated, we will
9--- uncomment the following deletion of the build table once the code has been
10--- updated.
11--- ALTER TABLE Build SET SCHEMA todrop;
12+-- Drop the old Build table.
13+ALTER TABLE Build SET SCHEMA todrop;
14
15 -- Step 5
16 -- Update views that reference the build table:
17
18=== modified file 'lib/lp/archivepublisher/domination.py'
19--- lib/lp/archivepublisher/domination.py 2009-11-15 19:52:54 +0000
20+++ lib/lp/archivepublisher/domination.py 2010-05-18 14:07:27 +0000
21@@ -203,13 +203,13 @@
22 return
23
24 dominant_build = dominant.binarypackagerelease.build
25- distroarchseries = dominant_build.distroarchseries
26+ distroarchseries = dominant_build.distro_arch_series
27 self.debug(
28 "The %s build of %s has been judged as superseded by the build "
29 "of %s. Arch-specific == %s" % (
30 distroarchseries.architecturetag,
31 dominated.binarypackagerelease.title,
32- dominant.binarypackagerelease.build.sourcepackagerelease.title,
33+ dominant.binarypackagerelease.build.source_package_release.title,
34 dominated.binarypackagerelease.architecturespecific))
35 dominated.status = SUPERSEDED
36 dominated.datesuperseded = UTC_NOW
37@@ -362,15 +362,16 @@
38 distroarchseries.id AND
39 binarypackagepublishinghistory.scheduleddeletiondate IS NULL AND
40 binarypackagepublishinghistory.archive = %s AND
41- build.sourcepackagerelease = %s AND
42+ binarypackagebuild.source_package_release = %s AND
43 distroarchseries.distroseries = %s AND
44 binarypackagepublishinghistory.binarypackagerelease =
45 binarypackagerelease.id AND
46- binarypackagerelease.build = build.id AND
47+ binarypackagerelease.build = binarypackagebuild.id AND
48 binarypackagepublishinghistory.pocket = %s
49 """ % sqlvalues(self.archive, srcpkg_release,
50 pub_record.distroseries, pub_record.pocket),
51- clauseTables=['DistroArchSeries', 'BinaryPackageRelease','Build'])
52+ clauseTables=['DistroArchSeries', 'BinaryPackageRelease',
53+ 'BinaryPackageBuild'])
54
55 # There is at least one non-removed binary to consider
56 if considered_binaries.count() > 0:
57
58=== modified file 'lib/lp/archiveuploader/tests/test_buildduploads.py'
59--- lib/lp/archiveuploader/tests/test_buildduploads.py 2010-05-04 15:38:08 +0000
60+++ lib/lp/archiveuploader/tests/test_buildduploads.py 2010-05-18 14:07:27 +0000
61@@ -107,7 +107,7 @@
62 self.assertEqual(
63 u'i386 build of foo 1.0-1 in ubuntu breezy RELEASE',
64 build_used.title)
65- self.assertEqual('FULLYBUILT', build_used.buildstate.name)
66+ self.assertEqual('FULLYBUILT', build_used.status.name)
67
68 # Force immediate publication.
69 queue_item = self.uploadprocessor.last_processed_upload.queue_root
70@@ -123,7 +123,7 @@
71 self.assertEqual(
72 u'powerpc build of foo 1.0-1 in ubuntu breezy RELEASE',
73 build_used.title)
74- self.assertEqual('FULLYBUILT', build_used.buildstate.name)
75+ self.assertEqual('FULLYBUILT', build_used.status.name)
76
77
78 def test_suite():
79
80=== modified file 'lib/lp/archiveuploader/tests/test_ppauploadprocessor.py'
81--- lib/lp/archiveuploader/tests/test_ppauploadprocessor.py 2010-05-04 15:38:08 +0000
82+++ lib/lp/archiveuploader/tests/test_ppauploadprocessor.py 2010-05-18 14:07:27 +0000
83@@ -214,7 +214,7 @@
84 [build] = builds
85 self.assertEqual(
86 build.title, 'i386 build of bar 1.0-1 in ubuntu breezy RELEASE')
87- self.assertEqual(build.buildstate.name, 'NEEDSBUILD')
88+ self.assertEqual(build.status.name, 'NEEDSBUILD')
89 self.assertTrue(build.buildqueue_record.lastscore is not 0)
90
91 #
92@@ -241,7 +241,7 @@
93 [build, build_old] = builds
94 self.assertEqual(
95 build.title, 'i386 build of bar 1.0-10 in ubuntu breezy RELEASE')
96- self.assertEqual(build.buildstate.name, 'NEEDSBUILD')
97+ self.assertEqual(build.status.name, 'NEEDSBUILD')
98 self.assertTrue(build.buildqueue_record.lastscore is not 0)
99
100 #
101@@ -391,7 +391,7 @@
102 [build] = builds
103 self.assertEqual(
104 build.title, 'i386 build of bar 1.0-1 in ubuntu breezy RELEASE')
105- self.assertEqual(build.buildstate.name, 'NEEDSBUILD')
106+ self.assertEqual(build.status.name, 'NEEDSBUILD')
107 self.assertTrue(build.buildqueue_record.lastscore is not 0)
108
109 # Binary upload to the just-created build record.
110@@ -575,7 +575,7 @@
111 [build] = builds
112 self.assertEqual(
113 build.title, 'i386 build of bar 1.0-1 in ubuntu breezy RELEASE')
114- self.assertEqual(build.buildstate.name, 'NEEDSBUILD')
115+ self.assertEqual(build.status.name, 'NEEDSBUILD')
116 self.assertTrue(build.buildqueue_record.lastscore is not 0)
117
118 def testNotMemberUploadToTeamPPA(self):
119
120=== modified file 'lib/lp/archiveuploader/tests/test_securityuploads.py'
121--- lib/lp/archiveuploader/tests/test_securityuploads.py 2010-05-04 15:38:08 +0000
122+++ lib/lp/archiveuploader/tests/test_securityuploads.py 2010-05-18 14:07:27 +0000
123@@ -131,7 +131,7 @@
124 """Create a build record attached to the base source."""
125 spr = self.source_queue.sources[0].sourcepackagerelease
126 build = spr.createBuild(
127- distroarchseries=self.distroseries[archtag],
128+ distro_arch_series=self.distroseries[archtag],
129 pocket=self.pocket, archive=self.distroseries.main_archive)
130 self.layer.txn.commit()
131 return build
132@@ -187,7 +187,7 @@
133 self.assertEqual(
134 u'i386 build of baz 1.0-1 in ubuntu warty SECURITY',
135 build_used.title)
136- self.assertEqual('FULLYBUILT', build_used.buildstate.name)
137+ self.assertEqual('FULLYBUILT', build_used.status.name)
138
139 build_used = self._uploadBinary('amd64')
140
141@@ -196,7 +196,7 @@
142 u'amd64 build of baz 1.0-1 in ubuntu warty SECURITY',
143 build_used.title)
144
145- self.assertEqual('FULLYBUILT', build_used.buildstate.name)
146+ self.assertEqual('FULLYBUILT', build_used.status.name)
147
148 def testBuildLookup(self):
149 """Check if an available build gets used when it is appropriate.
150@@ -219,7 +219,7 @@
151 self.assertEqual(
152 u'i386 build of baz 1.0-1 in ubuntu warty SECURITY',
153 build_used.title)
154- self.assertEqual('FULLYBUILT', build_used.buildstate.name)
155+ self.assertEqual('FULLYBUILT', build_used.status.name)
156
157 def testCorrectBuildPassedViaCommandLine(self):
158 """Check if command-line build argument gets attached correctly.
159@@ -244,7 +244,7 @@
160 u'i386 build of baz 1.0-1 in ubuntu warty SECURITY',
161 build_used.title)
162
163- self.assertEqual('FULLYBUILT', build_used.buildstate.name)
164+ self.assertEqual('FULLYBUILT', build_used.status.name)
165
166 def testWrongBuildPassedViaCommandLine(self):
167 """Check if a misapplied passed buildid is correctly identified.
168
169=== modified file 'lib/lp/archiveuploader/tests/test_uploadprocessor.py'
170--- lib/lp/archiveuploader/tests/test_uploadprocessor.py 2010-05-04 15:38:08 +0000
171+++ lib/lp/archiveuploader/tests/test_uploadprocessor.py 2010-05-18 14:07:27 +0000
172@@ -1014,7 +1014,7 @@
173 self.assertEqual(
174 build.title,
175 'i386 build of foocomm 1.0-2 in ubuntu breezy RELEASE')
176- self.assertEqual(build.buildstate.name, 'NEEDSBUILD')
177+ self.assertEqual(build.status.name, 'NEEDSBUILD')
178 self.assertTrue(build.buildqueue_record.lastscore is not None)
179
180 # Upload the next binary version of the package.
181
182=== modified file 'lib/lp/buildmaster/model/buildfarmjob.py'
183--- lib/lp/buildmaster/model/buildfarmjob.py 2010-05-18 14:07:01 +0000
184+++ lib/lp/buildmaster/model/buildfarmjob.py 2010-05-18 14:07:27 +0000
185@@ -86,7 +86,7 @@
186 @staticmethod
187 def postprocessCandidate(job, logger):
188 """See `IBuildFarmJobOld`."""
189- return True
190+ raise NotImplementedError
191
192 def cleanUp(self):
193 """See `IBuildFarmJob`."""
194@@ -161,6 +161,11 @@
195 """See `IBuildFarmJobOld`."""
196 return ('')
197
198+ @staticmethod
199+ def postprocessCandidate(job, logger):
200+ """See `IBuildFarmJobOld`."""
201+ return True
202+
203
204 class BuildFarmJob(BuildFarmJobOld, Storm):
205 """A base implementation for `IBuildFarmJob` classes."""
206
207=== modified file 'lib/lp/code/interfaces/sourcepackagerecipebuild.py'
208--- lib/lp/code/interfaces/sourcepackagerecipebuild.py 2010-05-06 18:34:20 +0000
209+++ lib/lp/code/interfaces/sourcepackagerecipebuild.py 2010-05-18 14:07:27 +0000
210@@ -47,6 +47,10 @@
211 distroseries = Reference(
212 IDistroSeries, title=_("The distroseries being built for"),
213 readonly=True)
214+ # XXX michaeln 2010-05-18 bug=567922
215+ # Temporarily alias distro_series until SPRecipeBuild is
216+ # implementing IPackageBuild.
217+ distro_series = distroseries
218
219 sourcepackagename = Reference(
220 ISourcePackageName,
221
222=== modified file 'lib/lp/code/model/sourcepackagerecipebuild.py'
223--- lib/lp/code/model/sourcepackagerecipebuild.py 2010-05-18 14:07:01 +0000
224+++ lib/lp/code/model/sourcepackagerecipebuild.py 2010-05-18 14:07:27 +0000
225@@ -112,6 +112,7 @@
226
227 distroseries_id = Int(name='distroseries', allow_none=True)
228 distroseries = Reference(distroseries_id, 'DistroSeries.id')
229+ distro_series = distroseries
230
231 sourcepackagename_id = Int(name='sourcepackagename', allow_none=True)
232 sourcepackagename = Reference(
233
234=== modified file 'lib/lp/registry/doc/distroseries.txt'
235--- lib/lp/registry/doc/distroseries.txt 2010-04-12 08:33:47 +0000
236+++ lib/lp/registry/doc/distroseries.txt 2010-05-18 14:07:27 +0000
237@@ -365,7 +365,7 @@
238 2
239
240 >>> for bin in bumpy_firefox_sp.currentrelease.binaries:
241- ... print bin.id, bin.title, bin.build.distroarchseries.title
242+ ... print bin.id, bin.title, bin.build.distro_arch_series.title
243 27 mozilla-firefox-data-0.9 The Warty Warthog Release for i386 (x86)
244 12 mozilla-firefox-0.9 The Warty Warthog Release for i386 (x86)
245
246
247=== modified file 'lib/lp/registry/model/distroseries.py'
248--- lib/lp/registry/model/distroseries.py 2010-04-22 08:47:32 +0000
249+++ lib/lp/registry/model/distroseries.py 2010-05-18 14:07:27 +0000
250@@ -1044,8 +1044,8 @@
251 BinaryPackageRelease.binarypackagename =
252 BinaryPackageName.id AND
253 BinaryPackageRelease.build =
254- Build.id AND
255- Build.sourcepackagerelease =
256+ BinaryPackageBuild.id AND
257+ BinaryPackageBuild.source_package_release =
258 SourcePackageRelease.id AND
259 SourcePackageRelease.sourcepackagename =
260 SourcePackageName.id AND
261@@ -1082,8 +1082,9 @@
262 query = " AND ".join(query)
263
264 clauseTables = ['BinaryPackagePublishingHistory', 'DistroArchSeries',
265- 'BinaryPackageRelease', 'BinaryPackageName', 'Build',
266- 'SourcePackageRelease', 'SourcePackageName']
267+ 'BinaryPackageRelease', 'BinaryPackageName',
268+ 'BinaryPackageBuild', 'SourcePackageRelease',
269+ 'SourcePackageName']
270
271 result = BinaryPackagePublishingHistory.select(
272 query, distinct=False, clauseTables=clauseTables, orderBy=orderBy)
273
274=== modified file 'lib/lp/soyuz/model/buildpackagejob.py'
275--- lib/lp/soyuz/model/buildpackagejob.py 2010-05-18 14:07:01 +0000
276+++ lib/lp/soyuz/model/buildpackagejob.py 2010-05-18 14:07:27 +0000
277@@ -232,15 +232,15 @@
278 sub_query += """
279 AND EXISTS (SELECT true
280 WHERE ((
281- SELECT COUNT(build2.id)
282+ SELECT COUNT(binarypackagebuild2.id)
283 FROM BinaryPackageBuild binarypackagebuild2,
284- PackageBuild packagebuild2
285- BuildFarmJob buildfarmjob2
286+ PackageBuild packagebuild2,
287+ BuildFarmJob buildfarmjob2,
288 DistroArchSeries distroarchseries2
289 WHERE
290 binarypackagebuild2.package_build =
291 packagebuild2.id AND
292- packagebuild2.archive = binarypackagebuild.archive AND
293+ packagebuild2.archive = packagebuild.archive AND
294 archive.purpose = %s AND
295 archive.private IS FALSE AND
296 binarypackagebuild2.distro_arch_series =

Subscribers

People subscribed via source and target branches

to status/vote changes: