aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_process_botmaster_BotMaster.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_process_botmaster_BotMaster.py')
-rw-r--r--lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_process_botmaster_BotMaster.py259
1 files changed, 0 insertions, 259 deletions
diff --git a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_process_botmaster_BotMaster.py b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_process_botmaster_BotMaster.py
deleted file mode 100644
index ff45c907..00000000
--- a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_process_botmaster_BotMaster.py
+++ /dev/null
@@ -1,259 +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
-
-import mock
-from zope.interface import implements
-from twisted.trial import unittest
-from twisted.internet import defer
-from twisted.application import service
-from buildbot.process.botmaster import BotMaster
-from buildbot.process import factory
-from buildbot import config, interfaces
-from buildbot.test.fake import fakemaster
-
-class TestCleanShutdown(unittest.TestCase):
- def setUp(self):
- self.botmaster = BotMaster(mock.Mock())
- self.reactor = mock.Mock()
- self.botmaster.startService()
-
- def assertReactorStopped(self, _=None):
- self.assertTrue(self.reactor.stop.called)
-
- def assertReactorNotStopped(self, _=None):
- self.assertFalse(self.reactor.stop.called)
-
- def makeFakeBuild(self):
- self.fake_builder = builder = mock.Mock()
- build = mock.Mock()
- builder.builder_status.getCurrentBuilds.return_value = [build]
-
- self.build_deferred = defer.Deferred()
- build.waitUntilFinished.return_value = self.build_deferred
-
- self.botmaster.builders = mock.Mock()
- self.botmaster.builders.values.return_value = [builder]
-
- def finishFakeBuild(self):
- self.fake_builder.builder_status.getCurrentBuilds.return_value = []
- self.build_deferred.callback(None)
-
- # tests
-
- def test_shutdown_idle(self):
- """Test that the master shuts down when it's idle"""
- self.botmaster.cleanShutdown(_reactor=self.reactor)
- self.assertReactorStopped()
-
- def test_shutdown_busy(self):
- """Test that the master shuts down after builds finish"""
- self.makeFakeBuild()
-
- self.botmaster.cleanShutdown(_reactor=self.reactor)
-
- # check that we haven't stopped yet, since there's a running build
- self.assertReactorNotStopped()
-
- # try to shut it down again, just to check that this does not fail
- self.botmaster.cleanShutdown(_reactor=self.reactor)
-
- # Now we cause the build to finish
- self.finishFakeBuild()
-
- # And now we should be stopped
- self.assertReactorStopped()
-
- def test_shutdown_cancel_not_shutting_down(self):
- """Test that calling cancelCleanShutdown when none is in progress
- works"""
- # this just shouldn't fail..
- self.botmaster.cancelCleanShutdown()
-
- def test_shutdown_cancel(self):
- """Test that we can cancel a shutdown"""
- self.makeFakeBuild()
-
- self.botmaster.cleanShutdown(_reactor=self.reactor)
-
- # Next we check that we haven't stopped yet, since there's a running
- # build.
- self.assertReactorNotStopped()
-
- # but the BuildRequestDistributor should not be running
- self.assertFalse(self.botmaster.brd.running)
-
- # Cancel the shutdown
- self.botmaster.cancelCleanShutdown()
-
- # Now we cause the build to finish
- self.finishFakeBuild()
-
- # We should still be running!
- self.assertReactorNotStopped()
-
- # and the BuildRequestDistributor should be, as well
- self.assertTrue(self.botmaster.brd.running)
-
-
-class FakeBuildSlave(config.ReconfigurableServiceMixin, service.Service):
-
- implements(interfaces.IBuildSlave)
-
- reconfig_count = 0
-
- def __init__(self, slavename):
- self.slavename = slavename
-
- def reconfigService(self, new_config):
- self.reconfig_count += 1
- return defer.succeed(None)
-
-
-class FakeBuildSlave2(FakeBuildSlave):
- pass
-
-
-class TestBotMaster(unittest.TestCase):
-
- def setUp(self):
- self.master = fakemaster.make_master()
- self.botmaster = BotMaster(self.master)
- self.new_config = mock.Mock()
- self.botmaster.startService()
-
- def tearDown(self):
- return self.botmaster.stopService()
-
- def test_reconfigService(self):
- # check that reconfigServiceSlaves and reconfigServiceBuilders are
- # both called; they will be tested invidually below
- self.patch(self.botmaster, 'reconfigServiceBuilders',
- mock.Mock(side_effect=lambda c : defer.succeed(None)))
- self.patch(self.botmaster, 'reconfigServiceSlaves',
- mock.Mock(side_effect=lambda c : defer.succeed(None)))
- self.patch(self.botmaster, 'maybeStartBuildsForAllBuilders',
- mock.Mock())
-
- old_config, new_config = mock.Mock(), mock.Mock()
- d = self.botmaster.reconfigService(new_config)
- @d.addCallback
- def check(_):
- self.botmaster.reconfigServiceBuilders.assert_called_with(
- new_config)
- self.botmaster.reconfigServiceSlaves.assert_called_with(
- new_config)
- self.assertTrue(
- self.botmaster.maybeStartBuildsForAllBuilders.called)
- return d
-
- @defer.inlineCallbacks
- def test_reconfigServiceSlaves_add_remove(self):
- sl = FakeBuildSlave('sl1')
- self.new_config.slaves = [ sl ]
-
- yield self.botmaster.reconfigServiceSlaves(self.new_config)
-
- self.assertIdentical(sl.parent, self.botmaster)
- self.assertEqual(self.botmaster.slaves, { 'sl1' : sl })
-
- self.new_config.slaves = [ ]
-
- yield self.botmaster.reconfigServiceSlaves(self.new_config)
-
- self.assertIdentical(sl.parent, None)
- self.assertIdentical(sl.master, None)
-
- @defer.inlineCallbacks
- def test_reconfigServiceSlaves_reconfig(self):
- sl = FakeBuildSlave('sl1')
- self.botmaster.slaves = dict(sl1=sl)
- sl.setServiceParent(self.botmaster)
- sl.master = self.master
- sl.botmaster = self.botmaster
-
- sl_new = FakeBuildSlave('sl1')
- self.new_config.slaves = [ sl_new ]
-
- yield self.botmaster.reconfigServiceSlaves(self.new_config)
-
- # sl was not replaced..
- self.assertIdentical(self.botmaster.slaves['sl1'], sl)
-
- @defer.inlineCallbacks
- def test_reconfigServiceSlaves_class_changes(self):
- sl = FakeBuildSlave('sl1')
- self.botmaster.slaves = dict(sl1=sl)
- sl.setServiceParent(self.botmaster)
- sl.master = self.master
- sl.botmaster = self.botmaster
-
- sl_new = FakeBuildSlave2('sl1')
- self.new_config.slaves = [ sl_new ]
-
- yield self.botmaster.reconfigServiceSlaves(self.new_config)
-
- # sl *was* replaced (different class)
- self.assertIdentical(self.botmaster.slaves['sl1'], sl_new)
-
- @defer.inlineCallbacks
- def test_reconfigServiceBuilders_add_remove(self):
- bc = config.BuilderConfig(name='bldr', factory=factory.BuildFactory(),
- slavename='f')
- self.new_config.builders = [ bc ]
-
- yield self.botmaster.reconfigServiceBuilders(self.new_config)
-
- bldr = self.botmaster.builders['bldr']
- self.assertIdentical(bldr.parent, self.botmaster)
- self.assertIdentical(bldr.master, self.master)
- self.assertEqual(self.botmaster.builderNames, [ 'bldr' ])
-
- self.new_config.builders = [ ]
-
- yield self.botmaster.reconfigServiceBuilders(self.new_config)
-
- self.assertIdentical(bldr.parent, None)
- self.assertIdentical(bldr.master, None)
- self.assertEqual(self.botmaster.builders, {})
- self.assertEqual(self.botmaster.builderNames, [])
-
- def test_maybeStartBuildsForBuilder(self):
- brd = self.botmaster.brd = mock.Mock()
-
- self.botmaster.maybeStartBuildsForBuilder('frank')
-
- brd.maybeStartBuildsOn.assert_called_once_with(['frank'])
-
- def test_maybeStartBuildsForSlave(self):
- brd = self.botmaster.brd = mock.Mock()
- b1 = mock.Mock(name='frank')
- b1.name = 'frank'
- b2 = mock.Mock(name='larry')
- b2.name = 'larry'
- self.botmaster.getBuildersForSlave = mock.Mock(return_value=[b1, b2])
-
- self.botmaster.maybeStartBuildsForSlave('centos')
-
- self.botmaster.getBuildersForSlave.assert_called_once_with('centos')
- brd.maybeStartBuildsOn.assert_called_once_with(['frank', 'larry'])
-
- def test_maybeStartBuildsForAll(self):
- brd = self.botmaster.brd = mock.Mock()
- self.botmaster.builderNames = ['frank', 'larry']
-
- self.botmaster.maybeStartBuildsForAllBuilders()
-
- brd.maybeStartBuildsOn.assert_called_once_with(['frank', 'larry'])
-