1
# Copyright 2009-2010 Canonical Ltd. This software is licensed under the
2
# GNU Affero General Public License version 3 (see the file LICENSE).
6
'BuildlogSecurityTests',
13
from ConfigParser import SafeConfigParser
17
from canonical.buildd.slave import BuildDSlave
18
from canonical.launchpad.daemons.tachandler import TacTestSetup
20
from lp.services.osutils import remove_tree
23
test_conffile = os.path.join(
24
os.path.dirname(__file__), 'buildd-slave-test.conf')
27
class MockBuildManager(object):
28
"""Mock BuildManager class.
30
Only implements 'is_archive_private' as False.
32
is_archive_private = False
35
class BuilddTestCase(unittest.TestCase):
36
"""Unit tests for logtail mechanisms."""
39
"""Setup a BuildDSlave using the test config."""
40
conf = SafeConfigParser()
41
conf.read(test_conffile)
42
conf.set("slave", "filecache", tempfile.mkdtemp())
44
self.slave = BuildDSlave(conf)
45
self.slave._log = True
46
self.slave.manager = MockBuildManager()
48
self.here = os.path.abspath(os.path.dirname(__file__))
51
"""Remove the 'filecache' directory used for the tests."""
52
remove_tree(self.slave._cachepath)
54
def makeLog(self, size):
55
"""Inject data into the default buildlog file."""
56
f = open(self.slave.cachePath('buildlog'), 'w')
61
class BuilddSlaveTestSetup(TacTestSetup):
62
r"""Setup BuildSlave for use by functional tests
64
>>> fixture = BuilddSlaveTestSetup()
67
Make sure the server is running
70
>>> s = xmlrpclib.Server('http://localhost:8221/rpc/')
71
>>> s.echo('Hello World')
73
>>> fixture.tearDown()
78
>>> s = xmlrpclib.Server('http://localhost:8221/rpc/')
80
>>> s.echo('Hello World')
89
>>> for buildtype in sorted(info[2]):
97
['BuilderStatus.IDLE', '']
99
>>> fixture.tearDown()
102
"""Recreate empty root directory to avoid problems."""
103
remove_tree(self.root)
105
filecache = os.path.join(self.root, 'filecache')
107
os.environ['HOME'] = self.root
108
os.environ['BUILDD_SLAVE_CONFIG'] = test_conffile
109
# XXX cprov 2005-05-30:
110
# When we are about running it seriously we need :
111
# * install sbuild package
112
# * to copy the scripts for sbuild
113
self.addCleanup(remove_tree, self.root)
117
return '/var/tmp/buildd'
121
return os.path.abspath(os.path.join(
122
os.path.dirname(canonical.__file__), os.pardir, os.pardir,
123
'daemons/buildd-slave.tac'
128
return os.path.join(self.root, 'build-slave.pid')
132
return '/var/tmp/build-slave.log'