Exemplo n.º 1
0
def _cleanupDatabase(config, _noMonkey=False):

    if not base.checkBasedir(config):
        defer.returnValue(1)
        return

    config["basedir"] = os.path.abspath(config["basedir"])
    os.chdir(config["basedir"])

    with base.captureErrors(
        (SyntaxError, ImportError), "Unable to load 'buildbot.tac' from '%s':" % (config["basedir"],)
    ):
        configFile = base.getConfigFileFromTac(config["basedir"])

    with base.captureErrors(
        config_module.ConfigErrors, "Unable to load '%s' from '%s':" % (configFile, config["basedir"])
    ):
        master_cfg = base.loadConfig(config, configFile)

    if not master_cfg:
        defer.returnValue(1)
        return

    yield doCleanupDatabase(config, master_cfg)

    if not config["quiet"]:
        print("cleanup complete")

    defer.returnValue(0)
Exemplo n.º 2
0
def upgradeMaster(config, _noMonkey=False):
    if not _noMonkey:  # pragma: no cover
        monkeypatches.patch_all()

    if not base.checkBasedir(config):
        defer.returnValue(1)
        return

    os.chdir(config['basedir'])

    try:
        configFile = base.getConfigFileFromTac(config['basedir'])
    except (SyntaxError, ImportError) as e:
        print("Unable to load 'buildbot.tac' from '%s':" % config['basedir'])
        print(e)

        defer.returnValue(1)
        return
    master_cfg = base.loadConfig(config, configFile)
    if not master_cfg:
        defer.returnValue(1)
        return

    upgradeFiles(config)
    yield upgradeDatabase(config, master_cfg)

    if not config['quiet']:
        print("upgrade complete")

    defer.returnValue(0)
Exemplo n.º 3
0
 def test_checkBasedir_bad_pidfile(self):
     """
     corrupted PID file is giving error.
     """
     self.activeBasedir()
     with open(os.path.join('test', 'twistd.pid'), 'w') as f:
         f.write("xxx")
     rv = base.checkBasedir(mkconfig())
     self.assertFalse(rv)
     self.assertInStdout('twistd.pid contains non-numeric value')
Exemplo n.º 4
0
 def test_checkBasedir_active_pidfile(self):
     """
     active PID file is giving error.
     """
     self.activeBasedir()
     # write our own pid in the file
     with open(os.path.join('test', 'twistd.pid'), 'w') as f:
         f.write(str(os.getpid()))
     rv = base.checkBasedir(mkconfig())
     self.assertFalse(rv)
     self.assertInStdout('still running')
Exemplo n.º 5
0
    def test_checkBasedir_stale_pidfile(self):
        """
        Stale PID file is removed without causing a system exit.
        """
        self.activeBasedir()
        pidfile = os.path.join('test', 'twistd.pid')
        with open(pidfile, 'w') as f:
            f.write(str(os.getpid() + 1))

        def kill(pid, sig):
            raise OSError(errno.ESRCH, "fake")
        self.patch(os, "kill", kill)
        rv = base.checkBasedir(mkconfig())
        self.assertTrue(rv)
        self.assertInStdout('Removing stale pidfile test')
        self.assertFalse(os.path.exists(pidfile))
Exemplo n.º 6
0
    def test_checkBasedir_pidfile_kill_error(self):
        """
        if ping-killing the PID file does not work, we should error out.
        """
        self.activeBasedir()
        # write our own pid in the file
        pidfile = os.path.join('test', 'twistd.pid')
        with open(pidfile, 'w') as f:
            f.write(str(os.getpid() + 1))

        def kill(pid, sig):
            raise OSError(errno.EPERM, "fake")
        self.patch(os, "kill", kill)
        rv = base.checkBasedir(mkconfig())
        self.assertFalse(rv)
        self.assertInStdout('Can\'t check status of PID')
        self.assertTrue(os.path.exists(pidfile))
Exemplo n.º 7
0
def upgradeMaster(config, _noMonkey=False):
    if not _noMonkey:  # pragma: no cover
        monkeypatches.patch_all()

    if not base.checkBasedir(config):
        return defer.succeed(1)

    os.chdir(config["basedir"])

    try:
        configFile = base.getConfigFileFromTac(config["basedir"])
    except (SyntaxError, ImportError):
        print("Unable to load 'buildbot.tac' from '%s':" % config["basedir"], file=sys.stderr)
        e = traceback.format_exc()
        print(e, file=sys.stderr)
        return defer.succeed(1)
    master_cfg = base.loadConfig(config, configFile)
    if not master_cfg:
        return defer.succeed(1)
    return _upgradeMaster(config, master_cfg)
