Ejemplo n.º 1
0
    def __init__(
        self,
        command,
        description=None,
        descriptionDone=None,
        descriptionSuffix=None,
        env=None,
        path=None,
        usePTY=0,
        interruptSignal="KILL",
        **kwargs
    ):
        BuildStep.__init__(self, **kwargs)

        self.command = command
        if description:
            self.description = description
        if isinstance(self.description, str):
            self.description = [self.description]
        if descriptionDone:
            self.descriptionDone = descriptionDone
        if isinstance(self.descriptionDone, str):
            self.descriptionDone = [self.descriptionDone]
        if descriptionSuffix:
            self.descriptionSuffix = descriptionSuffix
        if isinstance(self.descriptionSuffix, str):
            self.descriptionSuffix = [self.descriptionSuffix]
        self.env = env
        self.path = path
        self.usePTY = usePTY
        self.interruptSignal = interruptSignal
Ejemplo n.º 2
0
    def __init__(self, **kwargs):
        BuildStep.__init__(self, **kwargs)
        if self.upstreamSteps is None:
            raise ValueError("you must supply upstreamSteps")
        if len(self.upstreamSteps) < 1:
            raise ValueError("upstreamSteps must be a non-empty list")
        if self.idlePolicy not in self.VALID_IDLE_POLICIES:
            raise ValueError(
                "invalid value for idlePolicy: %r (must be one of %s)"
                % (self.idlePolicy,
                   ", ".join(map(repr, self.VALID_IDLE_POLICIES))))

        # list of build steps (as BuildStepStatus objects) that we're
        # currently waiting on
        self._blocking_steps = []

        # set of builders (as BuilderStatus objects) that have to start
        # a Build before we can block on one of their BuildSteps
        self._blocking_builders = set()

        self._overall_code = builder.SUCCESS # assume the best
        self._overall_text = []

        self._timer = None              # object returned by reactor.callLater()
        self._timed_out = False
Ejemplo n.º 3
0
    def __init__(self, data, log='output', **kwargs):
        self.data = data
        self.log = log

        BuildStep.__init__(self, **kwargs)

        self.addFactoryArguments(data=data, log=log)
Ejemplo n.º 4
0
    def __init__(
        self,
        slavesrc,
        masterdest,
        workdir="build",
        maxsize=None,
        blocksize=16 * 1024,
        compress=None,
        **buildstep_kwargs
    ):
        BuildStep.__init__(self, **buildstep_kwargs)
        self.addFactoryArguments(
            slavesrc=slavesrc,
            masterdest=masterdest,
            workdir=workdir,
            maxsize=maxsize,
            blocksize=blocksize,
            compress=compress,
        )

        self.slavesrc = slavesrc
        self.masterdest = masterdest
        self.workdir = workdir
        self.maxsize = maxsize
        self.blocksize = blocksize
        assert compress in (None, "gz", "bz2")
        self.compress = compress
Ejemplo n.º 5
0
    def __init__(self, command,
                 description=None, descriptionDone=None, descriptionSuffix=None,
                 env=None, path=None, usePTY=0,
                 **kwargs):
        BuildStep.__init__(self, **kwargs)
        self.addFactoryArguments(description=description,
                                 descriptionDone=descriptionDone,
                                 descriptionSuffix=descriptionSuffix,
                                 env=env, path=path, usePTY=usePTY,
                                 command=command)

        self.command=command
        if description:
            self.description = description
        if isinstance(self.description, str):
            self.description = [self.description]
        if descriptionDone:
            self.descriptionDone = descriptionDone
        if isinstance(self.descriptionDone, str):
            self.descriptionDone = [self.descriptionDone]
        if descriptionSuffix:
            self.descriptionSuffix = descriptionSuffix
        if isinstance(self.descriptionSuffix, str):
            self.descriptionSuffix = [self.descriptionSuffix]
        self.env=env
        self.path=path
        self.usePTY=usePTY
Ejemplo n.º 6
0
    def __init__(self, property_name, value, **kwargs):
        self.property_name = property_name
        self.value = value

        BuildStep.__init__(self, **kwargs)

        self.addFactoryArguments(property_name=property_name, value=value)
Ejemplo n.º 7
0
 def __init__(self, arch, branch, channel, ostree_dir, **kwargs):
     kwargs = self.setupShellMixin(kwargs, prohibitArgs=["command"])
     BuildStep.__init__(self, haltOnFailure=True, **kwargs)
     self.arch = arch
     self.branch = branch
     self.channel = channel
     self.ostree_dir = ostree_dir
Ejemplo n.º 8
0
 def __init__(self, setup, config, env, **kwargs):
     self.setup = setup
     self.config = config
     self.env_dict = env
     self.consumer = None
     kwargs = self.setupShellMixin(kwargs, prohibitArgs=['command'])
     BuildStep.__init__(self, **kwargs)
