예제 #1
0
def checkIssueState(req):
    result = req.get("result")
    parameters = result.get('parameters')

    if parameters is None:
        return {}

    issueNo = Common.getParameter(req, None, 'issueNo')
    issue = Issue.fromIssueNo(issueNo)
    speech = '%s is %s.' % (issue.key, issue.statusName)

    return Common.makeCommonResponse(speech)
예제 #2
0
    def testPrintTimeDelta(self):
        timeDelta = dt.timedelta(hours=12, minutes=35, seconds=23)
        timeDeltaStr = Common.printTimeDelta(timeDelta)
        self.assertEqual(timeDeltaStr,
                         "12 hours, 35 minutes, 23 seconds later")

        timeDeltaBefore = dt.timedelta(hours=-12, minutes=35, seconds=23)
        timeDeltaBeforeStr = Common.printTimeDelta(timeDeltaBefore)
        self.assertEqual(timeDeltaBeforeStr,
                         "12 hours, 35 minutes, 23 seconds ago")

        timeDeltaBefore = dt.timedelta(minutes=35, seconds=23)
        timeDeltaBeforeStr = Common.printTimeDelta(timeDeltaBefore)
        self.assertEqual(timeDeltaBeforeStr, "35 minutes, 23 seconds later")
예제 #3
0
def checkIssueDeploymentState(req):
    result = req.get("result")
    parameters = result.get('parameters')

    if parameters is None:
        return {}

    issueNo = Common.getParameter(req, None, 'issueNo')
    tense = Common.getParameter(req, None, 'tense')

    issue = Issue.fromIssueNo(issueNo)

    matchParameters = {'isDeployed': issue.isDeployed, 'tense': tense}

    message = Common.getMessageFromFile('outputs.yaml', 'checkIssueDeployment',
                                        matchParameters)

    deploymentDate = issue.deploymentDate
    if deploymentDate is not None:
        deploymentDate = Common.printDateTime(deploymentDate)

    message = Common.fillParameters(
        {
            'issueNo': issue.key,
            'deploymentDate': deploymentDate,
            'nextDeploymentDate': Common.printTimeDelta(
                issue.timeToNextDeployment)
        }, message)

    speech = message

    return Common.makeCommonResponse(speech)
예제 #4
0
def checkReleaseState(req):
    result = req.get("result")
    parameters = result.get('parameters')
    if parameters is None:
        return {}

    releaseName = Common.getParameter(req, 'release-name-context',
                                      'release-name')
    if releaseName is None:
        return {}

    releaseState = Common.getParameter(req, 'release-name-context',
                                       'release-state')
    if releaseState is None:
        return {}

    result, build = findBuildState(releaseName)
    speech = "%s release is %s" % (releaseName, result.value)
    return Common.makeCommonResponse(speech)
예제 #5
0
 def testParameterFilling(self):
     build = BambooAdapter.Build()
     build.lifeCycleState = 'Running'
     build.buildRelativeTime = '12:00:00'
     valuesToFill = {'build': build, 'releaseName': 'prod'}
     filledString = Common.fillParameters(
         valuesToFill,
         '{releaseName} release is completed at {build.buildRelativeTime}.')
     self.assertEqual(filledString,
                      'prod release is completed at 12:00:00.')
예제 #6
0
 def testGetModelFromFile2(self):
     parameters = {
         'tense': 'past',
         'currentBuildState': BambooAdapter.BuildState.RUNNING.value
     }
     message = Common.getMessageFromFile('outputs.yaml', 'checkReleaseTime',
                                         parameters)
     self.assertEqual(
         message,
         '{releaseName} will be completed in {build.prettyTimeRemaining}.')
예제 #7
0
 def testGetModelFromFile(self):
     parameters = {
         'releaseState': 'running',
         'tense': 'past',
         'buildResult': BambooAdapter.BuildState.COMPLETE.value
     }
     message = Common.getMessageFromFile('outputs.yaml', 'checkReleaseTime',
                                         parameters)
     self.assertEqual(
         message,
         '{releaseName} release is completed {build.buildRelativeTime}.')
예제 #8
0
    def testParameterFillingWithMethodPassing(self):
        def timeToNextBuild(values):
            releaseName = values.get('releaseName')
            if releaseName == 'prod':
                return '3:11:00'
            else:
                return '2:00:00'

        valuesToFill = {
            'releaseName': 'prod',
            'timeToNextBuild': timeToNextBuild
        }
        filledString = Common.fillParameters(
            valuesToFill,
            '{releaseName} release will start in {timeToNextBuild} hours.')
        self.assertEqual(filledString,
                         'prod release will start in 3:11:00 hours.')
예제 #9
0
def checkReleaseTime(req):
    result = req.get("result")
    parameters = result.get('parameters')

    if parameters is None:
        return {}

    releaseName = Common.getParameter(req, 'release-name-context',
                                      'release-name')

    tense = Common.getParameter(req, 'release-name-context', 'tense')

    askedReleaseState = Common.getParameter(req, 'release-name-context',
                                            'release-state')

    currentBuildState, build = findBuildState(releaseName)

    matchParameters = {
        'askedBuildState': askedReleaseState,
        'tense': tense,
        'currentBuildState': currentBuildState.value
    }

    message = Common.getMessageFromFile('outputs.yaml', 'checkReleaseTime',
                                        matchParameters)

    message = Common.fillParameters(
        {
            'releaseName': releaseName,
            'build': build,
            'timeToNextBuild': timeToNextBuild
        }, message)

    speech = message

    return Common.makeCommonResponse(speech)
예제 #10
0
 def testPrintDatetime(self):
     datetime = dateutil.parser.parse('2017-01-02T12:22:36.686+0200')
     datetimeText = Common.printDateTime(datetime)
     self.assertEqual(datetimeText, '02 January 2017 13:22:36')
예제 #11
0
 def testParameterExtraction(self):
     matches = Common.extractParametersFromText(
         '{hello} beautiful {world} tell me {some.Joke}')
     self.assertEqual(matches, ['hello', 'world', 'some.Joke'])