Commit 7f3f8640 authored by Davide Caratti's avatar Davide Caratti Committed by Jakub Kicinski
Browse files

selftests: tc-testing: add "depends_on" property to skip tests



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.

Reviewed-by: default avatarPedro Tammela <pctammela@mojatatu.com>
Signed-off-by: default avatarDavide Caratti <dcaratti@redhat.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 2384127e
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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
+13 −0
Original line number Diff line number Diff line
@@ -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: 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']