Ejemplo n.º 9
0
    def __init__(self, slavesrc, masterdest,
                 workdir=None, maxsize=None, blocksize=16*1024, mode=None,
                 keepstamp=False, url=None,
                 **buildstep_kwargs):
        BuildStep.__init__(self, **buildstep_kwargs)
        self.addFactoryArguments(slavesrc=slavesrc,
                                 masterdest=masterdest,
                                 workdir=workdir,
                                 maxsize=maxsize,
                                 blocksize=blocksize,
                                 mode=mode,
                                 keepstamp=keepstamp,
                                 url=url,
                                 )

        self.slavesrc = slavesrc
        self.masterdest = masterdest
        self.workdir = workdir
        self.maxsize = maxsize
        self.blocksize = blocksize
        if not isinstance(mode, (int, type(None))):
            raise config.ConfigErrors([
                'mode must be an integer or None' ])
        self.mode = mode
        self.keepstamp = keepstamp
        self.url = url
Ejemplo n.º 10
0
    def __init__(
        self,
        slavesrc,
        masterdest,
        workdir=None,
        maxsize=None,
        blocksize=16 * 1024,
        mode=None,
        keepstamp=False,
        **buildstep_kwargs
    ):
        BuildStep.__init__(self, **buildstep_kwargs)
        self.addFactoryArguments(
            slavesrc=slavesrc,
            masterdest=masterdest,
            workdir=workdir,
            maxsize=maxsize,
            blocksize=blocksize,
            mode=mode,
            keepstamp=keepstamp,
        )

        self.slavesrc = slavesrc
        self.masterdest = masterdest
        self.workdir = workdir
        self.maxsize = maxsize
        self.blocksize = blocksize
        assert isinstance(mode, (int, type(None)))
        self.mode = mode
        self.keepstamp = keepstamp
 def __init__(self, project, **kwargs):
     self.inplace_lines = None
     self.project = project
     kwargs = self.setupShellMixin(kwargs, prohibitArgs=['command'])
     BuildStep.__init__(self,
                        name=self.NAME,
                        hideStepIf=ShowStepIfSuccessful, **kwargs)
Ejemplo n.º 12
0
    def __init__(self, objdir, milestone, baseurl, appendDatedDir=True,
                 snippetType='complete', hashType='SHA512', doStepIf=True,
                 name='create_update_snippet'):
        BuildStep.__init__(self, name=name, doStepIf=doStepIf)

        self.addFactoryArguments(
            objdir=objdir,
            milestone=milestone,
            baseurl=baseurl,
            appendDatedDir=appendDatedDir
        )

        # This seems like a reasonable place to store snippets
        self.updateDir = path.join(objdir, 'dist', 'update')
        self.milestone = milestone
        self.baseurl = baseurl
        self.hashType = hashType
        self.appendDatedDir = appendDatedDir
        assert snippetType in ['complete', 'partial']
        self.snippetType = snippetType
        assert hashType in ['SHA512']
        self.hashType = hashType
        self.maxsize = 16384
        self.mode = None
        self.blocksize = 4096

        self.cmd = None
        self.stdio_log = None
Ejemplo n.º 13
0
    def finished(self, result):
        if self.cmd.stderr != '':
            self.addCompleteLog('stderr', self.cmd.stderr)

        if self.cmd.rc is None or self.cmd.rc == 0:
            return BuildStep.finished(self, SUCCESS)
        return BuildStep.finished(self, FAILURE)
Ejemplo n.º 14
0
    def __init__(self, command, env=None, workdir=None, usePTY=0, interruptSignal="KILL", **kwargs):
        BuildStep.__init__(self, **kwargs)

        self.command = command
        self.env = env
        self.workdir = workdir
        self.usePTY = usePTY
        self.interruptSignal = interruptSignal
Ejemplo n.º 15
0
 def interrupt(self, reason):
     try:
         self.process.signalProcess(self.interruptSignal)
     except KeyError: # Process not started yet
         pass
     except error.ProcessExitedAlready:
         pass
     BuildStep.interrupt(self, reason)
Ejemplo n.º 16
0
    def __init__(self, command, **kwargs):
        self.env = kwargs.pop("env", None)
        self.usePTY = kwargs.pop("usePTY", 0)
        self.interruptSignal = kwargs.pop("interruptSignal", "KILL")

        BuildStep.__init__(self, **kwargs)

        self.command = command
        self.masterWorkdir = self.workdir
Ejemplo n.º 17
0
    def __init__(self, builderNames = None, **kwargs):
        if builderNames is None:
            raise TypeError('argument builderNames is required')

        self.builderNames = builderNames

        BuildStep.__init__(self, **kwargs)

        self.addFactoryArguments(builderNames = builderNames)
Ejemplo n.º 18
0
    def __init__(self, command, **kwargs):
        self.env = kwargs.pop('env', None)
        self.usePTY = kwargs.pop('usePTY', 0)
        self.interruptSignal = kwargs.pop('interruptSignal', 'KILL')

        BuildStep.__init__(self, **kwargs)

        self.command = command
        self.masterWorkdir = self.workdir
Ejemplo n.º 19
0
    def finished(self, result):
        if self.cmd.stderr != '':
            self.addCompleteLog('stderr', self.cmd.stderr)

        if self.cmd.rc is None or self.cmd.rc == 0:
            self.step_status.setColor('green')
            return BuildStep.finished(self, SUCCESS)
        self.step_status.setColor('red')
        return BuildStep.finished(self, FAILURE)
