kunit: Print test statistics on failure
authorDavid Gow <davidgow@google.com>
Wed, 4 Aug 2021 05:08:08 +0000 (22:08 -0700)
committerShuah Khan <skhan@linuxfoundation.org>
Fri, 13 Aug 2021 19:38:31 +0000 (13:38 -0600)
commitacd8e8407b8fcc3229d6d8558cac338bea801aed
tree4cd3f555d4238ad4345fb9633d4bb2e2953fcca3
parent6a499c9c42d039ce9341a0c655a76c8dd56f0578
kunit: Print test statistics on failure

When a number of tests fail, it can be useful to get higher-level
statistics of how many tests are failing (or how many parameters are
failing in parameterised tests), and in what cases or suites. This is
already done by some non-KUnit tests, so add support for automatically
generating these for KUnit tests.

This change adds a 'kunit.stats_enabled' switch which has three values:
- 0: No stats are printed (current behaviour)
- 1: Stats are printed only for tests/suites with more than one
     subtest (new default)
- 2: Always print test statistics

For parameterised tests, the summary line looks as follows:
"    # inode_test_xtimestamp_decoding: pass:16 fail:0 skip:0 total:16"
For test suites, there are two lines looking like this:
"# ext4_inode_test: pass:1 fail:0 skip:0 total:1"
"# Totals: pass:16 fail:0 skip:0 total:16"

The first line gives the number of direct subtests, the second "Totals"
line is the accumulated sum of all tests and test parameters.

This format is based on the one used by kselftest[1].

[1]: https://elixir.bootlin.com/linux/latest/source/tools/testing/selftests/kselftest.h#L109

Signed-off-by: David Gow <davidgow@google.com>
Reviewed-by: Brendan Higgins <brendanhiggins@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
lib/kunit/test.c
tools/testing/kunit/kunit_parser.py