Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/tools/testing/selftests/drivers/net/netdevsim/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 4 kB image not shown  

Quelle  psample.sh   Sprache: Shell

 
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# This test is for checking the psample module. It makes use of netdevsim
# which periodically generates "sampled" packets.

lib_dir=$(dirname $0)/../../../net/forwarding

ALL_TESTS="
 psample_enable_test
 psample_group_num_test
 psample_md_test
"
NETDEVSIM_PATH=/sys/bus/netdevsim/
DEV_ADDR=1337
DEV=netdevsim${DEV_ADDR}
SYSFS_NET_DIR=/sys/bus/netdevsim/devices/$DEV/net/
PSAMPLE_DIR=/sys/kernel/debug/netdevsim/$DEV/psample/
CAPTURE_FILE=$(mktemp)
NUM_NETIFS=0
source $lib_dir/lib.sh

DEVLINK_DEV=
source $lib_dir/devlink_lib.sh
DEVLINK_DEV=netdevsim/${DEV}

# Available at https://github.com/Mellanox/libpsample
require_command psample

psample_capture()
{
 rm -f $CAPTURE_FILE

 timeout 2 ip netns exec testns1 psample &> $CAPTURE_FILE
}

psample_enable_test()
{
 RET=0

 echo 1 > $PSAMPLE_DIR/enable
 check_err $? "Failed to enable sampling when should not"

 echo 1 > $PSAMPLE_DIR/enable 2>/dev/null
 check_fail $? "Sampling enablement succeeded when should fail"

 psample_capture
 if [ $(cat $CAPTURE_FILE | wc -l) -eq 0 ]; then
  check_err 1 "Failed to capture sampled packets"
 fi

 echo 0 > $PSAMPLE_DIR/enable
 check_err $? "Failed to disable sampling when should not"

 echo 0 > $PSAMPLE_DIR/enable 2>/dev/null
 check_fail $? "Sampling disablement succeeded when should fail"

 psample_capture
 if [ $(cat $CAPTURE_FILE | wc -l) -ne 0 ]; then
  check_err 1 "Captured sampled packets when should not"
 fi

 log_test "psample enable / disable"
}

psample_group_num_test()
{
 RET=0

 echo 1234 > $PSAMPLE_DIR/group_num
 echo 1 > $PSAMPLE_DIR/enable

 psample_capture
 grep -q -e "group 1234" $CAPTURE_FILE
 check_err $? "Sampled packets reported with wrong group number"

 # New group number should only be used after disable / enable.
 echo 4321 > $PSAMPLE_DIR/group_num

 psample_capture
 grep -q -e "group 4321" $CAPTURE_FILE
 check_fail $? "Group number changed while sampling is active"

 echo 0 > $PSAMPLE_DIR/enable && echo 1 > $PSAMPLE_DIR/enable

 psample_capture
 grep -q -e "group 4321" $CAPTURE_FILE
 check_err $? "Group number did not change after restarting sampling"

 log_test "psample group number"

 echo 0 > $PSAMPLE_DIR/enable
}

psample_md_test()
{
 RET=0

 echo 1 > $PSAMPLE_DIR/enable

 echo 1234 > $PSAMPLE_DIR/in_ifindex
 echo 4321 > $PSAMPLE_DIR/out_ifindex
 psample_capture

 grep -q -e "in-ifindex 1234" $CAPTURE_FILE
 check_err $? "Sampled packets reported with wrong in-ifindex"

 grep -q -e "out-ifindex 4321" $CAPTURE_FILE
 check_err $? "Sampled packets reported with wrong out-ifindex"

 echo 5 > $PSAMPLE_DIR/out_tc
 psample_capture

 grep -q -e "out-tc 5" $CAPTURE_FILE
 check_err $? "Sampled packets reported with wrong out-tc"

 echo $((2**16 - 1)) > $PSAMPLE_DIR/out_tc
 psample_capture

 grep -q -e "out-tc " $CAPTURE_FILE
 check_fail $? "Sampled packets reported with out-tc when should not"

 echo 1 > $PSAMPLE_DIR/out_tc
 echo 10000 > $PSAMPLE_DIR/out_tc_occ_max
 psample_capture

 grep -q -e "out-tc-occ " $CAPTURE_FILE
 check_err $? "Sampled packets not reported with out-tc-occ when should"

 echo 0 > $PSAMPLE_DIR/out_tc_occ_max
 psample_capture

 grep -q -e "out-tc-occ " $CAPTURE_FILE
 check_fail $? "Sampled packets reported with out-tc-occ when should not"

 echo 10000 > $PSAMPLE_DIR/latency_max
 psample_capture

 grep -q -e "latency " $CAPTURE_FILE
 check_err $? "Sampled packets not reported with latency when should"

 echo 0 > $PSAMPLE_DIR/latency_max
 psample_capture

 grep -q -e "latency " $CAPTURE_FILE
 check_fail $? "Sampled packets reported with latency when should not"

 log_test "psample metadata"

 echo 0 > $PSAMPLE_DIR/enable
}

setup_prepare()
{
 modprobe netdevsim &> /dev/null

 echo "$DEV_ADDR 1" > ${NETDEVSIM_PATH}/new_device
 while [ ! -d $SYSFS_NET_DIR ] ; do :; done

 set -e

 ip netns add testns1
 devlink dev reload $DEVLINK_DEV netns testns1

 set +e
}

cleanup()
{
 pre_cleanup
 rm -f $CAPTURE_FILE
 ip netns del testns1
 echo "$DEV_ADDR" > ${NETDEVSIM_PATH}/del_device
 modprobe -r netdevsim &> /dev/null
}

trap cleanup EXIT

setup_prepare

tests_run

exit $EXIT_STATUS

Messung V0.5
C=98 H=99 G=98

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.