diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index 55002be..4965df3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,26 @@ +/mrack-1.10.0.tar.gz /mrack-1.11.0.tar.gz /mrack-1.12.0.tar.gz /mrack-1.12.1.tar.gz /mrack-1.12.2.tar.gz +/mrack-1.12.3.tar.gz +/mrack-1.13.1.tar.gz +/mrack-1.13.3.tar.gz +/mrack-1.14.0.tar.gz +/mrack-1.14.1.tar.gz +/mrack-1.15.0.tar.gz +/mrack-1.15.1.tar.gz +/mrack-1.16.0.tar.gz +/mrack-1.17.0.tar.gz +/mrack-1.17.1.tar.gz +/mrack-1.18.0.tar.gz +/mrack-1.19.0.tar.gz +/mrack-1.21.0.tar.gz +/mrack-1.22.0.tar.gz +/mrack-1.23.0.tar.gz +/mrack-1.23.1.tar.gz +/mrack-1.23.2.tar.gz +/mrack-1.23.3.tar.gz +/mrack-1.23.4.tar.gz +/mrack-1.24.0.tar.gz +/mrack-1.25.0.tar.gz diff --git a/.packit.yaml b/.packit.yaml index 1fe5c0d..59e7a85 100644 --- a/.packit.yaml +++ b/.packit.yaml @@ -8,6 +8,21 @@ files_to_sync: - mrack.spec - README.md - .packit.yaml + - gating.yaml + - ci.fmf +# we need to sync tmt for TF to work in Fedora updates + - src: ./tests/smoke/* + dest: ./tests/smoke/ + - src: ./plans/* + dest: ./plans/ + +# Allow dist git reactions on packit and tdudlak commits and PRs +allowed_pr_authors: + - packit + - tdudlak +allowed_committers: + - packit + - tdudlak # name in upstream package repository/registry (e.g. in PyPI) upstream_package_name: mrack @@ -17,6 +32,8 @@ downstream_package_name: mrack # see: https://packit.dev/docs/configuration/#upstream_tag_template upstream_tag_template: "v{version}" +sync_changelog: true + actions: create-archive: - "python3 setup.py sdist --dist-dir ." @@ -27,25 +44,110 @@ actions: jobs: - job: copr_build trigger: pull_request - targets: [fedora-all] + release_suffix: "99.dev.{PACKIT_PROJECT_BRANCH}" + targets: [fedora-all, epel-9, epel-10] + + - job: tests + trigger: pull_request + identifier: "upstream-smoke" + targets: [fedora-all, epel-8, epel-9] + + - job: copr_build + trigger: commit + targets: [fedora-all, epel-9, epel-10] - job: copr_build trigger: release owner: "@freeipa" project: neoave - targets: [fedora-all] + targets: [fedora-all, epel-9, epel-10] - job: propose_downstream trigger: release - dist_git_branches: - - fedora-all + dist_git_branches: [fedora-all, epel-9, epel-10] - job: koji_build trigger: commit - dist_git_branches: - - fedora-all + dist_git_branches: [fedora-all, epel-9, epel-10] - job: bodhi_update trigger: commit - dist_git_branches: - - fedora-branched # rawhide updates are created automatically + dist_git_branches: [fedora-branched, epel-9, epel-10] # rawhide updates are created automatically + +# # pr_osp +# - &internal_test # use openstack (osp) tests as template for other test cases +# job: tests +# fmf_url: "https://gitlab.cee.redhat.com/idm-ops/mrack-internal-tests" +# fmf_ref: "main" +# use_internal_tf: True +# targets: [fedora-latest-stable] +# identifier: "internal-provisioning-osp" +# trigger: pull_request +# env: +# MRACK_TEST_CASE: "provisioning-osp" + +# - &pr_aws +# <<: *internal_test +# identifier: "internal-provisioning-aws" +# env: +# MRACK_TEST_CASE: "provisioning-aws" + +# - &pr_bkr_cpu +# <<: *internal_test +# identifier: "internal-provisioning-bkr-c9s-req1cpu" +# env: +# MRACK_TEST_CASE: "provisioning-bkr-c9s-req1cpu" + +# - &pr_bkr_ppc64le +# <<: *internal_test +# identifier: "internal-provisioning-bkr-fedora-ppc64le" +# env: +# MRACK_TEST_CASE: "provisioning-bkr-fedora-ppc64le" + +# - &pr_bkr_mem_cpu +# <<: *internal_test +# identifier: "internal-provisioning-bkr-rhel-8-req-2048mem-2cpu" +# env: +# MRACK_TEST_CASE: "provisioning-bkr-rhel-8-req-2048mem-2cpu" + +# - &pr_bkr_mem +# <<: *internal_test +# identifier: "internal-provisioning-bkr-rhel-9-req-4069mem" +# env: +# MRACK_TEST_CASE: "provisioning-bkr-rhel-9-req-4069mem" + +# - &pr_mrack_all_ssh +# <<: *internal_test +# identifier: "internal-all-providers-ssh" +# trigger: pull_request +# env: +# MRACK_TEST_CASE: "all-providers-ssh" + +# # run the same internal tests as in PR for commit in main +# - &main_osp +# <<: *internal_test # pr_osp +# trigger: commit + +# - &main_aws +# <<: *pr_aws +# trigger: commit + +# - &main_bkr_ppc64le +# <<: *pr_bkr_ppc64le +# trigger: commit + +# - &main_bkr_cpu +# <<: *pr_bkr_cpu +# trigger: commit + +# - &main_bkr_mem_cpu +# <<: *pr_bkr_mem_cpu +# trigger: commit + +# - &main_bkr_mem +# <<: *pr_bkr_mem +# trigger: commit + +# - &main_mrack_all_ssh +# <<: *pr_mrack_all_ssh +# trigger: commit diff --git a/README.md b/README.md index 2895974..1b411e6 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ![pypi_badge](https://img.shields.io/pypi/v/mrack?label=PyPI&logo=pypi) ![readthedocs_badge](https://img.shields.io/readthedocs/mrack?label=Read%20the%20Docs&logo=read-the-docs) ![badge](https://copr.fedorainfracloud.org/coprs/g/freeipa/neoave/package/mrack/status_image/last_build.png) Provisioning library for CI and local multi-host testing supporting multiple -provisioning providers e.g. OpenStack, libvirt, containers, Beaker). +provisioning providers (OpenStack, AWS, libvirt, podman containers, Beaker). But in comparison to multi-cloud libraries, the aim is to be able to describe host from application perspective. E.g.: diff --git a/README.packit b/README.packit index bdc4243..fb341a1 100644 --- a/README.packit +++ b/README.packit @@ -1,3 +1,3 @@ This repository is maintained by packit. https://packit.dev/ -The file was generated using packit 0.63.2.dev8+g33fd64a. +The file was generated using packit 1.11.0.post1.dev7+gfdcdf3a32. diff --git a/ci.fmf b/ci.fmf new file mode 100644 index 0000000..c5aa0e0 --- /dev/null +++ b/ci.fmf @@ -0,0 +1 @@ +resultsdb-testcase: separate diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..ad8f991 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,10 @@ +--- !Policy +product_versions: + - fedora-* + - epel-8 + - epel-9 +decision_contexts: + - bodhi_update_push_stable +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/tests.functional} diff --git a/mrack.spec b/mrack.spec index e8ba4b4..05e6443 100644 --- a/mrack.spec +++ b/mrack.spec @@ -1,5 +1,5 @@ Name: mrack -Version: 1.12.2 +Version: 1.25.0 Release: 1%{?dist} Summary: Multicloud use-case based multihost async provisioner @@ -61,7 +61,12 @@ Requires: python3-botocore %package -n python3-%{name}-beaker Summary: Beaker provider plugin for mrack Requires: python3-%{name}lib = %{version}-%{release} +%if 0%{?rhel} == 8 +# c8s has missing beaker-client package +Recommends: beaker-client +%else Requires: beaker-client +%endif %{?python_provide:%python_provide python3-%{name}-beaker} @@ -69,7 +74,10 @@ Requires: beaker-client %package -n python3-%{name}-openstack Summary: Openstack provider plugin for mrack Requires: python3-%{name}lib = %{version}-%{release} +Recommends: python3-aiofiles +Recommends: python3-os-client-config Recommends: python3-AsyncOpenStackClient +Recommends: python3-async-timeout %{?python_provide:%python_provide python3-%{name}-openstack} @@ -177,6 +185,205 @@ rm -r src/%{name}.egg-info %{python3_sitelib}/%{name}/providers/utils/{,__pycache__/}testcloud.* %changelog +* Tue Oct 21 2025 David Pascual Hernandez - 1.25.0-1 +- 8ed12e7 feat: Add support for Beaker group key (David Pascual) +- 8e6ab07 fix: Revert commit 0cabc75 (David Pascual) + +* Thu Sep 25 2025 David Pascual Hernandez - 1.24.0-1 +- 39e9d79 feat: Add support to pass watchdog panic="ignore" in Beaker recipe (David Pascual) +- 801ef4b fix: Fix nested and/or issue (David Pascual) +- fad14c2 test: Add _translate_constraint test (David Pascual) + +* Tue Sep 09 2025 David Pascual Hernandez - 1.23.5-1 +- b46c7c4 chore: Bump python-semantic-release to fix release issue (David Pascual) +- 033e1f7 chore(packit): Update epel spec for fedora propose upstream (David Pascual) +- aeb12fe fix: Enforce beaker-client 29.2 to fix fetch_url error (David Pascual) + +* Wed May 28 2025 David Pascual Hernandez - 1.23.4-1 +- 75d8c3b chore: Enable epel-10 builds in Packit (David Pascual) +- 4a98123 fix: Support pass fetch_url to task (David Pascual) + +* Fri Apr 25 2025 David Pascual Hernandez - 1.23.3-1 +- cee2f5b fix : Not try to login beaker hub unless needed (David Pascual) +- 75eb8ea chore: Release version 1.23.3 (github-actions) +- 4da221c fix: Translate nested or/and constraint properly (David Pascual) +- 60275ee fix: Make distro_variants working as patterns (David Pascual) +- c02cc90 docs: Update maintainer email (David Pascual) + +* Fri Mar 21 2025 David Pascual Hernandez - 1.23.3-1 +- 4da221c fix: Translate nested or/and constraint properly (David Pascual) +- 60275ee fix: Make distro_variants working as patterns (David Pascual) +- c02cc90 docs: Update maintainer email (David Pascual) + +* Thu Jan 09 2025 David Pascual Hernandez - 1.23.2-1 +- 600203c fix: Translate host_requires properly (David Pascual) + +* Mon Dec 16 2024 David Pascual Hernandez - 1.23.1-1 +- 0cabc75 fix: Translate job-group properly (David Pascual) +- 70e07c1 fix: Return empty list when there is no content in res_ks_list (David Pascual) + +* Tue Nov 05 2024 David Pascual Hernandez - 1.23.0-1 +- 64a84db feat: Add support for translanting job-owner of kickstart (David Pascual) +- 868523c feat: Add translantion for kernel_options and kernel_options_post (David Pascual) + +* Thu Oct 17 2024 David Pascual Hernandez - 1.22.0-1 +- f43d20f style: Reformat by black (David Pascual) +- 768bba5 fix: podman: set podman connection information for ansible (David Pascual) +- 4d0b63c chore: setup: package seccomp filter (David Pascual) +- 9b2d980 docs: Update seccomp configuration example (David Pascual) +- f3deca1 feat: podman: handle custom network configuration (David Pascual) + +* Tue Aug 06 2024 Kaleemullah Siddiqui - 1.21.0-1 +- b3e0f7d feat: update pytest-mh output to work with latest version (Kaleemullah Siddiqui) + +* Tue Jul 16 2024 David Pascual Hernandez - 1.20.0-1 +- feeae04 feat: Add support for translanting %pre and main body part of kickstart (David Pascual) +- 236393c chore: Update deprecated actions (David Pascual) + +* Thu May 30 2024 David Pascual Hernandez - 1.19.0-1 +- 6f81e37 test: speed-up tests by mocking gethostbyaddr (Petr Vobornik) +- 587a9c7 fix(beaker): supress 10_avc_check restraint plugin (Petr Vobornik) +- 2c0c2bb test: Add add_dict_to_node test (Petr Vobornik) +- f4324bf feat: handle list value for add_dict_to_node function (Petr Vobornik) +- f1e7590 fix: make delete_host function more robust (Petr Vobornik) +- 784d24b chore: bump black in pre-commit (David Pascual) +- f6f9131 chore(deps): bump black from 22.3.0 to 24.3.0 (David Pascual) +- a7db867 test: Add test for _get_recipe_info function (Petr Vobornik) +- aa25ff3 feat: Provide beaker log links (Petr Vobornik) + +* Mon Nov 27 2023 David Pascual Hernandez - 1.18.0-1 +- c158474 feat: Add async_timeout dependency (David Pascual) + +* Fri Nov 03 2023 David Pascual Hernandez - 1.17.1-1 +- 583193a fix: curate_auth func changed to non-async (Kaleemullah Siddiqui) + +* Mon Oct 23 2023 David Pascual Hernandez - 1.17.0-1 +- 5251d90 chore(ci): Temporarely remove packit tests (David Pascual) +- 3a59761 feat(openstack): Append API version to auth_url in credentials (David Pascual) +- 97a5355 chore(release): Update semantic release action name and version (David Pascual) +- 6d6cdc6 chore(release): Upload distribution package to release assets (David Pascual) + +* Mon Oct 09 2023 David Pascual Hernandez - 1.16.0-1 +- e8e20f1 chore(ci): Fix release workflow build step checking out wrong commit (David Pascual) +- 97a7cd0 chore: Bump asyncopenstackclient dependency version (David Pascual) +- 41b12e7 chore: Release version 1.16.0 (github-actions) +- 278d1b1 chore(release): Add PyPI action & extract copr step (Tibor Dudlák) +- 9bbd987 chore: Bump python-semantic-release to v7.34.4 (Tibor Dudlák) +- d6b7298 feat: Add new dependecies to mrack.spec file (David Pascual) +- 7bbda34 feat(OpenStack): Add clouds.yaml as an authentication method (David Pascual) +- a5b32e3 feat(OpenStack): Import publick key on provision (David Pascual) +- 1a29d86 test: fix pylint issues and use isinstance (Tibor Dudlák) +- db74ae0 fix(Beaker): Exception has been thrown as raise missed argument (Tibor Dudlák) +- de027fa docs(Beaker): Add hostRequires documentation section to guides (David Pascual) + +* Tue Sep 19 2023 Tibor Dudlák - 1.16.0-1 +- 278d1b1 chore(release): Add PyPI action & extract copr step (Tibor Dudlák) +- 9bbd987 chore: Bump python-semantic-release to v7.34.4 (Tibor Dudlák) +- d6b7298 feat: Add new dependecies to mrack.spec file (David Pascual) +- 7bbda34 feat(OpenStack): Add clouds.yaml as an authentication method (David Pascual) +- a5b32e3 feat(OpenStack): Import publick key on provision (David Pascual) +- 1a29d86 test: fix pylint issues and use isinstance (Tibor Dudlák) +- db74ae0 fix(Beaker): Exception has been thrown as raise missed argument (Tibor Dudlák) +- de027fa docs(Beaker): Add hostRequires documentation section to guides (David Pascual) + +* Tue Jun 13 2023 Tibor Dudlák - 1.15.1-1 +- 608c763 chore(Packit): Use yaml magic to run same internal tests for PRs and commits to main (Tibor Dudlák) +- 8062a20 refactor: more verbose output when (re)provisioning (Tibor Dudlák) +- 19b52f8 test(OpenStack): Add reprovision with dynamic result tests (Tibor Dudlák) +- fd111f5 fix: Do not reprovision all hosts when server error is detected (Tibor Dudlák) +- 6e499f6 fix: Use lower cooldown time to not be too slow in re-provisioning (Tibor Dudlák) +- e03793c chore(Packit): Add internalt tests per pull request (Tibor Dudlák) +- 44023eb chore(Packit): add missing build job(s) to Packit config (Tibor Dudlák) + +* Tue Apr 18 2023 Tibor Dudlák - 1.15.0-1 +- f9f0e33 test: Add missing strategy_retry test (Tibor Dudlák) +- 121c5db refactor(provider): take max_utilization out to method to ease mocking (Tibor Dudlák) +- dc74ced test: Add missing tests for fixed code from https://github.com/neoave/mrack/pull/245 (Tibor Dudlák) +- 86393ab feat(outputs): preset username and password for windows host in pytest-mh (Tibor Dudlák) +- 4c26b5f feat(outputs): merge nested dictionary instead of overriding it (Tibor Dudlák) +- 4dde2e5 feat(utils): add merge_dict (Tibor Dudlák) +- 5440be1 refactor: fixes _openstack_gather_responses test warnings and exec time (David Pascual) +- e29031b fix: Handle 403 AuthError (out of quota) in openstack provisioning (David Pascual) +- a4e5075 feat: configurable ssh options (Petr Vobornik) +- e9d716e chore: fix docs dependencies in tox run (Petr Vobornik) +- 6f1943b chore: add Markdown support to docs and add design section (Petr Vobornik) +- 88458e1 docs: SSH options design (Petr Vobornik) + +* Thu Mar 16 2023 Tibor Dudlák - 1.14.1-1 +- a9c4e62 fix: mrack not re-provisioning hosts which were destroyed (Tibor Dudlák) +- 17b45e4 fix: Replace coroutines with tasks to avoid RuntimeError (David Pascual) + +* Wed Mar 08 2023 Tibor Dudlák - 1.14.0-1 +- e319b73 refactor(AWS): change variable name typo in get_ip_addresses (Tibor Dudlák) +- d95e65f fix(OpenStack): Add missing await for self._load_limits() method call (Tibor Dudlák) +- d0c2d8f refactor: Update supported providers (Tibor Dudlák) +- 13ad3df fix(outputs): remove config section from pytest-multihost (Tibor Dudlák) +- d3da251 feat(outputs): allow to overwrite ansible layout (Tibor Dudlák) +- d3ac20d feat(outputs): allow to choose which outputs should be generated (Tibor Dudlák) +- 66f2877 feat(outputs): add support for pytest-mh (Tibor Dudlák) +- db633b7 feat(utils): relax condition in get_fqdn (Tibor Dudlák) +- 0735e36 fix(outputs): add host to correct group in layout (Tibor Dudlák) +- b1f5318 feat(utils): add get_os_type (Tibor Dudlák) +- 0ab88e6 refactor(black): reformat code (Tibor Dudlák) + +* Wed Mar 01 2023 Tibor Dudlák - 1.13.3-1 +- 0f62237 fix(OpenStack): await loading limits to not break provisioning (Tibor Dudlák) + +* Wed Mar 01 2023 Tibor Dudlák - 1.13.2-1 +- 06f18d1 fix: Use get method when host error object is a dictionary (Tibor Dudlák) +- fd33d68 fix(Beaker): rerurn common dictionary when validation fails (Tibor Dudlák) +- b6c5ef4 fix(OpenStack): Add exception parameter when validation fails (Tibor Dudlák) +- fa2c779 fix(OpenStack): load limits properly by one method (Tibor Dudlák) +- 61e515f chore: change back mrack dist release to 1 (Tibor Dudlák) + +* Tue Feb 21 2023 Tibor Dudlák - 1.13.1-1 +- 1421b37 fix(MrackConfig): Fix MrackConfig class properties (Tibor Dudlák) + +* Fri Feb 17 2023 Tibor Dudlák - 1.13.0-1 +- 72cc2f3 test: add extra dnf options when dealing with rhel/epel 8 (Tibor Dudlák) +- 32a754b chore: set packit to sync changelog as well (Tibor Dudlák) +- b0512b4 chore: sync fedora spec to upstream to maintain changelog history for fedora (Tibor Dudlák) +- be7b50a chore: Generate proper changelog from commit history when releasing (Tibor Dudlák) +- 98f4035 chore: Bump python-semantic-release to latest (Tibor Dudlák) +- a0e76dd test(OpenStack): Fixup the network spread tests (Tibor Dudlák) +- 88b9332 test(OpenStack): rewrite network alloaction tests (Tibor Dudlák) +- 777862f feat(OpenStack): Provide a way to disable network spreading (Tibor Dudlák) +- ff7331d fix(OpenStack): fix condition for network to get in interval (Tibor Dudlák) +- 943316d fix: fqdn in name is ignored and mrack guesses the name instead #237 (Tibor Dudlák) +- 46141dc feat(AWS): Add utilization check method (Tibor Dudlák) +- bb80060 feat(OpenStack): Add utilization check method (Tibor Dudlák) +- 55f9c2c feat: Do not use same sleep for every mrack run (Tibor Dudlák) +- 6ce3927 test(AnsibleInventory): global level output values override (Tibor Dudlák) +- a7a896a feat(AnsibleInventory): Allow additional global level values (Tibor Dudlák) +- 91c562c feat(AnsibleInventory): Allow additional domain level ansible inventory values (Tibor Dudlák) +- 109b03c test(OpenStack): Update calls in openststack tests (Tibor Dudlák) +- 4467cc2 refactor(OpenStack): make private openstack methods truly private (Tibor Dudlák) +- 72b9b9c chore: use custom release_suffix for PR testing via packit (Petr Vobornik) +- f3f734a chore: disable pylint pre-commit hook (Petr Vobornik) +- 4aa9b0a chore(Packit): Add synchronization of tmt plans and tests (Tibor Dudlák) +- 02c3e01 chore(Packit): Configure users on whose actions packit is allowed to be run (Tibor Dudlák) +- cf14ed9 chore(Packit): Add missing ci.fmf to synced files (Tibor Dudlák) + +* Tue Dec 13 2022 Tibor Dudlák - 1.12.3-4 +- chore: Add add tmt tests and plans and add them to sync (Tibor Dudlák) + +* Tue Dec 13 2022 Tibor Dudlák - 1.12.3-3 +- chore: Add fmf/version and allowed users to run packit (Tibor Dudlák) + +* Tue Dec 13 2022 Tibor Dudlák - 1.12.3-2 +- chore: Add ci.fmf to the repo (Tibor Dudlák) + +* Tue Dec 13 2022 Packit - 1.12.3-1 +- chore: Release version 1.12.3 (github-actions) +- chore(Packit): Enable copr build for commit to main only. (Tibor Dudlák) +- chore(Packit): Enable TF tests job to run on pull request. (Tibor Dudlák) +- chore(Packit): Add fedora gating.yaml to synced files. (Tibor Dudlák) +- chore(TestingFarm): Add gating for fedora workflow (Tibor Dudlák) +- fix: Add cache decorator for older python versions. (Tibor Dudlák) +- fix(mrack.spec): Missing dependency in c8s for beaker-client (Tibor Dudlák) +- chore(Packit): enable epel-8 and epel-9 updates and tests (Tibor Dudlák) +- fix(AWS): refactor sources to be py3.6 compatible (Tibor Dudlák) + * Fri Dec 02 2022 Packit - 1.12.2-1 - chore: Release version 1.12.2 (github-actions) - chore: Use python 3.10 in GH actions (Tibor Dudlák) diff --git a/plans/tests.fmf b/plans/tests.fmf new file mode 100644 index 0000000..65199d8 --- /dev/null +++ b/plans/tests.fmf @@ -0,0 +1,9 @@ +summary: Smoke test for mrack +discover: + how: fmf +prepare: +- how: shell + script: + - dnf remove -y `rpm -qa | grep mrack` +execute: + how: tmt diff --git a/sources b/sources index 7ce0828..5d89186 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (mrack-1.12.2.tar.gz) = 7ac6ec24398d58cb092e4a12c15c75758485a5e430c74cbe3312a48dde905f0350029b70245d8b21e6bb060b3022a16657b25bd080ced9de1f193159a2752405 +SHA512 (mrack-1.25.0.tar.gz) = 29ddf0b75a989682193e8078780495ea2b8cf61c106d28700361ac18f061a4e3f8e102e932eacf90eace5e2c731765e65a5eac2f499e24e2188e34743f981328 diff --git a/tests/smoke/main.fmf b/tests/smoke/main.fmf new file mode 100644 index 0000000..b465d57 --- /dev/null +++ b/tests/smoke/main.fmf @@ -0,0 +1,8 @@ +summary: Run Smoke tests +test: ./smoke-test.sh +enabled: true +path: /tests/smoke +require: +- which +framework: beakerlib +duration: 10m diff --git a/tests/smoke/smoke-test.sh b/tests/smoke/smoke-test.sh new file mode 100755 index 0000000..b49361c --- /dev/null +++ b/tests/smoke/smoke-test.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +# Author: Tibor Dudlák + +. /usr/share/beakerlib/beakerlib.sh || ( echo "FAILED to source beakerlib" && exit 1 ) + +export DNF_EXTRA_OPTIONS=$([[ `rpm --eval '%{?dist}' | grep .el8` > /dev/null ]] && echo "--nobest") + +install_package () { + rlPhaseStartSetup "Installing $1" + rlRun "dnf install -y $1 $DNF_EXTRA_OPTIONS" + rlPhaseEnd +} + +print_and_remove_mrack_log(){ + rlPhaseStartTest "Print and remove mrack.log" + rlRun "cat mrack.log && rm -f mrack.log" + rlPhaseEnd +} + +rm_mracklog_run_mrack_up () { + rlPhaseStartTest "Remove mrack.log and run mrack up" + rlRun "rm -f mrack.log" + rlRun "mrack up 2>&1 | grep 'Installed providers:'" + rlPhaseEnd +} + +rlJournalStart + rlPhaseStartSetup "Check required packages and absence of mrack" + rlAssertRpm "which" + rlRun "dnf remove -y `rpm -qa | grep mrack` || true" + rlPhaseEnd + + rlPhaseStartTest "mrack should not be pre-installed on system" + rlRun "python3 -c \"import mrack\"" 1 + rlPhaseEnd + + install_package "python3-mracklib" + + rlPhaseStartTest "mrack command NOT present on system" + rlRun "which mrack 2>&1 | grep -i 'no' | grep 'mrack'" + rlPhaseEnd + + install_package "mrack-cli" + + rlPhaseStartTest "mrack command present on system" + rlRun "which mrack | grep 'bin/mrack'" + rlRun "mrack --version" + rlPhaseEnd + + install_package "python3-mrack-beaker" + + rm_mracklog_run_mrack_up + + install_package "mrack" + + rm_mracklog_run_mrack_up + + print_and_remove_mrack_log + + rlPhaseStartSetup "Reinstall mrack" + rlRun "dnf reinstall mrack -y" + rlPhaseEnd + + rm_mracklog_run_mrack_up + + print_and_remove_mrack_log + +rlJournalEnd