Merge lp:~stevenk/launchpad/cronscript-idsjob-testfix into lp:launchpad

Proposed by Steve Kowalik
Status: Merged
Approved by: Robert Collins
Approved revision: no longer in the source branch.
Merged at revision: 11799
Proposed branch: lp:~stevenk/launchpad/cronscript-idsjob-testfix
Merge into: lp:launchpad
Diff against target: 100 lines (+19/-32)
2 files modified
database/schema/security.cfg (+1/-0)
lib/lp/soyuz/tests/test_initialisedistroseriesjob.py (+18/-32)
To merge this branch: bzr merge lp:~stevenk/launchpad/cronscript-idsjob-testfix
Reviewer Review Type Date Requested Status
Tim Penhey (community) Approve
Robert Collins (community) Approve
Review via email: mp+39321@code.launchpad.net

Commit message

Slightly fix the IDSJob tests.

Description of the change

This branch makes a small change to the initialisedistroseriesjob tests to use the SoyuzTestPublisher. It also switches to using the .run() method, and not using the cronscript, since that looks to have been masking three missing grants (of which I've already enabled two)

To post a comment you must log in.
Revision history for this message
Robert Collins (lifeless) wrote :

I don't quite follow here; sounds like the cronscript isn't configured
with the right db user?

Style wise
+ self.layer.switchDbUser('initialisedistroseries')
I would prefer to see as
     DatabaseLayer.switchDbUser(...)

It would be nice to keep an appropriate comment on the commit(0 too.

Revision history for this message
Robert Collins (lifeless) :
review: Approve
Revision history for this message
Tim Penhey (thumper) wrote :

Seems ok to me.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'database/schema/security.cfg'
--- database/schema/security.cfg 2010-10-22 10:23:44 +0000
+++ database/schema/security.cfg 2010-10-25 23:21:11 +0000
@@ -938,6 +938,7 @@
938public.archive = SELECT938public.archive = SELECT
939public.archivepermission = SELECT, INSERT939public.archivepermission = SELECT, INSERT
940public.binarypackagebuild = SELECT940public.binarypackagebuild = SELECT
941public.binarypackagename = SELECT
941public.binarypackagepublishinghistory = SELECT, INSERT942public.binarypackagepublishinghistory = SELECT, INSERT
942public.binarypackagerelease = SELECT943public.binarypackagerelease = SELECT
943public.buildfarmjob = SELECT944public.buildfarmjob = SELECT
944945
=== modified file 'lib/lp/soyuz/tests/test_initialisedistroseriesjob.py'
--- lib/lp/soyuz/tests/test_initialisedistroseriesjob.py 2010-10-21 10:22:25 +0000
+++ lib/lp/soyuz/tests/test_initialisedistroseriesjob.py 2010-10-25 23:21:11 +0000
@@ -24,6 +24,7 @@
24 InitialiseDistroSeriesJob,24 InitialiseDistroSeriesJob,
25 )25 )
26from lp.soyuz.scripts.initialise_distroseries import InitialisationError26from lp.soyuz.scripts.initialise_distroseries import InitialisationError
27from lp.soyuz.tests.test_publishing import SoyuzTestPublisher
27from lp.testing import TestCaseWithFactory28from lp.testing import TestCaseWithFactory
28from lp.testing.matchers import Contains29from lp.testing.matchers import Contains
2930
@@ -101,7 +102,7 @@
101 self.assertEqual(naked_job.packagesets, packagesets)102 self.assertEqual(naked_job.packagesets, packagesets)
102 self.assertEqual(naked_job.rebuild, False)103 self.assertEqual(naked_job.rebuild, False)
103104
104 def test_cronscript(self):105 def test_job(self):
105 pf = self.factory.makeProcessorFamily()106 pf = self.factory.makeProcessorFamily()
106 pf.addProcessor('x86', '', '')107 pf.addProcessor('x86', '', '')
107 parent = self.factory.makeDistroSeries()108 parent = self.factory.makeDistroSeries()
@@ -113,26 +114,13 @@
113 parent_das.addOrUpdateChroot(lf)114 parent_das.addOrUpdateChroot(lf)
114 parent_das.supports_virtualized = True115 parent_das.supports_virtualized = True
115 parent.nominatedarchindep = parent_das116 parent.nominatedarchindep = parent_das
117 publisher = SoyuzTestPublisher()
118 publisher.prepareBreezyAutotest()
116 packages = {'udev': '0.1-1', 'libc6': '2.8-1'}119 packages = {'udev': '0.1-1', 'libc6': '2.8-1'}
117 for package in packages.keys():120 for package in packages.keys():
118 spn = self.factory.makeSourcePackageName(package)121 publisher.getPubBinaries(
119 spph = self.factory.makeSourcePackagePublishingHistory(122 distroseries=parent, binaryname=package,
120 sourcepackagename=spn, version=packages[package],123 version=packages[package],
121 distroseries=parent,
122 pocket=PackagePublishingPocket.RELEASE,
123 status=PackagePublishingStatus.PUBLISHED)
124 bpn = self.factory.makeBinaryPackageName(package)
125 build = self.factory.makeBinaryPackageBuild(
126 source_package_release=spph.sourcepackagerelease,
127 distroarchseries=parent_das,
128 status=BuildStatus.FULLYBUILT)
129 bpr = self.factory.makeBinaryPackageRelease(
130 binarypackagename=bpn, build=build,
131 version=packages[package])
132 self.factory.makeBinaryPackagePublishingHistory(
133 binarypackagerelease=bpr,
134 distroarchseries=parent_das,
135 pocket=PackagePublishingPocket.RELEASE,
136 status=PackagePublishingStatus.PUBLISHED)124 status=PackagePublishingStatus.PUBLISHED)
137 test1 = getUtility(IPackagesetSet).new(125 test1 = getUtility(IPackagesetSet).new(
138 u'test1', u'test 1 packageset', parent.owner,126 u'test1', u'test 1 packageset', parent.owner,
@@ -141,11 +129,18 @@
141 parent.updatePackageCount()129 parent.updatePackageCount()
142 child = self.factory.makeDistroSeries(parent_series=parent)130 child = self.factory.makeDistroSeries(parent_series=parent)
143131
144 getUtility(IInitialiseDistroSeriesJobSource).create(child)132 # Make sure everything hits the database, switching db users
145 # Make sure everything hits the database, as the next bit is133 # aborts.
146 # out-of-process
147 transaction.commit()134 transaction.commit()
148135 job = getUtility(IInitialiseDistroSeriesJobSource).create(child)
136 self.layer.switchDbUser('initialisedistroseries')
137
138 job.run()
139 child.updatePackageCount()
140 self.assertEqual(parent.sourcecount, child.sourcecount)
141 self.assertEqual(parent.binarycount, child.binarycount)
142
143 def test_cronscript(self):
149 script = os.path.join(144 script = os.path.join(
150 config.root, 'cronscripts', 'initialise_distro_series.py')145 config.root, 'cronscripts', 'initialise_distro_series.py')
151 args = [sys.executable, script, '-v']146 args = [sys.executable, script, '-v']
@@ -153,12 +148,3 @@
153 args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)148 args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
154 stdout, stderr = process.communicate()149 stdout, stderr = process.communicate()
155 self.assertEqual(process.returncode, 0)150 self.assertEqual(process.returncode, 0)
156 self.assertThat(
157 stderr.split('\n'), Contains(
158 "INFO Ran 1 InitialiseDistroSeriesJob jobs."))
159 # Storm assumes all changes are made in-process
160 Store.of(child).invalidate()
161 # The child distroseries is now initialised
162 child.updatePackageCount()
163 self.assertEqual(parent.sourcecount, child.sourcecount)
164 self.assertEqual(parent.binarycount, child.binarycount)