From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id CD21EA0503; Thu, 19 May 2022 14:47:38 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6F9A540222; Thu, 19 May 2022 14:47:38 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id 0E85B40156 for ; Thu, 19 May 2022 14:47:36 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652964456; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fyvnDGJThZnlak+6TEys9jePBBs9zVNPLm1Vw1TGgO4=; b=AsyCFfxZQk5HYZjrFJI5kcV3Z6L3LoOilk+Bx2PaYrPhP3H+BBZJYQy4pctkTKKmOsaKDW e67RJRSK98ka1uhYVgmAhLfiFcb2dw1Xvjn8LDJSB5LhmAgUhJa6XkquQ+FAm7qh2P5ZCe 6Ql0dsiqA8el/dv+kvw4M6gMISxDpvs= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-124-57sWe-NeNs-sIBRUBiRMRw-1; Thu, 19 May 2022 08:47:35 -0400 X-MC-Unique: 57sWe-NeNs-sIBRUBiRMRw-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 3B23980B90A; Thu, 19 May 2022 12:47:35 +0000 (UTC) Received: from fchome.home (unknown [10.40.194.86]) by smtp.corp.redhat.com (Postfix) with ESMTP id C3119400E400; Thu, 19 May 2022 12:47:33 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: bruce.richardson@intel.com, Aaron Conole , Michael Santana , Ciara Power Subject: [RFC PATCH] app/test: invoke all telemetry commands Date: Thu, 19 May 2022 14:47:31 +0200 Message-Id: <20220519124731.3120656-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=david.marchand@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org 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 --- 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