* [RFC PATCH] app/test: invoke all telemetry commands
@ 2022-05-19 12:47 David Marchand
2022-05-21 2:43 ` fengchengwen
0 siblings, 1 reply; 2+ messages in thread
From: David Marchand @ 2022-05-19 12:47 UTC (permalink / raw)
To: dev; +Cc: bruce.richardson, Aaron Conole, Michael Santana, Ciara Power
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, ethdev and eventdev ports 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>
---
Note: sending this WIP patch as this is how I currently test telemetry
patches. I am fine with whoever wants to take over and implement this in
another scripting language.
CI will flag this patch as failing because of two pre-existing bugs
for which we have yet unmerged fixes:
- https://patchwork.dpdk.org/project/dpdk/patch/20220513025357.52275-8-fengchengwen@huawei.com/
- https://patchwork.dpdk.org/project/dpdk/patch/20220519122151.3119730-1-david.marchand@redhat.com/
---
.github/workflows/build.yml | 2 +-
app/test/meson.build | 29 ++++++++++++++++++++++++++++-
app/test/test_telemetry.sh | 28 ++++++++++++++++++++++++++++
3 files changed, 57 insertions(+), 2 deletions(-)
create mode 100755 app/test/test_telemetry.sh
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index ad8ad1a187..70549d84ec 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -134,7 +134,7 @@ jobs:
pkg-config-powerpc-linux-gnu
- name: Install test tools packages
if: env.AARCH64 != 'true' || env.PPC64LE != 'true' || env.RUN_TESTS == 'true'
- run: sudo apt install -y gdb
+ run: sudo apt install -y gdb jq
- name: Install doc generation packages
if: env.BUILD_DOCS == 'true'
run: sudo apt install -y doxygen graphviz python3-sphinx
diff --git a/app/test/meson.build b/app/test/meson.build
index bb4621ed2a..760c2096c7 100644
--- a/app/test/meson.build
+++ b/app/test/meson.build
@@ -469,12 +469,14 @@ message('hugepage availability: @0@'.format(has_hugepage))
timeout_seconds = 600
timeout_seconds_fast = 10
+test_no_huge_args = ['--no-huge', '-m', '2048']
+
foreach arg : fast_tests
test_args = []
run_test = true
if not has_hugepage
if arg[1]
- test_args += ['--no-huge', '-m', '2048']
+ test_args += test_no_huge_args
else
run_test = false
endif
@@ -506,6 +508,31 @@ foreach arg : fast_tests
endif
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'
+ foreach drv:dpdk_drivers
+ test_args += ['-d', drv.full_path().split('.a')[0] + '.so']
+ endforeach
+ endif
+ if dpdk_conf.has('RTE_CRYPTO_NULL')
+ test_args += ['--vdev=crypto_null0']
+ 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
+ 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
test(arg, dpdk_test,
env : ['DPDK_TEST=' + arg],
diff --git a/app/test/test_telemetry.sh b/app/test/test_telemetry.sh
new file mode 100755
index 0000000000..ca6abe266e
--- /dev/null
+++ b/app/test/test_telemetry.sh
@@ -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) | $@
--
2.36.1
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [RFC PATCH] app/test: invoke all telemetry commands
2022-05-19 12:47 [RFC PATCH] app/test: invoke all telemetry commands David Marchand
@ 2022-05-21 2:43 ` fengchengwen
0 siblings, 0 replies; 2+ messages in thread
From: fengchengwen @ 2022-05-21 2:43 UTC (permalink / raw)
To: David Marchand, dev
Cc: bruce.richardson, Aaron Conole, Michael Santana, Ciara Power
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
On 2022/5/19 20:47, David Marchand wrote:
> 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, ethdev and eventdev ports 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>
> ---
> Note: sending this WIP patch as this is how I currently test telemetry
> patches. I am fine with whoever wants to take over and implement this in
> another scripting language.
>
> CI will flag this patch as failing because of two pre-existing bugs
> for which we have yet unmerged fixes:
> - https://patchwork.dpdk.org/project/dpdk/patch/20220513025357.52275-8-fengchengwen@huawei.com/
> - https://patchwork.dpdk.org/project/dpdk/patch/20220519122151.3119730-1-david.marchand@redhat.com/
>
...
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-05-21 2:43 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-19 12:47 [RFC PATCH] app/test: invoke all telemetry commands David Marchand
2022-05-21 2:43 ` fengchengwen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).