Example #1
0
def import_builds_for_job(job_pk):
    """
    Import all Builds for a job using the job_pk.

    TODO: Add testing - only used by command-line tool just now.
    """
    job = Job.objects.get(pk=job_pk)

    logging.info("Located job %s\n" % job)

    client = job.server.get_client()

    logging.info("Using server at %s\n" % job.server.url)

    jenkins_job = client.get_job(job.name)

    good_build_numbers = list(jenkins_job.get_build_ids())
    logging.info("%s\n" % good_build_numbers)

    for build_number in good_build_numbers:
        import_build_for_job(job.pk, build_number)
Example #2
0
def import_builds_for_job(job_pk):
    """
    Import all Builds for a job using the job_pk.

    TODO: Add testing - only used by command-line tool just now.
    """
    job = Job.objects.get(pk=job_pk)

    logging.info("Located job %s\n" % job)

    client = job.server.get_client()

    logging.info("Using server at %s\n" % job.server.url)

    jenkins_job = client.get_job(job.name)

    good_build_numbers = list(jenkins_job.get_build_ids())
    logging.info("%s\n" % good_build_numbers)

    for build_number in good_build_numbers:
        import_build_for_job(job.pk, build_number)
Example #3
0
    def test_import_build_for_job(self):
        """
        Import build for job should update the build with the details fetched
        from the Jenkins server, including fetching the artifact details.
        """
        user = User.objects.create_user("testing")
        job = JobFactory.create()
        build = BuildFactory.create(job=job, number=5)

        mock_job = mock.Mock(spec=jenkinsapi.job.Job)
        mock_build = mock.Mock(_data={"duration": 1000})

        mock_job.get_build.return_value = mock_build

        mock_build.get_status.return_value = "SUCCESS"
        mock_build.get_result_url.return_value = "http://localhost/123"
        mock_build.get_console.return_value = "This is the log"
        mock_build.get_artifacts.return_value = []
        parameters = [{
            "name": "BUILD_ID",
            "value": ""
        }, {
            "name": "REQUESTOR",
            "value": "testing"
        }]
        mock_build.get_actions.return_value = {"parameters": parameters}

        with mock.patch("jenkins.tasks.logging") as mock_logging:
            with mock.patch("jenkins.models.Jenkins") as mock_jenkins:
                mock_jenkins.return_value.get_job.return_value = mock_job
                result = import_build_for_job(build.pk)

        self.assertEqual(build.pk, result)
        mock_jenkins.assert_called_with(job.server.url,
                                        username=u"root",
                                        password=u"testing")

        mock_logging.assert_has_calls([
            mock.call.info("Located job %s\n" % job),
            mock.call.info("Using server at %s\n" % job.server.url),
            mock.call.info("Processing build details for %s #5" % job)
        ])

        build = Build.objects.get(pk=build.pk)
        self.assertEqual(1000, build.duration)
        self.assertEqual("SUCCESS", build.status)
        self.assertEqual("This is the log", build.console_log)
        self.assertEqual(parameters, build.parameters)
        self.assertEqual(user, build.requested_by)
Example #4
0
    def test_import_build_for_job(self):
        """
        Import build for job should update the build with the details fetched
        from the Jenkins server, including fetching the artifact details.
        """
        user = User.objects.create_user("testing")
        job = JobFactory.create()
        build = BuildFactory.create(job=job, number=5)

        mock_job = mock.Mock(spec=jenkinsapi.job.Job)
        mock_build = mock.Mock(_data={"duration": 1000})

        mock_job.get_build.return_value = mock_build

        mock_build.get_status.return_value = "SUCCESS"
        mock_build.get_result_url.return_value = "http://localhost/123"
        mock_build.get_console.return_value = "This is the log"
        mock_build.get_artifacts.return_value = []
        parameters = [{"name": "BUILD_ID", "value": ""},
                      {"name": "REQUESTOR", "value": "testing"}]
        mock_build.get_actions.return_value = {"parameters": parameters}

        with mock.patch("jenkins.tasks.logger") as mock_logger:
            with mock.patch("jenkins.models.Jenkins") as mock_jenkins:
                mock_jenkins.return_value.get_job.return_value = mock_job
                result = import_build_for_job(build.pk)

        self.assertEqual(build.pk, result)
        mock_jenkins.assert_called_with(
            job.server.url, username=u"root", password=u"testing")

        mock_logger.assert_has_calls(
            [mock.call.info("Located job %s\n" % job),
             mock.call.info("Using server at %s\n" % job.server.url),
             mock.call.info("Processing build details for %s #5" % job)])

        build = Build.objects.get(pk=build.pk)
        self.assertEqual(1000, build.duration)
        self.assertEqual("SUCCESS", build.status)
        self.assertEqual("This is the log", build.console_log)
        self.assertEqual(parameters, build.parameters)
        self.assertEqual(user, build.requested_by)