~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/soyuz/tests/test_binarypackagebuildbehavior.py

  • Committer: Launchpad Patch Queue Manager
  • Date: 2010-01-28 23:26:44 UTC
  • mfrom: (7675.442.134 launchpad)
  • Revision ID: launchpad@pqm.canonical.com-20100128232644-350rlfnvjey5e344
Merging db-stable

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright 2010 Canonical Ltd.  This software is licensed under the
 
2
# GNU Affero General Public License version 3 (see the file LICENSE).
 
3
 
 
4
"""Test BinaryPackageBuildBehavior functionality."""
 
5
 
 
6
__metaclass__ = type
 
7
 
 
8
import unittest
 
9
 
 
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
 
15
 
 
16
 
 
17
class BaseTestVerifySlaveBuildID:
 
18
 
 
19
    layer = LaunchpadZopelessLayer
 
20
 
 
21
    def setUp(self):
 
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')
 
26
 
 
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))
 
34
 
 
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)
 
40
        self.assertRaises(
 
41
            CorruptBuildID, behavior.verifySlaveBuildID,
 
42
            '%d-%d' % (self.other_build.id, self.build.buildqueue_record.id))
 
43
 
 
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)
 
49
        self.assertRaises(
 
50
            CorruptBuildID, behavior.verifySlaveBuildID, 'foo')
 
51
 
 
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)
 
57
        self.assertRaises(
 
58
            CorruptBuildID, behavior.verifySlaveBuildID, '98-99')
 
59
 
 
60
 
 
61
class TestVerifySlaveBuildID(BaseTestVerifySlaveBuildID,
 
62
                             BaseTestCaseWithThreeBuilds):
 
63
    pass
 
64
 
 
65
def test_suite():
 
66
    return unittest.TestLoader().loadTestsFromName(__name__)