Ejemplo n.º 1
0
class TestServerlessClient(tests.TestCase):

    def setUp(self):
        self.env_name = "test"
        self.stage = "prod"
        self.env_id = "12343434"
        self.build = '{"commit":"c5a7f50453fa70fefa41dc5b75e9b053fc5bba4b","id":"S2dUHIrFSMyDzdwO-6mgeA_c81d6b3","branch":"master","artifactUrl":"https://deployrepo.pinadmin.com/pinboard/pinboard-c5a7f50.tar.gz","repo":"P","name": "pinboard"}' 
        self.script_variables = '{"IS_DOCKER": "True"}'
        self.client = ServerlessClient(env_name=self.env_name, stage=self.stage, build=self.build,
                                       script_variables=self.script_variables) 

    def _new_report(self):
        report = PingReport()
        report.envName = self.env_name
        report.stageName = self.stage
        report.erroCode = 0
        report.envId  = self.env_id
        report.deployStage = None
        report.status = AgentStatus.SUCCEEDED
        return report
              
    def test_deploy_stage_trnasition(self):
        report = self._new_report()
        deploy_status = DeployStatus()
        deploy_status.report = report
        env_status = {self.env_name : deploy_status}

        deployStages = ['PRE_DOWNLOAD', 'DOWNLOADING', 'POST_DOWNLOAD', 'STAGING', 'PRE_RESTART', 'RESTARTING', 'POST_RESTART', 'SERVING_BUILD']

        for i in range(0, len(deployStages)):
            response = self.client.send_reports(env_status) 
            self.assertEqual(response.opCode, "DEPLOY")
            self.assertEqual(response.deployGoal.deployStage, deployStages[i])
            report.deployStage = response.deployGoal.deployStage
            report.deployId = response.deployGoal.deployId

        # test ending case
        response = self.client.send_reports(env_status)
        self.assertEqual(response.deployGoal, None)
 
    def test_errorcode_stop_deployment(self):
        report = self._new_report()
        deploy_status = DeployStatus()
        deploy_status.report = report
        env_status = {self.env_name : deploy_status}

        # first try is allowed.
        report.errorCode = 123 
        response = self.client.send_reports(env_status)
        report.deployStage = response.deployGoal.deployStage
        report.deployId = response.deployGoal.deployId

        response = self.client.send_reports(env_status)
        self.assertEqual(response, None)

    def test_unknow_status_cause_retry(self):
        report = self._new_report()
        deploy_status = DeployStatus()
        deploy_status.report = report
        env_status = {self.env_name : deploy_status}

        report.status = AgentStatus.UNKNOWN 
        response = self.client.send_reports(env_status)
        report.deployStage = response.deployGoal.deployStage
        report.deployId = response.deployGoal.deployId

        response = self.client.send_reports(env_status)
        self.assertEqual(response.deployGoal.deployStage, 'PRE_DOWNLOAD')