RE: [Automated-testing] KCIDB: Support non-binary test outputs V3
"Bird, Tim" <[email protected]>
| Newsgroups | dev.linux.lists.kernelci |
|---|---|
| Message-ID | <BN6PR13MB3041F60A657804ACDEB94409FD812@BN6PR13MB3041.namprd13.prod.outlook.com> |
> -----Original Message----- > From: [email protected] <[email protected]> On Behalf Of Nikolai Kondrashov > On 8/16/24 1:03 PM, Nikolai Kondrashov wrote: > > On 8/5/24 2:28 PM, Nikolai Kondrashov wrote: > >>> 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. > > > > Alright, I redid support for non-binary test outputs: > > > > https://github.com/kernelci/kcidb-io/pull/85/commits/040a20db407f2592c28c3797cec9e4118221af9c > > Aaand, redone again: > > https://github.com/kernelci/kcidb-io/pull/85/commits/86b75f6bf6e4f74e594a301382f2b77cfe4cbbd9 > > I switched the value from integer to floating-point, as that allows us to get > rid of the exponent field, at the cost of a small accuracy loss. The storage > requirements are still 64 bits. > > These values are intended for analysis and tracking first of all, and small > inaccuracy would have little effect on them. If you want to store the exact > measured value, you can put it into the "misc" field. > > OTOH, this makes it much easier and faster to run queries on the values. > > Here's the new (abbreviated schema): > > "number": { > "type": "object", > "properties": { > "value": {"type": "number"}, > "unit": {"type": "string"}, > "prefix": { > "type": "string", > "enum": ["metric", "binary"], What is the purpose of the metric/binary enum? Is it to disambiguate the meaning of K and M in unit prefixes? Is it only for display? > }, > }, > "required": ["value"], > "additionalProperties": False, > } > > And the rewritten examples: > > "value": 42, > # Display: 42 > > "value": 3.14159, > # Display: 3.14159 > > "value": 720, > "unit": "KB", > # Display: 720 KB > > "value": 145000, > "prefix": "metric" > # Display: 145 K > > "value": 1.6e-7, > "unit": "s", > "prefix": "metric", > # Display: 160 ns > > "value": 5.12e5, > "unit": "B", > "prefix": "binary", > # Display: 500 KiB Looks good to me!! -- Tim