mirror of https://github.com/sipwise/repoapi.git
* move build_resume logic to a task * move build_resume logic tests to test_task Change-Id: I6eafc2d0af14174cce7c96fa35998b63d6545f47changes/46/38446/1
parent
17709467f0
commit
e6a6f46e26
@ -0,0 +1,149 @@
|
||||
# Copyright (C) 2017 The Sipwise Team - http://sipwise.com
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the Free
|
||||
# Software Foundation, either version 3 of the License, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
# more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
from unittest.mock import call
|
||||
from unittest.mock import patch
|
||||
|
||||
from django.test import override_settings
|
||||
from django.test import TestCase
|
||||
|
||||
from build.models import BuildRelease
|
||||
from repoapi.models import JenkinsBuildInfo
|
||||
|
||||
|
||||
@override_settings(DEBUG=True, JBI_ALLOWED_HOSTS=["fake.local"])
|
||||
@patch("repoapi.utils.dlfile")
|
||||
@patch("build.tasks.trigger_build")
|
||||
class JBIManageTest(TestCase):
|
||||
fixtures = [
|
||||
"test_models",
|
||||
]
|
||||
release = "release-mr8.1"
|
||||
release_uuid = "dbe569f7-eab6-4532-a6d1-d31fb559648b"
|
||||
|
||||
def test_jbi_manage_ok_release_job(self, tb, dl):
|
||||
br = BuildRelease.objects.get(uuid=self.release_uuid)
|
||||
self.assertEqual(br.pool_size, 0)
|
||||
JenkinsBuildInfo.objects.create(
|
||||
job_url="http://fake.local/job/release-copy-debs-yml/",
|
||||
projectname="release-copy-debs-yml",
|
||||
jobname="release-copy-debs-yml",
|
||||
tag="UUIDA",
|
||||
param_release=self.release,
|
||||
param_release_uuid=self.release_uuid,
|
||||
buildnumber=1,
|
||||
result="SUCCESS",
|
||||
)
|
||||
params = {
|
||||
"project": "data-hal-get-code",
|
||||
"release_uuid": br.uuid,
|
||||
"trigger_release": br.release,
|
||||
"trigger_branch_or_tag": br.branch_or_tag,
|
||||
"trigger_distribution": br.distribution,
|
||||
}
|
||||
tb.assert_called_once_with(**params)
|
||||
br = BuildRelease.objects.get(uuid=self.release_uuid)
|
||||
self.assertEqual(br.pool_size, 1)
|
||||
self.assertEqual(br.triggered_projects, "data-hal")
|
||||
|
||||
@override_settings(BUILD_POOL=2)
|
||||
def test_jbi_manage_pool(self, tb, dl):
|
||||
br = BuildRelease.objects.get(uuid=self.release_uuid)
|
||||
self.assertEqual(br.pool_size, 0)
|
||||
JenkinsBuildInfo.objects.create(
|
||||
job_url="http://fake.local/job/release-copy-debs-yml/",
|
||||
projectname="release-copy-debs-yml",
|
||||
jobname="release-copy-debs-yml",
|
||||
tag="UUIDA",
|
||||
param_release="mr8.1",
|
||||
param_release_uuid=self.release_uuid,
|
||||
buildnumber=1,
|
||||
result="SUCCESS",
|
||||
)
|
||||
br = BuildRelease.objects.get(id=br.pk)
|
||||
self.assertEqual(br.built_projects, "release-copy-debs-yml")
|
||||
params = {
|
||||
"project": "data-hal-get-code",
|
||||
"release_uuid": br.uuid,
|
||||
"trigger_release": br.release,
|
||||
"trigger_branch_or_tag": br.branch_or_tag,
|
||||
"trigger_distribution": br.distribution,
|
||||
}
|
||||
calls = [call(**params)]
|
||||
params["project"] = "libinewrate-get-code"
|
||||
calls.append(call(**params))
|
||||
tb.assert_has_calls(calls)
|
||||
br = BuildRelease.objects.get(pk=br.pk)
|
||||
self.assertEqual(br.pool_size, 2)
|
||||
self.assertEqual(br.triggered_projects, "data-hal,libinewrate")
|
||||
|
||||
@override_settings(BUILD_POOL=2)
|
||||
def test_jbi_manage_pool_building(self, tb, dl):
|
||||
self.test_jbi_manage_pool()
|
||||
br = BuildRelease.objects.get(uuid=self.release_uuid)
|
||||
self.assertEqual(br.pool_size, 2)
|
||||
JenkinsBuildInfo.objects.create(
|
||||
job_url="http://fake.local/job/data-hal-binaries/",
|
||||
projectname="data-hal",
|
||||
jobname="data-hal-binaries",
|
||||
tag="UUIDA",
|
||||
param_release=self.release,
|
||||
param_release_uuid=self.release_uuid,
|
||||
buildnumber=1,
|
||||
result="SUCCESS",
|
||||
)
|
||||
br = BuildRelease.objects.get(id=br.pk)
|
||||
self.assertEqual(br.pool_size, 2)
|
||||
self.assertEqual(br.triggered_projects, "data-hal,libinewrate")
|
||||
JenkinsBuildInfo.objects.create(
|
||||
job_url="http://fake.local/job/libinewrate-binaries/",
|
||||
projectname="libinewrate",
|
||||
jobname="libinewrate-binaries",
|
||||
tag="UUIDA",
|
||||
param_release=self.release,
|
||||
param_release_uuid=self.release_uuid,
|
||||
buildnumber=1,
|
||||
result="SUCCESS",
|
||||
)
|
||||
br = BuildRelease.objects.get(pk=br.pk)
|
||||
self.assertEqual(br.pool_size, 2)
|
||||
self.assertEqual(br.triggered_projects, "data-hal,libinewrate")
|
||||
|
||||
@override_settings(BUILD_POOL=2)
|
||||
def test_jbi_manage_pool_next(self, tb, dl):
|
||||
self.test_jbi_manage_pool()
|
||||
br = BuildRelease.objects.get(uuid=self.release_uuid)
|
||||
self.assertEqual(br.pool_size, 2)
|
||||
JenkinsBuildInfo.objects.create(
|
||||
job_url="http://fake.local/job/data-hal-repos/",
|
||||
projectname="data-hal",
|
||||
jobname="data-hal-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.assertEqual(br.built_projects, "release-copy-debs-yml,data-hal")
|
||||
params = {
|
||||
"project": "libswrate-get-code",
|
||||
"release_uuid": br.uuid,
|
||||
"trigger_release": br.release,
|
||||
"trigger_branch_or_tag": br.branch_or_tag,
|
||||
"trigger_distribution": br.distribution,
|
||||
}
|
||||
tb.assert_called_once_with(**params)
|
||||
self.assertEqual(br.pool_size, 2)
|
||||
self.assertEqual(br.triggered_projects, "libinewrate,libswrate")
|
Loading…
Reference in new issue