Ejemplo n.º 20
0
 def __init__(self, timeout=5, **kwargs):
     """
     @type  timeout: int
     @param timeout: the number of seconds to delay before completing
     """
     BuildStep.__init__(self, **kwargs)
     self.addFactoryArguments(timeout=timeout)
     self.timeout = timeout
     self.timer = None
Ejemplo n.º 21
0
    def __init__(self, schedulerNames=None, sourceStamp=None, sourceStamps=None,
                 updateSourceStamp=None, alwaysUseLatest=False,
                 waitForFinish=False, set_properties=None,
                 copy_properties=None, parent_relationship="Triggered from",
                 unimportantSchedulerNames=None, **kwargs):
        if schedulerNames is None:
            schedulerNames = []
        if unimportantSchedulerNames is None:
            unimportantSchedulerNames = []
        if not schedulerNames:
            config.error(
                "You must specify a scheduler to trigger")
        if (sourceStamp or sourceStamps) and (updateSourceStamp is not None):
            config.error(
                "You can't specify both sourceStamps and updateSourceStamp")
        if (sourceStamp or sourceStamps) and alwaysUseLatest:
            config.error(
                "You can't specify both sourceStamps and alwaysUseLatest")
        if alwaysUseLatest and (updateSourceStamp is not None):
            config.error(
                "You can't specify both alwaysUseLatest and updateSourceStamp"
            )
        if not set(schedulerNames).issuperset(set(unimportantSchedulerNames)):
            config.error(
                "unimportantSchedulerNames must be a subset of schedulerNames"
            )

        self.schedulerNames = schedulerNames
        self.unimportantSchedulerNames = unimportantSchedulerNames
        self.sourceStamps = sourceStamps or []
        if sourceStamp:
            self.sourceStamps.append(sourceStamp)
        if updateSourceStamp is not None:
            self.updateSourceStamp = updateSourceStamp
        else:
            self.updateSourceStamp = not (alwaysUseLatest or self.sourceStamps)
        self.alwaysUseLatest = alwaysUseLatest
        self.waitForFinish = waitForFinish

        if set_properties is None:
            set_properties = {}
        if copy_properties is None:
            copy_properties = []

        properties = {}
        properties.update(set_properties)
        for i in copy_properties:
            properties[i] = Property(i)
        self.set_properties = properties
        self.parent_relationship = parent_relationship
        self.running = False
        self.ended = False
        self.brids = []
        self.triggeredNames = None
        self.waitForFinishDeferred = None
        BuildStep.__init__(self, **kwargs)
Ejemplo n.º 22
0
    def __init__(self, command,
                 env=None, workdir=None, usePTY=0, interruptSignal="KILL",
                 **kwargs):
        BuildStep.__init__(self, **kwargs)

        self.command = command
        self.env = env
        self.workdir = workdir
        self.usePTY = usePTY
        self.interruptSignal = interruptSignal
Ejemplo n.º 23
0
    def finished(self, result):
        # Subclasses may choose to skip a transfer. In those cases, self.cmd
        # will be None, and we should just let BuildStep.finished() handle
        # the rest
        if result == SKIPPED:
            return BuildStep.finished(self, SKIPPED)

        if self.cmd.didFail():
            return BuildStep.finished(self, FAILURE)
        return BuildStep.finished(self, SUCCESS)
Ejemplo n.º 24
0
    def __init__(self, command, **kwargs):
        self.env = kwargs.pop('env', None)
        self.usePTY = kwargs.pop('usePTY', 0)
        self.interruptSignal = kwargs.pop('interruptSignal', 'KILL')
        self.logEnviron = kwargs.pop('logEnviron', True)

        BuildStep.__init__(self, **kwargs)

        self.command = command
        self.masterWorkdir = self.workdir
Ejemplo n.º 25
0
    def finished(self, result):
        # Subclasses may choose to skip a transfer. In those cases, self.cmd
        # will be None, and we should just let BuildStep.finished() handle
        # the rest
        if result == SKIPPED:
            return BuildStep.finished(self, SKIPPED)

        if self.cmd.didFail():
            return BuildStep.finished(self, FAILURE)
        return BuildStep.finished(self, SUCCESS)
Ejemplo n.º 26
0
    def test_getSummaryStatistic(self):
        b = self.build

        b.executedSteps = [BuildStep(), BuildStep(), BuildStep()]
        b.executedSteps[0].setStatistic('casualties', 7)
        b.executedSteps[2].setStatistic('casualties', 4)

        add = operator.add
        self.assertEqual(b.getSummaryStatistic('casualties', add), 11)
        self.assertEqual(b.getSummaryStatistic('casualties', add, 10), 21)
