aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_schedulers_trysched.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_schedulers_trysched.py')
-rw-r--r--lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_schedulers_trysched.py727
1 files changed, 0 insertions, 727 deletions
diff --git a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_schedulers_trysched.py b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_schedulers_trysched.py
deleted file mode 100644
index 1aaa5b34..00000000
--- a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_schedulers_trysched.py
+++ /dev/null
@@ -1,727 +0,0 @@
-# This file is part of Buildbot. Buildbot is free software: you can
-# redistribute it and/or modify it under the terms of the GNU General Public
-# License as published by the Free Software Foundation, version 2.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 51
-# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Copyright Buildbot Team Members
-
-from __future__ import with_statement
-
-import mock
-import os
-import shutil
-import cStringIO as StringIO
-import sys
-
-import twisted
-from twisted.internet import defer
-from twisted.trial import unittest
-from twisted.protocols import basic
-from buildbot.schedulers import trysched
-from buildbot.test.util import dirs
-from buildbot.test.util import scheduler
-from buildbot.util import json
-
-
-class TryBase(unittest.TestCase):
-
- def test_filterBuilderList_ok(self):
- sched = trysched.TryBase(
- name='tsched', builderNames=['a', 'b', 'c'], properties={})
- self.assertEqual(sched.filterBuilderList(['b', 'c']), ['b', 'c'])
-
- def test_filterBuilderList_bad(self):
- sched = trysched.TryBase(
- name='tsched', builderNames=['a', 'b'], properties={})
- self.assertEqual(sched.filterBuilderList(['b', 'c']), [])
-
- def test_filterBuilderList_empty(self):
- sched = trysched.TryBase(
- name='tsched', builderNames=['a', 'b'], properties={})
- self.assertEqual(sched.filterBuilderList([]), ['a', 'b'])
-
-
-class JobdirService(dirs.DirsMixin, unittest.TestCase):
-
- def setUp(self):
- self.jobdir = 'jobdir'
- self.newdir = os.path.join(self.jobdir, 'new')
- self.curdir = os.path.join(self.jobdir, 'cur')
- self.tmpdir = os.path.join(self.jobdir, 'tmp')
- self.setUpDirs(self.jobdir, self.newdir, self.curdir, self.tmpdir)
-
- def tearDown(self):
- self.tearDownDirs()
-
- def test_messageReceived(self):
- svc = trysched.JobdirService(self.jobdir)
-
- # creat some new data to process
- jobdata = os.path.join(self.newdir, 'jobdata')
- with open(jobdata, "w") as f:
- f.write('JOBDATA')
-
- # stub out svc.parent.handleJobFile and .jobdir
- def handleJobFile(filename, f):
- self.assertEqual(filename, 'jobdata')
- self.assertEqual(f.read(), 'JOBDATA')
- svc.parent = mock.Mock()
- svc.parent.handleJobFile = handleJobFile
- svc.parent.jobdir = self.jobdir
-
- # run it
- svc.messageReceived('jobdata')
-
-
-class Try_Jobdir(scheduler.SchedulerMixin, unittest.TestCase):
-
- OBJECTID = 23
-
- def setUp(self):
- self.setUpScheduler()
- self.jobdir = None
-
- def tearDown(self):
- self.tearDownScheduler()
- if self.jobdir:
- shutil.rmtree(self.jobdir)
-
- # tests
-
- def do_test_startService(self, jobdir, exp_jobdir):
- # set up jobdir
- self.jobdir = os.path.abspath('jobdir')
- if os.path.exists(self.jobdir):
- shutil.rmtree(self.jobdir)
- os.mkdir(self.jobdir)
-
- # build scheduler
- kwargs = dict(name="tsched", builderNames=['a'], jobdir=self.jobdir)
- sched = self.attachScheduler(
- trysched.Try_Jobdir(**kwargs), self.OBJECTID)
-
- # start it
- sched.startService()
-
- # check that it has set the basedir correctly
- self.assertEqual(sched.watcher.basedir, self.jobdir)
-
- return sched.stopService()
-
- def test_startService_reldir(self):
- return self.do_test_startService(
- 'jobdir',
- os.path.abspath('basedir/jobdir'))
-
- def test_startService_reldir_subdir(self):
- return self.do_test_startService(
- 'jobdir',
- os.path.abspath('basedir/jobdir/cur'))
-
- def test_startService_absdir(self):
- return self.do_test_startService(
- os.path.abspath('jobdir'),
- os.path.abspath('jobdir'))
-
- # parseJob
-
- def test_parseJob_empty(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['a'], jobdir='foo')
- self.assertRaises(
- trysched.BadJobfile, sched.parseJob, StringIO.StringIO(''))
-
- def test_parseJob_longer_than_netstring_MAXLENGTH(self):
- self.patch(basic.NetstringReceiver, 'MAX_LENGTH', 100)
- sched = trysched.Try_Jobdir(name='tsched', builderNames=['a'], jobdir='foo')
- jobstr = self.makeNetstring(
- '1', 'extid', 'trunk', '1234', '1', 'this is my diff, -- ++, etc.',
- 'buildera', 'builderc'
- )
- jobstr += 'x' * 200
-
- test_temp_file = StringIO.StringIO(jobstr)
-
- self.assertRaises(trysched.BadJobfile,
- lambda : sched.parseJob(test_temp_file))
-
- def test_parseJob_invalid(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['a'], jobdir='foo')
- self.assertRaises(
- trysched.BadJobfile, sched.parseJob,
- StringIO.StringIO('this is not a netstring'))
-
- def test_parseJob_invalid_version(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['a'], jobdir='foo')
- self.assertRaises(
- trysched.BadJobfile, sched.parseJob, StringIO.StringIO('1:9,'))
-
- def makeNetstring(self, *strings):
- return ''.join(['%d:%s,' % (len(s), s) for s in strings])
-
- def test_parseJob_v1(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- '1', 'extid', 'trunk', '1234', '1', 'this is my diff, -- ++, etc.',
- 'buildera', 'builderc'
- )
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob, {
- 'baserev': '1234',
- 'branch': 'trunk',
- 'builderNames': ['buildera', 'builderc'],
- 'jobid': 'extid',
- 'patch_body': 'this is my diff, -- ++, etc.',
- 'patch_level': 1,
- 'project': '',
- 'who': '',
- 'comment': '',
- 'repository': '',
- 'properties': {},
- })
-
- def test_parseJob_v1_empty_branch_rev(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- # blank branch, rev are turned to None
- '1', 'extid', '', '', '1', 'this is my diff, -- ++, etc.',
- 'buildera', 'builderc'
- )
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob['branch'], None)
- self.assertEqual(parsedjob['baserev'], None)
-
- def test_parseJob_v1_no_builders(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- '1', 'extid', '', '', '1', 'this is my diff, -- ++, etc.'
- )
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob['builderNames'], [])
-
- def test_parseJob_v1_no_properties(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- '1', 'extid', '', '', '1', 'this is my diff, -- ++, etc.'
- )
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob['properties'], {})
-
- def test_parseJob_v2(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- '2', 'extid', 'trunk', '1234', '1', 'this is my diff, -- ++, etc.',
- 'repo', 'proj',
- 'buildera', 'builderc'
- )
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob, {
- 'baserev': '1234',
- 'branch': 'trunk',
- 'builderNames': ['buildera', 'builderc'],
- 'jobid': 'extid',
- 'patch_body': 'this is my diff, -- ++, etc.',
- 'patch_level': 1,
- 'project': 'proj',
- 'who': '',
- 'comment': '',
- 'repository': 'repo',
- 'properties': {},
- })
-
- def test_parseJob_v2_empty_branch_rev(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- # blank branch, rev are turned to None
- '2', 'extid', '', '', '1', 'this is my diff, -- ++, etc.',
- 'repo', 'proj',
- 'buildera', 'builderc'
- )
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob['branch'], None)
- self.assertEqual(parsedjob['baserev'], None)
-
- def test_parseJob_v2_no_builders(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- '2', 'extid', 'trunk', '1234', '1', 'this is my diff, -- ++, etc.',
- 'repo', 'proj',
- )
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob['builderNames'], [])
-
- def test_parseJob_v2_no_properties(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- '2', 'extid', 'trunk', '1234', '1', 'this is my diff, -- ++, etc.',
- 'repo', 'proj',
- )
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob['properties'], {})
-
- def test_parseJob_v3(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- '3', 'extid', 'trunk', '1234', '1', 'this is my diff, -- ++, etc.',
- 'repo', 'proj', 'who',
- 'buildera', 'builderc'
- )
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob, {
- 'baserev': '1234',
- 'branch': 'trunk',
- 'builderNames': ['buildera', 'builderc'],
- 'jobid': 'extid',
- 'patch_body': 'this is my diff, -- ++, etc.',
- 'patch_level': 1,
- 'project': 'proj',
- 'who': 'who',
- 'comment': '',
- 'repository': 'repo',
- 'properties': {},
- })
-
- def test_parseJob_v3_empty_branch_rev(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- # blank branch, rev are turned to None
- '3', 'extid', '', '', '1', 'this is my diff, -- ++, etc.',
- 'repo', 'proj', 'who',
- 'buildera', 'builderc'
- )
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob['branch'], None)
- self.assertEqual(parsedjob['baserev'], None)
-
- def test_parseJob_v3_no_builders(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- '3', 'extid', 'trunk', '1234', '1', 'this is my diff, -- ++, etc.',
- 'repo', 'proj', 'who'
- )
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob['builderNames'], [])
-
- def test_parseJob_v3_no_properties(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- '3', 'extid', 'trunk', '1234', '1', 'this is my diff, -- ++, etc.',
- 'repo', 'proj', 'who'
- )
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob['properties'], {})
-
- def test_parseJob_v4(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- '4', 'extid', 'trunk', '1234', '1', 'this is my diff, -- ++, etc.',
- 'repo', 'proj', 'who', 'comment',
- 'buildera', 'builderc'
- )
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob, {
- 'baserev': '1234',
- 'branch': 'trunk',
- 'builderNames': ['buildera', 'builderc'],
- 'jobid': 'extid',
- 'patch_body': 'this is my diff, -- ++, etc.',
- 'patch_level': 1,
- 'project': 'proj',
- 'who': 'who',
- 'comment': 'comment',
- 'repository': 'repo',
- 'properties': {},
- })
-
- def test_parseJob_v4_empty_branch_rev(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- # blank branch, rev are turned to None
- '4', 'extid', '', '', '1', 'this is my diff, -- ++, etc.',
- 'repo', 'proj', 'who', 'comment',
- 'buildera', 'builderc'
- )
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob['branch'], None)
- self.assertEqual(parsedjob['baserev'], None)
-
- def test_parseJob_v4_no_builders(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- '4', 'extid', 'trunk', '1234', '1', 'this is my diff, -- ++, etc.',
- 'repo', 'proj', 'who', 'comment'
- )
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob['builderNames'], [])
-
- def test_parseJob_v4_no_properties(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- '4', 'extid', 'trunk', '1234', '1', 'this is my diff, -- ++, etc.',
- 'repo', 'proj', 'who', 'comment'
- )
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob['properties'], {})
-
- def test_parseJob_v5(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- '5',
- json.dumps({
- 'jobid': 'extid', 'branch': 'trunk', 'baserev': '1234',
- 'patch_level': 1, 'patch_body': 'this is my diff, -- ++, etc.',
- 'repository': 'repo', 'project': 'proj', 'who': 'who',
- 'comment': 'comment', 'builderNames': ['buildera', 'builderc'],
- 'properties': {'foo': 'bar'},
- }))
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob, {
- 'baserev': '1234',
- 'branch': 'trunk',
- 'builderNames': ['buildera', 'builderc'],
- 'jobid': 'extid',
- 'patch_body': 'this is my diff, -- ++, etc.',
- 'patch_level': 1,
- 'project': 'proj',
- 'who': 'who',
- 'comment': 'comment',
- 'repository': 'repo',
- 'properties': {'foo': 'bar'},
- })
-
- def test_parseJob_v5_empty_branch_rev(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- # blank branch, rev are turned to None
- '4', 'extid', '', '', '1', 'this is my diff, -- ++, etc.',
- 'repo', 'proj', 'who', 'comment',
- 'buildera', 'builderc'
- )
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob['branch'], None)
- self.assertEqual(parsedjob['baserev'], None)
-
- def test_parseJob_v5_no_builders(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- '5',
- json.dumps({
- 'jobid': 'extid', 'branch': 'trunk', 'baserev': '1234',
- 'patch_level': '1', 'diff': 'this is my diff, -- ++, etc.',
- 'repository': 'repo', 'project': 'proj', 'who': 'who',
- 'comment': 'comment', 'builderNames': [],
- 'properties': {'foo': 'bar'},
- }))
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob['builderNames'], [])
-
- def test_parseJob_v5_no_properties(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring(
- '5',
- json.dumps({
- 'jobid': 'extid', 'branch': 'trunk', 'baserev': '1234',
- 'patch_level': '1', 'diff': 'this is my diff, -- ++, etc.',
- 'repository': 'repo', 'project': 'proj', 'who': 'who',
- 'comment': 'comment', 'builderNames': ['buildera', 'builderb'],
- 'properties': {},
- }))
- parsedjob = sched.parseJob(StringIO.StringIO(jobstr))
- self.assertEqual(parsedjob['properties'], {})
-
- def test_parseJob_v5_invalid_json(self):
- sched = trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'], jobdir='foo')
- jobstr = self.makeNetstring('5', '{"comment": "com}')
- self.assertRaises(
- trysched.BadJobfile, sched.parseJob, StringIO.StringIO(jobstr))
-
- # handleJobFile
-
- def call_handleJobFile(self, parseJob):
- sched = self.attachScheduler(
- trysched.Try_Jobdir(
- name='tsched', builderNames=['buildera', 'builderb'],
- jobdir='foo'), self.OBJECTID)
- fakefile = mock.Mock()
-
- def parseJob_(f):
- assert f is fakefile
- return parseJob(f)
- sched.parseJob = parseJob_
- return sched.handleJobFile('fakefile', fakefile)
-
- def makeSampleParsedJob(self, **overrides):
- pj = dict(baserev='1234', branch='trunk',
- builderNames=['buildera', 'builderb'],
- jobid='extid', patch_body='this is my diff, -- ++, etc.',
- patch_level=1, project='proj', repository='repo', who='who',
- comment='comment', properties={})
- pj.update(overrides)
- return pj
-
- def test_handleJobFile(self):
- d = self.call_handleJobFile(lambda f: self.makeSampleParsedJob())
-
- def check(_):
- self.db.buildsets.assertBuildset('?',
- dict(reason="'try' job by user who",
- external_idstring='extid',
- properties=[('scheduler', ('tsched', 'Scheduler'))],
- sourcestampsetid=100),
- {'':
- dict(branch='trunk', repository='repo', codebase='',
- project='proj', revision='1234',
- patch_body='this is my diff, -- ++, etc.',
- patch_level=1, patch_subdir='',
- patch_author='who',
- patch_comment='comment',
- sourcestampsetid=100)
- })
- d.addCallback(check)
- return d
-
- def test_handleJobFile_exception(self):
- def parseJob(f):
- raise trysched.BadJobfile
- d = self.call_handleJobFile(parseJob)
-
- def check(bsid):
- self.db.buildsets.assertBuildsets(0)
- self.assertEqual(
- 1, len(self.flushLoggedErrors(trysched.BadJobfile)))
- d.addCallback(check)
- return d
- if twisted.version.major <= 9 and sys.version_info[:2] >= (2, 7):
- test_handleJobFile_exception.skip = (
- "flushLoggedErrors does not work correctly on 9.0.0 "
- "and earlier with Python-2.7")
-
- def test_handleJobFile_bad_builders(self):
- d = self.call_handleJobFile(
- lambda f: self.makeSampleParsedJob(builderNames=['xxx']))
-
- def check(_):
- self.db.buildsets.assertBuildsets(0)
- d.addCallback(check)
- return d
-
- def test_handleJobFile_subset_builders(self):
- d = self.call_handleJobFile(
- lambda f: self.makeSampleParsedJob(builderNames=['buildera']))
-
- def check(_):
- self.db.buildsets.assertBuildset('?',
- dict(reason="'try' job by user who",
- external_idstring='extid',
- properties=[('scheduler', ('tsched', 'Scheduler'))],
- sourcestampsetid=100),
- {'':
- dict(branch='trunk', repository='repo', codebase='',
- project='proj', revision='1234',
- patch_body='this is my diff, -- ++, etc.',
- patch_level=1, patch_subdir='',
- patch_author='who',
- patch_comment='comment',
- sourcestampsetid=100)
- })
- d.addCallback(check)
- return d
-
- def test_handleJobFile_with_try_properties(self):
- d = self.call_handleJobFile(
- lambda f: self.makeSampleParsedJob(properties={'foo': 'bar'}))
-
- def check(_):
- self.db.buildsets.assertBuildset('?',
- dict(reason="'try' job by user who",
- external_idstring='extid',
- properties=[
- ('foo', ('bar', 'try build')),
- ('scheduler', ('tsched', 'Scheduler')),
- ],
- sourcestampsetid=100),
- {'':
- dict(branch='trunk', repository='repo', codebase='',
- project='proj', revision='1234',
- patch_body='this is my diff, -- ++, etc.',
- patch_level=1, patch_subdir='',
- patch_author='who',
- patch_comment='comment',
- sourcestampsetid=100)
- })
- d.addCallback(check)
- return d
-
- def test_handleJobFile_with_invalid_try_properties(self):
- d = self.call_handleJobFile(
- lambda f: self.makeSampleParsedJob(properties=['foo', 'bar']))
- return self.assertFailure(d, AttributeError)
-
-
-class Try_Userpass_Perspective(scheduler.SchedulerMixin, unittest.TestCase):
-
- OBJECTID = 26
-
- def setUp(self):
- self.setUpScheduler()
-
- def tearDown(self):
- self.tearDownScheduler()
-
- def makeScheduler(self, **kwargs):
- sched = self.attachScheduler(trysched.Try_Userpass(**kwargs),
- self.OBJECTID)
- # Try will return a remote version of master.status, so give it
- # something to return
- sched.master.status = mock.Mock()
- return sched
-
- def call_perspective_try(self, *args, **kwargs):
- sched = self.makeScheduler(name='tsched', builderNames=['a', 'b'],
- port='xxx', userpass=[('a', 'b')], properties=dict(frm='schd'))
- persp = trysched.Try_Userpass_Perspective(sched, 'a')
- return persp.perspective_try(*args, **kwargs)
-
- def test_perspective_try(self):
- d = self.call_perspective_try(
- 'default', 'abcdef', (1, '-- ++'), 'repo', 'proj', ['a'],
- properties={'pr': 'op'})
-
- def check(_):
- self.db.buildsets.assertBuildset('?',
- dict(reason="'try' job",
- external_idstring=None,
- properties=[
- ('frm', ('schd', 'Scheduler')),
- ('pr', ('op', 'try build')),
- ('scheduler', ('tsched', 'Scheduler')),
- ],
- sourcestampsetid=100,
- ),
- {'':
- dict(branch='default', repository='repo', codebase='',
- project='proj', revision='abcdef',
- sourcestampsetid=100,
- patch_body='-- ++', patch_level=1, patch_subdir='',
- patch_author="", patch_comment="")
- })
- d.addCallback(check)
- return d
-
- def test_perspective_try_who(self):
- d = self.call_perspective_try(
- 'default', 'abcdef', (1, '-- ++'), 'repo', 'proj', ['a'],
- who='who', comment='comment', properties={'pr': 'op'})
-
- def check(_):
- self.db.buildsets.assertBuildset('?',
- dict(reason="'try' job by user who (comment)",
- external_idstring=None,
- properties=[
- ('frm', ('schd', 'Scheduler')),
- ('pr', ('op', 'try build')),
- ('scheduler', ('tsched', 'Scheduler')),
- ],
- sourcestampsetid=100,
- ),
- {'':
- dict(branch='default', repository='repo', codebase='',
- project='proj', revision='abcdef',
- sourcestampsetid=100,
- patch_body='-- ++', patch_level=1, patch_subdir='',
- patch_author='who', patch_comment="comment")
- })
- d.addCallback(check)
- return d
-
- def test_perspective_try_bad_builders(self):
- d = self.call_perspective_try(
- 'default', 'abcdef', (1, '-- ++'), 'repo', 'proj', ['xxx'],
- properties={'pr': 'op'})
-
- def check(_):
- self.db.buildsets.assertBuildsets(0)
- d.addCallback(check)
- return d
-
- def test_getAvailableBuilderNames(self):
- sched = self.makeScheduler(name='tsched', builderNames=['a', 'b'],
- port='xxx', userpass=[('a', 'b')])
- persp = trysched.Try_Userpass_Perspective(sched, 'a')
- d = defer.maybeDeferred(
- lambda: persp.perspective_getAvailableBuilderNames())
-
- def check(buildernames):
- self.assertEqual(buildernames, ['a', 'b'])
- d.addCallback(check)
- return d
-
-
-class Try_Userpass(scheduler.SchedulerMixin, unittest.TestCase):
-
- OBJECTID = 25
-
- def setUp(self):
- self.setUpScheduler()
-
- def tearDown(self):
- self.tearDownScheduler()
-
- def makeScheduler(self, **kwargs):
- sched = self.attachScheduler(trysched.Try_Userpass(**kwargs),
- self.OBJECTID)
- return sched
-
- def test_service(self):
- sched = self.makeScheduler(name='tsched', builderNames=['a'],
- port='tcp:9999', userpass=[('fred', 'derf')])
- # patch out the pbmanager's 'register' command both to be sure
- # the registration is correct and to get a copy of the factory
- registration = mock.Mock()
- registration.unregister = lambda: defer.succeed(None)
- sched.master.pbmanager = mock.Mock()
-
- def register(portstr, user, passwd, factory):
- self.assertEqual([portstr, user, passwd],
- ['tcp:9999', 'fred', 'derf'])
- self.got_factory = factory
- return registration
- sched.master.pbmanager.register = register
- # start it
- sched.startService()
- # make a fake connection by invoking the factory, and check that we
- # get the correct perspective
- persp = self.got_factory(mock.Mock(), 'fred')
- self.failUnless(isinstance(persp, trysched.Try_Userpass_Perspective))
- return sched.stopService()