[igt-dev] [PATCH i-g-t 2/2] testplan/meson.build: make it check for missing i915 documentation
Mauro Carvalho Chehab
mauro.chehab at linux.intel.com
Wed Jul 5 15:33:07 UTC 2023
On Wed, 5 Jul 2023 10:56:59 +0200
Mauro Carvalho Chehab <mauro.chehab at linux.intel.com> wrote:
> On Tue, 4 Jul 2023 14:03:59 +0100
> Tvrtko Ursulin <tvrtko.ursulin at linux.intel.com> wrote:
>
> > On 04/07/2023 13:50, Mauro Carvalho Chehab wrote:
> > > On Tue, 4 Jul 2023 13:41:14 +0100
> > > Tvrtko Ursulin <tvrtko.ursulin at linux.intel.com> wrote:
> > >
> > >> On 04/07/2023 13:28, Tvrtko Ursulin wrote:
> > >>>
> > >>> On 26/05/2023 07:46, Mauro Carvalho Chehab wrote:
> > >>>> From: Mauro Carvalho Chehab <mchehab at kernel.org>
> > >>>>
> > >>>> Now that i915 is fully documented, check it at build time.
> > >>>
> > >>> This step seems to be slow as molasses and it also rebuilds the Xe test
> > >>> plan when I touch an i915 test.
> > >
> > > This is fixable, but better to wait for Bhanu's patch series that will
> > > be moving the Intel tests to a new directory (tests/intel/).
> > >
> > >>>
> > >>> What is the way to disable it all when configuring the build?
> > >
> > > Yes, you can disable it:
> > >
> > > $ meson -Dtestplan=disabled build --reconfigure
> >
> > Works, thanks!
> >
> > > We do want this enabled by default, as CI needs to check it and
> > > reject patches that aren't updating tests documentation.
> > >
> > > Our internal CI is already dependent on it for the Xe and KMS, and
> > > the plan is to extend it to i915 as well, to get rid of lots of
> > > hacks that currently maps tests with the tested features.
> >
> > As long as the build process is not smart enough to only check a single
> > modified test, FWIW disabled by default sounds better to me and CI can
> > easily enable it.
>
> See, parsing the source code to produce documentation is really fast:
>
> $ for i in tests/xe/xe_test_config.json tests/kms_test_config.json tests/i915/i915_test_config.json; do echo $i:; time ./scripts/igt_doc.py --config $i >/dev/null; echo; done
>
> tests/xe/xe_test_config.json:
>
> real 0m0.113s
> user 0m0.090s
> sys 0m0.022s
>
> tests/kms_test_config.json:
>
> real 0m0.132s
> user 0m0.121s
> sys 0m0.010s
>
> tests/i915/i915_test_config.json:
>
> real 0m0.271s
> user 0m0.259s
> sys 0m0.011s
>
> Handling all documents and even producing a ReST output takes less than
> 500ms.
>
> What takes time is to get a list of all IGT tests that are covered on
> a test set (xe, kms or i915). The way IGT is conceived is that there's no
> single exec file or build output that lists all tests. One needs to run all
> tests that matches a certain pattern, using --list option, in order to get
> a list of tests. This is what `igt_runner -L` does. The code I implemented
> is faster than igt_runner, but it doesn't use multithread - as python is
> currently problematic with multi-CPU multithread[1].
>
> [1] https://www.turing.com/kb/python-multiprocessing-vs-multithreading
>
> Perhaps one solution would be to change meson.build to produce a list
> of tests per compiled file, by running the tests after their builds,
> storing the results under the build dir. As meson/ninja is properly
> parallelized, this should reduce the time to generate the testlists
> that are used by the documentation tool to check if tests are documented.
>
> I'll explore such solution, as we may end speeding up some CI runs
> by having a build time generated "full" testlist.
>
> >
> > >>> P.S. I also find the "now that i915 is fully documented" statement a bit
> > >>> of a chuckle, since random two tests I happened to open haven't really
> > >>> been documented - it rather looks to be a bit of a charade.
> > >
> > > Well, it is as good as what we had documented on IGT itself and on
> > > some separate spreadsheets. If you find anything odd, please fix it.
> >
> > I happened to open i915_pm_rps yesterday and drm_fdinfo today. Majority
> > of documentation are just place holders to cheat the verification step.
>
> It was not meant to be that. Those were generated from different data
> sources:
>
> - igt_describe(), igt_describe_f(), and IGT_TEST_DESCRIPTION();
> - Grafana's feature mapping logic used internally;
> - efforts from validation teams to document existing tests.
>
> Now, for sure the efforts to write documentation after the facts are
> hard.
>
> > Similarly I don't think it will be "enforceable" during code review and
> > such silliness will just land. Shrug. sometimes even best intentions
> > don't lead where you'd expect them to.
>
> The main goal of enforcing it is to ensure that developers and reviewers
> will be doing it right for new tests and gradually fix issues at the
> existing ones.
>
> >
> > >>> I wouldn't care really apart from it significantly slowing down the
> > >>> development workflow.
> > >>
> > >> # time ninja
> > >> [1/448] Generating lib/version.h with a custom command
> > >> fatal: not a git repository (or any of the parent directories): .git
> > >> [6/6] Generating docs/testplan/i915_tests.rst with a custom command
> > >>
> > >> real 0m24.363s
> > >> user 0m6.530s
> > >> sys 0m20.968s
> > >>
> > >> 24 seconds.. I just changed one i915 test. :(
This patch series should do the trick:
https://patchwork.freedesktop.org/series/120233/
The time for a single change is now 4 seconds with Sphinx disabled
(which is the default setting).
It can be speedup even further, but we need to wait for this series to
be merged:
https://patchwork.freedesktop.org/series/117227/
as it will conflict with it.
Please review.
> > >
> > > What it takes time is not building the docs, but to run all tests with
> > > "--list" parameter, in order to double-check if every test has some
> > > documentation.
> >
> > I don't really care what takes time, just that it was unbearable. But
> > now you gave me a workaround so that's good enough for me.
> >
> > Regards,
> >
> > Tvrtko
More information about the igt-dev
mailing list