Ejemplo n.º 27
0
    def setUp(self):
        config = """
from buildbot.status import html
from buildbot.process.factory import BasicBuildFactory
from buildbot.buildslave import BuildSlave
f1 = BasicBuildFactory('cvsroot', 'cvsmodule')
BuildmasterConfig = {
    'slaves': [BuildSlave('bot1', 'passwd1')],
    'schedulers': [],
    'builders': [{'name': 'builder1', 'slavename': 'bot1',
                  'builddir':'workdir', 'factory':f1}],
    'slavePortnum': 0,
    'status': [html.WebStatus(http_port=0)],
    }
"""
        if os.path.exists("test_logfile"):
            shutil.rmtree("test_logfile")
        os.mkdir("test_logfile")
        self.master = m = ConfiguredMaster("test_logfile", config)
        m.startService()
        # hack to find out what randomly-assigned port it is listening on
        port = self.find_webstatus(m).getPortnum()
        self.port = port
        # insert an event

        req = base.BuildRequest("reason", sourcestamp.SourceStamp())
        build1 = base.Build([req])
        bs = m.status.getBuilder("builder1").newBuild()
        bs.setReason("reason")
        bs.buildStarted(build1)

        step1 = BuildStep(name="setup")
        step1.setBuild(build1)
        bss = bs.addStepWithName("setup")
        step1.setStepStatus(bss)
        bss.stepStarted()

        log1 = step1.addLog("output")
        log1.addStdout("some stdout\n")
        log1.finish()

        log2 = step1.addHTMLLog("error", "<html>ouch</html>")

        log3 = step1.addLog("big")
        log3.addStdout("big log\n")
        for i in range(1000):
            log3.addStdout("a" * 500)
            log3.addStderr("b" * 500)
        log3.finish()

        log4 = step1.addCompleteLog("bigcomplete",
                                    "big2 log\n" + "a" * 1 * 1000 * 1000)

        step1.step_status.stepFinished(builder.SUCCESS)
        bs.buildFinished()
Ejemplo n.º 28
0
    def __init__(self, schedulerNames=None, sourceStamp=None, sourceStamps=None,
                 updateSourceStamp=None, alwaysUseLatest=False,
                 waitForFinish=False, set_properties=None,
                 copy_properties=None, parent_relationship="Triggered from",
                 unimportantSchedulerNames=None, **kwargs):
        if schedulerNames is None:
            schedulerNames = []
        if unimportantSchedulerNames is None:
            unimportantSchedulerNames = []
        if not schedulerNames:
            config.error(
                "You must specify a scheduler to trigger")
        if (sourceStamp or sourceStamps) and (updateSourceStamp is not None):
            config.error(
                "You can't specify both sourceStamps and updateSourceStamp")
        if (sourceStamp or sourceStamps) and alwaysUseLatest:
            config.error(
                "You can't specify both sourceStamps and alwaysUseLatest")
        if alwaysUseLatest and (updateSourceStamp is not None):
            config.error(
                "You can't specify both alwaysUseLatest and updateSourceStamp"
            )
        if not set(schedulerNames).issuperset(set(unimportantSchedulerNames)):
            config.error(
                "unimportantSchedulerNames must be a subset of schedulerNames"
            )

        self.schedulerNames = schedulerNames
        self.unimportantSchedulerNames = unimportantSchedulerNames
        self.sourceStamps = sourceStamps or []
        if sourceStamp:
            self.sourceStamps.append(sourceStamp)
        if updateSourceStamp is not None:
            self.updateSourceStamp = updateSourceStamp
        else:
            self.updateSourceStamp = not (alwaysUseLatest or self.sourceStamps)
        self.alwaysUseLatest = alwaysUseLatest
        self.waitForFinish = waitForFinish

        if set_properties is None:
            set_properties = {}
        if copy_properties is None:
            copy_properties = []

        properties = {}
        properties.update(set_properties)
        for i in copy_properties:
            properties[i] = Property(i)
        self.set_properties = properties
        self.parent_relationship = parent_relationship
        self.running = False
        self.ended = False
        self.brids = []
        self.triggeredNames = None
        BuildStep.__init__(self, **kwargs)
Ejemplo n.º 29
0
    def __init__(self, s, slavedest, workdir=None, maxsize=None, blocksize=16 * 1024, mode=None, **buildstep_kwargs):
        BuildStep.__init__(self, **buildstep_kwargs)

        self.s = s
        self.slavedest = slavedest
        self.workdir = workdir
        self.maxsize = maxsize
        self.blocksize = blocksize
        if not isinstance(mode, (int, type(None))):
            config.error("mode must be an integer or None")
        self.mode = mode
Ejemplo n.º 30
0
    def interrupt(self, reason):
        if self.running:
            BuildStep.interrupt(self, reason)
            if self.step_status.isWaitingForLocks():
                self.addCompleteLog('interrupt while waiting for locks',
                                    str(reason))
            else:
                self.addCompleteLog('interrupt', str(reason))

            self.running = False
            self.finished(EXCEPTION)
 def __init__(self):
     BuildStep.__init__(self,
                        haltOnFailure=False,
                        flunkOnWarnings=False,
                        flunkOnFailure=True,
                        warnOnWarnings=True,
                        warnOnFailure=False,
                        alwaysRun=False,
                        name='fake')
     self._summary = {u'step': u'result', u'build': u'build result'}
     self._expected_results = SUCCESS
