2021-11-17 05:36:23

by Li Zhijian

[permalink] [raw]
Subject: [PATCH 1/3] selftests/tc-testing: add exit code

Mark the summary result as FAIL to prevent from confusing the selftest
framework if some of them are failed.

Previously, the selftest framework always treats it as *ok* even though
some of them are failed actually. That's because the script tdc.sh always
return 0.

# All test results:
#
# 1..97
# ok 1 83be - Create FQ-PIE with invalid number of flows
# ok 2 8b6e - Create RED with no flags
[...snip]
# ok 6 5f15 - Create RED with flags ECN, harddrop
# ok 7 53e8 - Create RED with flags ECN, nodrop
# ok 8 d091 - Fail to create RED with only nodrop flag
# ok 9 af8e - Create RED with flags ECN, nodrop, harddrop
# not ok 10 ce7d - Add mq Qdisc to multi-queue device (4 queues)
# Could not match regex pattern. Verify command output:
# qdisc mq 1: root
# qdisc fq_codel 0: parent 1:4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
# qdisc fq_codel 0: parent 1:3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
[...snip]
# ok 96 6979 - Change quantum of a strict ETS band
# ok 97 9a7d - Change ETS strict band without quantum
#
#
#
#
ok 1 selftests: tc-testing: tdc.sh <<< summary result

CC: Philip Li <[email protected]>
Reported-by: kernel test robot <[email protected]>
Signed-off-by: Li Zhijian <[email protected]>
---
tools/testing/selftests/tc-testing/tdc.py | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/tc-testing/tdc.py b/tools/testing/selftests/tc-testing/tdc.py
index a3e43189d940..29832fce66ac 100755
--- a/tools/testing/selftests/tc-testing/tdc.py
+++ b/tools/testing/selftests/tc-testing/tdc.py
@@ -716,6 +716,7 @@ def set_operation_mode(pm, parser, args, remaining):
list_test_cases(alltests)
exit(0)

+ exit_code = 0 # KSFT_PASS
if len(alltests):
req_plugins = pm.get_required_plugins(alltests)
try:
@@ -724,6 +725,8 @@ def set_operation_mode(pm, parser, args, remaining):
print('The following plugins were not found:')
print('{}'.format(pde.missing_pg))
catresults = test_runner(pm, args, alltests)
+ if catresults.count_failures() != 0
+ exit_code = 1 # KSFT_FAIL
if args.format == 'none':
print('Test results output suppression requested\n')
else:
@@ -748,6 +751,8 @@ def set_operation_mode(pm, parser, args, remaining):
gid=int(os.getenv('SUDO_GID')))
else:
print('No tests found\n')
+ exit_code = 4 # KSFT_SKIP
+ exit(exit_code)

