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: Pedro Tammela <pctammela@mojatatu.com> Signed-off-by: Davide Caratti <dcaratti@redhat.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
2384127e98
commit
7f3f864026
|
@ -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
|
||||
|
|
|
@ -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']
|
||||
|
||||
|
|
Loading…
Reference in New Issue