From dc4d12a68f779a8ce4078519c9f1742f70a99133 Mon Sep 17 00:00:00 2001 From: Victor Seva Date: Mon, 4 Jul 2022 13:18:24 +0200 Subject: [PATCH] TT#15305 build: don't trigger build_matrix if not done Change-Id: I0832426b87d639ea85f2cd261d3313a8b6663ffc --- build/tasks.py | 3 +++ build/test/test_tasks.py | 53 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/build/tasks.py b/build/tasks.py index 869830d..ed0e1f4 100644 --- a/build/tasks.py +++ b/build/tasks.py @@ -94,6 +94,9 @@ def build_resume(pk): br.append_triggered(prj) else: log.debug("BuildRelease has no next") + if not br.done: + log.debug("not done yet") + continue if br.release == "release-trunk-weekly": url = trigger_build_matrix(br) if url is not None: diff --git a/build/test/test_tasks.py b/build/test/test_tasks.py index f5f2d96..631bd20 100644 --- a/build/test/test_tasks.py +++ b/build/test/test_tasks.py @@ -18,6 +18,7 @@ from unittest.mock import patch from django.test import override_settings from build.models import BuildRelease +from build.utils import remove_from_textlist from repoapi.models import JenkinsBuildInfo from repoapi.test.base import BaseTest @@ -293,3 +294,55 @@ class WeeklyTest(BaseTest): self.assertEqual(br.pool_size, 0) tb.assert_not_called() tbm.assert_called_once_with(br) + + @override_settings(BUILD_POOL=2) + def test_jbi_manage_failed(self, tbm, tb, dl): + br = BuildRelease.objects.get(uuid=self.release_uuid) + remove_from_textlist(br, "built_projects", "installer") + JenkinsBuildInfo.objects.create( + job_url="http://fake.local/job/installer-repos/", + projectname="installer", + jobname="installer-repos", + tag="UUIDB", + param_release=self.release, + param_release_uuid=self.release_uuid, + buildnumber=1, + result="FAILURE", + ) + JenkinsBuildInfo.objects.create( + job_url="http://fake.local/job/ngcp-prompts-repos/", + projectname="ngcp-prompts", + jobname="ngcp-prompts-repos", + tag="UUIDA", + param_release=self.release, + param_release_uuid=self.release_uuid, + buildnumber=1, + result="SUCCESS", + ) + br = BuildRelease.objects.get(pk=br.pk) + self.assertTrue(br.built_projects.endswith("ngcp-prompts")) + self.assertEqual(br.pool_size, 0) + tb.assert_not_called() + tbm.assert_not_called() + + @override_settings(BUILD_POOL=2) + def test_jbi_manage_building(self, tbm, tb, dl): + br = BuildRelease.objects.get(uuid=self.release_uuid) + remove_from_textlist(br, "built_projects", "installer") + br.append_triggered("installer") + self.assertEqual(br.pool_size, 1) + JenkinsBuildInfo.objects.create( + job_url="http://fake.local/job/ngcp-prompts-repos/", + projectname="ngcp-prompts", + jobname="ngcp-prompts-repos", + tag="UUIDA", + param_release=self.release, + param_release_uuid=self.release_uuid, + buildnumber=1, + result="SUCCESS", + ) + br = BuildRelease.objects.get(pk=br.pk) + self.assertTrue(br.built_projects.endswith("ngcp-prompts")) + self.assertEqual(br.pool_size, 0) + tb.assert_not_called() + tbm.assert_not_called()