diff mbox series

[net-next,v3,2/4] selftests: tc-testing: add "depends_on" property to skip tests

Message ID 1113c9203f6bb491819dec865d3e107a69a13ec6.1680021219.git.dcaratti@redhat.com (mailing list archive)
State Superseded
Delegated to: Netdev Maintainers
Headers show
Series net/sched: act_tunnel_key: add support for TUNNEL_DONT_FRAGMENT | expand

Checks

Context Check Description
netdev/series_format success Posting correctly formatted
netdev/tree_selection success Clearly marked for net-next
netdev/fixes_present success Fixes tag not required for -next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 18 this patch: 18
netdev/cc_maintainers warning 2 maintainers not CCed: shuah@kernel.org linux-kselftest@vger.kernel.org
netdev/build_clang success Errors and warnings before: 18 this patch: 18
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn success Errors and warnings before: 18 this patch: 18
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 27 lines checked
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

Davide Caratti March 28, 2023, 4:45 p.m. UTC
currently, users can skip individual test cases by means of writing

  "skip": "yes"

in the scenario file. Extend this functionality, introducing 'dependsOn':
it's optional property like "skip", but the value contains a command (for
example, a probe on iproute2 to check if it supports a specific feature).
If such property is present, tdc executes that command and skips the test
when the return value is non-zero.

Signed-off-by: Davide Caratti <dcaratti@redhat.com>
---
 .../creating-testcases/AddingTestCases.txt          |  2 ++
 tools/testing/selftests/tc-testing/tdc.py           | 13 +++++++++++++
 2 files changed, 15 insertions(+)

Comments

Pedro Tammela March 28, 2023, 9:24 p.m. UTC | #1
On 28/03/2023 13:45, Davide Caratti wrote:
> currently, users can skip individual test cases by means of writing
> 
>    "skip": "yes"
> 
> in the scenario file. Extend this functionality, introducing 'dependsOn':
> it's optional property like "skip", but the value contains a command (for
> example, a probe on iproute2 to check if it supports a specific feature).
> If such property is present, tdc executes that command and skips the test
> when the return value is non-zero.
> 
> Signed-off-by: Davide Caratti <dcaratti@redhat.com>
> ---
>   .../creating-testcases/AddingTestCases.txt          |  2 ++
>   tools/testing/selftests/tc-testing/tdc.py           | 13 +++++++++++++
>   2 files changed, 15 insertions(+)
> 
> diff --git a/tools/testing/selftests/tc-testing/creating-testcases/AddingTestCases.txt b/tools/testing/selftests/tc-testing/creating-testcases/AddingTestCases.txt
> index a28571aff0e1..ff956d8c99c5 100644
> --- a/tools/testing/selftests/tc-testing/creating-testcases/AddingTestCases.txt
> +++ b/tools/testing/selftests/tc-testing/creating-testcases/AddingTestCases.txt
> @@ -38,6 +38,8 @@ skip:         A completely optional key, if the corresponding value is "yes"
>                 this test case will still appear in the results output but
>                 marked as skipped. This key can be placed anywhere inside the
>                 test case at the top level.
> +dependsOn:    Same as 'skip', but the value is executed as a command. The test
> +              is skipped when the command returns non-zero.
>   category:     A list of single-word descriptions covering what the command
>                 under test is testing. Example: filter, actions, u32, gact, etc.
>   setup:        The list of commands required to ensure the command under test
> diff --git a/tools/testing/selftests/tc-testing/tdc.py b/tools/testing/selftests/tc-testing/tdc.py
> index 7bd94f8e490a..5fa3fe644bfe 100755
> --- a/tools/testing/selftests/tc-testing/tdc.py
> +++ b/tools/testing/selftests/tc-testing/tdc.py
> @@ -369,6 +369,19 @@ def run_one_test(pm, args, index, tidx):
>               pm.call_post_execute()
>               return res
>   
> +    if 'dependsOn' in tidx:
> +        if (args.verbose > 0):
> +            print('probe command for test skip')
> +        (p, procout) = exec_cmd(args, pm, 'execute', tidx['dependsOn'])
> +        if p:
> +            if (p.returncode != 0):
> +                res = TestResult(tidx['id'], tidx['name'])
> +                res.set_result(ResultState.skip)
> +                res.set_errormsg('probe command failed: test skipped.')

'probe command: test skipped'

> +                pm.call_pre_case(tidx, test_skip=True)
> +                pm.call_post_execute()
> +                return res
> +
>       # populate NAMES with TESTID for this test
>       NAMES['TESTID'] = tidx['id']
>   

Other than the above, LGTM.

Reviewed-by: Pedro Tammela <pctammela@mojatatu.com>
diff mbox series

Patch

diff --git a/tools/testing/selftests/tc-testing/creating-testcases/AddingTestCases.txt b/tools/testing/selftests/tc-testing/creating-testcases/AddingTestCases.txt
index a28571aff0e1..ff956d8c99c5 100644
--- a/tools/testing/selftests/tc-testing/creating-testcases/AddingTestCases.txt
+++ b/tools/testing/selftests/tc-testing/creating-testcases/AddingTestCases.txt
@@ -38,6 +38,8 @@  skip:         A completely optional key, if the corresponding value is "yes"
               this test case will still appear in the results output but
               marked as skipped. This key can be placed anywhere inside the
               test case at the top level.
+dependsOn:    Same as 'skip', but the value is executed as a command. The test
+              is skipped when the command returns non-zero.
 category:     A list of single-word descriptions covering what the command
               under test is testing. Example: filter, actions, u32, gact, etc.
 setup:        The list of commands required to ensure the command under test
diff --git a/tools/testing/selftests/tc-testing/tdc.py b/tools/testing/selftests/tc-testing/tdc.py
index 7bd94f8e490a..5fa3fe644bfe 100755
--- a/tools/testing/selftests/tc-testing/tdc.py
+++ b/tools/testing/selftests/tc-testing/tdc.py
@@ -369,6 +369,19 @@  def run_one_test(pm, args, index, tidx):
             pm.call_post_execute()
             return res
 
+    if 'dependsOn' in tidx:
+        if (args.verbose > 0):
+            print('probe command for test skip')
+        (p, procout) = exec_cmd(args, pm, 'execute', tidx['dependsOn'])
+        if p:
+            if (p.returncode != 0):
+                res = TestResult(tidx['id'], tidx['name'])
+                res.set_result(ResultState.skip)
+                res.set_errormsg('probe command failed: test skipped.')
+                pm.call_pre_case(tidx, test_skip=True)
+                pm.call_post_execute()
+                return res
+
     # populate NAMES with TESTID for this test
     NAMES['TESTID'] = tidx['id']