Message ID | 20231115175146.9848-4-Nikolai.Kondrashov@redhat.com |
---|---|
State | New |
Headers | show |
Series | None | expand |
On 11/20/23 20:48, Daniel Latypov wrote: > On Wed, Nov 15, 2023 at 9:52 AM Nikolai Kondrashov > <Nikolai.Kondrashov@redhat.com> wrote: >> +kunit core >> +---------- >> + >> +:Summary: KUnit tests for the framework itself >> +:Superset: kunit >> +:Command: tools/testing/kunit/kunit.py run --kunitconfig lib/kunit > > Note: we'd want this to instead be > ./tools/testing/kunit/run_checks.py > > That will run, in parallel > * kunit.py run --kunitconfig lib/kunit > * kunit_tool_test.py (the unit test for kunit.py) > * two python type-checkers, if installed Noted, queued! >> diff --git a/MAINTAINERS b/MAINTAINERS >> index f81a47d87ac26..5f3261e96c90f 100644 >> --- a/MAINTAINERS >> +++ b/MAINTAINERS >> @@ -11626,6 +11626,7 @@ L: linux-kselftest@vger.kernel.org >> L: kunit-dev@googlegroups.com >> S: Maintained >> W: https://google.github.io/kunit-docs/third_party/kernel/docs/ >> +V: kunit core > > Maybe this topic should go in the main thread, but I wanted to call it > out here since this is a good concrete example. > > I'm wondering if this entry could simply be > V: ./tools/testing/kunit/run_checks.py > > And what if, for ext4, we could have multiple of these like > V: kvm-xfstests smoke > V: tools/testing/kunit/kunit.py run --kunitconfig fs/ext4 > > I.e. what if we allowed the `V:` field to contain the command itself? > > # Complexity of the tests > > I appreciate the current "named test-set" approach since it encourages > documenting *why* the test command is applicable. > And for a lot of tests, it's not as simple as a binary GOOD/BAD > result, e.g. benchmarks. > Patch authors need to understand what they're testing, if they're > testing the right thing, etc. > > But on the other hand, for simpler functional tests (e.g. KUnit), > maybe it's not necessary. > Ideally, KUnit tests should be written so the failure messages are > immediately actionable w/o having to read a couple paragraphs. > I.e. the test case names should make it clear what scenario they're > testing, or the test code should be sufficiently documented, etc. > > # Variations on commands > > And there might be a bunch of slight variations on these commands, > e.g. only different in terms of `--kunitconfig`. > We'd probably have at least 18, given > $ find -type f -name '.kunitconfig' | wc -l > 18 > > And again using a kunit.py flag as an example, what if maintainers want KASAN? > ./tools/testing/kunit/kunit.py run --kunitconfig lib/kunit > --kconfig_add CONFIG_KASAN=y > Or what if it's too annoying to split up a larger kunit suite, so I > ask people to run a subset? > ./tools/testing/kunit/kunit.py run --kunitconfig lib/kunit <suite_glob> > > > P.S. > Tbh, I have always hoped we'd eventually have a field like > V: <one-liner test command> > > That is part of why I added all those features above (--kunitconfig, > --kconfig_add, glob support, run_checks.py, etc.). > I wanted kunit.py to be flexible enough that maintainers could state > their testing requirements as a one-liner that people can just > copy-paste and run. > > Also, I recently talked to David Gow and I know he was interested in > adding another feature to kunit.py to fit this use case. > Namely, the ability to do something like > kunit.py run --arches=x86_64,s390,... > and have it run the tests built across N different arches and maybe w/ > M different kconfig options (e.g. a variation built w/ clang, etc.). > > That would be another very powerful tool for maintainers to have. > > Thanks so much for this patch series and starting this discussion! I'm a bit squeamish about just letting commands into the V: fields, as it hurts discoverability of the documentation (or even just a simple description of what the command does), and then checkpatch.pl would have a problem identifying the modified command in Tested-with:. OTOH, we're all hackers here, and I understand where these arguments are coming from, and as I said in other branches, I think command-first should be our ultimate target, not instructions-first. Also, if each of these commands supports the -h/--help options and manages to make sense in their output, it makes things somewhat better. All-in-all, I think we can have both the already-implemented "V: test name -> catalogue -> command" route, and the "V: command" one. Something like this for the commands: V: tools/testing/kunit/run_checks.py and V: "kvm-xfstests smoke" for test names referencing the catalogue. Then make checkpatch.pl verify only the presence of Tested-with: tag for the latter, and leave verifying the (more fluid) commands to humans. Thanks for all the comments, explanations, and details, Daniel! Nick
diff --git a/Documentation/process/tests.rst b/Documentation/process/tests.rst index 9a9ea3fe65c37..56a7911f69031 100644 --- a/Documentation/process/tests.rst +++ b/Documentation/process/tests.rst @@ -65,3 +65,16 @@ kvm-xfstests smoke The "kvm-xfstests smoke" is a minimal subset of xfstests for testing all major file systems, running under KVM. + +kunit +----- + +:Summary: The complete set of KUnit unit tests +:Command: tools/testing/kunit/kunit.py run --alltests + +kunit core +---------- + +:Summary: KUnit tests for the framework itself +:Superset: kunit +:Command: tools/testing/kunit/kunit.py run --kunitconfig lib/kunit diff --git a/MAINTAINERS b/MAINTAINERS index f81a47d87ac26..5f3261e96c90f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -11626,6 +11626,7 @@ L: linux-kselftest@vger.kernel.org L: kunit-dev@googlegroups.com S: Maintained W: https://google.github.io/kunit-docs/third_party/kernel/docs/ +V: kunit core T: git git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git kunit T: git git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git kunit-fixes F: Documentation/dev-tools/kunit/
Signed-off-by: Nikolai Kondrashov <Nikolai.Kondrashov@redhat.com> --- Documentation/process/tests.rst | 13 +++++++++++++ MAINTAINERS | 1 + 2 files changed, 14 insertions(+)