From: Frank Rowand <frowand.list@gmail.com>
To: "Bird, Tim" <Tim.Bird@sony.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Kees Cook <keescook@chromium.org>
Cc: "shuah@kernel.org" <shuah@kernel.org>,
"linux-kselftest@vger.kernel.org"
<linux-kselftest@vger.kernel.org>,
Brendan Higgins <brendanhiggins@google.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
David Gow <davidgow@google.com>
Subject: Re: RFC - kernel selftest result documentation (KTAP)
Date: Fri, 19 Jun 2020 13:33:16 -0500 [thread overview]
Message-ID: <ac33fef5-7a1d-ee18-3eeb-c4437901cda5@gmail.com> (raw)
In-Reply-To: <CY4PR13MB11755F5A6879CA3FFD005426FD9D0@CY4PR13MB1175.namprd13.prod.outlook.com>
On 2020-06-16 11:42, Bird, Tim wrote:
>
>
>> -----Original Message-----
>> From: Paolo Bonzini <pbonzini@redhat.com>
>>
>> On 15/06/20 21:07, Bird, Tim wrote:
>>>> Note: making the plan line required differs from TAP13 and TAP14. I
>>>> think it's the right choice, but we should be clear.
>>
>> As an aside, where is TAP14?
> By TAP14, I was referring to the current, undocumented, KUnit
> conventions.
When "TAP14" is used in this discussion, let's please use the current
proposed TAP14 spec which Brendan has provided a link to. If you
want to describe current KUnit conventions, please say current
KUnit conventions.
>
>>
>>> With regards to making it optional or not, I don't have a strong
>>> preference. The extra info seems helpful in some circumstances.
>>> I don't know if it's too onerous to make it a requirement or not.
>>> I'd prefer if it was always there (either at the beginning or the end),
>>> but if there is some situation where it's quite difficult to calculate,
>>> then it would be best not to mandate it. I can't think of any impossible
>>> situations at the moment.
>>
>> I think making the plan mandatory is a good idea. "Late plans" work
>> very well for cases where you cannot know in advance the number of tests
>> (for example in filters that produce TAP from other output), and provide
>> an additional safety net.
>>
>>>> "Bail out!" to be moved to "optional" elements, since it may not appear.
>>>> And we should clarify TAP13 and TAP14's language to say it should only
>>>> appear when the test is aborting without running later tests -- for this
>>>> reason, I think the optional "description" following "Bail out!" should
>>>> be made required. I.e. it must be: "Bail out! $reason"
>>>
>>> I'll make sure this is listed as optional.
>>> I like adding a mandatory reason.
>>
>> +1.
>>
>>>> TAP13/14 makes description optional, are we making it required (I think
>>>> we should). There seems to be a TAP13/14 "convention" of starting
>>>> <description> with "- ", which I'm on the fence about it. It does make
>>>> parsing maybe a little easier.
>>>
>>> I would like the description to be required.
>>> I don't have a strong opinion on the dash. I'm OK with either one (dash
>>> or no dash), but we should make kselftest and KUnit consistent.
>>
>> I think no mandatory dash is better (or even mandatory no-dash!). We
>> can suggest removing it when formatting TAP output.
>
> My personal preference is to have the dash. I think it's more human readable.
> I note that the TAP spec has examples of result lines both with and without
> the dash, so even the spec is ambiguous on this. I think not mandating it
> either way is probably best. For regex parsers, it's easy to ignore with '[-]?'
> outside the pattern groups that grab the number and description.
>
>>
>>>>> Finally, it is possible to use a test directive to indicate another
>>>>> possible outcome for a test: that it was skipped. To report that
>>>>> a test case was skipped, the result line should start with the
>>>>> result "not ok", and the directive "# SKIP" should be placed after
>>>>> the test description. (Note that this deviates from the TAP13
>>>>> specification).
>>
>> How so? The description comes first, but there can be a description of
>> the directive.
> None of the examples of skips in the TAP13 spec have a test descriptions before
> the '# SKIP' directive. But maybe I read too much into the examples. There is a
> format example, and a list of items in a result line that both have the test description
> before the directive. So maybe I read this wrong.
Yes, I think you read too much into the examples. I think the TAP spec
is very hard to read in the current form (v13 and proposed v14). If
we create a KTAP spec, I can do editing to clean up some of the issues
or give review comments on what issues about clarity that I see and how
to fix them.
I read the spec as saying that the description is optional, but if the
description exists in a test line that contains "# TODO explanation"
then the description will precede the "#".
(Yes, you are seeing "I volunteer" because the current spec is so
frustrating to me.)
>
>>
>> not ok 4 - Summarized correctly # TODO Not written yet
>>
>>>>> It is usually helpful if a diagnostic message is emitted to explain
>>>>> the reasons for the skip. If the message is a single line and is
>>>>> short, the diagnostic message may be placed after the '# SKIP'
>>>>> directive on the same line as the test result. However, if it is
>>>>> not on the test result line, it should precede the test line (see
>>>>> diagnostic data, next).
>>>>>
>>>>> Bail out!
>>>>> ---------
>>>>> If a line in the test output starts with 'Bail out!', it indicates
>>>>> that the test was aborted for some reason. It indicates that
>>>>> the test is unable to proceed, and no additional tests will be
>>>>> performed.
>>>>>
>>>>> This can be used at the very beginning of a test, or anywhere in the
>>>>> middle of the test, to indicate that the test can not continue.
>>>>
>>>> I think the required syntax should be:
>>>>
>>>> Bail out! <reason>
>>>>
>>>> And to make it clear that this is optionally used to indicate an early
>>>> abort. (Though with a leading plan line, a parser should be able to
>>>> determine this on its own.)
>>
>> True. However, "Bail out!" allow to distinguish issues with the harness
>> (such as ENOSPC) from test aborts.
>>
>>>>> - TODO directive
>>>>
>>>> Agreed: SKIP should cover everything TODO does.
>>
>> XFAIL/XPASS are different from SKIP. I personally don't have a need for
>> them, but kselftests includes XFAIL/XPASS exit codes and they aren't
>> reflected into selftests/kselftest/runner.sh.
>>
>> Likewise, kselftest.h has ksft_inc_xfail_cnt but not
>> ksft_test_result_xfail/ksft_test_result_xpass.
>>
>> It's important to notice in the spec that the TODO directive inverts the
>> direction of ok/not-ok (i.e. XFAIL, the "good" result, is represented by
>> "not ok # TODO").
>
> The TAP13 spec is not explicit about the result for TODO (and only provides
> one example), but the text *does* say a TODO can represent a bug to be fixed.
> This makes it the equivalent of XFAIL. I hadn't noticed this before. Thanks.
TAP 13 spec:
"Note that if the TODO has an explanation it must be separated from TODO by a
space. These tests represent a feature to be implemented or a bug to be fixed
and act as something of an executable “things to do” list. They are not expected
to succeed. Should a todo test point begin succeeding, the harness should report
it as a bonus. This indicates that whatever you were supposed to do has been done
and you should promote this to a normal test point."
That seems very clear and explicit to me about what the intent and usage of TODO is.
>
>>
>>>>> - test identifier
>>>>> - multiple parts, separated by ':'
I don't find "identifier" when I grep for it in KUnit related places. And
it has been a while since I've read through the KUnit code. So I am a
little lost about what a "test identifier" is. Is this part of the test
line "Description"? Any pointers to what this is?
-Frank
>>>>
>>>> This is interesting... is the goal to be able to report test status over
>>>> time by name?
>>
>> What about "/" instead?
> In my experience, / is used in a lot of test descriptions (when quoting
> file paths) (not in kselftest, but in lots of other tests). Both Fuego
> and KernelCI use colons, and that's what kselftest already uses,
> so it seems like a good choice.
>
>>
>>>>> Finally,
>>>>> - Should a SKIP result be 'ok' (TAP13 spec) or 'not ok' (current kselftest practice)?
>>>>> See https://testanything.org/tap-version-13-specification.html
>>>>
>>>> Oh! I totally missed this. Uhm. I think "not ok" makes sense to me "it
>>>> did not run successfully". ... but ... Uhhh ... how do XFAIL and SKIP
>>>> relate? Neither SKIP nor XFAIL count toward failure, though, so both
>>>> should be "ok"? I guess we should change it to "ok".
>>
>> See above for XFAIL.
>>
>> I initially raised the issue with "SKIP" because I have a lot of tests
>> that depend on hardware availability---for example, a test that does not
>> run on some processor kinds (e.g. on AMD, or old Intel)---and for those
>> SKIP should be considered a success.
>>
>> Paolo
>>
>>> I have the same initial impression. In my mind, a skip is "not ok", since
>>> the test didn't run. However, a SKIP and should be treated differently
>>> from either "ok" or "not ok" by the results interpreter, so I don't think it
>>> matters. Originally I was averse to changing the SKIP result to "ok"
>>> (as suggested by Paulo Bonzini [1]), but I checked and it's pretty trivial to
>>> change the parser in Fuego, and it would make the kernel results format
>>> match the TAP13 spec. I don't see a strong reason for us to be different
>>> from TAP13 here.
>>>
>>> I raised this issue on our automated testing conference call last week
>>> (which includes people from the CKI, Fuego, KernelCI and LKFT projects), and
>>> so people should be chiming in if their parser will have a problem with this change.)
>>>
>>> [1] https://lkml.kernel.org/lkml/20200610154447.15826-1-pbonzini@redhat.com/T/
>>>
>>> Thanks very much for the feedback.
>>> -- Tim
>>>
>
next prev parent reply other threads:[~2020-06-19 18:33 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-10 18:11 RFC - kernel selftest result documentation (KTAP) Bird, Tim
2020-06-13 5:07 ` David Gow
2020-06-15 17:34 ` Bird, Tim
2020-06-16 20:03 ` Brendan Higgins
2020-06-16 20:37 ` Bird, Tim
2020-06-17 0:02 ` Kees Cook
2020-06-19 19:32 ` Brendan Higgins
2020-06-19 18:17 ` Frank Rowand
2020-06-14 18:17 ` Kees Cook
2020-06-15 17:45 ` Bird, Tim
2020-06-15 18:44 ` Kees Cook
2020-06-14 18:39 ` Kees Cook
2020-06-15 19:07 ` Bird, Tim
2020-06-16 12:08 ` Paolo Bonzini
2020-06-16 16:42 ` Bird, Tim
2020-06-16 19:44 ` Brendan Higgins
2020-06-16 20:30 ` Bird, Tim
2020-06-16 23:58 ` Kees Cook
2020-06-19 18:47 ` Frank Rowand
2020-06-19 19:11 ` Kees Cook
2020-06-19 22:58 ` Paolo Bonzini
2020-06-20 14:51 ` Frank Rowand
2020-06-19 18:33 ` Frank Rowand [this message]
2020-06-19 17:58 ` Frank Rowand
2020-06-20 6:44 ` David Gow
2020-06-20 15:03 ` Frank Rowand
2020-06-23 2:58 ` David Gow
2020-06-16 23:52 ` Kees Cook
2020-06-19 18:52 ` Frank Rowand
2020-06-19 19:50 ` Brendan Higgins
2020-06-19 19:49 ` Frank Rowand
2020-06-16 20:48 ` Brendan Higgins
2020-06-16 21:16 ` Bird, Tim
2020-06-16 21:19 ` Bird, Tim
2020-06-17 0:06 ` Kees Cook
2020-06-17 2:30 ` Bird, Tim
2020-06-17 3:36 ` Kees Cook
2020-06-17 4:05 ` David Gow
2020-06-19 19:44 ` Brendan Higgins
2020-06-19 20:19 ` Frank Rowand
2020-06-19 23:47 ` Bird, Tim
2020-06-19 19:39 ` Brendan Higgins
2020-06-19 17:13 ` Frank Rowand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ac33fef5-7a1d-ee18-3eeb-c4437901cda5@gmail.com \
--to=frowand.list@gmail.com \
--cc=Tim.Bird@sony.com \
--cc=brendanhiggins@google.com \
--cc=davidgow@google.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=shuah@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox