|
| 1 | +.. SPDX-License-Identifier: GPL-2.0+ |
| 2 | +
|
| 3 | +========================================= |
| 4 | +Automated testing of the DRM subsystem |
| 5 | +========================================= |
| 6 | + |
| 7 | +Introduction |
| 8 | +============ |
| 9 | + |
| 10 | +Making sure that changes to the core or drivers don't introduce regressions can |
| 11 | +be very time-consuming when lots of different hardware configurations need to |
| 12 | +be tested. Moreover, it isn't practical for each person interested in this |
| 13 | +testing to have to acquire and maintain what can be a considerable amount of |
| 14 | +hardware. |
| 15 | + |
| 16 | +Also, it is desirable for developers to check for regressions in their code by |
| 17 | +themselves, instead of relying on the maintainers to find them and then |
| 18 | +reporting back. |
| 19 | + |
| 20 | +There are facilities in gitlab.freedesktop.org to automatically test Mesa that |
| 21 | +can be used as well for testing the DRM subsystem. This document explains how |
| 22 | +people interested in testing it can use this shared infrastructure to save |
| 23 | +quite some time and effort. |
| 24 | + |
| 25 | + |
| 26 | +Relevant files |
| 27 | +============== |
| 28 | + |
| 29 | +drivers/gpu/drm/ci/gitlab-ci.yml |
| 30 | +-------------------------------- |
| 31 | + |
| 32 | +This is the root configuration file for GitLab CI. Among other less interesting |
| 33 | +bits, it specifies the specific version of the scripts to be used. There are |
| 34 | +some variables that can be modified to change the behavior of the pipeline: |
| 35 | + |
| 36 | +DRM_CI_PROJECT_PATH |
| 37 | + Repository that contains the Mesa software infrastructure for CI |
| 38 | + |
| 39 | +DRM_CI_COMMIT_SHA |
| 40 | + A particular revision to use from that repository |
| 41 | + |
| 42 | +UPSTREAM_REPO |
| 43 | + URL to git repository containing the target branch |
| 44 | + |
| 45 | +TARGET_BRANCH |
| 46 | + Branch to which this branch is to be merged into |
| 47 | + |
| 48 | +IGT_VERSION |
| 49 | + Revision of igt-gpu-tools being used, from |
| 50 | + https://gitlab.freedesktop.org/drm/igt-gpu-tools |
| 51 | + |
| 52 | +drivers/gpu/drm/ci/testlist.txt |
| 53 | +------------------------------- |
| 54 | + |
| 55 | +IGT tests to be run on all drivers (unless mentioned in a driver's \*-skips.txt |
| 56 | +file, see below). |
| 57 | + |
| 58 | +drivers/gpu/drm/ci/${DRIVER_NAME}-${HW_REVISION}-fails.txt |
| 59 | +---------------------------------------------------------- |
| 60 | + |
| 61 | +Lists the known failures for a given driver on a specific hardware revision. |
| 62 | + |
| 63 | +drivers/gpu/drm/ci/${DRIVER_NAME}-${HW_REVISION}-flakes.txt |
| 64 | +----------------------------------------------------------- |
| 65 | + |
| 66 | +Lists the tests that for a given driver on a specific hardware revision are |
| 67 | +known to behave unreliably. These tests won't cause a job to fail regardless of |
| 68 | +the result. They will still be run. |
| 69 | + |
| 70 | +drivers/gpu/drm/ci/${DRIVER_NAME}-${HW_REVISION}-skips.txt |
| 71 | +----------------------------------------------------------- |
| 72 | + |
| 73 | +Lists the tests that won't be run for a given driver on a specific hardware |
| 74 | +revision. These are usually tests that interfere with the running of the test |
| 75 | +list due to hanging the machine, causing OOM, taking too long, etc. |
| 76 | + |
| 77 | + |
| 78 | +How to enable automated testing on your tree |
| 79 | +============================================ |
| 80 | + |
| 81 | +1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one |
| 82 | +yet |
| 83 | + |
| 84 | +2. In your kernel repo's configuration (eg. |
| 85 | +https://gitlab.freedesktop.org/janedoe/linux/-/settings/ci_cd), change the |
| 86 | +CI/CD configuration file from .gitlab-ci.yml to |
| 87 | +drivers/gpu/drm/ci/gitlab-ci.yml. |
| 88 | + |
| 89 | +3. Next time you push to this repository, you will see a CI pipeline being |
| 90 | +created (eg. https://gitlab.freedesktop.org/janedoe/linux/-/pipelines) |
| 91 | + |
| 92 | +4. The various jobs will be run and when the pipeline is finished, all jobs |
| 93 | +should be green unless a regression has been found. |
| 94 | + |
| 95 | + |
| 96 | +How to update test expectations |
| 97 | +=============================== |
| 98 | + |
| 99 | +If your changes to the code fix any tests, you will have to remove one or more |
| 100 | +lines from one or more of the files in |
| 101 | +drivers/gpu/drm/ci/${DRIVER_NAME}_*_fails.txt, for each of the test platforms |
| 102 | +affected by the change. |
| 103 | + |
| 104 | + |
| 105 | +How to expand coverage |
| 106 | +====================== |
| 107 | + |
| 108 | +If your code changes make it possible to run more tests (by solving reliability |
| 109 | +issues, for example), you can remove tests from the flakes and/or skips lists, |
| 110 | +and then the expected results if there are any known failures. |
| 111 | + |
| 112 | +If there is a need for updating the version of IGT being used (maybe you have |
| 113 | +added more tests to it), update the IGT_VERSION variable at the top of the |
| 114 | +gitlab-ci.yml file. |
| 115 | + |
| 116 | + |
| 117 | +How to test your changes to the scripts |
| 118 | +======================================= |
| 119 | + |
| 120 | +For testing changes to the scripts in the drm-ci repo, change the |
| 121 | +DRM_CI_PROJECT_PATH and DRM_CI_COMMIT_SHA variables in |
| 122 | +drivers/gpu/drm/ci/gitlab-ci.yml to match your fork of the project (eg. |
| 123 | +janedoe/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/. |
| 124 | + |
| 125 | + |
| 126 | +How to incorporate external fixes in your testing |
| 127 | +================================================= |
| 128 | + |
| 129 | +Often, regressions in other trees will prevent testing changes local to the |
| 130 | +tree under test. These fixes will be automatically merged in during the build |
| 131 | +jobs from a branch in the target tree that is named as |
| 132 | +${TARGET_BRANCH}-external-fixes. |
| 133 | + |
| 134 | +If the pipeline is not in a merge request and a branch with the same name |
| 135 | +exists in the local tree, commits from that branch will be merged in as well. |
| 136 | + |
| 137 | + |
| 138 | +How to deal with automated testing labs that may be down |
| 139 | +======================================================== |
| 140 | + |
| 141 | +If a hardware farm is down and thus causing pipelines to fail that would |
| 142 | +otherwise pass, one can disable all jobs that would be submitted to that farm |
| 143 | +by editing the file at |
| 144 | +https://gitlab.freedesktop.org/gfx-ci/lab-status/-/blob/main/lab-status.yml. |
0 commit comments