def main():
"""
@@ -767,8 +772,5 @@ def main():

set_operation_mode(pm, parser, args, remaining)

- exit(0)
-
-
if __name__ == "__main__":
main()
--
2.32.0



2021-11-17 05:36:26

by Li Zhijian

[permalink] [raw]
Subject: [PATCH 2/3] selftests/tc-testing: add missing config

qdiscs/fq_pie requires CONFIG_NET_SCH_FQ_PIE, otherwise tc will fail
to create a fq_pie qdisc.

It fixes following issue:
# not ok 57 83be - Create FQ-PIE with invalid number of flows
# Command exited with 2, expected 0
# Error: Specified qdisc not found.

Signed-off-by: Li Zhijian <[email protected]>
---
tools/testing/selftests/tc-testing/config | 1 +
1 file changed, 1 insertion(+)

diff --git a/tools/testing/selftests/tc-testing/config b/tools/testing/selftests/tc-testing/config
index b71828df5a6d..b1cd7efa4512 100644
--- a/tools/testing/selftests/tc-testing/config
+++ b/tools/testing/selftests/tc-testing/config
@@ -60,6 +60,7 @@ CONFIG_NET_IFE_SKBTCINDEX=m
CONFIG_NET_SCH_FIFO=y
CONFIG_NET_SCH_ETS=m
CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_FQ_PIE=m

#
## Network testing
--
2.32.0


2021-11-17 05:36:28

by Li Zhijian

[permalink] [raw]
Subject: [PATCH 3/3] selftests/tc-testing: Fix cannot create /sys/bus/netdevsim/new_device: Directory nonexistent

Install netdevsim to provide /sys/bus/netdevsim/new_device interface.

It helps to fix:
# ok 97 9a7d - Change ETS strict band without quantum # skipped - skipped - previous setup failed 11 ce7d
#
#
# -----> prepare stage *** Could not execute: "echo "1 1 4" > /sys/bus/netdevsim/new_device"
#
# -----> prepare stage *** Error message: "/bin/sh: 1: cannot create /sys/bus/netdevsim/new_device: Directory nonexistent
# "
#
# -----> prepare stage *** Aborting test run.
#
#
# <_io.BufferedReader name=5> *** stdout ***
#

Signed-off-by: Li Zhijian <[email protected]>
---
tools/testing/selftests/tc-testing/config | 1 +
tools/testing/selftests/tc-testing/tdc.sh | 1 +
2 files changed, 2 insertions(+)

diff --git a/tools/testing/selftests/tc-testing/config b/tools/testing/selftests/tc-testing/config
index b1cd7efa4512..a3239d5e40c7 100644
--- a/tools/testing/selftests/tc-testing/config
+++ b/tools/testing/selftests/tc-testing/config
@@ -61,6 +61,7 @@ CONFIG_NET_SCH_FIFO=y
CONFIG_NET_SCH_ETS=m
CONFIG_NET_SCH_RED=m
CONFIG_NET_SCH_FQ_PIE=m
+CONFIG_NETDEVSIM=m

#
## Network testing
diff --git a/tools/testing/selftests/tc-testing/tdc.sh b/tools/testing/selftests/tc-testing/tdc.sh
index 7fe38c76db44..afb0cd86fa3d 100755
--- a/tools/testing/selftests/tc-testing/tdc.sh
+++ b/tools/testing/selftests/tc-testing/tdc.sh
@@ -1,5 +1,6 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0

+modprobe netdevsim
./tdc.py -c actions --nobuildebpf
./tdc.py -c qdisc
--
2.32.0


2021-11-17 05:38:34

by Li Zhijian

[permalink] [raw]
Subject: Re: [PATCH 1/3] selftests/tc-testing: add exit code

my bad, it's wrong version


On 17/11/2021 13:32, Li Zhijian wrote:
> Mark the summary result as FAIL to prevent from confusing the selftest
> framework if some of them are failed.
>
> Previously, the selftest framework always treats it as *ok* even though
> some of them are failed actually. That's because the script tdc.sh always
> return 0.
>
> # All test results:
> #
> # 1..97
> # ok 1 83be - Create FQ-PIE with invalid number of flows
> # ok 2 8b6e - Create RED with no flags
> [...snip]
> # ok 6 5f15 - Create RED with flags ECN, harddrop
> # ok 7 53e8 - Create RED with flags ECN, nodrop
> # ok 8 d091 - Fail to create RED with only nodrop flag
> # ok 9 af8e - Create RED with flags ECN, nodrop, harddrop
> # not ok 10 ce7d - Add mq Qdisc to multi-queue device (4 queues)
> # Could not match regex pattern. Verify command output:
> # qdisc mq 1: root
> # qdisc fq_codel 0: parent 1:4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
> # qdisc fq_codel 0: parent 1:3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
> [...snip]
> # ok 96 6979 - Change quantum of a strict ETS band
> # ok 97 9a7d - Change ETS strict band without quantum
> #
> #
> #
> #
> ok 1 selftests: tc-testing: tdc.sh <<< summary result
>
> CC: Philip Li <[email protected]>
> Reported-by: kernel test robot <[email protected]>
> Signed-off-by: Li Zhijian <[email protected]>
> ---
> tools/testing/selftests/tc-testing/tdc.py | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/tools/testing/selftests/tc-testing/tdc.py b/tools/testing/selftests/tc-testing/tdc.py
> index a3e43189d940..29832fce66ac 100755
> --- a/tools/testing/selftests/tc-testing/tdc.py
> +++ b/tools/testing/selftests/tc-testing/tdc.py
> @@ -716,6 +716,7 @@ def set_operation_mode(pm, parser, args, remaining):
> list_test_cases(alltests)
> exit(0)
>
> + exit_code = 0 # KSFT_PASS
> if len(alltests):
> req_plugins = pm.get_required_plugins(alltests)
> try:
> @@ -724,6 +725,8 @@ def set_operation_mode(pm, parser, args, remaining):
> print('The following plugins were not found:')
> print('{}'.format(pde.missing_pg))
> catresults = test_runner(pm, args, alltests)
> + if catresults.count_failures() != 0

my bad, it's wrong version, where i missed a ':' at the end.




> + exit_code = 1 # KSFT_FAIL
> if args.format == 'none':
> print('Test results output suppression requested\n')
> else:
> @@ -748,6 +751,8 @@ def set_operation_mode(pm, parser, args, remaining):
> gid=int(os.getenv('SUDO_GID')))
> else:
> print('No tests found\n')
> + exit_code = 4 # KSFT_SKIP
> + exit(exit_code)
>
> def main():
> """
> @@ -767,8 +772,5 @@ def main():
>
> set_operation_mode(pm, parser, args, remaining)
>
> - exit(0)
> -
> -
> if __name__ == "__main__":
> main()