Ejemplo n.º 32
0
 def __init__(self, treename, l10nbuilds, cb=None, **kwargs):
     """Create a TreeLoader step. In addition to the standard arguments,
     treename is the name of the tree,
     l10nbuilds is the local ini file describing the builds,
     cb is a callback with signature (tree, changes=None)
     """
     BuildStep.__init__(self, **kwargs)
     self.addFactoryArguments(treename=treename, l10nbuilds=l10nbuilds, cb=cb)
     self.treename = treename
     self.l10nbuilds = l10nbuilds
     self.cb = cb
Ejemplo n.º 33
0
 def __init__(self, stepToWatchForFailure=None, timeout=2700, **kwargs):
     """ timeout - default is 45min because you pay same for 1st hour of EC2 so if an average test takes 
                 10 min to start and 5 minutes, that leaves 45 minutes to $ free
         stepToWatchForFailure - is a step in this builder by this name should fail, then this will conditionally hold
                 otherwise this will not hold.  If no step is given, this will ALWAYS hold
     """
     BuildStep.__init__(self, **kwargs)
     self.addFactoryArguments(timeout=timeout, stepToWatchForFailure=stepToWatchForFailure)
     self.defaultTimeout = timeout
     self.timer = None
     self.stepToWatchForFailure = stepToWatchForFailure
     self.doStepIf = self.shouldHold
Ejemplo n.º 34
0
    def finished(self, result):
        # Subclasses may choose to skip a transfer. In those cases, self.cmd
        # will be None, and we should just let BuildStep.finished() handle
        # the rest
        if result == SKIPPED:
            return BuildStep.finished(self, SKIPPED)
        if self.cmd.stderr != '':
            self.addCompleteLog('stderr', self.cmd.stderr)

        if self.cmd.rc is None or self.cmd.rc == 0:
            return BuildStep.finished(self, SUCCESS)
        return BuildStep.finished(self, FAILURE)
Ejemplo n.º 35
0
    def finished(self, result):
        # Subclasses may choose to skip a transfer. In those cases, self.cmd
        # will be None, and we should just let BuildStep.finished() handle
        # the rest
        if result == SKIPPED:
            return BuildStep.finished(self, SKIPPED)
        if self.cmd.stderr != '':
            self.addCompleteLog('stderr', self.cmd.stderr)

        if self.cmd.rc is None or self.cmd.rc == 0:
            return BuildStep.finished(self, SUCCESS)
        return BuildStep.finished(self, FAILURE)
Ejemplo n.º 36
0
 def __init__(self, treename, l10nbuilds, cb=None, **kwargs):
     '''Create a TreeLoader step. In addition to the standard arguments,
     treename is the name of the tree,
     l10nbuilds is the local ini file describing the builds,
     cb is a callback with signature (tree, changes=None)
     '''
     BuildStep.__init__(self, **kwargs)
     self.addFactoryArguments(treename=treename,
                              l10nbuilds=l10nbuilds,
                              cb=cb)
     self.treename = treename
     self.l10nbuilds = l10nbuilds
     self.cb = cb
Ejemplo n.º 37
0
    def __init__(self, s, slavedest, workdir=None, maxsize=None, blocksize=16 * 1024, mode=None, **buildstep_kwargs):
        BuildStep.__init__(self, **buildstep_kwargs)
        self.addFactoryArguments(
            s=s, slavedest=slavedest, workdir=workdir, maxsize=maxsize, blocksize=blocksize, mode=mode
        )

        self.s = s
        self.slavedest = slavedest
        self.workdir = workdir
        self.maxsize = maxsize
        self.blocksize = blocksize
        assert isinstance(mode, (int, type(None)))
        self.mode = mode
Ejemplo n.º 38
0
    def setUp(self):
        config = """
from buildbot.status import html
from buildbot.process.factory import BasicBuildFactory
from buildbot.buildslave import BuildSlave
f1 = BasicBuildFactory('cvsroot', 'cvsmodule')
BuildmasterConfig = {
    'slaves': [BuildSlave('bot1', 'passwd1')],
    'schedulers': [],
    'builders': [{'name': 'builder1', 'slavename': 'bot1',
                  'builddir':'workdir', 'factory':f1}],
    'slavePortnum': 0,
    'status': [html.WebStatus(http_port=0)],
    }
"""
        if os.path.exists("test_logfile"):
            shutil.rmtree("test_logfile")
        os.mkdir("test_logfile")
        self.master = m = ConfiguredMaster("test_logfile", config)
        m.startService()
        # hack to find out what randomly-assigned port it is listening on
        port = self.find_webstatus(m).getPortnum()
        self.port = port
        # insert an event

        req = base.BuildRequest("reason", sourcestamp.SourceStamp())
        build1 = base.Build([req])
        bs = m.status.getBuilder("builder1").newBuild()
        bs.setReason("reason")
        bs.buildStarted(build1)

        step1 = BuildStep(name="setup")
        step1.setBuild(build1)
        bss = bs.addStepWithName("setup")
        step1.setStepStatus(bss)
        bss.stepStarted()

        log1 = step1.addLog("output")
        log1.addStdout("some stdout\n")
        log1.finish()

        log2 = step1.addHTMLLog("error", "<html>ouch</html>")

        log3 = step1.addLog("big")
        log3.addStdout("big log\n")
        for i in range(1000):
            log3.addStdout("a" * 500)
            log3.addStderr("b" * 500)
        log3.finish()

        log4 = step1.addCompleteLog("bigcomplete",
                                    "big2 log\n" + "a" * 1*1000*1000)

        step1.step_status.stepFinished(builder.SUCCESS)
        bs.buildFinished()
