From: Ido Schimmel <ido...@nvidia.com> Test the existing functionality of the devlink metric infrastructure. Tests will be added for any new functionality.
Signed-off-by: Ido Schimmel <ido...@nvidia.com> --- .../networking/devlink/devlink-metric.rst | 11 +++++ .../drivers/net/netdevsim/devlink.sh | 49 ++++++++++++++++++- 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/Documentation/networking/devlink/devlink-metric.rst b/Documentation/networking/devlink/devlink-metric.rst index cf5c5b4e4077..8a4515df1bc0 100644 --- a/Documentation/networking/devlink/devlink-metric.rst +++ b/Documentation/networking/devlink/devlink-metric.rst @@ -24,3 +24,14 @@ driver-specific ``devlink`` documentation under When possible, a selftest (under ``tools/testing/selftests/drivers/``) should also be provided to ensure the metrics are updated under the right conditions. + +Testing +======= + +See ``tools/testing/selftests/drivers/net/netdevsim/devlink.sh`` for a +test covering the core infrastructure. Test cases should be added for any new +functionality. + +Device drivers should focus their tests on device-specific functionality, such +as making sure the exposed metrics are correctly incremented and read from the +device. diff --git a/tools/testing/selftests/drivers/net/netdevsim/devlink.sh b/tools/testing/selftests/drivers/net/netdevsim/devlink.sh index de4b32fc4223..4ca345e227bc 100755 --- a/tools/testing/selftests/drivers/net/netdevsim/devlink.sh +++ b/tools/testing/selftests/drivers/net/netdevsim/devlink.sh @@ -5,7 +5,8 @@ lib_dir=$(dirname $0)/../../../net/forwarding ALL_TESTS="fw_flash_test params_test regions_test reload_test \ netns_reload_test resource_test dev_info_test \ - empty_reporter_test dummy_reporter_test" + empty_reporter_test dummy_reporter_test \ + metric_counter_test" NUM_NETIFS=0 source $lib_dir/lib.sh @@ -486,6 +487,52 @@ dummy_reporter_test() log_test "dummy reporter test" } +metric_counter_value_get() +{ + local metric=$1; shift + + cmd_jq "devlink -jps dev metric show $DL_HANDLE metric $metric" \ + '.[][][]["value"]' +} + +metric_group_get() +{ + local metric=$1; shift + + cmd_jq "devlink -jp dev metric show $DL_HANDLE metric $metric" \ + '.[][][]["group"]' +} + +metric_counter_test() +{ + RET=0 + + local val_t0=$(metric_counter_value_get dummy_counter) + local val_t1=$(metric_counter_value_get dummy_counter) + (( val_t0 < val_t1 )) + check_err $? "Expected to read a higher value in second read" + + echo "y" > $DEBUGFS_DIR/metric/fail_counter_get + metric_counter_value_get dummy_counter + check_fail $? "Unexpected success of counter get" + echo "n" > $DEBUGFS_DIR/metric/fail_counter_get + + devlink dev metric set $DL_HANDLE metric dummy_counter group 10 + + (( 10 == $(metric_group_get dummy_counter) )) + check_err $? "Expected \"dummy_counter\" to be in group 10" + + devlink dev metric show group 10 | grep -q "dummy_counter" + check_err $? "Expected \"dummy_counter\" to be dumped" + + devlink dev metric show group 20 | grep -q "dummy_counter" + check_fail $? "Did not expect to see \"dummy_counter\" in group 20" + + devlink dev metric set $DL_HANDLE metric dummy_counter group 0 + + log_test "metric counter test" +} + setup_prepare() { modprobe netdevsim -- 2.26.2