Re: [Automated-testing] KCIDB: Support non-binary test outputs

Nikolai Kondrashov <[email protected]>
Newsgroups dev.linux.lists.kernelci
Message-ID <[email protected]>
On 8/5/24 8:02 PM, Tim Bird wrote:
>> -----Original Message-----
>> From: Nikolai Kondrashov <[email protected]>
>> On 8/5/24 12:56 PM, Nikolai Kondrashov wrote:
>> 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.
>
> I'm not sure I'm reading this correctly, but as I understand it, this
pre-supposes
> that the value and the testcase are synonymous.  Is that right?

Yep. But don't take the meaning of "testcase" too literally. You can report as
many "synthetic" cases as you need, to report your data. They don't actually
have to correspond to actual "testcases". View them as a tool to express your
results. Just make sure you get the agreement of anyone else reporting the
same data on how you're going to do it.

> Are there values that are not assigned to a testcase?

I don't know? I haven't seen the gamut of the data we need. However, we can
always make up a "testcase" and assign them there, if needed, as I say above.

> In my experience, many tests (particularly IO performance tests) produce
> a whole lot of values (basically a matrix for combinations of different IO
sizes,
> IO direction (read/write), patterns (sequential vs random), and scheduling
> classes).  It's quite common to have a tester select only a few values to
> convert into testcases (that is, items that would cause a test to pass or fail).

Sure. To decide which values you want reported explicitly, consider which ones
you want KCIDB to be able to track, graph, and report deviations on
(eventually). You can put the the complete data into our free-form "misc"
field, if you'd still like to be able to get to it (but not query or analyze
it within KCIDB).

>> 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".
>
> I'm not sure what the intended use is for these different type properties.
> Almost universally, benchmark data is expressed as numeric values (that is,
> numbers).  Are these other types used to hold intermediate formats?
> If so, for what reason?  I would suggest dropping the type field, and just
> making them all numbers.

We don't really have a type field, we just have separate fields for different
types. I don't really know what types we would want. I just showed some types
there, mostly as an illustration. But I think we might need the floating-point
and the integers separately, so different precision requirements could be
satisfied. That alone is enough to require us to support different types.

Regarding the strings, I suppose some tests (perhaps not performance ones)
could produce some discrete categorical outputs, and then we would be able to
graph and track them. But again, I haven't actually seen any.

The boolean was added just to completely cover the atomic types, although I
could probably think of a usecase, we can easily drop it, as well as the
strings, and add them when necessary, no problem.

Nick
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.