DPDK patches and discussions
 help / color / mirror / Atom feed
From: David Marchand <david.marchand@redhat.com>
To: dev@dpdk.org
Cc: Chengwen Feng <fengchengwen@huawei.com>,
	Aaron Conole <aconole@redhat.com>,
	Michael Santana <maicolgabriel@hotmail.com>,
	Ciara Power <ciara.power@intel.com>
Subject: [PATCH] app/test: invoke all telemetry commands
Date: Fri, 29 Jul 2022 11:54:00 +0200	[thread overview]
Message-ID: <20220729095400.774303-1-david.marchand@redhat.com> (raw)

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>
---
 .github/workflows/build.yml |  2 +-
 app/test/meson.build        | 35 ++++++++++++++++++++++++++++++++++-
 app/test/test_telemetry.sh  | 28 ++++++++++++++++++++++++++++
 3 files changed, 63 insertions(+), 2 deletions(-)
 create mode 100755 app/test/test_telemetry.sh

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 6f04e7071c..bf17d2b278 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -140,7 +140,7 @@ jobs:
       run: sudo apt install -y crossbuild-essential-riscv64
     - name: Install test tools packages
       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
       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 431c5bd318..e60fc64a37 100644
--- a/app/test/meson.build
+++ b/app/test/meson.build
@@ -473,12 +473,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
@@ -520,6 +522,37 @@ 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_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
     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


             reply	other threads:[~2022-07-29  9:54 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-29  9:54 David Marchand [this message]
2022-07-29 10:20 ` Bruce Richardson
2022-07-29 11:13   ` David Marchand
2022-07-29 11:28     ` Bruce Richardson
2022-07-29 11:53   ` David Marchand
2022-07-29 13:27     ` Bruce Richardson
2022-07-29 13:42       ` David Marchand
2022-07-29 12:42 ` [PATCH v2 1/2] app/test: load drivers using build directory David Marchand
2022-07-29 12:42   ` [PATCH v2 2/2] app/test: invoke all telemetry commands David Marchand
2022-07-29 18:04     ` Aaron Conole
2022-08-16 16:20     ` Power, Ciara
2022-08-26  9:42       ` David Marchand
2022-07-29 13:28   ` [PATCH v2 1/2] app/test: load drivers using build directory Bruce Richardson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220729095400.774303-1-david.marchand@redhat.com \
    --to=david.marchand@redhat.com \
    --cc=aconole@redhat.com \
    --cc=ciara.power@intel.com \
    --cc=dev@dpdk.org \
    --cc=fengchengwen@huawei.com \
    --cc=maicolgabriel@hotmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).