def test_heartbeat_builds(self):
        build1 = BuildJobFactory()
        BuildJobStatusFactory(job=build1, status=JobLifeCycle.SCHEDULED)
        build2 = BuildJobFactory()
        BuildJobStatusFactory(job=build2, status=JobLifeCycle.CREATED)
        build3 = BuildJobFactory()
        BuildJobStatusFactory(job=build3, status=JobLifeCycle.FAILED)
        build4 = BuildJobFactory()
        BuildJobStatusFactory(job=build4, status=JobLifeCycle.RUNNING)

        with patch('scheduler.tasks.build_jobs.build_jobs_check_heartbeat.apply_async') as mock_fct:
            heartbeat_builds()

        assert mock_fct.call_count == 1
    def test_build_jobs_check_heartbeat(self):
        build1 = BuildJobFactory()
        BuildJobStatusFactory(job=build1, status=JobLifeCycle.RUNNING)
        RedisHeartBeat.build_ping(build_id=build1.id)
        build2 = BuildJobFactory()
        BuildJobStatusFactory(job=build2, status=JobLifeCycle.RUNNING)

        build_jobs_check_heartbeat(build1.id)
        build1.refresh_from_db()
        self.assertEqual(build1.last_status, JobLifeCycle.RUNNING)

        build_jobs_check_heartbeat(build2.id)
        build2.refresh_from_db()
        self.assertEqual(build2.last_status, JobLifeCycle.FAILED)
Exemple #3
0
 def _reconcile_done(self, client):
     BuildJobStatusFactory(job=self.build, status='failed')
     with patch('k8s_events_handlers.tasks.'
                'k8s_events_reconcile_build_job_statuses.apply_async') as mock_fct:
         resp = client.post(self.url, data={'status': 'succeeded'})
     assert mock_fct.call_count == 0
     assert resp.status_code == status.HTTP_200_OK