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
1=== modified file 'database/schema/security.cfg'
2--- database/schema/security.cfg 2010-10-22 10:23:44 +0000
3+++ database/schema/security.cfg 2010-10-25 23:21:11 +0000
4@@ -938,6 +938,7 @@
5 public.archive = SELECT
6 public.archivepermission = SELECT, INSERT
7 public.binarypackagebuild = SELECT
8+public.binarypackagename = SELECT
9 public.binarypackagepublishinghistory = SELECT, INSERT
10 public.binarypackagerelease = SELECT
11 public.buildfarmjob = SELECT
12
13=== modified file 'lib/lp/soyuz/tests/test_initialisedistroseriesjob.py'
14--- lib/lp/soyuz/tests/test_initialisedistroseriesjob.py 2010-10-21 10:22:25 +0000
15+++ lib/lp/soyuz/tests/test_initialisedistroseriesjob.py 2010-10-25 23:21:11 +0000
16@@ -24,6 +24,7 @@
17 InitialiseDistroSeriesJob,
18 )
19 from lp.soyuz.scripts.initialise_distroseries import InitialisationError
20+from lp.soyuz.tests.test_publishing import SoyuzTestPublisher
21 from lp.testing import TestCaseWithFactory
22 from lp.testing.matchers import Contains
23
24@@ -101,7 +102,7 @@
25 self.assertEqual(naked_job.packagesets, packagesets)
26 self.assertEqual(naked_job.rebuild, False)
27
28- def test_cronscript(self):
29+ def test_job(self):
30 pf = self.factory.makeProcessorFamily()
31 pf.addProcessor('x86', '', '')
32 parent = self.factory.makeDistroSeries()
33@@ -113,26 +114,13 @@
34 parent_das.addOrUpdateChroot(lf)
35 parent_das.supports_virtualized = True
36 parent.nominatedarchindep = parent_das
37+ publisher = SoyuzTestPublisher()
38+ publisher.prepareBreezyAutotest()
39 packages = {'udev': '0.1-1', 'libc6': '2.8-1'}
40 for package in packages.keys():
41- spn = self.factory.makeSourcePackageName(package)
42- spph = self.factory.makeSourcePackagePublishingHistory(
43- sourcepackagename=spn, version=packages[package],
44- distroseries=parent,
45- pocket=PackagePublishingPocket.RELEASE,
46- status=PackagePublishingStatus.PUBLISHED)
47- bpn = self.factory.makeBinaryPackageName(package)
48- build = self.factory.makeBinaryPackageBuild(
49- source_package_release=spph.sourcepackagerelease,
50- distroarchseries=parent_das,
51- status=BuildStatus.FULLYBUILT)
52- bpr = self.factory.makeBinaryPackageRelease(
53- binarypackagename=bpn, build=build,
54- version=packages[package])
55- self.factory.makeBinaryPackagePublishingHistory(
56- binarypackagerelease=bpr,
57- distroarchseries=parent_das,
58- pocket=PackagePublishingPocket.RELEASE,
59+ publisher.getPubBinaries(
60+ distroseries=parent, binaryname=package,
61+ version=packages[package],
62 status=PackagePublishingStatus.PUBLISHED)
63 test1 = getUtility(IPackagesetSet).new(
64 u'test1', u'test 1 packageset', parent.owner,
65@@ -141,11 +129,18 @@
66 parent.updatePackageCount()
67 child = self.factory.makeDistroSeries(parent_series=parent)
68
69- getUtility(IInitialiseDistroSeriesJobSource).create(child)
70- # Make sure everything hits the database, as the next bit is
71- # out-of-process
72+ # Make sure everything hits the database, switching db users
73+ # aborts.
74 transaction.commit()
75-
76+ job = getUtility(IInitialiseDistroSeriesJobSource).create(child)
77+ self.layer.switchDbUser('initialisedistroseries')
78+
79+ job.run()
80+ child.updatePackageCount()
81+ self.assertEqual(parent.sourcecount, child.sourcecount)
82+ self.assertEqual(parent.binarycount, child.binarycount)
83+
84+ def test_cronscript(self):
85 script = os.path.join(
86 config.root, 'cronscripts', 'initialise_distro_series.py')
87 args = [sys.executable, script, '-v']
88@@ -153,12 +148,3 @@
89 args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
90 stdout, stderr = process.communicate()
91 self.assertEqual(process.returncode, 0)
92- self.assertThat(
93- stderr.split('\n'), Contains(
94- "INFO Ran 1 InitialiseDistroSeriesJob jobs."))
95- # Storm assumes all changes are made in-process
96- Store.of(child).invalidate()
97- # The child distroseries is now initialised
98- child.updatePackageCount()
99- self.assertEqual(parent.sourcecount, child.sourcecount)
100- self.assertEqual(parent.binarycount, child.binarycount)