test: invoke all telemetry commands
Try and call all possible telemetry commands. Each commands is tested with no argument, 0 (for command that accepts a single integer like for a port identifier) and z (to catch commands not properly validating input). Fake cryptodev, dmadev, ethdev, eventdev and rawdev devices are created using dummy drivers. Output of the commands is not checked, the point of this test is mainly to catch simple issues and leaks (when coupled with ASan in the CI). Signed-off-by: David Marchand <david.marchand@redhat.com> Acked-by: Chengwen Feng <fengchengwen@huawei.com> Acked-by: Aaron Conole <aconole@redhat.com> Acked-by: Ciara Power <ciara.power@intel.com>
This commit is contained in:
parent
3e88909dfe
commit
09521b1cbe
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@ -140,7 +140,7 @@ jobs:
|
|||||||
run: sudo apt install -y crossbuild-essential-riscv64
|
run: sudo apt install -y crossbuild-essential-riscv64
|
||||||
- name: Install test tools packages
|
- name: Install test tools packages
|
||||||
if: env.AARCH64 != 'true' || env.PPC64LE != 'true' || env.RISCV64 != 'true' || env.RUN_TESTS == 'true'
|
if: env.AARCH64 != 'true' || env.PPC64LE != 'true' || env.RISCV64 != 'true' || env.RUN_TESTS == 'true'
|
||||||
run: sudo apt install -y gdb
|
run: sudo apt install -y gdb jq
|
||||||
- name: Install doc generation packages
|
- name: Install doc generation packages
|
||||||
if: env.BUILD_DOCS == 'true'
|
if: env.BUILD_DOCS == 'true'
|
||||||
run: sudo apt install -y doxygen graphviz python3-sphinx
|
run: sudo apt install -y doxygen graphviz python3-sphinx
|
||||||
|
@ -473,12 +473,14 @@ message('hugepage availability: @0@'.format(has_hugepage))
|
|||||||
timeout_seconds = 600
|
timeout_seconds = 600
|
||||||
timeout_seconds_fast = 10
|
timeout_seconds_fast = 10
|
||||||
|
|
||||||
|
test_no_huge_args = ['--no-huge', '-m', '2048']
|
||||||
|
|
||||||
foreach arg : fast_tests
|
foreach arg : fast_tests
|
||||||
test_args = []
|
test_args = []
|
||||||
run_test = true
|
run_test = true
|
||||||
if not has_hugepage
|
if not has_hugepage
|
||||||
if arg[1]
|
if arg[1]
|
||||||
test_args += ['--no-huge', '-m', '2048']
|
test_args += test_no_huge_args
|
||||||
else
|
else
|
||||||
run_test = false
|
run_test = false
|
||||||
endif
|
endif
|
||||||
@ -518,6 +520,35 @@ foreach arg : fast_tests
|
|||||||
endif
|
endif
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
|
if not is_windows and dpdk_conf.has('RTE_LIB_TELEMETRY')
|
||||||
|
test_args = [dpdk_test]
|
||||||
|
test_args += test_no_huge_args
|
||||||
|
if get_option('default_library') == 'shared'
|
||||||
|
test_args += ['-d', dpdk_drivers_build_dir]
|
||||||
|
endif
|
||||||
|
if dpdk_conf.has('RTE_CRYPTO_NULL')
|
||||||
|
test_args += ['--vdev=crypto_null0']
|
||||||
|
endif
|
||||||
|
if dpdk_conf.has('RTE_DMA_SKELETON')
|
||||||
|
test_args += ['--vdev=dma_skeleton0']
|
||||||
|
endif
|
||||||
|
if dpdk_conf.has('RTE_EVENT_SKELETON')
|
||||||
|
test_args += ['--vdev=event_skeleton0']
|
||||||
|
endif
|
||||||
|
if dpdk_conf.has('RTE_NET_NULL')
|
||||||
|
test_args += ['--vdev=net_null0']
|
||||||
|
endif
|
||||||
|
if dpdk_conf.has('RTE_RAW_SKELETON')
|
||||||
|
test_args += ['--vdev=rawdev_skeleton0']
|
||||||
|
endif
|
||||||
|
test_args += ['-a', '0000:00:00.0']
|
||||||
|
test('telemetry_all', find_program('test_telemetry.sh'),
|
||||||
|
args: test_args,
|
||||||
|
timeout : timeout_seconds_fast,
|
||||||
|
is_parallel : false,
|
||||||
|
suite : 'fast-tests')
|
||||||
|
endif
|
||||||
|
|
||||||
foreach arg : perf_test_names
|
foreach arg : perf_test_names
|
||||||
test(arg, dpdk_test,
|
test(arg, dpdk_test,
|
||||||
env : ['DPDK_TEST=' + arg],
|
env : ['DPDK_TEST=' + arg],
|
||||||
|
28
app/test/test_telemetry.sh
Executable file
28
app/test/test_telemetry.sh
Executable file
@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/sh -e
|
||||||
|
# SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
# Copyright (c) 2022 Red Hat, Inc.
|
||||||
|
|
||||||
|
which jq || {
|
||||||
|
echo "No jq available, skipping test."
|
||||||
|
exit 77
|
||||||
|
}
|
||||||
|
|
||||||
|
rootdir=$(readlink -f $(dirname $(readlink -f $0))/../..)
|
||||||
|
tmpoutput=$(mktemp -t dpdk.test_telemetry.XXXXXX)
|
||||||
|
trap "cat $tmpoutput; rm -f $tmpoutput" EXIT
|
||||||
|
|
||||||
|
call_all_telemetry() {
|
||||||
|
telemetry_script=$rootdir/usertools/dpdk-telemetry.py
|
||||||
|
echo >$tmpoutput
|
||||||
|
echo "Telemetry commands log:" >>$tmpoutput
|
||||||
|
for cmd in $(echo / | $telemetry_script | jq -r '.["/"][]')
|
||||||
|
do
|
||||||
|
for input in $cmd $cmd,0 $cmd,z
|
||||||
|
do
|
||||||
|
echo Calling $input >> $tmpoutput
|
||||||
|
echo $input | $telemetry_script >> $tmpoutput 2>&1
|
||||||
|
done
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
(sleep 1 && call_all_telemetry && echo quit) | $@
|
Loading…
Reference in New Issue
Block a user