[PATCH i-g-t v3 10/10] runner/resultgen: Add cmdline to results.json
Kamil Konieczny
kamil.konieczny at linux.intel.com
Fri Jan 31 12:16:19 UTC 2025
Hi Lucas,
On 2025-01-30 at 13:17:11 -0600, Lucas De Marchi wrote:
> On Thu, Jan 30, 2025 at 08:00:55PM +0100, Kamil Konieczny wrote:
> > Hi Lucas,
> > On 2025-01-30 at 09:21:49 -0800, Lucas De Marchi wrote:
> > > For easier repro scenarios, add the cmdline to the json: one can see the
> > > exact command executed to try to reproduce a CI failure without needing
> > > extra files.
> > >
> > > Adding cmdline to the results.json doesn't need a version upgrade:
> > > piglit can still parse the file.
> >
> > Why not just printing this into stdout before executing test loop?
> > The same way which is already used by igt_facts, so it will go
> > into runnerNN.txt log and will not be duplicated in each and every
> > results.json
>
> igt_facts print things that is happening between the tests. It's
> monitoring the execution.
>
> I don't understand the push back here when we already add things
> like version, uname, execution time, etc. You could use the same argument and say "look at the runner.log"
> to see the execution time.
>
> I want to be able to see things rendered in the final html at
> https://intel-gfx-ci.01.org/tree/intel-xe/bat-all.html,
> make things discoverable and also be able to download the .json, process
> it and come up with the answer to "what do I have to do to reproduce
> this error locally?". A script `repro-igt.py <results.json|url>` would
> be very handy and made possible with improvements like this.
> It's a huge benefit for reproducing and fixing bugs. I don't think the
> extra few bytes really matter.
>
Well, what I wrote is not a blocker, I get your point so
Acked-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> >
> > Adding also Ewelina to Cc
> > Cc: Ewelina Musial <ewelina.musial at intel.com>
> >
> > Digression: for repro it could be helpfull to have also git logs
> > and kernel config but this also is one-time info for whole
> > bat/shard run, so again no need to duplicate in every results.
>
> they are already there
>
> IGT-Version: 1.30-gfafef52e0 (x86_64) (Linux: 6.13.0-xe+ x86_64)
> ^^^^^^^^^
IGT is there but not the kernel :( But that is for another discussion.
Regards,
Kamil
>
> The kernel one is not since we stopped appending the version,
> but it would be good to bring it back.
>
> Lucas De Marchi
>
> >
> > Regards,
> > Kamil
> >
> > >
> > > Tested-by: Peter Senna Tschudin <peter.senna at linux.intel.com>
> > > Reviewed-by: Peter Senna Tschudin <peter.senna at linux.intel.com>
> > > Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
> > > ---
> > ...cut...
> >
> > > index a2b79da9e..2c483fdf5 100644
> > > --- a/runner/json_tests_data/warnings/reference.json
> > > +++ b/runner/json_tests_data/warnings/reference.json
> > > @@ -3,6 +3,7 @@
> > > "results_version":10,
> > > "name":"normal-run",
> > > "uname":"Linux hostname 4.18.0-1-amd64 #1 SMP Debian 4.18.6-1 (2018-09-06) x86_64",
> > > + "cmdline":[],
> > > "time_elapsed":{
> > > "__type__":"TimeAttribute",
> > > "start":1539953735.1110389,
> > > diff --git a/runner/resultgen.c b/runner/resultgen.c
> > > index 87847bf5b..0d3a569cf 100644
> > > --- a/runner/resultgen.c
> > > +++ b/runner/resultgen.c
> > > @@ -2281,7 +2281,7 @@ struct json_object *generate_results_json(int dirfd)
> > > {
> > > struct settings settings;
> > > struct job_list job_list;
> > > - struct json_object *obj, *elapsed;
> > > + struct json_object *obj, *elapsed, *arr;
> > > struct results results;
> > > int testdirfd, fd;
> > > size_t i;
> > > @@ -2319,6 +2319,11 @@ struct json_object *generate_results_json(int dirfd)
> > > close(fd);
> > > }
> > >
> > > + arr = json_object_new_array();
> > > + for (i = 0; i < settings.cmdline.argc; i++)
> > > + json_object_array_add(arr, json_object_new_string(settings.cmdline.argv[i]));
> > > + json_object_object_add(obj, "cmdline", arr);
> > > +
> > > elapsed = json_object_new_object();
> > > json_object_object_add(elapsed, "__type__", json_object_new_string("TimeAttribute"));
> > > if ((fd = openat(dirfd, "starttime.txt", O_RDONLY)) >= 0) {
> > > --
> > > 2.48.0
> > >
More information about the igt-dev
mailing list