From f0c9a16f90a9a31c811c156335644a27f6eb43a9 Mon Sep 17 00:00:00 2001 From: Victor Seva Date: Thu, 29 Sep 2022 14:26:45 +0200 Subject: [PATCH] TT#15305 build: remove print on check_circular_dependencies * add some more tests for release process Change-Id: I784d3fba5f95b06543f8586df2b264e9a99386e8 --- build/fixtures/test_release_steps.yaml | 11 +++++ build/test/test_release.py | 61 ++++++++++++++++++++++++-- build/utils.py | 2 +- 3 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 build/fixtures/test_release_steps.yaml diff --git a/build/fixtures/test_release_steps.yaml b/build/fixtures/test_release_steps.yaml new file mode 100644 index 0000000..baeec5d --- /dev/null +++ b/build/fixtures/test_release_steps.yaml @@ -0,0 +1,11 @@ +- model: build.buildrelease + pk: 1 + fields: + uuid: 5a1485a7-722e-4f85-a0fd-bc745549f19a + start_date: 2020-03-09 11:18:02.265202+00:00 + branch: mr11.0 + release: release-mr11.0 + distribution: bullseye + projects: asterisk-voicemail,backup-tools,bulk-processor,bulk-processor-projects,bootenv,cdr-exporter,cfg-schema,check-tools,cleanup-tools,cloudpbx-sources,csta-testsuite,data-hal,db-schema,deployment-iso,dhtest,documentation,faxserver,installer,kamailio,kamailio-config-tests,keyring,klish,libswrate,libtcap,license-client,lnpd,lua-ngcp-kamailio,mediator,megacli,metapackages,monitoring-tools,ngcp-admin-ui,ngcp-api-tools,ngcp-csc-ui,ngcp-cve-scanner,ngcp-exporter,ngcp-fauditd,ngcp-inventory,ngcp-js-api-client,ngcp-logfs,ngcp-klish-config,ngcp-panel,ngcp-prompts,ngcp-rest-api,ngcp-schema,ngcp-status,ngcp-sudo-plugin,ngcp-support,ngcp-user-framework,ngcp-web-tests-e2e,ngcpcfg,ngcpcfg-api,ngcpcfg-ha,ngrep-sip,prosody,pushd,py-ngcp-kamailio,rate-o-mat,reminder,rtpengine,sems,sems-pbx,sipwise-base,snmp-agent,system-tests,system-tools,templates,upgrade,vmnotify,voisniff-ng,websocket + built_projects: release-copy-debs-yml + pool_size: 0 diff --git a/build/test/test_release.py b/build/test/test_release.py index 5e39369..8febd1b 100644 --- a/build/test/test_release.py +++ b/build/test/test_release.py @@ -1,4 +1,4 @@ -# Copyright (C) 2017 The Sipwise Team - http://sipwise.com +# Copyright (C) 2017-2022 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 @@ -15,6 +15,8 @@ from copy import deepcopy from unittest.mock import MagicMock +from django.test import override_settings + from build.models import BuildRelease from repoapi.test.base import BaseTest @@ -28,13 +30,13 @@ class StepsTest(BaseTest): self.jbi = MagicMock() self.jbi.result = "SUCCESS" - def append_built(self, projectname): + def append_built(self, projectname, size=0): self.jbi.projectname = projectname self.jbi.jobname = f"{projectname}-repos" self.assertTrue(self.br.append_built(self.jbi)) self.built_projects += f",{projectname}" self.assertEqual(self.br.built_projects, self.built_projects) - self.assertEqual(self.br.pool_size, 0) + self.assertEqual(self.br.pool_size, size) def append_built_failed(self, projectname): self.jbi.projectname = projectname @@ -47,10 +49,63 @@ class StepsTest(BaseTest): self.failed_projects = f"{projectname}" self.assertEqual(self.br.failed_projects, self.failed_projects) + def append_triggered(self, projectname, size=0): + self.br.append_triggered(projectname) + self.assertEqual(self.br.pool_size, size) + +@override_settings(BUILD_POOL=4) class BuildReleaseStepsTest(StepsTest): """template was not build_dep and bootenv failed""" + fixtures = [ + "test_release_steps", + ] + + build_deps = [ + ["ngcpcfg", "system-tests"], + ["data-hal", "libswrate", "libtcap", "sipwise-base", "system-tools"], + ["check-tools", "ngcp-schema"], + ["ngcp-panel"], + ] + + def test_status(self): + self.assertEqual(self.br.built_projects, "release-copy-debs-yml") + self.assertIsNone(self.br.failed_projects) + self.assertEqual(self.br.pool_size, 0) + + def test_levels_build_deps(self): + self.assertEqual(self.br.config.levels_build_deps, self.build_deps) + + def test_next_one_by_one(self): + self.assertEqual(self.br.next, "ngcpcfg") + self.append_built("ngcpcfg") + self.assertEqual(self.br.next, "system-tests") + self.append_built("system-tests") + self.assertEqual(self.br.next, "data-hal") + self.append_built("data-hal") + self.assertEqual(self.br.next, "libswrate") + self.append_built("libswrate") + + def test_stop_for_build_deps(self): + self.assertEqual(self.br.next, "ngcpcfg") + self.append_built("ngcpcfg") + self.assertEqual(self.br.next, "system-tests") + self.append_triggered("system-tests", 1) + self.assertIsNone(self.br.next) + + def test_stop_for_build_deps_last(self): + for level in range(3): + for prj in self.build_deps[level]: + self.append_built(prj) + self.assertEqual(self.br.next, "ngcp-panel") + self.append_triggered("ngcp-panel", 1) + self.assertIsNone(self.br.next) + + +class ChangeBuildDepsTest(StepsTest): + """template was not build_dep and bootenv failed""" + fixtures = [ "test_change_build_deps", ] diff --git a/build/utils.py b/build/utils.py index 496ee9e..97cfaee 100644 --- a/build/utils.py +++ b/build/utils.py @@ -226,7 +226,7 @@ class ReleaseConfig(object): def check_circular_dependencies(self): levels = self.levels_build_deps builds = list(self.build_deps.keys()) - print(f"builds:{builds} levels:{levels}") + logger.debug(f"builds:{builds} levels:{levels}") for vals in levels: for prj in vals: builds.remove(prj)