def test_workerdir_good(self): """Test checking valid worker directory.""" # patch open() to return file with valid worker tac contents self.setUpOpen("Application('buildbot-worker')") # check that isWorkerDir() flags directory as good self.assertTrue(base.isWorkerDir("testdir")) # check that open() was called with correct path self.open.assert_called_once_with(self.tac_file_path)
def stop(config, signame="TERM"): quiet = config['quiet'] basedir = config['basedir'] if not base.isWorkerDir(basedir): return 1 try: return stopWorker(basedir, quiet, signame) except WorkerNotRunning: if not quiet: print("worker not running") return 0
def test_read_error(self): """Test that read() errors on buildbot.tac file are handled.""" # patch open() to return file object that raises IOError on read() self.setUpReadError(1, "read-error", "dummy") # check that isWorkerDir() flags directory as invalid self.assertFalse(base.isWorkerDir("testdir")) # check that correct error message was printed to stdout self.assertReadErrorMessage("read-error") # check that open() was called with correct path self.open.assert_called_once_with(self.tac_file_path)
def test_open_error(self): """Test that open() errors are handled.""" # patch open() to raise IOError self.setUpOpenError(1, "open-error", "dummy") # check that isWorkerDir() flags directory as invalid self.assertFalse(base.isWorkerDir("testdir")) # check that correct error message was printed to stdout self.assertReadErrorMessage("open-error") # check that open() was called with correct path self.open.assert_called_once_with(self.tac_file_path)
def test_unexpected_tac_contents(self): """Test that unexpected contents in buildbot.tac is handled.""" # patch open() to return file with unexpected contents self.setUpOpen("dummy-contents") # check that isWorkerDir() flags directory as invalid self.assertFalse(base.isWorkerDir("testdir")) # check that correct error message was printed to the log self.assertLogged( re.escape("unexpected content in '%s'" % self.tac_file_path), "invalid worker directory 'testdir'", "unexpected error message on stdout") # check that open() was called with correct path self.open.assert_called_once_with(self.tac_file_path)
def restart(config): quiet = config['quiet'] basedir = config['basedir'] if not base.isWorkerDir(basedir): return 1 try: stop.stopWorker(basedir, quiet) except stop.WorkerNotRunning: if not quiet: log.msg("no old worker process found to stop") if not quiet: log.msg("now restarting worker process..") return start.startWorker(basedir, quiet, config['nodaemon'])
def test_unexpected_tac_contents(self): """Test that unexpected contents in buildbot.tac is handled.""" # patch open() to return file with unexpected contents self.setUpOpen("dummy-contents") # check that isWorkerDir() flags directory as invalid self.assertFalse(base.isWorkerDir("testdir")) # check that correct error message was printed to stdout self.assertEqual( self.mocked_stdout.getvalue(), "unexpected content in '{0}'\n".format(self.tac_file_path) + "invalid worker directory 'testdir'\n", "unexpected error message on stdout") # check that open() was called with correct path self.open.assert_called_once_with(self.tac_file_path)
def upgradeWorker(config): basedir = os.path.expanduser(config['basedir']) if not base.isWorkerDir(basedir): return 1 buildbot_tac = open(os.path.join(basedir, "buildbot.tac")).read() new_buildbot_tac = buildbot_tac.replace( "from buildbot.slave.bot import BuildSlave", "from buildslave.bot import BuildSlave") if new_buildbot_tac != buildbot_tac: open(os.path.join(basedir, "buildbot.tac"), "w").write(new_buildbot_tac) log.msg("buildbot.tac updated") else: log.msg("No changes made") return 0
def startCommand(config): basedir = config['basedir'] if not base.isWorkerDir(basedir): return 1 return startWorker(basedir, config['quiet'], config['nodaemon'])