From: "Modem, Bhanuprakash" <bhanuprakash.modem@intel.com>
To: Mauro Carvalho Chehab <mauro.chehab@linux.intel.com>
Cc: igt-dev@lists.freedesktop.org
Subject: Re: [igt-dev] [i-g-t] scripts/test_list: Allow unrecognized field:values in testplan
Date: Fri, 1 Sep 2023 18:09:30 +0530 [thread overview]
Message-ID: <04716618-79f7-3a07-93bd-bb234bf85599@intel.com> (raw)
In-Reply-To: <20230901120845.71ddfe41@maurocar-mobl2>
Hi Mauro,
On Fri-01-09-2023 03:38 pm, Mauro Carvalho Chehab wrote:
> On Fri, 1 Sep 2023 14:32:09 +0530
> "Modem, Bhanuprakash" <bhanuprakash.modem@intel.com> wrote:
>
>> Hi Mauro,
>>
>> On Fri-01-09-2023 12:50 pm, Mauro Carvalho Chehab wrote:
>>> On Fri, 1 Sep 2023 10:48:08 +0530
>>> Bhanuprakash Modem <bhanuprakash.modem@intel.com> wrote:
>>>
>>>> As non-Intel vendors also contributing to KMS tests, allow
>>>> them to re-use the existing testplan documentation along with
>>>> their own definitions of field:values pair in test config json.
>>>>
>>>> Instead of aborting, just throw a warning about this unrecognized
>>>> field:values.
>>>>
>>>> Example:
>>>> tests/kms_color.c:994: Warning: unrecognized field in tests/kms_test_config.json ==> Foo: bla
>>>
>>> IMO, there's no need to to that. I mean, if someone wants to add
>>> a new field, he can just patch tests/kms_test_config.json, adding the
>>> new "Foo" field at kms_test_config.json:
>>
>> Non-Intel people may not use kms_test_config.json since it is designed
>> for Intel supported (tests/kms_*.c & tests/intel/kms_*.c) tests
>> (Probably we may need to rename it to intel_kms_test_config.json).
>
> The infra is designed to be generic, and not Intel driver specific.
> I'm even sending patches to Kernel upstream to also use it:
>
> https://lore.kernel.org/linux-doc/cover.1693550658.git.mchehab@kernel.org/T/#t
>
>> So, non-Intel vendors are also allowed to include few kms tests
>> (tests/kms_*.c) in their own testplan. Also, we can't restrict them to
>> use the same testplan as kms_test_config.json.
>
> Hmm... so you're thinking about having a tests/kms_foo.c file that will
> be included on both:
>
> vendor_a/kms_test_config.json
>
> and:
>
> vendor_b/kms_test_config.json
>
> Yes, that's possible. We actually have one or two cases at i915
> and xe for some tests that aren't driver-specific. As the i915
> JSON config file has an extra field ("Feature"), I added it to
> Xe driver as well. This is used currently only for those
> generic tests that are used on both.
>
>> Example:
>> Suppose, some non-Intel vendor (xyz) created a xyz_kms_test_config.json
>> with the "Foo" field defined in it, and updated the documentation of
>> tests/kms_*.c accordingly. Since Intel's kms_test_config.json is also
>> using tests/kms_*.c and not aware of "Foo" can lead the failure.
>
> Currently, the developer who created/updated vendor_a/kms_test_config.json
> and tests/kms_foo.c will have a compilation error pointing to it. Such
> developer will then know that the new field also needs to be at
> vendor_b/kms_test_config.json and can submit a patch against it to
> solve the error.
Agreed, but the vendor_b needs to maintain something (field:values) that
he don't even know/care about.
>
> If we apply your patch, it means that it will generate a warning and
> someone from vendor_b will need later to identify what happened and
> copy the (possible) definition from vendor_a/kms_test_config.json to
> suppress the warning.
Yeah, There is no way to suppress the warning except maintaining the
definitions in both places.
>
> It works, but it means an extra step. So, while I would prefer to not
> merge this change, I won't oppose on converting it into a warning.
> If you decide to go ahead and merge it, you can add my acked-by.
We can hold this for sometime, till we get the better solution.
- Bhanu
>
>> The problem statement is to have different testplans with their own set
>> of field:values and share the documentation.
>>
>> - Bhanu
>>
>>>
>>> diff --git a/tests/kms_test_config.json b/tests/kms_test_config.json
>>> index 9219ae4ebd9d..1dfca84dd73c 100644
>>> --- a/tests/kms_test_config.json
>>> +++ b/tests/kms_test_config.json
>>> @@ -35,6 +35,7 @@
>>> "description": "Defines the test category. Usually used at subtest level."
>>> }
>>> },
>>> + "Foo" : { },
>>> "Description" : {
>>> "_properties_": {
>>> "description": "Provides a description for the test/subtest."
>>>
>>> NOTE: It would probably make sense to add a description to it, to make
>>> clear what such "Foo" field means, in a similar way to the descriptions
>>> added to the other fields.
>>>
>>> As the fields are optional, this won't require any changes at the
>>> existing tests, and will provide an extra benefit that the meaning of
>>> the "Foo" field can be documented via _properties_/description field >
>>> Regards,
>>> Mauro
>>>
>>>>
>>>> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
>>>> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
>>>> ---
>>>> scripts/test_list.py | 4 ++--
>>>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/scripts/test_list.py b/scripts/test_list.py
>>>> index 0bcc96869..517c4d067 100755
>>>> --- a/scripts/test_list.py
>>>> +++ b/scripts/test_list.py
>>>> @@ -1219,8 +1219,8 @@ class TestList:
>>>> continue
>>>>
>>>> file_line.rstrip(r"\n")
>>>> - sys.exit(f"{fname}:{file_ln + 1}: Error: unrecognized line. Need to add field at %s?\n\t==> %s" %
>>>> - (self.config_fname, file_line))
>>>> + print(f"{'/'.join(fname.split('/')[-2:])}:{file_ln + 1}: Warning: unrecognized field in %s ==> %s" %
>>>> + ('/'.join(self.config_fname.split('/')[-2:]), file_line))
>>>>
>>>> def show_subtests(self, sort_field):
>>>>
next prev parent reply other threads:[~2023-09-01 12:39 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-01 5:18 [igt-dev] [i-g-t] scripts/test_list: Allow unrecognized field:values in testplan Bhanuprakash Modem
2023-09-01 6:17 ` [igt-dev] ✗ GitLab.Pipeline: warning for " Patchwork
2023-09-01 6:51 ` [igt-dev] ✓ CI.xeBAT: success " Patchwork
2023-09-01 6:51 ` [igt-dev] ✗ Fi.CI.BAT: failure " Patchwork
2023-09-01 7:20 ` [igt-dev] [i-g-t] " Mauro Carvalho Chehab
2023-09-01 9:02 ` Modem, Bhanuprakash
2023-09-01 10:08 ` Mauro Carvalho Chehab
2023-09-01 12:39 ` Modem, Bhanuprakash [this message]
2023-09-04 8:13 ` Mauro Carvalho Chehab
2023-09-01 10:22 ` [igt-dev] ✗ GitLab.Pipeline: warning for scripts/test_list: Allow unrecognized field:values in testplan (rev2) Patchwork
2023-09-01 10:49 ` [igt-dev] ✓ CI.xeBAT: success " Patchwork
2023-09-01 10:50 ` [igt-dev] ✓ Fi.CI.BAT: " Patchwork
2023-09-01 19:30 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
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=04716618-79f7-3a07-93bd-bb234bf85599@intel.com \
--to=bhanuprakash.modem@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=mauro.chehab@linux.intel.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