1
# Copyright 2010 Canonical Ltd. This software is licensed under the
2
# GNU Affero General Public License version 3 (see the file LICENSE).
4
"""Test BinaryPackageBuildBehavior functionality."""
10
from canonical.testing import LaunchpadZopelessLayer
11
from lp.buildmaster.interfaces.buildfarmjobbehavior import (
12
IBuildFarmJobBehavior)
13
from lp.buildmaster.interfaces.builder import CorruptBuildID
14
from lp.soyuz.tests.test_build import BaseTestCaseWithThreeBuilds
17
class BaseTestVerifySlaveBuildID:
19
layer = LaunchpadZopelessLayer
22
super(BaseTestVerifySlaveBuildID, self).setUp()
23
self.build = self.builds[0]
24
self.other_build = self.builds[1]
25
self.builder = self.factory.makeBuilder(name='builder')
27
def test_consistent_build_id(self):
28
# verifySlaveBuildID returns None if the build and buildqueue
29
# ID pair reported by the slave are associated in the database.
30
buildfarmjob = self.build.buildqueue_record.specific_job
31
behavior = IBuildFarmJobBehavior(buildfarmjob)
32
behavior.verifySlaveBuildID(
33
'%d-%d' % (self.build.id, self.build.buildqueue_record.id))
35
def test_mismatched_build_id(self):
36
# verifySlaveBuildID returns an error if the build and
37
# buildqueue exist, but are not associated in the database.
38
buildfarmjob = self.build.buildqueue_record.specific_job
39
behavior = IBuildFarmJobBehavior(buildfarmjob)
41
CorruptBuildID, behavior.verifySlaveBuildID,
42
'%d-%d' % (self.other_build.id, self.build.buildqueue_record.id))
44
def test_build_id_without_separator(self):
45
# verifySlaveBuildID returns an error if the build ID does not
46
# contain a build and build queue ID separated by a hyphen.
47
buildfarmjob = self.build.buildqueue_record.specific_job
48
behavior = IBuildFarmJobBehavior(buildfarmjob)
50
CorruptBuildID, behavior.verifySlaveBuildID, 'foo')
52
def test_build_id_with_missing_build(self):
53
# verifySlaveBuildID returns an error if either the build or
54
# build queue specified do not exist.
55
buildfarmjob = self.build.buildqueue_record.specific_job
56
behavior = IBuildFarmJobBehavior(buildfarmjob)
58
CorruptBuildID, behavior.verifySlaveBuildID, '98-99')
61
class TestVerifySlaveBuildID(BaseTestVerifySlaveBuildID,
62
BaseTestCaseWithThreeBuilds):
66
return unittest.TestLoader().loadTestsFromName(__name__)