2023-01-15 21:26:13

by Alexander Pantyukhin

[permalink] [raw]
Subject: [PATCH] tools/testing/kunit/kunit.py: remove redundant double check

The build_tests function contained the doulbe checking for not success
result. It is fixed in the current patch. Additional small
simplifications of code like useing ternary if were applied (avoid use
the same operation by calculation times differ in two places).

Signed-off-by: Alexander Pantyukhin <[email protected]>
---
tools/testing/kunit/kunit.py | 17 +++++------------
1 file changed, 5 insertions(+), 12 deletions(-)

diff --git a/tools/testing/kunit/kunit.py b/tools/testing/kunit/kunit.py
index 43fbe96318fe..481c213818bd 100755
--- a/tools/testing/kunit/kunit.py
+++ b/tools/testing/kunit/kunit.py
@@ -77,10 +77,8 @@ def config_tests(linux: kunit_kernel.LinuxSourceTree,
config_start = time.time()
success = linux.build_reconfig(request.build_dir, request.make_options)
config_end = time.time()
- if not success:
- return KunitResult(KunitStatus.CONFIG_FAILURE,
- config_end - config_start)
- return KunitResult(KunitStatus.SUCCESS,
+ status = KunitStatus.SUCCESS if success else KunitStatus.CONFIG_FAILURE
+ return KunitResult(status,
config_end - config_start)

def build_tests(linux: kunit_kernel.LinuxSourceTree,
@@ -92,13 +90,8 @@ def build_tests(linux: kunit_kernel.LinuxSourceTree,
request.build_dir,
request.make_options)
build_end = time.time()
- if not success:
- return KunitResult(KunitStatus.BUILD_FAILURE,
- build_end - build_start)
- if not success:
- return KunitResult(KunitStatus.BUILD_FAILURE,
- build_end - build_start)
- return KunitResult(KunitStatus.SUCCESS,
+ status = KunitStatus.SUCCESS if success else KunitStatus.BUILD_FAILURE
+ return KunitResult(status,
build_end - build_start)

def config_and_build_tests(linux: kunit_kernel.LinuxSourceTree,
@@ -145,7 +138,7 @@ def exec_tests(linux: kunit_kernel.LinuxSourceTree, request: KunitExecRequest) -
tests = _list_tests(linux, request)
if request.run_isolated == 'test':
filter_globs = tests
- if request.run_isolated == 'suite':
+ elif request.run_isolated == 'suite':
filter_globs = _suites_from_test_list(tests)
# Apply the test-part of the user's glob, if present.
if '.' in request.filter_glob:
--
2.25.1


2023-01-17 10:31:12

by David Gow

[permalink] [raw]
Subject: Re: [PATCH] tools/testing/kunit/kunit.py: remove redundant double check

On Mon, 16 Jan 2023 at 05:05, Alexander Pantyukhin <[email protected]> wrote:
>
> The build_tests function contained the doulbe checking for not success
Nit: "double" -> "double"

> result. It is fixed in the current patch. Additional small
> simplifications of code like useing ternary if were applied (avoid use
Nit: "useing" -> "using"
> the same operation by calculation times differ in two places).
>
> Signed-off-by: Alexander Pantyukhin <[email protected]>
> ---
Thanks for catching these!
This looks good to me, save for a few typos (which you should fix if
there's a v2, but it isn't important enough to do another version...)

Unless someone with more Python knowledge than me jumps in and
complains, this is:

Reviewed-by: David Gow <[email protected]>

Cheers,
-- David

> tools/testing/kunit/kunit.py | 17 +++++------------
> 1 file changed, 5 insertions(+), 12 deletions(-)
>
> diff --git a/tools/testing/kunit/kunit.py b/tools/testing/kunit/kunit.py
> index 43fbe96318fe..481c213818bd 100755
> --- a/tools/testing/kunit/kunit.py
> +++ b/tools/testing/kunit/kunit.py
> @@ -77,10 +77,8 @@ def config_tests(linux: kunit_kernel.LinuxSourceTree,
> config_start = time.time()
> success = linux.build_reconfig(request.build_dir, request.make_options)
> config_end = time.time()
> - if not success:
> - return KunitResult(KunitStatus.CONFIG_FAILURE,
> - config_end - config_start)
> - return KunitResult(KunitStatus.SUCCESS,
> + status = KunitStatus.SUCCESS if success else KunitStatus.CONFIG_FAILURE
> + return KunitResult(status,
> config_end - config_start)
>
> def build_tests(linux: kunit_kernel.LinuxSourceTree,
> @@ -92,13 +90,8 @@ def build_tests(linux: kunit_kernel.LinuxSourceTree,
> request.build_dir,
> request.make_options)
> build_end = time.time()
> - if not success:
> - return KunitResult(KunitStatus.BUILD_FAILURE,
> - build_end - build_start)
> - if not success:
> - return KunitResult(KunitStatus.BUILD_FAILURE,
> - build_end - build_start)
> - return KunitResult(KunitStatus.SUCCESS,
> + status = KunitStatus.SUCCESS if success else KunitStatus.BUILD_FAILURE
> + return KunitResult(status,
> build_end - build_start)
>
> def config_and_build_tests(linux: kunit_kernel.LinuxSourceTree,
> @@ -145,7 +138,7 @@ def exec_tests(linux: kunit_kernel.LinuxSourceTree, request: KunitExecRequest) -
> tests = _list_tests(linux, request)
> if request.run_isolated == 'test':
> filter_globs = tests
> - if request.run_isolated == 'suite':
> + elif request.run_isolated == 'suite':
> filter_globs = _suites_from_test_list(tests)
> # Apply the test-part of the user's glob, if present.
> if '.' in request.filter_glob:
> --
> 2.25.1
>


Attachments:
smime.p7s (3.91 kB)
S/MIME Cryptographic Signature

2023-01-17 10:52:11

by Alexander Pantyukhin

[permalink] [raw]
Subject: Re: [PATCH] tools/testing/kunit/kunit.py: remove redundant double check

Hello, David.
Thank you very much for your review!
There is no v2 yet.

>
> On Mon, 16 Jan 2023 at 05:05, Alexander Pantyukhin <[email protected]> wrote:
> >
> > The build_tests function contained the doulbe checking for not success
> Nit: "double" -> "double"
>
> > result. It is fixed in the current patch. Additional small
> > simplifications of code like useing ternary if were applied (avoid use
> Nit: "useing" -> "using"
> > the same operation by calculation times differ in two places).
> >
> > Signed-off-by: Alexander Pantyukhin <[email protected]>
> > ---
> Thanks for catching these!
> This looks good to me, save for a few typos (which you should fix if
> there's a v2, but it isn't important enough to do another version...)
>
> Unless someone with more Python knowledge than me jumps in and
> complains, this is:
>
> Reviewed-by: David Gow <[email protected]>
>
> Cheers,
> -- David
>
> > tools/testing/kunit/kunit.py | 17 +++++------------
> > 1 file changed, 5 insertions(+), 12 deletions(-)
> >
> > diff --git a/tools/testing/kunit/kunit.py b/tools/testing/kunit/kunit.py
> > index 43fbe96318fe..481c213818bd 100755
> > --- a/tools/testing/kunit/kunit.py
> > +++ b/tools/testing/kunit/kunit.py
> > @@ -77,10 +77,8 @@ def config_tests(linux: kunit_kernel.LinuxSourceTree,
> > config_start = time.time()
> > success = linux.build_reconfig(request.build_dir, request.make_options)
> > config_end = time.time()
> > - if not success:
> > - return KunitResult(KunitStatus.CONFIG_FAILURE,
> > - config_end - config_start)
> > - return KunitResult(KunitStatus.SUCCESS,
> > + status = KunitStatus.SUCCESS if success else KunitStatus.CONFIG_FAILURE
> > + return KunitResult(status,
> > config_end - config_start)
> >
> > def build_tests(linux: kunit_kernel.LinuxSourceTree,
> > @@ -92,13 +90,8 @@ def build_tests(linux: kunit_kernel.LinuxSourceTree,
> > request.build_dir,
> > request.make_options)
> > build_end = time.time()
> > - if not success:
> > - return KunitResult(KunitStatus.BUILD_FAILURE,
> > - build_end - build_start)
> > - if not success:
> > - return KunitResult(KunitStatus.BUILD_FAILURE,
> > - build_end - build_start)
> > - return KunitResult(KunitStatus.SUCCESS,
> > + status = KunitStatus.SUCCESS if success else KunitStatus.BUILD_FAILURE
> > + return KunitResult(status,
> > build_end - build_start)
> >
> > def config_and_build_tests(linux: kunit_kernel.LinuxSourceTree,
> > @@ -145,7 +138,7 @@ def exec_tests(linux: kunit_kernel.LinuxSourceTree, request: KunitExecRequest) -
> > tests = _list_tests(linux, request)
> > if request.run_isolated == 'test':
> > filter_globs = tests
> > - if request.run_isolated == 'suite':
> > + elif request.run_isolated == 'suite':
> > filter_globs = _suites_from_test_list(tests)
> > # Apply the test-part of the user's glob, if present.
> > if '.' in request.filter_glob:
> > --
> > 2.25.1
> >

2023-01-17 22:33:26

by Daniel Latypov

[permalink] [raw]
Subject: Re: [PATCH] tools/testing/kunit/kunit.py: remove redundant double check

On Sun, Jan 15, 2023 at 1:05 PM Alexander Pantyukhin
<[email protected]> wrote:
>
> The build_tests function contained the doulbe checking for not success

very nit: if we're fixing the "doulbe" typo, can we also do
"the doulbe" => "double" (drop the "the")

> result. It is fixed in the current patch. Additional small
> simplifications of code like useing ternary if were applied (avoid use
> the same operation by calculation times differ in two places).
>
> Signed-off-by: Alexander Pantyukhin <[email protected]>

Reviewed-by: Daniel Latypov <[email protected]>

Thanks!
I can't believe we never noticed the duplicate `if not success` blocks
before now.

Some minor suggestions below if we're already going to send a v2 out for typos.

> ---
> tools/testing/kunit/kunit.py | 17 +++++------------
> 1 file changed, 5 insertions(+), 12 deletions(-)
>
> diff --git a/tools/testing/kunit/kunit.py b/tools/testing/kunit/kunit.py
> index 43fbe96318fe..481c213818bd 100755
> --- a/tools/testing/kunit/kunit.py
> +++ b/tools/testing/kunit/kunit.py
> @@ -77,10 +77,8 @@ def config_tests(linux: kunit_kernel.LinuxSourceTree,
> config_start = time.time()
> success = linux.build_reconfig(request.build_dir, request.make_options)
> config_end = time.time()
> - if not success:
> - return KunitResult(KunitStatus.CONFIG_FAILURE,
> - config_end - config_start)
> - return KunitResult(KunitStatus.SUCCESS,
> + status = KunitStatus.SUCCESS if success else KunitStatus.CONFIG_FAILURE
> + return KunitResult(status,
> config_end - config_start)

nit: perhaps we can shorten this to one line, i.e.
return KunitResult(status, config_end - config_start)

>
> def build_tests(linux: kunit_kernel.LinuxSourceTree,
> @@ -92,13 +90,8 @@ def build_tests(linux: kunit_kernel.LinuxSourceTree,
> request.build_dir,
> request.make_options)
> build_end = time.time()
> - if not success:
> - return KunitResult(KunitStatus.BUILD_FAILURE,
> - build_end - build_start)
> - if not success:
> - return KunitResult(KunitStatus.BUILD_FAILURE,
> - build_end - build_start)

Oh huh, I guess this duplication comes from commit 45ba7a893ad8
("kunit: kunit_tool: Separate out config/build/exec/parse")

@@ -64,78 +84,167 @@ def run_tests(linux: kunit_kernel.LinuxSourceTree,
build_end = time.time()
if not success:
return KunitResult(KunitStatus.BUILD_FAILURE, 'could
not build kernel')
+ if not success:
+ return KunitResult(KunitStatus.BUILD_FAILURE,
+ 'could not build kernel',

> - return KunitResult(KunitStatus.SUCCESS,
> + status = KunitStatus.SUCCESS if success else KunitStatus.BUILD_FAILURE
> + return KunitResult(status,
> build_end - build_start)

ditto here,
return KunitResult(status, build_end - build_start)

>
> def config_and_build_tests(linux: kunit_kernel.LinuxSourceTree,
> @@ -145,7 +138,7 @@ def exec_tests(linux: kunit_kernel.LinuxSourceTree, request: KunitExecRequest) -
> tests = _list_tests(linux, request)
> if request.run_isolated == 'test':
> filter_globs = tests
> - if request.run_isolated == 'suite':
> + elif request.run_isolated == 'suite':

This is better, thanks.

Daniel

2023-01-18 05:58:22

by Alexander Pantyukhin

[permalink] [raw]
Subject: Re: [PATCH] tools/testing/kunit/kunit.py: remove redundant double check

Hello Daniel.
Thank you very much for your review!
Could you advise me whom I can address the V2 patch "to"?

Best, Alex.

ср, 18 янв. 2023 г. в 01:56, Daniel Latypov <[email protected]>:
>
> On Sun, Jan 15, 2023 at 1:05 PM Alexander Pantyukhin
> <[email protected]> wrote:
> >
> > The build_tests function contained the doulbe checking for not success
>
> very nit: if we're fixing the "doulbe" typo, can we also do
> "the doulbe" => "double" (drop the "the")
>
> > result. It is fixed in the current patch. Additional small
> > simplifications of code like useing ternary if were applied (avoid use
> > the same operation by calculation times differ in two places).
> >
> > Signed-off-by: Alexander Pantyukhin <[email protected]>
>
> Reviewed-by: Daniel Latypov <[email protected]>
>
> Thanks!
> I can't believe we never noticed the duplicate `if not success` blocks
> before now.
>
> Some minor suggestions below if we're already going to send a v2 out for typos.
>
> > ---
> > tools/testing/kunit/kunit.py | 17 +++++------------
> > 1 file changed, 5 insertions(+), 12 deletions(-)
> >
> > diff --git a/tools/testing/kunit/kunit.py b/tools/testing/kunit/kunit.py
> > index 43fbe96318fe..481c213818bd 100755
> > --- a/tools/testing/kunit/kunit.py
> > +++ b/tools/testing/kunit/kunit.py
> > @@ -77,10 +77,8 @@ def config_tests(linux: kunit_kernel.LinuxSourceTree,
> > config_start = time.time()
> > success = linux.build_reconfig(request.build_dir, request.make_options)
> > config_end = time.time()
> > - if not success:
> > - return KunitResult(KunitStatus.CONFIG_FAILURE,
> > - config_end - config_start)
> > - return KunitResult(KunitStatus.SUCCESS,
> > + status = KunitStatus.SUCCESS if success else KunitStatus.CONFIG_FAILURE
> > + return KunitResult(status,
> > config_end - config_start)
>
> nit: perhaps we can shorten this to one line, i.e.
> return KunitResult(status, config_end - config_start)
>
> >
> > def build_tests(linux: kunit_kernel.LinuxSourceTree,
> > @@ -92,13 +90,8 @@ def build_tests(linux: kunit_kernel.LinuxSourceTree,
> > request.build_dir,
> > request.make_options)
> > build_end = time.time()
> > - if not success:
> > - return KunitResult(KunitStatus.BUILD_FAILURE,
> > - build_end - build_start)
> > - if not success:
> > - return KunitResult(KunitStatus.BUILD_FAILURE,
> > - build_end - build_start)
>
> Oh huh, I guess this duplication comes from commit 45ba7a893ad8
> ("kunit: kunit_tool: Separate out config/build/exec/parse")
>
> @@ -64,78 +84,167 @@ def run_tests(linux: kunit_kernel.LinuxSourceTree,
> build_end = time.time()
> if not success:
> return KunitResult(KunitStatus.BUILD_FAILURE, 'could
> not build kernel')
> + if not success:
> + return KunitResult(KunitStatus.BUILD_FAILURE,
> + 'could not build kernel',
>
> > - return KunitResult(KunitStatus.SUCCESS,
> > + status = KunitStatus.SUCCESS if success else KunitStatus.BUILD_FAILURE
> > + return KunitResult(status,
> > build_end - build_start)
>
> ditto here,
> return KunitResult(status, build_end - build_start)
>
> >
> > def config_and_build_tests(linux: kunit_kernel.LinuxSourceTree,
> > @@ -145,7 +138,7 @@ def exec_tests(linux: kunit_kernel.LinuxSourceTree, request: KunitExecRequest) -
> > tests = _list_tests(linux, request)
> > if request.run_isolated == 'test':
> > filter_globs = tests
> > - if request.run_isolated == 'suite':
> > + elif request.run_isolated == 'suite':
>
> This is better, thanks.
>
> Daniel

2023-01-18 08:12:33

by Daniel Latypov

[permalink] [raw]
Subject: Re: [PATCH] tools/testing/kunit/kunit.py: remove redundant double check

On Tue, Jan 17, 2023 at 9:33 PM Alexander Pantyukhin
<[email protected]> wrote:
>
> Hello Daniel.
> Thank you very much for your review!
> Could you advise me whom I can address the V2 patch "to"?

[email protected] is the more active maintainer right now.

But since you've got his Reviewed-by already, as long as you CC
kunit-dev@ and linux-kselftest@, whatever you want to put is fine. We
can make sure v2 gets picked up.

You'll ultimately see the patch go in through
https://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git/?h=kunit
and hopefully merged into 6.3.

Daniel