Skip to content

Commit a34f485

Browse files
committed
Add tests for schedule and run model
Signed-off-by: Keshav Priyadarshi <git@keshav.space>
1 parent 2ffbb24 commit a34f485

2 files changed

Lines changed: 59 additions & 10 deletions

File tree

vulnerabilities/models.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1949,16 +1949,17 @@ def run_failed(self):
19491949
fail_exitcode = self.run_exitcode and self.run_exitcode > 0
19501950

19511951
if not fail_exitcode:
1952-
job = self.job
1953-
if job.is_failed:
1954-
# Job was killed externally.
1955-
end_date = job.ended_at.replace(tzinfo=datetime.timezone.utc)
1956-
self.set_run_ended(
1957-
exitcode=1,
1958-
output=f"Killed from outside, exc_info={job.latest_result().exc_string}",
1959-
end_date=end_date,
1960-
)
1961-
return True
1952+
with suppress(redis.exceptions.ConnectionError, AttributeError):
1953+
job = self.job
1954+
if job.is_failed:
1955+
# Job was killed externally.
1956+
end_date = job.ended_at.replace(tzinfo=datetime.timezone.utc)
1957+
self.set_run_ended(
1958+
exitcode=1,
1959+
output=f"Killed from outside, exc_info={job.latest_result().exc_string}",
1960+
end_date=end_date,
1961+
)
1962+
return True
19621963

19631964
return fail_exitcode
19641965

vulnerabilities/tests/test_models.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -645,3 +645,51 @@ def test_advisory_insert_no_duplicate_content_id(self):
645645
date_collected=date,
646646
created_by="test_pipeline",
647647
)
648+
649+
650+
from unittest.mock import patch
651+
652+
653+
class TestPipelineRunModel(DjangoTestCase):
654+
def setUp(self):
655+
self.schedule1 = models.PipelineSchedule.objects.create(pipeline_id="test_pipeline")
656+
self.run1 = models.PipelineRun.objects.create(pipeline=self.schedule1)
657+
658+
def test_pipelinerun_set_run_failed(self):
659+
self.run1.set_run_ended(exitcode=1, output="some failure")
660+
self.assertTrue(self.run1.run_failed)
661+
662+
def test_pipelinerun_set_run_queued(self):
663+
self.assertEqual(self.run1.status, self.run1.Status.QUEUED)
664+
665+
def test_pipelinerun_set_running(self):
666+
self.run1.set_run_started()
667+
self.assertEqual(self.run1.status, self.run1.Status.RUNNING)
668+
669+
@patch("vulnerabilities.tasks.dequeue_job", return_value="")
670+
def test_pipelinerun_stopped(self, mock_dequeue):
671+
self.run1.stop_run()
672+
self.assertEqual(self.run1.status, self.run1.Status.STOPPED)
673+
674+
def test_pipelinerun_success(self):
675+
self.run1.set_run_ended(exitcode=0)
676+
self.assertEqual(self.run1.status, self.run1.Status.SUCCESS)
677+
678+
679+
class TestPipelineScheduleModel(DjangoTestCase):
680+
def setUp(self):
681+
self.schedule1 = models.PipelineSchedule.objects.create(pipeline_id="test_pipeline")
682+
self.run1 = models.PipelineRun.objects.create(pipeline=self.schedule1)
683+
self.run1.set_run_started()
684+
self.run1.set_run_ended(exitcode=0)
685+
self.run2 = models.PipelineRun.objects.create(pipeline=self.schedule1)
686+
self.run2.set_run_started()
687+
688+
def test_pipelineschedule_status(self):
689+
self.assertEqual(self.schedule1.status, "running")
690+
691+
def test_pipelineschedule_latest_run_date(self):
692+
self.assertEqual(self.schedule1.latest_run_date, self.run2.created_date)
693+
694+
def test_pipelineschedule_all_runs(self):
695+
self.assertEqual(self.schedule1.all_runs.count(), 2)

0 commit comments

Comments
 (0)