Ejemplo n.º 39
0
    def __init__(self, url, method, **kwargs):
        if txrequests is None:
            config.error("Need to install txrequest to use this step:\n\n pip install txrequests")

        if method not in ('POST', 'GET', 'PUT', 'DELETE', 'HEAD', 'OPTIONS'):
            config.error("Wrong method given: '%s' is not known" % method)

        self.method = method
        self.url = url

        for param in HTTPStep.requestsParams:
            setattr(self, param, kwargs.pop(param, None))

        BuildStep.__init__(self, **kwargs)
Ejemplo n.º 40
0
    def __init__(self, url, method, **kwargs):
        if txrequests is None or requests is None:
            config.error("Need to install txrequest to use this step:\n\n pip install txrequests")

        if method not in ('POST', 'GET', 'PUT', 'DELETE', 'HEAD', 'OPTIONS'):
            config.error("Wrong method given: '%s' is not known" % method)

        self.method = method
        self.url = url

        for param in HTTPStep.requestsParams:
            setattr(self, param, kwargs.pop(param, None))

        BuildStep.__init__(self, **kwargs)
Ejemplo n.º 41
0
    def __init__(self, slavesrc, masterdest,
                 workdir=None, maxsize=None, blocksize=16*1024,
                 compress=None, url=None, **buildstep_kwargs):
        BuildStep.__init__(self, **buildstep_kwargs)

        self.slavesrc = slavesrc
        self.masterdest = masterdest
        self.workdir = workdir
        self.maxsize = maxsize
        self.blocksize = blocksize
        if compress not in (None, 'gz', 'bz2'):
            config.error(
                "'compress' must be one of None, 'gz', or 'bz2'")
        self.compress = compress
        self.url = url
Ejemplo n.º 42
0
 def test_addStep_ArgumentsInTheWrongPlace(self):
     self.assertRaises(TypeError,
                       self.factory.addStep,
                       BuildStep(),
                       name="name")
     # this also raises a deprecation error, which we don't care about (see
     # test_s)
     self.flushWarnings()
Ejemplo n.º 43
0
    def finished(self, result):
        self.step_status.setText(['create', self.snippetType, 'snippet'])
        if self.cmd and self.cmd.stderr != '':
            self.addCompleteLog('stderr', self.cmd.stderr)

        if self.stdio_log:
            self.stdio_log.addStdout("Snippet generation complete\n\n")

        if self.cmd:
            if self.cmd.rc is None or self.cmd.rc == 0:
                # Other BuildSteps will probably want this data.
                self.setProperty(
                    self.snippetType + 'snippetFilename',
                    path.join(self.updateDir, self.snippetFilename))

                return BuildStep.finished(self, SUCCESS)
        return BuildStep.finished(self, result)
Ejemplo n.º 44
0
    def __init__(self,
                 s,
                 slavedest,
                 workdir=None,
                 maxsize=None,
                 blocksize=16 * 1024,
                 mode=None,
                 **buildstep_kwargs):
        BuildStep.__init__(self, **buildstep_kwargs)

        self.s = s
        self.slavedest = slavedest
        self.workdir = workdir
        self.maxsize = maxsize
        self.blocksize = blocksize
        if not isinstance(mode, (int, type(None))):
            config.error('mode must be an integer or None')
        self.mode = mode
Ejemplo n.º 45
0
 def checker(step: BuildStep) -> bool:
     if artifact_type not in ['sdks', 'cache', 'build']:
         raise ValueError("is_artifact_save_necessary: Unsupported artifact type {!r}".format(artifact_type))
     artifact_produced_property = "produce_{}_artifacts".format(artifact_type)
     #print("DEBUG: {!r} property = {!r}".format(
     #    artifact_produced_property, step.getProperty(artifact_produced_property)))
     #print("DEBUG: {!r} property .split() = {!r}".format(
     #    "artifacts_produced", str(step.getProperty("artifacts_produced")).split()))
     #print("DEBUG: my boolean evaluation = {!r}".format(
     #    bool(step.getProperty(artifact_produced_property)) and
     #    (artifact_type in
     #     str(step.getProperty("artifacts_produced")).split())
     #))
     return (
         bool(step.getProperty(artifact_produced_property)) and
         (artifact_type in
          str(step.getProperty("artifacts_produced")).split())
     )
Ejemplo n.º 46
0
    def __init__(self, mastersrc, slavedest,
                 workdir=None, maxsize=None, blocksize=16*1024, mode=None,
                 **buildstep_kwargs):
        BuildStep.__init__(self, **buildstep_kwargs)
        self.addFactoryArguments(mastersrc=mastersrc,
                                 slavedest=slavedest,
                                 workdir=workdir,
                                 maxsize=maxsize,
                                 blocksize=blocksize,
                                 mode=mode,
                                 )

        self.mastersrc = mastersrc
        self.slavedest = slavedest
        self.workdir = workdir
        self.maxsize = maxsize
        self.blocksize = blocksize
        assert isinstance(mode, (int, type(None)))
        self.mode = mode
