From 53dbb19a52fac191d7b52b6729e46ec1d75e01c1 Mon Sep 17 00:00:00 2001 From: Al Bailey Date: Thu, 15 Jun 2023 14:18:54 +0000 Subject: [PATCH] Include py39 tests as part of zuul for this repo The py39 job was mis-named and was using the wrong file filter pattern to trigger it from running. The test_helm base unit test class was removed from sysinv, as part of remove-armada-helmv2 work in March so adding stub unit tests so tox will not report an empty test run. pylint directives are now updated based on the debian upper constraints, and the unit tests are now validated by pylint. tox.ini is cleaned up since python3 is now the only supported version of python These changes have no runtime impact. This only affects tox and zuul. Test Plan: PASS: build-pkgs -c -p python3-k8sapp-portieris PASS: tox Closes-Bug: #2024005 Related-Bug: #1942909 Change-Id: Iece6e78a98b30111cadb62156e413dd19dd62a37 Signed-off-by: Al Bailey --- .zuul.yaml | 42 ++++---- .../lifecycle/lifecycle_portieris.py | 2 +- .../k8sapp_portieris/tests/test_plugins.py | 9 +- .../k8sapp_portieris/pylint.rc | 95 +------------------ .../k8sapp_portieris/test-requirements.txt | 6 +- .../k8sapp_portieris/tox.ini | 50 ++-------- 6 files changed, 40 insertions(+), 164 deletions(-) diff --git a/.zuul.yaml b/.zuul.yaml index 32b51a4..d01d721 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -2,20 +2,20 @@ - project: check: jobs: - - k8app-portieris-tox-py39 - openstack-tox-linters + - k8sapp-portieris-tox-py39 - k8sapp-portieris-tox-pylint gate: jobs: - - k8app-portieris-tox-py39 - openstack-tox-linters + - k8sapp-portieris-tox-py39 - k8sapp-portieris-tox-pylint post: jobs: - stx-portieris-armada-app-upload-git-mirror - job: - name: k8app-portieris-tox-py39 + name: k8sapp-portieris-tox-py39 parent: tox-py39 description: | Run py39 test for portieris @@ -26,12 +26,29 @@ - starlingx/update - starlingx/utilities files: - - python-k8app-portieris/* + - python3-k8sapp-portieris/* vars: tox_envlist: py39 python_version: 3.9 tox_extra_args: -c python3-k8sapp-portieris/k8sapp_portieris/tox.ini +- job: + name: k8sapp-portieris-tox-pylint + parent: tox + description: | + Run pylint test for k8sapp_portieris + nodeset: debian-bullseye + required-projects: + - starlingx/config + - starlingx/fault + - starlingx/update + - starlingx/utilities + files: + - python3-k8sapp-portieris/* + vars: + tox_envlist: pylint + tox_extra_args: -c python3-k8sapp-portieris/k8sapp_portieris/tox.ini + - job: name: stx-portieris-armada-app-upload-git-mirror parent: upload-git-mirror @@ -45,23 +62,6 @@ secret: stx-portieris-armada-app-github-secret2 pass-to-parent: true -- job: - name: k8sapp-portieris-tox-pylint - parent: tox - description: | - Run pylint test for k8sapp_portieris - nodeset: ubuntu-bionic - required-projects: - - starlingx/config - - starlingx/fault - - starlingx/update - - starlingx/utilities - files: - - python3-k8sapp-portieris/* - vars: - tox_envlist: pylint - tox_extra_args: -c python3-k8sapp-portieris/k8sapp_portieris/tox.ini - - secret: name: stx-portieris-armada-app-github-secret2 data: diff --git a/python3-k8sapp-portieris/k8sapp_portieris/k8sapp_portieris/lifecycle/lifecycle_portieris.py b/python3-k8sapp-portieris/k8sapp_portieris/k8sapp_portieris/lifecycle/lifecycle_portieris.py index 1da9871..304c0b2 100644 --- a/python3-k8sapp-portieris/k8sapp_portieris/k8sapp_portieris/lifecycle/lifecycle_portieris.py +++ b/python3-k8sapp-portieris/k8sapp_portieris/k8sapp_portieris/lifecycle/lifecycle_portieris.py @@ -58,7 +58,7 @@ class PortierisAppLifecycleOperator(base.AppLifecycleOperator): context, conductor_obj, app_op, app, hook_info ) - def post_apply(self, app_op, app, hook_info): + def post_apply(self, app_op, app, hook_info): # pylint: disable=unused-argument """Pre Apply actions Creates the local registry secret and migrates helm user overrides diff --git a/python3-k8sapp-portieris/k8sapp_portieris/k8sapp_portieris/tests/test_plugins.py b/python3-k8sapp-portieris/k8sapp_portieris/k8sapp_portieris/tests/test_plugins.py index 8b4c93d..9f8f1cf 100644 --- a/python3-k8sapp-portieris/k8sapp_portieris/k8sapp_portieris/tests/test_plugins.py +++ b/python3-k8sapp-portieris/k8sapp_portieris/k8sapp_portieris/tests/test_plugins.py @@ -6,16 +6,19 @@ from k8sapp_portieris.common import constants from sysinv.tests.db import base as dbbase -from sysinv.tests.helm.test_helm import HelmOperatorTestSuiteMixin class K8SAppPortierisAppMixin(object): app_name = constants.HELM_APP_PORTIERIS path_name = app_name + '.tgz' - def setUp(self): + def setUp(self): # pylint: disable=useless-parent-delegation super(K8SAppPortierisAppMixin, self).setUp() + def test_stub(self): + # Replace this with a real unit test. + pass + # Test Configuration: # - Controller @@ -25,7 +28,6 @@ class K8SAppPortierisAppMixin(object): class K8sAppPortierisControllerTestCase(K8SAppPortierisAppMixin, dbbase.BaseIPv6Mixin, dbbase.BaseCephStorageBackendMixin, - HelmOperatorTestSuiteMixin, dbbase.ControllerHostTestCase): pass @@ -37,6 +39,5 @@ class K8sAppPortierisControllerTestCase(K8SAppPortierisAppMixin, # - portieris app class K8SAppPortierisAIOTestCase(K8SAppPortierisAppMixin, dbbase.BaseCephStorageBackendMixin, - HelmOperatorTestSuiteMixin, dbbase.AIOSimplexHostTestCase): pass diff --git a/python3-k8sapp-portieris/k8sapp_portieris/pylint.rc b/python3-k8sapp-portieris/k8sapp_portieris/pylint.rc index 5892deb..4cf02c0 100644 --- a/python3-k8sapp-portieris/k8sapp_portieris/pylint.rc +++ b/python3-k8sapp-portieris/k8sapp_portieris/pylint.rc @@ -7,7 +7,7 @@ rcfile=pylint.rc #init-hook= # Add files or directories to the blacklist. Should be base names, not paths. -ignore=tests +ignore= # Pickle collected data for later comparisons. persistent=yes @@ -34,87 +34,6 @@ extension-pkg-whitelist=lxml.etree,greenlet # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option # multiple time. -# -# Python3 checker: -# -# E1601: print-statement -# E1602: parameter-unpacking -# E1603: unpacking-in-except -# E1604: old-raise-syntax -# E1605: backtick -# E1606: long-suffix -# E1607: old-ne-operator -# E1608: old-octal-literal -# E1609: import-star-module-level -# E1610: non-ascii-bytes-literal -# E1611: invalid-unicode-literal -# W1601: apply-builtin -# W1602: basestring-builtin -# W1603: buffer-builtin -# W1604: cmp-builtin -# W1605: coerce-builtin -# W1606: execfile-builtin -# W1607: file-builtin -# W1608: long-builtin -# W1609: raw_input-builtin -# W1610: reduce-builtin -# W1611: standarderror-builtin -# W1612: unicode-builtin -# W1613: xrange-builtin -# W1614: coerce-method -# W1615: delslice-method -# W1616: getslice-method -# W1617: setslice-method -# W1618: no-absolute-import -# W1619: old-division -# W1620: dict-iter-method -# W1621: dict-view-method -# W1622: next-method-called -# W1623: metaclass-assignment -# W1624: indexing-exception -# W1625: raising-string -# W1626: reload-builtin -# W1627: oct-method -# W1628: hex-method -# W1629: nonzero-method -# W1630: cmp-method -# W1632: input-builtin -# W1633: round-builtin -# W1634: intern-builtin -# W1635: unichr-builtin -# W1636: map-builtin-not-iterating -# W1637: zip-builtin-not-iterating -# W1638: range-builtin-not-iterating -# W1639: filter-builtin-not-iterating -# W1640: using-cmp-argument -# W1641: eq-without-hash -# W1642: div-method -# W1643: idiv-method -# W1644: rdiv-method -# W1645: exception-message-attribute -# W1646: invalid-str-codec -# W1647: sys-max-int -# W1648: bad-python3-import -# W1649: deprecated-string-function -# W1650: deprecated-str-translate-call -# W1651: deprecated-itertools-function -# W1652: deprecated-types-field -# W1653: next-method-defined -# W1654: dict-items-not-iterating -# W1655: dict-keys-not-iterating -# W1656: dict-values-not-iterating -# W1657: deprecated-operator-function -# W1658: deprecated-urllib-function -# W1659: xreadlines-attribute -# W1660: deprecated-sys-function -# W1661: exception-escape -# W1662: comprehension-escape -enable=E1603,E1609,E1610,E1602,E1606,E1608,E1607,E1605,E1604,E1601,E1611,W1652, - W1651,W1649,W1657,W1660,W1658,W1659,W1623,W1622,W1620,W1621,W1645,W1641, - W1624,W1648,W1625,W1611,W1662,W1661,W1650,W1640,W1630,W1614,W1615,W1642, - W1616,W1628,W1643,W1629,W1627,W1644,W1617,W1601,W1602,W1603,W1604,W1605, - W1654,W1655,W1656,W1619,W1606,W1607,W1639,W1618,W1632,W1634,W1608,W1636, - W1653,W1646,W1638,W1609,W1610,W1626,W1633,W1647,W1635,W1612,W1613,W1637 # Disable the message, report, category or checker with the given id(s). You # can either give multiple identifier separated by comma (,) or put this option @@ -133,11 +52,6 @@ disable=C, R, W0212, W1618 # (visual studio) and html output-format=text -# Put messages in a separate file for each module / package specified on the -# command line instead of printing them on stdout. Reports (if any) will be -# written in a file name "pylint_global.[txt|html]". -files-output=no - # Tells whether to display a full report or only the messages reports=yes @@ -196,9 +110,6 @@ generated-members=REQUEST,acl_users,aq_parent [BASIC] -# List of builtins function names that should not be used, separated by a comma -bad-functions=map,filter,apply,input - # Regular expression which should only match correct module names module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ @@ -288,7 +199,7 @@ max-locals=15 max-returns=6 # Maximum number of branch for function / method body -max-branchs=12 +max-branches=12 # Maximum number of statements in function / method body max-statements=50 @@ -317,4 +228,4 @@ valid-classmethod-first-arg=cls [EXCEPTIONS] # Exceptions that will emit a warning when being caught. Defaults to # "Exception" -overgeneral-exceptions=Exception +overgeneral-exceptions=builtins.Exception diff --git a/python3-k8sapp-portieris/k8sapp_portieris/test-requirements.txt b/python3-k8sapp-portieris/k8sapp_portieris/test-requirements.txt index 4faaa15..05c633d 100644 --- a/python3-k8sapp-portieris/k8sapp_portieris/test-requirements.txt +++ b/python3-k8sapp-portieris/k8sapp_portieris/test-requirements.txt @@ -2,8 +2,6 @@ # of appearance. Changing the order has an impact on the overall integration # process, which may cause wedges in the gate later. hacking>=1.1.0,<=2.0.0 # Apache-2.0 -flake8<3.8.0 -pycodestyle<2.6.0 # MIT License coverage>=3.6 discover mock>=2.0.0 # BSD @@ -13,10 +11,12 @@ python-subunit>=0.0.18 requests-mock>=0.6.0 # Apache-2.0 oslotest>=3.2.0 # Apache-2.0 stestr>=1.0.0 # Apache-2.0 -testrepository>=0.0.18 testtools!=1.2.0,>=0.9.36 ipaddr pytest pyudev migrate markupsafe +bandit +flake8-bugbear +pylint diff --git a/python3-k8sapp-portieris/k8sapp_portieris/tox.ini b/python3-k8sapp-portieris/k8sapp_portieris/tox.ini index 5308673..289ac73 100644 --- a/python3-k8sapp-portieris/k8sapp_portieris/tox.ini +++ b/python3-k8sapp-portieris/k8sapp_portieris/tox.ini @@ -1,8 +1,6 @@ [tox] -envlist = flake8,py27,py36,py39,pylint,bandit -minversion = 1.6 -# skipsdist = True -#,pip-missing-reqs +envlist = flake8,py39,pylint,bandit,cover +minversion = 2.3 # tox does not work if the path to the workdir is too long, so move it to /tmp toxworkdir = /tmp/{env:USER}_k8sportieristox @@ -10,19 +8,14 @@ stxdir = {toxinidir}/../../.. distshare={toxworkdir}/.tox/distshare [testenv] -# usedevelop = True -# enabling usedevelop results in py27 develop-inst: -# Exception: Versioning for this project requires either an sdist tarball, -# or access to an upstream git repository. -sitepackages = False - -# tox is silly... these need to be separated by a newline.... allowlist_externals = bash find +basepython = python3 +sitepackages = False install_command = pip install -v -v -v \ -c{toxinidir}/upper-constraints.txt \ - -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/stable/stein/upper-constraints.txt} \ + -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/starlingx/root/raw/branch/master/build-tools/requirements/debian/upper-constraints.txt} \ {opts} {packages} # Note the hash seed is set to 0 until can be tested with a @@ -47,7 +40,7 @@ deps = -r{toxinidir}/requirements.txt -e{[tox]stxdir}/fault/fm-api/source -e{[tox]stxdir}/fault/python-fmclient/fmclient -e{[tox]stxdir}/utilities/ceph/python-cephclient/python-cephclient - -e{[tox]stxdir}/update/cgcs-patch/cgcs-patch + -e{[tox]stxdir}/update/sw-patch/cgcs-patch commands = @@ -58,40 +51,18 @@ exclude = build,dist,tools,.eggs max-line-length=120 [testenv:flake8] -basepython = python3 deps = -r{toxinidir}/test-requirements.txt - flake8-bugbear commands = flake8 {posargs} . -[testenv:py27] -basepython = python2.7 -commands = - {[testenv]commands} - stestr run {posargs} - stestr slowest - [testenv:py39] basepython = python3.9 -install_command = pip install -v -v -v \ - -c{toxinidir}/upper-constraints.txt \ - -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/starlingx/root/raw/branch/master/build-tools/requirements/debian/upper-constraints.txt} \ - {opts} {packages} -commands = - {[testenv]commands} - stestr run {posargs} - stestr slowest - -[testenv:py36] -basepython = python3.6 commands = {[testenv]commands} stestr run {posargs} stestr slowest [testenv:pep8] -# testenv:flake8 clone -basepython = {[testenv:flake8]basepython} deps = {[testenv:flake8]deps} commands = {[testenv:flake8]commands} @@ -99,25 +70,18 @@ commands = {[testenv:flake8]commands} commands = {posargs} [bandit] +# Add bandit configuration here [testenv:bandit] -basepython = python3 deps = -r{toxinidir}/test-requirements.txt - bandit - commands = bandit --ini tox.ini -n 5 -r k8sapp_portieris [testenv:pylint] -basepython = python3 -sitepackages = False -# If this target is run on python3.8 or later, the install_command needs the debian upper-constaints deps = {[testenv]deps} - pylint commands = pylint {posargs} k8sapp_portieris --rcfile=./pylint.rc [testenv:cover] -basepython = python2.7 deps = {[testenv]deps} setenv = {[testenv]setenv} PYTHON=coverage run --parallel-mode