From: Guillaume Tucker <guillaume.tucker@collabora.com>
To: "Bird, Tim" <Tim.Bird@sony.com>,
Nikolai Kondrashov <Nikolai.Kondrashov@redhat.com>,
"kernelci@lists.linux.dev" <kernelci@lists.linux.dev>,
Dmitry Vyukov <dvyukov@google.com>,
Cristian Marussi <cristian.marussi@arm.com>,
Alice Ferrazzi <alicef@gentoo.org>,
Philip Li <philip.li@intel.com>,
Vishal Bhoj <vishal.bhoj@linaro.org>,
"automated-testing@lists.yoctoproject.org"
<automated-testing@lists.yoctoproject.org>,
CKI <cki-project@redhat.com>, Mark Brown <broonie@kernel.org>,
Johnson George <Johnson.George@microsoft.com>,
Sachin Sant <sachinp@linux.ibm.com>
Subject: Re: KCIDB: Support one more test status
Date: Thu, 20 Apr 2023 07:53:29 +0200 [thread overview]
Message-ID: <76255cf0-170b-a091-e7b7-544ce3d3af50@collabora.com> (raw)
In-Reply-To: <BYAPR13MB2503FE8D3D92A95B8B331B8DFD629@BYAPR13MB2503.namprd13.prod.outlook.com>
On 19/04/2023 21:38, Bird, Tim wrote:
>
>> -----Original Message-----
>> From: Nikolai Kondrashov <Nikolai.Kondrashov@redhat.com>
>> Hello everyone involved with, or interested in KCIDB,
>>
>> I would like to make KCIDB I/O schema accept one more test status string:
>> "MISS" (preliminary name), meaning the test was supposed to run, but didn't
>> because of a harness/framework/infrastructure/CI system failure.
>
>>
>> This would be distinct from the "SKIP" status, meaning the test was supposed
>> to run, but didn't (or didn't complete), because it was not applicable.
>>
>> Here's the PR in question: https://github.com/kernelci/kcidb-io/pull/74
>>
>> I'll merge it in two weeks, on Wed, May 3, if there are no unresolved
>> objections by that time.
>>
>> Read on for details, and respond either to this message, or in the PR.
>>
>> At CKI we have both tests that skip themselves for valid reasons, and tests
>> that should've executed, but didn't. Because e.g. the previous test has
>> crashed the machine, or the tested kernel failed to boot. At the same time, we
>> want to make sure all the tests we planned to execute had their chance.
>>
>> Before testing, we send our plan to our database as a KCIDB dataset with all
>> tests listed without the "status" field. According to KCIDB schema/protocol a
>> missing "status" field simply means no data, and is canonically interpreted as
>> "execution in progress".
>>
>> After the testing is done, or we gave up trying, we send the same KCIDB test
>> objects to the database, but this time only containing whatever results we
>> got, including the "status" fields. However, with the current set of status
>> strings [1], the only way we can try to express "wanted to run, but couldn't"
>> is with "SKIP", which is not supposed to alert anyone, yet this situation
>> should be treated as a problem.
> Why can't "wanted to run, but couldn't" be expressed with "ERROR"?
There's also "wanted to run, but didn't" if the test wasn't
actually run. I guess failing to start the test is a harness
problem, and a failure while it's running is more likely a test
problem (but not necessarily). But also, what if a test has
disappeared from a test suite?
>> We propose to call this new status "MISS" (as in "the test result should be
>> there, but isn't"), and think it would be useful to others as well.
>>
>> We can break down the testing stack into three layers: the tested code, the
>> test, and the harness (and everything above it) that runs the test. If we then
>> express each existing test status as one trinary outcome per each of those
>> layers, we would get this table (in order of descending status priority):
>>
>> STATUS CODE TEST HARNESS+ LEGEND
>>
>> FAIL ❌ ✅ ✅ ❌ - failure
>> ERROR ➖ ❌ ✅ ✅ - success
>> PASS ✅ ✅ ✅ ➖ - no data
>> DONE ➖ ✅ ✅
>> SKIP ➖ ➖ ✅
>> ➖ ➖ ➖
>>
>> If you look at the above closely, you will notice one possible state missing
>> (because we didn't need to express failing harnesses), and that is the status
>> we want to introduce:
>>
>> STATUS CODE TEST HARNESS+ LEGEND
>>
>> FAIL ❌ ✅ ✅ ❌ - failure
>> ERROR ➖ ❌ ✅ ✅ - success
>> => MISS ➖ ➖ ❌ <= ➖ - no data
>> PASS ✅ ✅ ✅
>> DONE ➖ ✅ ✅
>> SKIP ➖ ➖ ✅
>> ➖ ➖ ➖
It seems there are many reasons for a test to not run correctly
and trying to put them in buckets isn't as simple as that. I
would rather be in favour of having fewer states: pass, fail,
skip and unknown for when there's no clear test result.
On a side note, the last line with no data anywhere doesn't have
a name. Is the status field optional in KCIDB, so we can send
data with no status? That would match the last line I guess. Or
maybe it could be named as UNKNOWN or something. I think that
kind of relates to missing test results if there's no positive
error reported by the test harness, see my other paragraph below.
>> Please respond with comments, objections, and (counter-)proposals,
>> if you have them.
>
> I don't understand the rationale for distinguishing a test error from a harness
> error. In either case the test was not executed properly, and so there is no
> useful test result data available. Diagnostic information should enable
> the user to determine whether the problem was due to the test code failing
> or the test harness failing.
>
> I think I'm missing something. Are you trying to distinguish these so you
> can determine whether there is a problem with the test itself, vs. the harness?
> Are you automatically re-running a test if the harness is the problem?
>
> Why do you want to distinguish these error cases?
I was wondering the same thing. Is MISS effectively like
a "null" default state for when the system knows a test has been
started and a result is expected but hasn't arrived yet? Whereas
ERROR is when the test has clearly hit an error and failed to
run? For example, if a test suite changed and a test case
disappeared or was renamed then you would see a MISS result with
the old test case name and that's not really an error.
Thanks,
Guillaume
>> Thank you for your attention!
>> Nick (and the CKI team)
>>
>> [1] The current set of supported status strings
>>
>> https://github.com/kernelci/kcidb-io/blob/0bb7ffff3fe012ae138dd2f7c1d817034fe2c0ba/kcidb_io/schema/v04_01.py#L126
>
next prev parent reply other threads:[~2023-04-20 5:52 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-19 17:08 KCIDB: Support one more test status Nikolai Kondrashov
2023-04-19 17:49 ` Mark Brown
2023-04-20 16:50 ` Nikolai Kondrashov
2023-04-19 19:38 ` Bird, Tim
2023-04-20 5:53 ` Guillaume Tucker [this message]
2023-04-20 16:37 ` [Automated-testing] " Nikolai Kondrashov
2023-05-05 11:39 ` Guillaume Tucker
2023-05-08 10:16 ` Nikolai Kondrashov
2023-04-20 12:08 ` Nikolai Kondrashov
2023-04-20 21:48 ` Bird, Tim
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=76255cf0-170b-a091-e7b7-544ce3d3af50@collabora.com \
--to=guillaume.tucker@collabora.com \
--cc=Johnson.George@microsoft.com \
--cc=Nikolai.Kondrashov@redhat.com \
--cc=Tim.Bird@sony.com \
--cc=alicef@gentoo.org \
--cc=automated-testing@lists.yoctoproject.org \
--cc=broonie@kernel.org \
--cc=cki-project@redhat.com \
--cc=cristian.marussi@arm.com \
--cc=dvyukov@google.com \
--cc=kernelci@lists.linux.dev \
--cc=philip.li@intel.com \
--cc=sachinp@linux.ibm.com \
--cc=vishal.bhoj@linaro.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