Ejemplo n.º 47
0
    def __init__(self, slavesrc, masterdest,
                 workdir="build", maxsize=None, blocksize=16*1024,
                 compress=None, **buildstep_kwargs):
        BuildStep.__init__(self, **buildstep_kwargs)
        self.addFactoryArguments(slavesrc=slavesrc,
                                 masterdest=masterdest,
                                 workdir=workdir,
                                 maxsize=maxsize,
                                 blocksize=blocksize,
                                 compress=compress,
                                 )

        self.slavesrc = slavesrc
        self.masterdest = masterdest
        self.workdir = workdir
        self.maxsize = maxsize
        self.blocksize = blocksize
        assert compress in (None, 'gz', 'bz2')
        self.compress = compress
Ejemplo n.º 48
0
    def __init__(self,
                 command,
                 description=None,
                 descriptionDone=None,
                 **kwargs):
        BuildStep.__init__(self, **kwargs)
        self.addFactoryArguments(description=description,
                                 descriptionDone=descriptionDone,
                                 command=command)

        self.command = command
        if description:
            self.description = description
        if isinstance(self.description, str):
            self.description = [self.description]
        if descriptionDone:
            self.descriptionDone = descriptionDone
        if isinstance(self.descriptionDone, str):
            self.descriptionDone = [self.descriptionDone]
Ejemplo n.º 49
0
    def __init__(self, objdir, milestone, baseurl, appendDatedDir=True):
        BuildStep.__init__(self)

        major, minor, point = buildbot.version.split(".", 3)
        # Buildbot 0.7.5 and below do not require this
        if int(minor) >= 7 and int(point) >= 6:
            self.addFactoryArguments(objdir=objdir,
                                     milestone=milestone,
                                     baseurl=baseurl,
                                     appendDatedDir=appendDatedDir)

        # This seems like a reasonable place to store snippets
        self.updateDir = path.join(objdir, 'dist', 'update')
        self.milestone = milestone
        self.baseurl = baseurl
        self.appendDatedDir = appendDatedDir
        self.maxsize = 16384
        self.mode = None
        self.blocksize = 4096
Ejemplo n.º 50
0
    def __init__(self,
                 description=None,
                 descriptionDone=None,
                 descriptionSuffix=None,
                 **kw):
        BuildStep.__init__(self, **kw)

        # GR: taken from master, apparently not handled by base class
        if description:
            self.description = description
        if isinstance(description, str):
            self.description = [self.description]
        if descriptionDone:
            self.descriptionDone = descriptionDone
        if isinstance(descriptionDone, str):
            self.descriptionDone = [self.descriptionDone]
        if descriptionSuffix:
            self.descriptionSuffix = descriptionSuffix
        if isinstance(descriptionSuffix, str):
            self.descriptionSuffix = [self.descriptionSuffix]
Ejemplo n.º 51
0
    def __init__(self,
                 slavesrc,
                 masterdest,
                 workdir=None,
                 maxsize=None,
                 blocksize=16 * 1024,
                 compress=None,
                 url=None,
                 **buildstep_kwargs):
        BuildStep.__init__(self, **buildstep_kwargs)

        self.slavesrc = slavesrc
        self.masterdest = masterdest
        self.workdir = workdir
        self.maxsize = maxsize
        self.blocksize = blocksize
        if compress not in (None, 'gz', 'bz2'):
            config.error("'compress' must be one of None, 'gz', or 'bz2'")
        self.compress = compress
        self.url = url
Ejemplo n.º 52
0
    def __init__(self, s, slavedest,
                 workdir=None, maxsize=None, blocksize=16*1024, mode=None,
                 **buildstep_kwargs):
        BuildStep.__init__(self, **buildstep_kwargs)
        self.addFactoryArguments(s=s,
                                 slavedest=slavedest,
                                 workdir=workdir,
                                 maxsize=maxsize,
                                 blocksize=blocksize,
                                 mode=mode,
                                 )

        self.s = s
        self.slavedest = slavedest
        self.workdir = workdir
        self.maxsize = maxsize
        self.blocksize = blocksize
        if not isinstance(mode, (int, type(None))):
            raise config.ConfigErrors([
                'mode must be an integer or None' ])
        self.mode = mode
Ejemplo n.º 53
0
    def __init__(self,
                 slavesrc,
                 masterdest,
                 workdir=None,
                 maxsize=None,
                 blocksize=16 * 1024,
                 mode=None,
                 keepstamp=False,
                 url=None,
                 **buildstep_kwargs):
        BuildStep.__init__(self, **buildstep_kwargs)

        self.slavesrc = slavesrc
        self.masterdest = masterdest
        self.workdir = workdir
        self.maxsize = maxsize
        self.blocksize = blocksize
        if not isinstance(mode, (int, type(None))):
            config.error('mode must be an integer or None')
        self.mode = mode
        self.keepstamp = keepstamp
        self.url = url
Ejemplo n.º 54
0
    def __init__(self, command,
                 description=None, descriptionDone=None,
                 env=None, path=None, usePTY=0,
                 **kwargs):
        BuildStep.__init__(self, **kwargs)
        self.addFactoryArguments(description=description,
                                 descriptionDone=descriptionDone,
                                 env=env, path=path, usePTY=usePTY,
                                 command=command)

        self.command=command
        if description:
            self.description = description
        if isinstance(self.description, str):
            self.description = [self.description]
        if descriptionDone:
            self.descriptionDone = descriptionDone
        if isinstance(self.descriptionDone, str):
            self.descriptionDone = [self.descriptionDone]
        self.env=env
        self.path=path
        self.usePTY=usePTY
Ejemplo n.º 55
0
    def __init__(self,
                 builderNames=None,
                 isRelevant=None,
                 preProcess=None,
                 **kwargs):
        BuildStep.__init__(self, **kwargs)

        self._builder_names = builderNames

        if isRelevant is None:
            config.error('You must provide a function to check '
                         'if a build is relevant')
        if not callable(isRelevant):
            config.error('isRelevant must be a callable')

        if preProcess is None:
            preProcess = lambda x: x

        if not callable(preProcess):
            config.error('preProcess must be callable')

        self._is_relevant = isRelevant
        self._pre_process = preProcess
Ejemplo n.º 56
0
    def __init__(self, slavesrc, masterdest,
                 workdir=None, maxsize=None, blocksize=16*1024,
                 compress=None, url=None, **buildstep_kwargs):
        BuildStep.__init__(self, **buildstep_kwargs)
        self.addFactoryArguments(slavesrc=slavesrc,
                                 masterdest=masterdest,
                                 workdir=workdir,
                                 maxsize=maxsize,
                                 blocksize=blocksize,
                                 compress=compress,
                                 url=url,
                                 )

        self.slavesrc = slavesrc
        self.masterdest = masterdest
        self.workdir = workdir
        self.maxsize = maxsize
        self.blocksize = blocksize
        if compress not in (None, 'gz', 'bz2'):
            raise config.ConfigErrors([
                "'compress' must be one of None, 'gz', or 'bz2'" ])
        self.compress = compress
        self.url = url
Ejemplo n.º 57
0
 def __init__(self,
              url,
              method,
              description=None,
              descriptionDone=None,
              **kwargs):
     if txrequests is None or requests is None:
         config.error(
             "Need to install txrequest to use this step:\n\n pip install txrequests"
         )
     self.method = method
     self.url = url
     self.requestkwargs = {'method': method, 'url': url}
     for p in HTTPStep.requestsParams:
         v = kwargs.pop(p, None)
         self.__dict__[p] = v
     if method not in ('POST', 'GET', 'PUT', 'DELETE', 'HEAD', 'OPTIONS'):
         config.error("Wrong method given: '%s' is not known" % method)
     if description is not None:
         self.description = description
     if descriptionDone is not None:
         self.descriptionDone = descriptionDone
     BuildStep.__init__(self, **kwargs)
Ejemplo n.º 58
0
    def test_addStep(self):
        # create a string random string that will probably not collide
        # with what is already in the factory
        string = ''.join(choice(ascii_uppercase) for x in range(6))
        length = len(self.factory.steps)

        step = BuildStep(name=string)
        self.factory.addStep(step)

        # check if the number of nodes grew by one
        self.assertTrue(length + 1, len(self.factory.steps))
        # check if the 'right' node added in the factory
        self.assertEqual(self.factory.steps[-1],
                         _BuildStepFactory(BuildStep, name=string))
Ejemplo n.º 59
0
    def __init__(self, command,
                 description=None, descriptionDone=None, descriptionSuffix=None,
                 env=None, path=None, usePTY=0, interruptSignal="KILL",
                 **kwargs):
        BuildStep.__init__(self, **kwargs)

        self.command = command
        if description:
            self.description = description
        if isinstance(self.description, str):
            self.description = [self.description]
        if descriptionDone:
            self.descriptionDone = descriptionDone
        if isinstance(self.descriptionDone, str):
            self.descriptionDone = [self.descriptionDone]
        if descriptionSuffix:
            self.descriptionSuffix = descriptionSuffix
        if isinstance(self.descriptionSuffix, str):
            self.descriptionSuffix = [self.descriptionSuffix]
        self.env = env
        self.path = path
        self.usePTY = usePTY
        self.interruptSignal = interruptSignal
Ejemplo n.º 60
0
    def test_init_none(self):
        """Default steps can be uninitialized by setting None"""

        self.factory = GNUAutoconf(source=BuildStep(),
                                   compile=None,
                                   test=None,
                                   distcheck=None)
        for step in self.factory.steps:
            try:
                cmd = step.buildStep().command
                self.assertNotIn(cmd, [['make', 'all'], ['make', 'check'],
                                       ['make', 'distcheck']],
                                 f"Build step {cmd} should not be present.")
            except (AttributeError, KeyError):
                pass