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

Proposed by Steve Kowalik on 2010-10-25
Status: Merged
Approved by: Robert Collins on 2010-10-25
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 on 2010-10-25
Robert Collins (community) 2010-10-25 Approve on 2010-10-25
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.
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.

Robert Collins (lifeless) :
review: Approve
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)