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
=== modified file 'database/schema/pending/michaeln-build-generalisation.sql'
--- database/schema/pending/michaeln-build-generalisation.sql 2010-05-18 14:07:01 +0000
+++ database/schema/pending/michaeln-build-generalisation.sql 2010-05-18 14:07:27 +0000
@@ -179,10 +179,8 @@
179179
180180
181-- Step 4181-- Step 4
182-- Note, to enable parallel development getting the codebase updated, we will182-- Drop the old Build table.
183-- uncomment the following deletion of the build table once the code has been183ALTER TABLE Build SET SCHEMA todrop;
184-- updated.
185-- ALTER TABLE Build SET SCHEMA todrop;
186184
187-- Step 5185-- Step 5
188-- Update views that reference the build table:186-- Update views that reference the build table:
189187
=== modified file 'lib/lp/archivepublisher/domination.py'
--- lib/lp/archivepublisher/domination.py 2009-11-15 19:52:54 +0000
+++ lib/lp/archivepublisher/domination.py 2010-05-18 14:07:27 +0000
@@ -203,13 +203,13 @@
203 return203 return
204204
205 dominant_build = dominant.binarypackagerelease.build205 dominant_build = dominant.binarypackagerelease.build
206 distroarchseries = dominant_build.distroarchseries206 distroarchseries = dominant_build.distro_arch_series
207 self.debug(207 self.debug(
208 "The %s build of %s has been judged as superseded by the build "208 "The %s build of %s has been judged as superseded by the build "
209 "of %s. Arch-specific == %s" % (209 "of %s. Arch-specific == %s" % (
210 distroarchseries.architecturetag,210 distroarchseries.architecturetag,
211 dominated.binarypackagerelease.title,211 dominated.binarypackagerelease.title,
212 dominant.binarypackagerelease.build.sourcepackagerelease.title,212 dominant.binarypackagerelease.build.source_package_release.title,
213 dominated.binarypackagerelease.architecturespecific))213 dominated.binarypackagerelease.architecturespecific))
214 dominated.status = SUPERSEDED214 dominated.status = SUPERSEDED
215 dominated.datesuperseded = UTC_NOW215 dominated.datesuperseded = UTC_NOW
@@ -362,15 +362,16 @@
362 distroarchseries.id AND362 distroarchseries.id AND
363 binarypackagepublishinghistory.scheduleddeletiondate IS NULL AND363 binarypackagepublishinghistory.scheduleddeletiondate IS NULL AND
364 binarypackagepublishinghistory.archive = %s AND364 binarypackagepublishinghistory.archive = %s AND
365 build.sourcepackagerelease = %s AND365 binarypackagebuild.source_package_release = %s AND
366 distroarchseries.distroseries = %s AND366 distroarchseries.distroseries = %s AND
367 binarypackagepublishinghistory.binarypackagerelease =367 binarypackagepublishinghistory.binarypackagerelease =
368 binarypackagerelease.id AND368 binarypackagerelease.id AND
369 binarypackagerelease.build = build.id AND369 binarypackagerelease.build = binarypackagebuild.id AND
370 binarypackagepublishinghistory.pocket = %s370 binarypackagepublishinghistory.pocket = %s
371 """ % sqlvalues(self.archive, srcpkg_release,371 """ % sqlvalues(self.archive, srcpkg_release,
372 pub_record.distroseries, pub_record.pocket),372 pub_record.distroseries, pub_record.pocket),
373 clauseTables=['DistroArchSeries', 'BinaryPackageRelease','Build'])373 clauseTables=['DistroArchSeries', 'BinaryPackageRelease',
374 'BinaryPackageBuild'])
374375
375 # There is at least one non-removed binary to consider376 # There is at least one non-removed binary to consider
376 if considered_binaries.count() > 0:377 if considered_binaries.count() > 0:
377378
=== modified file 'lib/lp/archiveuploader/tests/test_buildduploads.py'
--- lib/lp/archiveuploader/tests/test_buildduploads.py 2010-05-04 15:38:08 +0000
+++ lib/lp/archiveuploader/tests/test_buildduploads.py 2010-05-18 14:07:27 +0000
@@ -107,7 +107,7 @@
107 self.assertEqual(107 self.assertEqual(
108 u'i386 build of foo 1.0-1 in ubuntu breezy RELEASE',108 u'i386 build of foo 1.0-1 in ubuntu breezy RELEASE',
109 build_used.title)109 build_used.title)
110 self.assertEqual('FULLYBUILT', build_used.buildstate.name)110 self.assertEqual('FULLYBUILT', build_used.status.name)
111111
112 # Force immediate publication.112 # Force immediate publication.
113 queue_item = self.uploadprocessor.last_processed_upload.queue_root113 queue_item = self.uploadprocessor.last_processed_upload.queue_root
@@ -123,7 +123,7 @@
123 self.assertEqual(123 self.assertEqual(
124 u'powerpc build of foo 1.0-1 in ubuntu breezy RELEASE',124 u'powerpc build of foo 1.0-1 in ubuntu breezy RELEASE',
125 build_used.title)125 build_used.title)
126 self.assertEqual('FULLYBUILT', build_used.buildstate.name)126 self.assertEqual('FULLYBUILT', build_used.status.name)
127127
128128
129def test_suite():129def test_suite():
130130
=== modified file 'lib/lp/archiveuploader/tests/test_ppauploadprocessor.py'
--- lib/lp/archiveuploader/tests/test_ppauploadprocessor.py 2010-05-04 15:38:08 +0000
+++ lib/lp/archiveuploader/tests/test_ppauploadprocessor.py 2010-05-18 14:07:27 +0000
@@ -214,7 +214,7 @@
214 [build] = builds214 [build] = builds
215 self.assertEqual(215 self.assertEqual(
216 build.title, 'i386 build of bar 1.0-1 in ubuntu breezy RELEASE')216 build.title, 'i386 build of bar 1.0-1 in ubuntu breezy RELEASE')
217 self.assertEqual(build.buildstate.name, 'NEEDSBUILD')217 self.assertEqual(build.status.name, 'NEEDSBUILD')
218 self.assertTrue(build.buildqueue_record.lastscore is not 0)218 self.assertTrue(build.buildqueue_record.lastscore is not 0)
219219
220 #220 #
@@ -241,7 +241,7 @@
241 [build, build_old] = builds241 [build, build_old] = builds
242 self.assertEqual(242 self.assertEqual(
243 build.title, 'i386 build of bar 1.0-10 in ubuntu breezy RELEASE')243 build.title, 'i386 build of bar 1.0-10 in ubuntu breezy RELEASE')
244 self.assertEqual(build.buildstate.name, 'NEEDSBUILD')244 self.assertEqual(build.status.name, 'NEEDSBUILD')
245 self.assertTrue(build.buildqueue_record.lastscore is not 0)245 self.assertTrue(build.buildqueue_record.lastscore is not 0)
246246
247 #247 #
@@ -391,7 +391,7 @@
391 [build] = builds391 [build] = builds
392 self.assertEqual(392 self.assertEqual(
393 build.title, 'i386 build of bar 1.0-1 in ubuntu breezy RELEASE')393 build.title, 'i386 build of bar 1.0-1 in ubuntu breezy RELEASE')
394 self.assertEqual(build.buildstate.name, 'NEEDSBUILD')394 self.assertEqual(build.status.name, 'NEEDSBUILD')
395 self.assertTrue(build.buildqueue_record.lastscore is not 0)395 self.assertTrue(build.buildqueue_record.lastscore is not 0)
396396
397 # Binary upload to the just-created build record.397 # Binary upload to the just-created build record.
@@ -575,7 +575,7 @@
575 [build] = builds575 [build] = builds
576 self.assertEqual(576 self.assertEqual(
577 build.title, 'i386 build of bar 1.0-1 in ubuntu breezy RELEASE')577 build.title, 'i386 build of bar 1.0-1 in ubuntu breezy RELEASE')
578 self.assertEqual(build.buildstate.name, 'NEEDSBUILD')578 self.assertEqual(build.status.name, 'NEEDSBUILD')
579 self.assertTrue(build.buildqueue_record.lastscore is not 0)579 self.assertTrue(build.buildqueue_record.lastscore is not 0)
580580
581 def testNotMemberUploadToTeamPPA(self):581 def testNotMemberUploadToTeamPPA(self):
582582
=== modified file 'lib/lp/archiveuploader/tests/test_securityuploads.py'
--- lib/lp/archiveuploader/tests/test_securityuploads.py 2010-05-04 15:38:08 +0000
+++ lib/lp/archiveuploader/tests/test_securityuploads.py 2010-05-18 14:07:27 +0000
@@ -131,7 +131,7 @@
131 """Create a build record attached to the base source."""131 """Create a build record attached to the base source."""
132 spr = self.source_queue.sources[0].sourcepackagerelease132 spr = self.source_queue.sources[0].sourcepackagerelease
133 build = spr.createBuild(133 build = spr.createBuild(
134 distroarchseries=self.distroseries[archtag],134 distro_arch_series=self.distroseries[archtag],
135 pocket=self.pocket, archive=self.distroseries.main_archive)135 pocket=self.pocket, archive=self.distroseries.main_archive)
136 self.layer.txn.commit()136 self.layer.txn.commit()
137 return build137 return build
@@ -187,7 +187,7 @@
187 self.assertEqual(187 self.assertEqual(
188 u'i386 build of baz 1.0-1 in ubuntu warty SECURITY',188 u'i386 build of baz 1.0-1 in ubuntu warty SECURITY',
189 build_used.title)189 build_used.title)
190 self.assertEqual('FULLYBUILT', build_used.buildstate.name)190 self.assertEqual('FULLYBUILT', build_used.status.name)
191191
192 build_used = self._uploadBinary('amd64')192 build_used = self._uploadBinary('amd64')
193193
@@ -196,7 +196,7 @@
196 u'amd64 build of baz 1.0-1 in ubuntu warty SECURITY',196 u'amd64 build of baz 1.0-1 in ubuntu warty SECURITY',
197 build_used.title)197 build_used.title)
198198
199 self.assertEqual('FULLYBUILT', build_used.buildstate.name)199 self.assertEqual('FULLYBUILT', build_used.status.name)
200200
201 def testBuildLookup(self):201 def testBuildLookup(self):
202 """Check if an available build gets used when it is appropriate.202 """Check if an available build gets used when it is appropriate.
@@ -219,7 +219,7 @@
219 self.assertEqual(219 self.assertEqual(
220 u'i386 build of baz 1.0-1 in ubuntu warty SECURITY',220 u'i386 build of baz 1.0-1 in ubuntu warty SECURITY',
221 build_used.title)221 build_used.title)
222 self.assertEqual('FULLYBUILT', build_used.buildstate.name)222 self.assertEqual('FULLYBUILT', build_used.status.name)
223223
224 def testCorrectBuildPassedViaCommandLine(self):224 def testCorrectBuildPassedViaCommandLine(self):
225 """Check if command-line build argument gets attached correctly.225 """Check if command-line build argument gets attached correctly.
@@ -244,7 +244,7 @@
244 u'i386 build of baz 1.0-1 in ubuntu warty SECURITY',244 u'i386 build of baz 1.0-1 in ubuntu warty SECURITY',
245 build_used.title)245 build_used.title)
246246
247 self.assertEqual('FULLYBUILT', build_used.buildstate.name)247 self.assertEqual('FULLYBUILT', build_used.status.name)
248248
249 def testWrongBuildPassedViaCommandLine(self):249 def testWrongBuildPassedViaCommandLine(self):
250 """Check if a misapplied passed buildid is correctly identified.250 """Check if a misapplied passed buildid is correctly identified.
251251
=== modified file 'lib/lp/archiveuploader/tests/test_uploadprocessor.py'
--- lib/lp/archiveuploader/tests/test_uploadprocessor.py 2010-05-04 15:38:08 +0000
+++ lib/lp/archiveuploader/tests/test_uploadprocessor.py 2010-05-18 14:07:27 +0000
@@ -1014,7 +1014,7 @@
1014 self.assertEqual(1014 self.assertEqual(
1015 build.title,1015 build.title,
1016 'i386 build of foocomm 1.0-2 in ubuntu breezy RELEASE')1016 'i386 build of foocomm 1.0-2 in ubuntu breezy RELEASE')
1017 self.assertEqual(build.buildstate.name, 'NEEDSBUILD')1017 self.assertEqual(build.status.name, 'NEEDSBUILD')
1018 self.assertTrue(build.buildqueue_record.lastscore is not None)1018 self.assertTrue(build.buildqueue_record.lastscore is not None)
10191019
1020 # Upload the next binary version of the package.1020 # Upload the next binary version of the package.
10211021
=== modified file 'lib/lp/buildmaster/model/buildfarmjob.py'
--- lib/lp/buildmaster/model/buildfarmjob.py 2010-05-18 14:07:01 +0000
+++ lib/lp/buildmaster/model/buildfarmjob.py 2010-05-18 14:07:27 +0000
@@ -86,7 +86,7 @@
86 @staticmethod86 @staticmethod
87 def postprocessCandidate(job, logger):87 def postprocessCandidate(job, logger):
88 """See `IBuildFarmJobOld`."""88 """See `IBuildFarmJobOld`."""
89 return True89 raise NotImplementedError
9090
91 def cleanUp(self):91 def cleanUp(self):
92 """See `IBuildFarmJob`."""92 """See `IBuildFarmJob`."""
@@ -161,6 +161,11 @@
161 """See `IBuildFarmJobOld`."""161 """See `IBuildFarmJobOld`."""
162 return ('')162 return ('')
163163
164 @staticmethod
165 def postprocessCandidate(job, logger):
166 """See `IBuildFarmJobOld`."""
167 return True
168
164169
165class BuildFarmJob(BuildFarmJobOld, Storm):170class BuildFarmJob(BuildFarmJobOld, Storm):
166 """A base implementation for `IBuildFarmJob` classes."""171 """A base implementation for `IBuildFarmJob` classes."""
167172
=== modified file 'lib/lp/code/interfaces/sourcepackagerecipebuild.py'
--- lib/lp/code/interfaces/sourcepackagerecipebuild.py 2010-05-06 18:34:20 +0000
+++ lib/lp/code/interfaces/sourcepackagerecipebuild.py 2010-05-18 14:07:27 +0000
@@ -47,6 +47,10 @@
47 distroseries = Reference(47 distroseries = Reference(
48 IDistroSeries, title=_("The distroseries being built for"),48 IDistroSeries, title=_("The distroseries being built for"),
49 readonly=True)49 readonly=True)
50 # XXX michaeln 2010-05-18 bug=567922
51 # Temporarily alias distro_series until SPRecipeBuild is
52 # implementing IPackageBuild.
53 distro_series = distroseries
5054
51 sourcepackagename = Reference(55 sourcepackagename = Reference(
52 ISourcePackageName,56 ISourcePackageName,
5357
=== modified file 'lib/lp/code/model/sourcepackagerecipebuild.py'
--- lib/lp/code/model/sourcepackagerecipebuild.py 2010-05-18 14:07:01 +0000
+++ lib/lp/code/model/sourcepackagerecipebuild.py 2010-05-18 14:07:27 +0000
@@ -112,6 +112,7 @@
112112
113 distroseries_id = Int(name='distroseries', allow_none=True)113 distroseries_id = Int(name='distroseries', allow_none=True)
114 distroseries = Reference(distroseries_id, 'DistroSeries.id')114 distroseries = Reference(distroseries_id, 'DistroSeries.id')
115 distro_series = distroseries
115116
116 sourcepackagename_id = Int(name='sourcepackagename', allow_none=True)117 sourcepackagename_id = Int(name='sourcepackagename', allow_none=True)
117 sourcepackagename = Reference(118 sourcepackagename = Reference(
118119
=== modified file 'lib/lp/registry/doc/distroseries.txt'
--- lib/lp/registry/doc/distroseries.txt 2010-04-12 08:33:47 +0000
+++ lib/lp/registry/doc/distroseries.txt 2010-05-18 14:07:27 +0000
@@ -365,7 +365,7 @@
365 2365 2
366366
367 >>> for bin in bumpy_firefox_sp.currentrelease.binaries:367 >>> for bin in bumpy_firefox_sp.currentrelease.binaries:
368 ... print bin.id, bin.title, bin.build.distroarchseries.title368 ... print bin.id, bin.title, bin.build.distro_arch_series.title
369 27 mozilla-firefox-data-0.9 The Warty Warthog Release for i386 (x86)369 27 mozilla-firefox-data-0.9 The Warty Warthog Release for i386 (x86)
370 12 mozilla-firefox-0.9 The Warty Warthog Release for i386 (x86)370 12 mozilla-firefox-0.9 The Warty Warthog Release for i386 (x86)
371371
372372
=== modified file 'lib/lp/registry/model/distroseries.py'
--- lib/lp/registry/model/distroseries.py 2010-04-22 08:47:32 +0000
+++ lib/lp/registry/model/distroseries.py 2010-05-18 14:07:27 +0000
@@ -1044,8 +1044,8 @@
1044 BinaryPackageRelease.binarypackagename =1044 BinaryPackageRelease.binarypackagename =
1045 BinaryPackageName.id AND1045 BinaryPackageName.id AND
1046 BinaryPackageRelease.build =1046 BinaryPackageRelease.build =
1047 Build.id AND1047 BinaryPackageBuild.id AND
1048 Build.sourcepackagerelease =1048 BinaryPackageBuild.source_package_release =
1049 SourcePackageRelease.id AND1049 SourcePackageRelease.id AND
1050 SourcePackageRelease.sourcepackagename =1050 SourcePackageRelease.sourcepackagename =
1051 SourcePackageName.id AND1051 SourcePackageName.id AND
@@ -1082,8 +1082,9 @@
1082 query = " AND ".join(query)1082 query = " AND ".join(query)
10831083
1084 clauseTables = ['BinaryPackagePublishingHistory', 'DistroArchSeries',1084 clauseTables = ['BinaryPackagePublishingHistory', 'DistroArchSeries',
1085 'BinaryPackageRelease', 'BinaryPackageName', 'Build',1085 'BinaryPackageRelease', 'BinaryPackageName',
1086 'SourcePackageRelease', 'SourcePackageName']1086 'BinaryPackageBuild', 'SourcePackageRelease',
1087 'SourcePackageName']
10871088
1088 result = BinaryPackagePublishingHistory.select(1089 result = BinaryPackagePublishingHistory.select(
1089 query, distinct=False, clauseTables=clauseTables, orderBy=orderBy)1090 query, distinct=False, clauseTables=clauseTables, orderBy=orderBy)
10901091
=== modified file 'lib/lp/soyuz/model/buildpackagejob.py'
--- lib/lp/soyuz/model/buildpackagejob.py 2010-05-18 14:07:01 +0000
+++ lib/lp/soyuz/model/buildpackagejob.py 2010-05-18 14:07:27 +0000
@@ -232,15 +232,15 @@
232 sub_query += """232 sub_query += """
233 AND EXISTS (SELECT true233 AND EXISTS (SELECT true
234 WHERE ((234 WHERE ((
235 SELECT COUNT(build2.id)235 SELECT COUNT(binarypackagebuild2.id)
236 FROM BinaryPackageBuild binarypackagebuild2,236 FROM BinaryPackageBuild binarypackagebuild2,
237 PackageBuild packagebuild2237 PackageBuild packagebuild2,
238 BuildFarmJob buildfarmjob2238 BuildFarmJob buildfarmjob2,
239 DistroArchSeries distroarchseries2239 DistroArchSeries distroarchseries2
240 WHERE240 WHERE
241 binarypackagebuild2.package_build =241 binarypackagebuild2.package_build =
242 packagebuild2.id AND242 packagebuild2.id AND
243 packagebuild2.archive = binarypackagebuild.archive AND243 packagebuild2.archive = packagebuild.archive AND
244 archive.purpose = %s AND244 archive.purpose = %s AND
245 archive.private IS FALSE AND245 archive.private IS FALSE AND
246 binarypackagebuild2.distro_arch_series =246 binarypackagebuild2.distro_arch_series =

Subscribers

People subscribed via source and target branches

to status/vote changes: