2023-06-19 07:07:20

by Zhangjin Wu

[permalink] [raw]
Subject: [PATCH v2 0/3] selftests/nolibc: improve test report support

Hi, Willy

Here is the v2 of our old patchset about test report [1].

The trailing '\r' fixup has been merged, so, here only resend the left
parts with an additional patch to restore the failed tests print.

This patchset is rebased on the dev.2023.06.14a branch of linux-rcu [2].

Tests have passed for 'x86 run':

138 test(s) passed, 0 skipped, 0 failed.
See all results in /labs/linux-lab/src/linux-stable/tools/testing/selftests/nolibc/run.out

Also did 'run-user' for x86, mips and arm64.

Changes from v1 -> v2:

1. selftests/nolibc: add a standalone test report macro

As Willy pointed out, the old method with additional test-report
target not work in 'make -j'.

A new macro is added to share the same report logic among the
run-user, run and rerun targets, the path to test log file is

2. selftests/nolibc: always print the path to test log file

Always print the path to test log file, but move it to a new line to
avoid annoying people when the test pass without any failures.

3. selftests/nolibc: restore the failed tests print

Restore printing of the failed tests to avoid manually opening
the test log file when there are really failues.

Best regards,
Zhangjin
---
[1]: https://lore.kernel.org/lkml/[email protected]/
[2]: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git/

Zhangjin Wu (3):
selftests/nolibc: add a standalone test report macro
selftests/nolibc: always print the path to test log file
selftests/nolibc: restore the failed tests print

tools/testing/selftests/nolibc/Makefile | 19 +++++++------------
1 file changed, 7 insertions(+), 12 deletions(-)

--
2.25.1



2023-06-19 07:17:04

by Zhangjin Wu

[permalink] [raw]
Subject: [PATCH v2 2/3] selftests/nolibc: always print the path to test log file

Even when there is no failure, developers may be still interested in the
test log file, especially, string alignment, duplicated print, kernel
message and so forth, so, always print the path to test log file.

A new line is added for such a print to avoid annoying people who don't
care about it when the test pass completely.

Suggested-by: Willy Tarreau <[email protected]>
Link: https://lore.kernel.org/lkml/[email protected]/
Signed-off-by: Zhangjin Wu <[email protected]>
---
tools/testing/selftests/nolibc/Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile
index 262a9f21d1b4..2a0c3f4fa204 100644
--- a/tools/testing/selftests/nolibc/Makefile
+++ b/tools/testing/selftests/nolibc/Makefile
@@ -85,8 +85,8 @@ CFLAGS ?= -Os -fno-ident -fno-asynchronous-unwind-tables -std=c89 \
LDFLAGS := -s

REPORT ?= awk '/\[OK\][\r]*$$/{p++} /\[FAIL\][\r]*$$/{f++} /\[SKIPPED\][\r]*$$/{s++} \
- END{ printf("%d test(s) passed, %d skipped, %d failed.", p, s, f); \
- if (s+f > 0) printf(" See all results in %s\n", ARGV[1]); else print; }'
+ END{ printf("%d test(s) passed, %d skipped, %d failed.\n", p, s, f); \
+ printf("See all results in %s\n", ARGV[1]); }'

help:
@echo "Supported targets under selftests/nolibc:"
--
2.25.1


2023-06-19 07:28:35

by Zhangjin Wu

[permalink] [raw]
Subject: [PATCH v2 3/3] selftests/nolibc: restore the failed tests print

The commit fa0df56a804b ("selftests/nolibc: also count skipped and
failed tests in output") added counting for the skipped and failed
tests, but also removed the 'FAIL' results print, let's restore it for
it really allow users to learn the failed details without opening the
log file.

Signed-off-by: Zhangjin Wu <[email protected]>
---
tools/testing/selftests/nolibc/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile
index 2a0c3f4fa204..000621f21adc 100644
--- a/tools/testing/selftests/nolibc/Makefile
+++ b/tools/testing/selftests/nolibc/Makefile
@@ -84,7 +84,7 @@ CFLAGS ?= -Os -fno-ident -fno-asynchronous-unwind-tables -std=c89 \
$(CFLAGS_$(ARCH)) $(CFLAGS_STACKPROTECTOR)
LDFLAGS := -s

-REPORT ?= awk '/\[OK\][\r]*$$/{p++} /\[FAIL\][\r]*$$/{f++} /\[SKIPPED\][\r]*$$/{s++} \
+REPORT ?= awk '/\[OK\][\r]*$$/{p++} /\[FAIL\][\r]*$$/{f++;print} /\[SKIPPED\][\r]*$$/{s++} \
END{ printf("%d test(s) passed, %d skipped, %d failed.\n", p, s, f); \
printf("See all results in %s\n", ARGV[1]); }'

--
2.25.1


2023-07-02 17:01:23

by Willy Tarreau

[permalink] [raw]
Subject: Re: [PATCH v2 0/3] selftests/nolibc: improve test report support

Hi Zhangjin,

On Mon, Jun 19, 2023 at 02:52:31PM +0800, Zhangjin Wu wrote:
> Hi, Willy
>
> Here is the v2 of our old patchset about test report [1].
>
> The trailing '\r' fixup has been merged, so, here only resend the left
> parts with an additional patch to restore the failed tests print.
>
> This patchset is rebased on the dev.2023.06.14a branch of linux-rcu [2].
>
> Tests have passed for 'x86 run':
>
> 138 test(s) passed, 0 skipped, 0 failed.
> See all results in /labs/linux-lab/src/linux-stable/tools/testing/selftests/nolibc/run.out
(...)
> 2. selftests/nolibc: always print the path to test log file
>
> Always print the path to test log file, but move it to a new line to
> avoid annoying people when the test pass without any failures.

I'm still really missing the (s+f > 0) test I added which was a time saver
for me, because I could trivially check in the output reports which ones
were totally OK and which ones required attention. Sure I could also start
to grep for "passed," | grep -v " 0 skipped, 0 failed" but that's quite a
pain, really.

I'm going to merge your series anyway otherwise we'll continue to bikeshed
for many weeks and I know how annoying it is to keep unmerged series. But
I would like that we find a solution that satisfies everyone.

Maybe one possibility would be to add a "status" at the end of the line
that emits "success", "warning", "failure" depending on the highest level
reached like this:

138 test(s) passed, 0 skipped, 0 failed => status: success
136 test(s) passed, 2 skipped, 0 failed => status: warning
136 test(s) passed, 1 skipped, 1 failed => status: failure

This way it's easy to grep -v "status: success" or grep "status: failure"
to instantly get the corresponding details and also grep for them from
multiple files.

Thanks!
Willy

2023-07-03 16:41:14

by Zhangjin Wu

[permalink] [raw]
Subject: Re: [PATCH v2 0/3] selftests/nolibc: improve test report support

> Hi Zhangjin,
>
> On Mon, Jun 19, 2023 at 02:52:31PM +0800, Zhangjin Wu wrote:
> > Hi, Willy
> >
> > Here is the v2 of our old patchset about test report [1].
> >
> > The trailing '\r' fixup has been merged, so, here only resend the left
> > parts with an additional patch to restore the failed tests print.
> >
> > This patchset is rebased on the dev.2023.06.14a branch of linux-rcu [2].
> >
> > Tests have passed for 'x86 run':
> >
> > 138 test(s) passed, 0 skipped, 0 failed.
> > See all results in /labs/linux-lab/src/linux-stable/tools/testing/selftests/nolibc/run.out
> (...)
> > 2. selftests/nolibc: always print the path to test log file
> >
> > Always print the path to test log file, but move it to a new line to
> > avoid annoying people when the test pass without any failures.
>
> I'm still really missing the (s+f > 0) test I added which was a time saver
> for me, because I could trivially check in the output reports which ones
> were totally OK and which ones required attention. Sure I could also start
> to grep for "passed," | grep -v " 0 skipped, 0 failed" but that's quite a
> pain, really.
>
> I'm going to merge your series anyway otherwise we'll continue to bikeshed
> for many weeks and I know how annoying it is to keep unmerged series. But
> I would like that we find a solution that satisfies everyone.
>
> Maybe one possibility would be to add a "status" at the end of the line
> that emits "success", "warning", "failure" depending on the highest level
> reached like this:
>
> 138 test(s) passed, 0 skipped, 0 failed => status: success
> 136 test(s) passed, 2 skipped, 0 failed => status: warning
> 136 test(s) passed, 1 skipped, 1 failed => status: failure
>
> This way it's easy to grep -v "status: success" or grep "status: failure"
> to instantly get the corresponding details and also grep for them from
> multiple files.

Ok, it will be a further step, based on your new awk script, it is not
that hard.

This should work:

REPORT ?= awk '/\[OK\][\r]*$$/{p++} /\[FAIL\][\r]*$$/{f++;print} /\[SKIPPED\][\r]*$$/{s++} \
END{ printf("\n%d test(s): %d passed, %d skipped, %d failed => status: ", p+s+f, p, s, f); \
if (f) printf("failure\n"); else if (s) printf("warning\n"); else printf("success\n");; \
printf("\nSee all results in %s\n", ARGV[1]); }'

It reports something like this:

...
Total number of errors: 0
Exiting with status 0

143 test(s): 140 passed, 3 skipped, 0 failed => status: warning

See all results in /labs/linux-lab/src/linux-stable/tools/testing/selftests/nolibc/build/x86/run.out

Two newlines are added around the summary line, so, it is not crowded as
before. If this is ok, will send a new patch on your new branch.

Thanks very much.

Best regards,
Zhangjin

>
> Thanks!
> Willy