Exemplo n.º 8
0
def upgradeMaster(config, _noMonkey=False):
    if not _noMonkey:  # pragma: no cover
        monkeypatches.patch_all()

    if not base.checkBasedir(config):
        return defer.succeed(1)

    os.chdir(config['basedir'])

    try:
        configFile = base.getConfigFileFromTac(config['basedir'])
    except (SyntaxError, ImportError):
        print("Unable to load 'buildbot.tac' from '%s':" % config['basedir'],
              file=sys.stderr)
        e = traceback.format_exc()
        print(e, file=sys.stderr)
        return defer.succeed(1)
    master_cfg = base.loadConfig(config, configFile)
    if not master_cfg:
        return defer.succeed(1)
    return _upgradeMaster(config, master_cfg)
Exemplo n.º 9
0
 def test_checkBasedir_no_dir(self):
     rv = base.checkBasedir(mkconfig(basedir='doesntexist'))
     self.assertFalse(rv)
     self.assertInStdout('invalid buildmaster directory')
Exemplo n.º 10
0
 def test_checkBasedir_quiet(self):
     self.activeBasedir()
     rv = base.checkBasedir(mkconfig(quiet=True))
     self.assertTrue(rv)
     self.assertWasQuiet()
Exemplo n.º 11
0
 def test_checkBasedir(self):
     self.activeBasedir()
     rv = base.checkBasedir(mkconfig())
     self.assertTrue(rv)
     self.assertInStdout('checking basedir')
Exemplo n.º 12
0
 def test_checkBasedir_invalid_maxRotatedFiles(self):
     self.activeBasedir(extra_lines=['maxRotatedFiles="64"'])
     rv = base.checkBasedir(mkconfig())
     self.assertFalse(rv)
     self.assertInStdout('ERROR')
     self.assertInStdout('maxRotatedFiles')
Exemplo n.º 13
0
 def test_checkBasedir_invalid_rotateLength(self):
     self.activeBasedir(extra_lines=['rotateLength="32"'])
     rv = base.checkBasedir(mkconfig())
     self.assertFalse(rv)
     self.assertInStdout('ERROR')
     self.assertInStdout('rotateLength')
Exemplo n.º 14
0
 def test_checkBasedir_invalid_maxRotatedFiles(self):
     self.activeBasedir(extra_lines=['maxRotatedFiles="64"'])
     rv = base.checkBasedir(mkconfig())
     self.assertFalse(rv)
     self.assertInStdout('ERROR')
     self.assertInStdout('maxRotatedFiles')
Exemplo n.º 15
0
 def test_checkBasedir(self):
     self.activeBasedir()
     rv = base.checkBasedir(mkconfig())
     self.assertTrue(rv)
     self.assertInStdout('checking basedir')
Exemplo n.º 16
0
 def test_checkBasedir_active_pidfile(self):
     self.activeBasedir()
     open(os.path.join('test', 'twistd.pid'), 'w').close()
     rv = base.checkBasedir(mkconfig())
     self.assertFalse(rv)
     self.assertInStdout('still running')
Exemplo n.º 17
0
 def test_checkBasedir_invalid_rotateLength(self):
     self.activeBasedir(extra_lines=['rotateLength="32"'])
     rv = base.checkBasedir(mkconfig())
     self.assertFalse(rv)
     self.assertInStdout('ERROR')
     self.assertInStdout('rotateLength')
Exemplo n.º 18
0
 def test_checkBasedir_quiet(self):
     self.activeBasedir()
     rv = base.checkBasedir(mkconfig(quiet=True))
     self.assertTrue(rv)
     self.assertWasQuiet()
Exemplo n.º 19
0
 def test_checkBasedir_no_dir(self):
     rv = base.checkBasedir(mkconfig(basedir='doesntexist'))
     self.assertFalse(rv)
     self.assertInStdout('invalid buildmaster directory')
Exemplo n.º 20
0
 def test_checkBasedir_active_pidfile(self):
     self.activeBasedir()
     open(os.path.join('test', 'twistd.pid'), 'w').close()
     rv = base.checkBasedir(mkconfig())
     self.assertFalse(rv)
     self.assertInStdout('still running')