[PATCH i-g-t v2 6/6] lib/kunit: Process module remove error after list errors

Janusz Krzysztofik janusz.krzysztofik at linux.intel.com
Thu Feb 1 16:02:05 UTC 2024


Hi Kamil,

On Thursday, 1 February 2024 15:55:01 CET Kamil Konieczny wrote:
> Hi Janusz,
> On 2024-01-31 at 19:03:53 +0100, Janusz Krzysztofik wrote:
> > Skip on any error from test case list gathering first, then, in
> > preparation for executing those test cases, on an error from unloading the
> > test module loaded in list only mode, so it is more clear if listing the
> > test cases was successful or not.
> > 
> > Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik at linux.intel.com>
> > ---
> >  lib/igt_kmod.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
> > index 53c54b1a0d..741c7fd055 100644
> > --- a/lib/igt_kmod.c
> > +++ b/lib/igt_kmod.c
> > @@ -1225,11 +1225,11 @@ static void kunit_get_tests(struct igt_list_head 
*tests,
> >  		free(case_name);
> >  	}
> >  
> > -	igt_skip_on(kmod_module_remove_module(tst->kmod, 
KMOD_REMOVE_FORCE));
> > -
> >  	igt_skip_on_f(err,
> >  		      "KTAP parser failed while getting a list of test 
cases\n");
> >  	igt_skip_on(igt_list_empty(tests));
> 
> This skip_on will prevent module unload below... What about
> remembering both and skipping on list_empty() only after module unload?
> For example:
>     testslist_is_empty = igt_list_empty(tests);
>     unload_failed = kmod_module_remove_module(tst->kmod, KMOD_REMOVE_FORCE);
> 
>     igt_skip_on(testslist_is_empty);
>     igt_skip_on_f(unload_failed, "kmod %s unload failed\n", tst->kmod);

As I tried to express in my commit description, test module is unloaded here, 
after the list of test cases is collected, "in preparation for executing those 
test cases", and not as a final cleanup.

kunit_get_tests() is called from inside igt_subtest_with_dynamic() before any 
calls to igt_dynamic() from where test cases are executed.  If 
kunit_get_tests() skips for any reason then no test cases provided by that 
module will be executed, then unloading the module is not required.  An 
attempt to unload it if still loaded will be take from the trailing 
igt_fixture section of igt_kunit() via a call to igt_ktest_end().

Is the above clarification sufficient for you?  

Thanks,
Janusz

> 
> 
> Regards,
> Kamil
> 
> > +
> > +	igt_skip_on(kmod_module_remove_module(tst->kmod, 
KMOD_REMOVE_FORCE));
> >  }
> >  
> >  static void __igt_kunit(struct igt_ktest *tst,
> 






More information about the igt-dev mailing list