|
| 1 | +# Introduction CI Testing Plans |
| 2 | + |
| 3 | +Linux System Roles CI runs [tmt](https://tmt.readthedocs.io/en/stable/index.html) test plans in [Testing farm](https://docs.testing-farm.io/Testing%20Farm/0.1/index.html) with the [tft.yml](https://github.com/linux-system-roles/bootloader/blob/main/.github/workflows/tft.yml) GitHub workflow. |
| 4 | + |
| 5 | +The `plans/test_playbooks_parallel.fmf` plan is a test plan that runs test playbooks in parallel on multiple managed nodes. |
| 6 | +`plans/test_playbooks_parallel.fmf` is generated centrally from `https://github.com/linux-system-roles/.github/`. |
| 7 | +The automation calculates the number of managed nodes to provision with this formula: |
| 8 | + |
| 9 | +```plain |
| 10 | +number-of-test-playbooks / 10 + 1 |
| 11 | +``` |
| 12 | + |
| 13 | +The `plans/test_playbooks_parallel.fmf` plan does the following steps: |
| 14 | + |
| 15 | +1. Provisions systems to be used as a control node and as managed nodes. |
| 16 | +2. Does the required preparation on systems. |
| 17 | +3. For the given role and the given PR, runs the general test from [test.sh](https://github.com/linux-system-roles/tft-tests/blob/main/tests/general/test.sh). |
| 18 | + |
| 19 | +The [tft.yml](https://github.com/linux-system-roles/bootloader/blob/main/.github/workflows/tft.yml) workflow runs the above plan and uploads the results to our Fedora storage for public access. |
| 20 | +This workflow uses Testing Farm's Github Action [Schedule tests on Testing Farm](https://github.com/marketplace/actions/schedule-tests-on-testing-farm). |
| 21 | + |
| 22 | +## Running Tests |
| 23 | + |
| 24 | +You can run tests locally with the `tmt try` cli or remotely in Testing Farm. |
| 25 | + |
| 26 | +### Running Tests Locally |
| 27 | + |
| 28 | +1. Install `tmt` as described in [Installation](https://tmt.readthedocs.io/en/stable/stories/install.html). |
| 29 | +2. Change to the role repository directory. |
| 30 | +3. Modify `plans/test_playbooks_parallel.fmf` to suit your requirements: |
| 31 | + 1. Due to [issue #3138](https://github.com/teemtee/tmt/issues/3138), comment out all managed nodes except for one. |
| 32 | + 2. Optionally modify environment variables to, e.g. run only specified test playbooks by modifying `SYSTEM_ROLES_ONLY_TESTS`. |
| 33 | +4. Enter `tmt try -p plans/test_playbooks_parallel <platform>`. |
| 34 | + This command identifies the `plans/test_playbooks_parallel.fmf` plan and provisions local VMs, a control node and a managed node. |
| 35 | +5. `tmt try` is in development and does not identify tests from URL automatically, so after provisioning the machines, you must type `t`, `p`, `t` from the interactive prompt to identify tests, run preparation steps, and run the tests. |
| 36 | + |
| 37 | +### Running in Testing Farm |
| 38 | + |
| 39 | +1. Install `testing-farm` as described in [Installation](https://gitlab.com/testing-farm/cli/-/blob/main/README.adoc#user-content-installation). |
| 40 | +2. Change to the role repository directory. |
| 41 | +3. If you want to run tests with edits in your branch, you need to commit and push changes first to some branch. |
| 42 | +4. You can uncomment "Inject your ssh public key to test systems" discover step in the plan if you want to troubleshoot tests by SSHing into test systems in Testing Farm. |
| 43 | +5. Enter `testing-farm request`. |
| 44 | + Edit to your needs. |
| 45 | + |
| 46 | + ```bash |
| 47 | + $ TESTING_FARM_API_TOKEN=<your_api_token> \ |
| 48 | + testing-farm request --pipeline-type="tmt-multihost" \ |
| 49 | + --plan-filter="tag:playbooks_parallel" \ |
| 50 | + --git-url "https://github.com/<my_user>/bootloader" \ |
| 51 | + --git-ref "<my_branch>" \ |
| 52 | + --compose CentOS-Stream-9 \ |
| 53 | + -e "SYSTEM_ROLES_ONLY_TESTS=tests_default.yml" \ |
| 54 | + --no-wait |
| 55 | + ``` |
0 commit comments