From: Nikolai Kondrashov <spbnick@gmail.com>
To: syzkaller <syzkaller@googlegroups.com>,
Dmitry Vyukov <dvyukov@google.com>,
Vishal Bhoj <vishal.bhoj@linaro.org>,
Alice Ferrazzi <alicef@gentoo.org>,
automated-testing@lists.yoctoproject.org,
Cristian Marussi <cristian.marussi@arm.com>,
Tim Bird <Tim.Bird@sony.com>,
Johnson George <Johnson.George@microsoft.com>,
Veronika Kabatova <vkabatov@redhat.com>,
Guillaume Tucker <guillaume.tucker@collabora.com>,
"kernelci@lists.linux.dev" <kernelci@lists.linux.dev>,
Don Zickus <dzickus@redhat.com>, Mark Brown <broonie@kernel.org>,
Philip Li <philip.li@intel.com>,
Denys Fedoryshchenko <denys.f@collabora.com>,
Michael Hofmann <mhofmann@redhat.com>,
Tales da Aparecida <tdaapare@redhat.com>,
Aditya Nagesh <adityanagesh@microsoft.com>,
Jeny Dhruvit Sheth <jeny.sadadia@collabora.com>,
Sachin Sant <sachinp@linux.ibm.com>,
"Hambardzumyan, Minas" <minas@ti.com>
Subject: Re: KCIDB: Support non-binary test outputs
Date: Mon, 5 Aug 2024 14:28:24 +0300 [thread overview]
Message-ID: <bf0befaa-e23e-43f0-996b-d095b7390122@gmail.com> (raw)
In-Reply-To: <5188d6fe-bd01-402b-a6e6-0fe57ef4d336@gmail.com>
Hi everyone,
On 8/5/24 12:56 PM, Nikolai Kondrashov wrote:
> Meanwhile I'd like to propose two small, but potentially very useful changes
> to the I/O schema for tests:
>
> * Supporting non-binary outputs beyond PASS/FAIL -
> integers/floats/booleans/strings/etc. - useful for performance tests.
>
> * Supporting recording `compatible` values from the top of the device tree
> inside the test environment, for machines which use them - useful for
> correlating test results by hardware.
>
> Here's the corresponding schema PR:
>
> https://github.com/kernelci/kcidb-io/pull/85
>
> I'll follow up with a separate message for each of the changes, going over the
> details and the rationale.
The support for non-binary test outputs introduces a new field to the "test"
objects called "value", being an "object" itself. It (and its abstract
meaning) are supposed to work together with the "status" field. That is, it
should only be considered when the test has actually executed. I.e. with a
"FAIL", "ERROR", "PASS", or "DONE" status only. Normally "DONE" should be
used, when the value is the test's output, and not an auxiliary value.
Here is the (abbreviated) schema for the new field:
"value": {
"type": "object",
"properties": {
"integer": {"type": "integer"},
"number": {"type": "number"},
"string": {"type": "string"},
"boolean": {"type": "boolean"},
},
"minProperties": 1,
"additionalProperties": False
},
The meaning of the value itself depends on the particular test, that is the
"path" field value. Each property inside the value corresponds to a data type.
At least one must be specified, but if more than one type property is set,
each is considered a different representation of the *same* value, and not a
different value. E.g. these can be specified at the same time: "integer": 1,
"number": 1, "boolean": true, "string": "true".
Specifying multiple types at once can be used to assist transitioning
test output to a different type, but in normal use only one of them
should be supplied.
Here's an example test object using the "value" field:
{
"id": "redhat:2876829c98e9878766a",
"origin": "redhat",
"build_id": "redhat:387d3459ef",
"path":"redhat_ext4fs.performance.iops",
"comment": "Red Hat Ext4 FS I/O performance, IOPS"
"status": "DONE",
"value": {"integer": 57324}
}
If the test in question has multiple values to report, then the submitting CI
system should create (synthetic) subtests under the test node, one for each
value. E.g. if the (imaginary) test above had random-read and random-write
IOPS to report separately, it could've been expressed as such:
"tests": [
{
"id": "redhat:2876829c98e9878766a",
"origin": "redhat",
"build_id": "redhat:387d3459ef",
"path":"redhat_ext4fs.performance",
"comment": "Red Hat Ext4 FS I/O performance"
"status": "DONE"
},
{
"id": "redhat:2876829c98e9878766a:rriops",
"origin": "redhat",
"build_id": "redhat:387d3459ef",
"path":"redhat_ext4fs.performance.rriops",
"comment": "Red Hat Ext4 FS I/O performance, random-read IOPS"
"status": "DONE",
"value": {"integer": 97524}
},
{
"id": "redhat:2876829c98e9878766a:rwiops",
"origin": "redhat",
"build_id": "redhat:387d3459ef",
"path":"redhat_ext4fs.performance.rwiops",
"comment": "Red Hat Ext4 FS I/O performance, random-write IOPS"
"status": "DONE",
"value": {"integer": 46434}
}
]
This separation allows us to control complexity, while at the same time
allowing KCIDB to analyze and track results in a more-or-less generic way.
Finally, if you need to monitor both the separate results and a combined
result, you simply add it to the parent test. Like adding back the overall
IOPS value to the parent test above.
Don't hesitate to send your comments/questions/objections here or in the PR!
Nick
next prev parent reply other threads:[~2024-08-05 11:28 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-05 9:56 KCIDB: Test schema enhancements Nikolai Kondrashov
2024-08-05 11:28 ` Nikolai Kondrashov [this message]
2024-08-05 12:33 ` KCIDB: Support non-binary test outputs Mark Brown
2024-08-05 14:26 ` Nikolai Kondrashov
2024-08-05 16:32 ` Mark Brown
2024-08-06 17:03 ` Nikolai Kondrashov
2024-08-06 19:20 ` Mark Brown
2024-08-08 18:05 ` Nikolai Kondrashov
2024-08-08 19:47 ` Mark Brown
2024-08-15 15:29 ` Nikolai Kondrashov
2024-08-05 17:11 ` Bird, Tim
2024-08-06 17:18 ` [Automated-testing] " Nikolai Kondrashov
2024-08-05 17:02 ` Bird, Tim
2024-08-06 17:32 ` [Automated-testing] " Nikolai Kondrashov
2024-08-16 10:03 ` [Automated-testing] KCIDB: Support non-binary test outputs V2 Nikolai Kondrashov
2024-08-16 12:58 ` Nikolai Kondrashov
2024-08-16 14:05 ` [Automated-testing] KCIDB: Support non-binary test outputs V3 Nikolai Kondrashov
2024-08-16 16:43 ` Bird, Tim
2024-08-16 18:07 ` Nikolai Kondrashov
2024-08-19 9:50 ` Nikolai Kondrashov
2024-08-26 10:37 ` Nikolai Kondrashov
2024-08-05 12:28 ` KCIDB: Test schema enhancements Nikolai Kondrashov
2024-08-06 17:39 ` [Automated-testing] " Nikolai Kondrashov
2024-08-06 19:26 ` Mark Brown
2024-08-07 10:46 ` Nikolai Kondrashov
2024-08-05 12:34 ` Nikolai Kondrashov
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=bf0befaa-e23e-43f0-996b-d095b7390122@gmail.com \
--to=spbnick@gmail.com \
--cc=Johnson.George@microsoft.com \
--cc=Tim.Bird@sony.com \
--cc=adityanagesh@microsoft.com \
--cc=alicef@gentoo.org \
--cc=automated-testing@lists.yoctoproject.org \
--cc=broonie@kernel.org \
--cc=cristian.marussi@arm.com \
--cc=denys.f@collabora.com \
--cc=dvyukov@google.com \
--cc=dzickus@redhat.com \
--cc=guillaume.tucker@collabora.com \
--cc=jeny.sadadia@collabora.com \
--cc=kernelci@lists.linux.dev \
--cc=mhofmann@redhat.com \
--cc=minas@ti.com \
--cc=philip.li@intel.com \
--cc=sachinp@linux.ibm.com \
--cc=syzkaller@googlegroups.com \
--cc=tdaapare@redhat.com \
--cc=vishal.bhoj@linaro.org \
--cc=vkabatov@redhat.com \
/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;
as well as URLs for NNTP newsgroup(s).