aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/test/unit/test_scripts_runner.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/test/unit/test_scripts_runner.py')
-rw-r--r--lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/test/unit/test_scripts_runner.py306
1 files changed, 0 insertions, 306 deletions
diff --git a/lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/test/unit/test_scripts_runner.py b/lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/test/unit/test_scripts_runner.py
deleted file mode 100644
index 5656d97c..00000000
--- a/lib/python2.7/site-packages/buildbot_slave-0.8.8-py2.7.egg/buildslave/test/unit/test_scripts_runner.py
+++ /dev/null
@@ -1,306 +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 os
-import time
-import mock
-import errno
-import signal
-from twisted.trial import unittest
-from twisted.python import usage
-from buildslave.scripts import runner, base
-from buildslave.scripts import startup
-from buildslave.test.util import misc
-
-
-class IsBuildslaveDirMixin:
- """
- Mixin for setting up mocked base.isBuildslaveDir() function
- """
- def setupUpIsBuildslaveDir(self, return_value):
- self.isBuildslaveDir = mock.Mock(return_value=return_value)
- self.patch(base, "isBuildslaveDir", self.isBuildslaveDir)
-
-
-class TestStopSlave(misc.OpenFileMixin,
- misc.StdoutAssertionsMixin,
- unittest.TestCase):
- """
- Test buildslave.scripts.runner.stopSlave()
- """
- PID = 9876
- def setUp(self):
- self.setUpStdoutAssertions()
-
- # patch os.chdir() to do nothing
- self.patch(os, "chdir", mock.Mock())
-
- def test_no_pid_file(self):
- """
- test calling stopSlave() when no pid file is present
- """
-
- # patch open() to raise 'file not found' exception
- self.setUpOpenError(2)
-
- # check that stop() raises SlaveNotRunning exception
- self.assertRaises(runner.SlaveNotRunning,
- runner.stopSlave, None, False)
-
- def test_successful_stop(self):
- """
- test stopSlave() on a successful slave stop
- """
-
- def emulated_kill(pid, sig):
- if sig == 0:
- # when probed if a signal can be send to the process
- # emulate that it is dead with 'No such process' error
- raise OSError(errno.ESRCH, "dummy")
-
- # patch open() to return a pid file
- self.setUpOpen(str(self.PID))
-
- # patch os.kill to emulate successful kill
- mocked_kill = mock.Mock(side_effect=emulated_kill)
- self.patch(os, "kill", mocked_kill)
-
- # don't waste time
- self.patch(time, "sleep", mock.Mock())
-
- # check that stopSlave() sends expected signal to right PID
- # and print correct message to stdout
- runner.stopSlave(None, False)
- mocked_kill.assert_has_calls([mock.call(self.PID, signal.SIGTERM),
- mock.call(self.PID, 0)])
- self.assertStdoutEqual("buildslave process %s is dead\n" % self.PID)
-
-
-class TestStop(IsBuildslaveDirMixin,
- misc.StdoutAssertionsMixin,
- unittest.TestCase):
- """
- Test buildslave.scripts.runner.stop()
- """
- config = {"basedir": "dummy", "quiet": False}
-
- def setUp(self):
- # patch basedir check to always succeed
- self.setupUpIsBuildslaveDir(True)
-
- def test_no_slave_running(self):
- """
- test calling stop() when no slave is running
- """
- self.setUpStdoutAssertions()
-
- # patch stopSlave() to raise an exception
- mock_stopSlave = mock.Mock(side_effect=runner.SlaveNotRunning())
- self.patch(runner, "stopSlave", mock_stopSlave)
-
- runner.stop(self.config)
- self.assertStdoutEqual("buildslave not running\n")
-
- def test_successful_stop(self):
- """
- test calling stop() when slave is running
- """
- # patch stopSlave() to do nothing
- mock_stopSlave = mock.Mock()
- self.patch(runner, "stopSlave", mock_stopSlave)
-
- runner.stop(self.config)
- mock_stopSlave.assert_called_once_with(self.config["basedir"],
- self.config["quiet"],
- "TERM")
-
-
-class TestRestart(IsBuildslaveDirMixin,
- misc.StdoutAssertionsMixin,
- unittest.TestCase):
- """
- Test buildslave.scripts.runner.restart()
- """
- config = {"basedir": "dummy", "quiet": False}
-
- def setUp(self):
- self.setUpStdoutAssertions()
-
- # patch basedir check to always succeed
- self.setupUpIsBuildslaveDir(True)
-
- # patch startup.start() to do nothing
- self.start = mock.Mock()
- self.patch(startup, "start", self.start)
-
- def test_no_slave_running(self):
- """
- test calling restart() when no slave is running
- """
- # patch stopSlave() to raise an exception
- mock_stopSlave = mock.Mock(side_effect=runner.SlaveNotRunning())
- self.patch(runner, "stopSlave", mock_stopSlave)
-
- # check that restart() calls start() and prints correct messages
- runner.restart(self.config)
- self.start.assert_called_once_with(self.config)
- self.assertStdoutEqual("no old buildslave process found to stop\n"
- "now restarting buildslave process..\n")
-
-
- def test_restart(self):
- """
- test calling restart() when slave is running
- """
- # patch stopSlave() to do nothing
- mock_stopSlave = mock.Mock()
- self.patch(runner, "stopSlave", mock_stopSlave)
-
- # check that restart() calls start() and prints correct messages
- runner.restart(self.config)
- self.assertStdoutEqual("now restarting buildslave process..\n")
- self.start.assert_called_once_with(self.config)
-
-
-class TestUpgradeSlave(IsBuildslaveDirMixin, unittest.TestCase):
- """
- Test buildslave.scripts.runner.upgradeSlave()
- """
-
- def test_upgradeSlave_bad_basedir(self):
- """
- test calling upgradeSlave() with bad base directory
- """
- # override isBuildslaveDir() to always fail
- self.setupUpIsBuildslaveDir(False)
-
- # call upgradeSlave() and check that SystemExit exception is raised
- config = {"basedir" : "dummy"}
- exception = self.assertRaises(SystemExit, runner.upgradeSlave, config)
-
- # check exit code
- self.assertEqual(exception.code, 1, "unexpected exit code")
-
- # check that isBuildslaveDir was called with correct argument
- self.isBuildslaveDir.assert_called_once_with("dummy")
-
-
-class OptionsMixin(object):
- def assertOptions(self, opts, exp):
- got = dict([(k, opts[k]) for k in exp])
- if got != exp:
- msg = []
- for k in exp:
- if opts[k] != exp[k]:
- msg.append(" %s: expected %r, got %r" %
- (k, exp[k], opts[k]))
- self.fail("did not get expected options\n" + ("\n".join(msg)))
-
-
-class TestCreateSlaveOptions(OptionsMixin, unittest.TestCase):
- """
- Test buildslave.scripts.runner.CreateSlaveOptions class.
- """
-
- req_args = ["bdir", "mstr", "name", "pswd"]
-
- def parse(self, *args):
- opts = runner.CreateSlaveOptions()
- opts.parseOptions(args)
- return opts
-
- def test_defaults(self):
- self.assertRaisesRegexp(usage.UsageError,
- "incorrect number of arguments",
- self.parse)
-
- def test_synopsis(self):
- opts = runner.CreateSlaveOptions()
- self.assertIn('buildslave create-slave', opts.getSynopsis())
-
- def test_min_args(self):
-
- # patch runner.MakerBase.postOptions() so that 'basedir'
- # argument will not be converted to absolute path
- self.patch(runner.MakerBase, "postOptions", mock.Mock())
-
- self.assertOptions(self.parse(*self.req_args),
- dict(basedir="bdir", master="mstr",
- name="name", passwd="pswd"))
-
- def test_all_args(self):
-
- # patch runner.MakerBase.postOptions() so that 'basedir'
- # argument will not be converted to absolute path
- self.patch(runner.MakerBase, "postOptions", mock.Mock())
-
- opts = self.parse("--force", "--relocatable", "--no-logrotate",
- "--keepalive=4", "--usepty=0", "--umask=022",
- "--maxdelay=3", "--log-size=2", "--log-count=1",
- "--allow-shutdown=file", *self.req_args)
- self.assertOptions(opts,
- {"force" : True,
- "relocatable" : True,
- "no-logrotate" : True,
- "usepty" : 0,
- "umask" : "022",
- "maxdelay" : 3,
- "log-size" : 2,
- "log-count" : "1",
- "allow-shutdown" : "file",
- "basedir" : "bdir",
- "master" : "mstr",
- "name" : "name",
- "passwd" : "pswd"})
-
- def test_master_url(self):
- self.assertRaisesRegexp(usage.UsageError,
- "<master> is not a URL - do not use URL",
- self.parse, "a", "http://b.c", "d", "e")
-
- def test_inv_keepalive(self):
- self.assertRaisesRegexp(usage.UsageError,
- "keepalive parameter needs to be an number",
- self.parse, "--keepalive=X", *self.req_args)
-
- def test_inv_usepty(self):
- self.assertRaisesRegexp(usage.UsageError,
- "usepty parameter needs to be an number",
- self.parse, "--usepty=X", *self.req_args)
-
- def test_inv_maxdelay(self):
- self.assertRaisesRegexp(usage.UsageError,
- "maxdelay parameter needs to be an number",
- self.parse, "--maxdelay=X", *self.req_args)
-
- def test_inv_log_size(self):
- self.assertRaisesRegexp(usage.UsageError,
- "log-size parameter needs to be an number",
- self.parse, "--log-size=X", *self.req_args)
-
- def test_inv_log_count(self):
- self.assertRaisesRegexp(usage.UsageError,
- "log-count parameter needs to be an number or None",
- self.parse, "--log-count=X", *self.req_args)
-
- def test_too_few_args(self):
- self.assertRaisesRegexp(usage.UsageError,
- "incorrect number of arguments",
- self.parse, "arg1", "arg2")
-
- def test_too_many_args(self):
- self.assertRaisesRegexp(usage.UsageError,
- "incorrect number of arguments",
- self.parse, "extra_arg", *self.req_args)