[PATCH v3 1/3] selftests/tc-testing: add exit code

Subsystems: kernel selftest framework, the rest

STALE1770d REVIEWED: 3 (2M)

2 review trailers.

5 messages, 3 authors, 2021-12-03 · open the first message on its own page

[PATCH v3 1/3] selftests/tc-testing: add exit code

From: Li Zhijian <hidden>
Date: 2021-12-03 02:59:14

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 <redacted>
Reported-by: kernel test robot <redacted>
Signed-off-by: Li Zhijian <redacted>
Acked-by: Davide Caratti <redacted>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
---
V3: repost to netdev
V2: Fix missing ':'
---
 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..ee22e3447ec7 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

[PATCH v3 2/3] selftests/tc-testing: add missing config

From: Li Zhijian <hidden>
Date: 2021-12-03 02:59:19

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 <redacted>
---
 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

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

From: Li Zhijian <hidden>
Date: 2021-12-03 02:59:23

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 <redacted>
---
 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

Re: [PATCH v3 1/3] selftests/tc-testing: add exit code

From: patchwork-bot+netdevbpf@kernel.org
Date: 2021-12-03 11:50:15

Hello:

This series was applied to netdev/net.git (master)
by David S. Miller [off-list ref]:

On Fri,  3 Dec 2021 10:53:21 +0800 you 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.

[...]
Here is the summary with links:
  - [v3,1/3] selftests/tc-testing: add exit code
    https://git.kernel.org/netdev/net/c/96f389678015
  - [v3,2/3] selftests/tc-testing: add missing config
    https://git.kernel.org/netdev/net/c/a8c9505c53c5
  - [v3,3/3] selftests/tc-testing: Fix cannot create /sys/bus/netdevsim/new_device: Directory nonexistent
    https://git.kernel.org/netdev/net/c/db925bca33a9

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html

Re: [PATCH v3 1/3] selftests/tc-testing: add exit code

From: Jamal Hadi Salim <jhs@mojatatu.com>
Date: 2021-12-03 12:41:03

All LGTM - but shouldnt these patches be independent of each other?
i.e submit 3 patches each with 1/1

cheers,
jamal

On 2021-12-02 21:53, Li Zhijian wrote:
quoted hunk
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 <redacted>
Reported-by: kernel test robot <redacted>
Signed-off-by: Li Zhijian <redacted>
Acked-by: Davide Caratti <redacted>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
---
V3: repost to netdev
V2: Fix missing ':'
---
  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..ee22e3447ec7 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()

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help