From patchwork Mon Jul 26 11:51:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ananyev, Konstantin" X-Patchwork-Id: 96284 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A465FA0C47; Mon, 26 Jul 2021 13:52:45 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9208040F35; Mon, 26 Jul 2021 13:52:45 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mails.dpdk.org (Postfix) with ESMTP id B34C240DDA for ; Mon, 26 Jul 2021 13:52:43 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10056"; a="273303619" X-IronPort-AV: E=Sophos;i="5.84,270,1620716400"; d="scan'208";a="273303619" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Jul 2021 04:52:42 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,270,1620716400"; d="scan'208";a="473661421" Received: from sivswdev08.ir.intel.com ([10.237.217.47]) by fmsmga008.fm.intel.com with ESMTP; 26 Jul 2021 04:52:39 -0700 From: Konstantin Ananyev To: dev@dpdk.org Cc: Konstantin Ananyev Date: Mon, 26 Jul 2021 12:51:37 +0100 Message-Id: <20210726115137.6994-3-konstantin.ananyev@intel.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20210726115137.6994-1-konstantin.ananyev@intel.com> References: <20210518112619.4237-1-konstantin.ananyev@intel.com> <20210726115137.6994-1-konstantin.ananyev@intel.com> Subject: [dpdk-dev] [PATCH v2 2/2] app/acl: add script for automate testing 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 Sender: "dev" The purpose of this script is to help automate ACL library functional testing using test-acl app. Sample input files are also provided. Signed-off-by: Konstantin Ananyev --- app/test-acl/input/acl1v4_5_rule | 7 +++ app/test-acl/input/acl1v4_5_trace | 7 +++ app/test-acl/input/acl1v6_1_rule | 3 + app/test-acl/input/acl1v6_1_trace | 4 ++ app/test-acl/test-acl.sh | 94 +++++++++++++++++++++++++++++++ 5 files changed, 115 insertions(+) create mode 100644 app/test-acl/input/acl1v4_5_rule create mode 100644 app/test-acl/input/acl1v4_5_trace create mode 100644 app/test-acl/input/acl1v6_1_rule create mode 100644 app/test-acl/input/acl1v6_1_trace create mode 100644 app/test-acl/test-acl.sh diff --git a/app/test-acl/input/acl1v4_5_rule b/app/test-acl/input/acl1v4_5_rule new file mode 100644 index 0000000000..ae5b7826c0 --- /dev/null +++ b/app/test-acl/input/acl1v4_5_rule @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: BSD-3-Clause + +@16.32.1.1/32 2.1.0.0/16 0 : 65535 0 : 65535 0/0 +@16.32.1.0/24 2.1.1.0/24 0 : 65535 0 : 65535 0/0 +@2.1.0.0/16 16.32.1.1/32 0 : 65535 0 : 65535 0/0 +@2.1.0.0/16 16.32.1.0/24 1000 : 2000 0 : 65535 0/0 +@2.1.1.0/24 16.32.1.0/24 0 : 65535 0 : 65535 0/0 diff --git a/app/test-acl/input/acl1v4_5_trace b/app/test-acl/input/acl1v4_5_trace new file mode 100644 index 0000000000..80a988c280 --- /dev/null +++ b/app/test-acl/input/acl1v4_5_trace @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: BSD-3-Clause + +0x10200101 0x02010304 100 100 6 0 +0x10200103 0x02010104 100 100 6 1 +0x02010304 0x10200101 100 100 6 2 +0x02010104 0x10200103 100 100 6 4 +0x02010104 0x10200101 100 100 6 2 diff --git a/app/test-acl/input/acl1v6_1_rule b/app/test-acl/input/acl1v6_1_rule new file mode 100644 index 0000000000..3e03124186 --- /dev/null +++ b/app/test-acl/input/acl1v6_1_rule @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: BSD-3-Clause + +@9baa:cead:8000:0000:e300:00ff:fe04:c5a8/33 d1b5:2feb:0000:0000:6600:00ff:fed9:aeaa/33 0 : 65535 1526 : 1526 0x00/0x00 diff --git a/app/test-acl/input/acl1v6_1_trace b/app/test-acl/input/acl1v6_1_trace new file mode 100644 index 0000000000..8551386b41 --- /dev/null +++ b/app/test-acl/input/acl1v6_1_trace @@ -0,0 +1,4 @@ +# SPDX-License-Identifier: BSD-3-Clause + +9baa:cead:8000:0000:0000:0000:0000:0000 d1b5:2feb:0000:0000:0000:0000:0000:0000 37826 1526 6 0 +2eba:cc41:0000:0000:0000:0000:0000:0000 16ef:6cdb:0000:0000:0000:0000:0000:0000 25946 1525 0 4294967295 diff --git a/app/test-acl/test-acl.sh b/app/test-acl/test-acl.sh new file mode 100644 index 0000000000..c7bdc24113 --- /dev/null +++ b/app/test-acl/test-acl.sh @@ -0,0 +1,94 @@ +#! /bin/bash +# SPDX-License-Identifier: BSD-3-Clause + +# Usage: +# /bin/bash +# Expected file-naming conventions: +# - for rules: 'acl[0-9]v[4,6]_[0-9,a-z]+_rule' +# - for traces: 'acl[0-9]v[4,6]_[0-9,a-z]+_trace' +# Each rule file expects to have exactly one trace file. +# test-acl app follows classbench file format. +# Each line defines exactly one rule/trace. +# rules record format: +# '@''/' \ +# '/' \ +# ":" \ +# ":" \ +# '/' +# trace record format: +# \ +# ... +# +# As an example: +# /bin/bash app/test-acl/test-acl.sh build/app/dpdk-test-acl \ +# app/test-acl/input scalar 32 +# +# Refer to test-acl app for more information about rules/trace files format, +# available test-acl command-line options, etc. + +TACL_PATH=$1 +TACL_DIR=$2 +TACL_ALG=$3 +TACL_STEP=$4 + +if [[ ! -x ${TACL_PATH} ]]; then + echo "invalid TACL_PATH=${TACL_PATH}" + exit 127 +fi + +if [[ ! -d ${TACL_DIR} ]]; then + echo "invalid TACL_DIR=${TACL_DIR}" + exit 127 +fi + +V4F=`find ${TACL_DIR} -type f | egrep -e 'acl[0-9]v4_[0-9,a-z]+_rule$'` +V6F=`find ${TACL_DIR} -type f | egrep -e 'acl[0-9]v6_[0-9,a-z]+_rule$'` + +run_test() +{ + i=$1 + n=`basename ${i}` + + TRACEF=`echo ${i} | sed -e 's/_rule$/_trace/'` + if [[ ! -f ${TRACEF} ]]; then + echo "${TRACEF} not found" + echo "test ${n} FAILED" + exit 127 + fi + + OUTF=`mktemp ${n}_XXXXXX` + echo "start test ${n} with alg ${TACL_ALG}, burst-size ${TACL_STEP}" + ${TACL_PATH} -l 0 -n 4 --log-level="acl,debug" \ + --force-max-simd-bitwidth=0 --no-pci -- \ + ${XPRM} --tracenum=200000 --rulesf=${i} --tracef=${TRACEF} \ + --tracestep=${TACL_STEP} --alg=${TACL_ALG} \ + > ${OUTF} + grep 'result:' ${OUTF} | awk '{print $(NF);}' > ${OUTF}.out + sed -e '/^[[:space:]]*#/d' \ + -e '/^[[:space:]]*$/d' \ + -e 's/[[:space:]]*$//g' ${TRACEF} | \ + awk '{print $(NF);}' > ${OUTF}.chk + diff -u ${OUTF}.chk ${OUTF}.out + st=$? + if [[ $st -ne 0 ]]; then + echo "test ${n} FAILED" + echo "output files:" + ls ${OUTF}* + cat ${OUTF}* + exit 127 + fi + rm -f ${OUTF}* + echo "test ${n} OK" +} + +for i in ${V4F}; do + run_test $i +done + +for i in ${V6F}; do + XPRM='--ipv6' + run_test $i + unset XPRM +done + +echo "All tests have ended successfully"