121 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4lib_dir=$(dirname $0)/../../../../net/forwarding5 6NUM_NETIFS=17source $lib_dir/lib.sh8source devlink_lib_spectrum.sh9 10setup_prepare()11{12 devlink_sp_read_kvd_defaults13}14 15cleanup()16{17 pre_cleanup18 devlink_sp_size_kvd_to_default19}20 21trap cleanup EXIT22 23setup_prepare24 25profiles_test()26{27 local i28 29 log_info "Running profile tests"30 31 for i in $KVD_PROFILES; do32 RET=033 devlink_sp_resource_kvd_profile_set $i34 log_test "'$i' profile"35 done36 37 # Default is explicitly tested at end to ensure it's actually applied38 RET=039 devlink_sp_resource_kvd_profile_set "default"40 log_test "'default' profile"41}42 43resources_min_test()44{45 local size46 local i47 local j48 49 log_info "Running KVD-minimum tests"50 51 for i in $KVD_CHILDREN; do52 RET=053 size=$(devlink_resource_get kvd "$i" | jq '.["size_min"]')54 devlink_resource_size_set "$size" kvd "$i"55 56 # In case of linear, need to minimize sub-resources as well57 if [[ "$i" == "linear" ]]; then58 for j in $KVDL_CHILDREN; do59 devlink_resource_size_set 0 kvd linear "$j"60 done61 fi62 63 devlink_reload64 devlink_sp_size_kvd_to_default65 log_test "'$i' minimize [$size]"66 done67}68 69resources_max_test()70{71 local min_size72 local size73 local i74 local j75 76 log_info "Running KVD-maximum tests"77 for i in $KVD_CHILDREN; do78 RET=079 devlink_sp_resource_minimize80 81 # Calculate the maximum possible size for the given partition82 size=$(devlink_resource_size_get kvd)83 for j in $KVD_CHILDREN; do84 if [ "$i" != "$j" ]; then85 min_size=$(devlink_resource_get kvd "$j" | \86 jq '.["size_min"]')87 size=$((size - min_size))88 fi89 done90 91 # Test almost maximum size92 devlink_resource_size_set "$((size - 128))" kvd "$i"93 devlink_reload94 log_test "'$i' almost maximize [$((size - 128))]"95 96 # Test above maximum size97 devlink resource set "$DEVLINK_DEV" \98 path "kvd/$i" size $((size + 128)) &> /dev/null99 check_fail $? "Set kvd/$i to size $((size + 128)) should fail"100 log_test "'$i' Overflow rejection [$((size + 128))]"101 102 # Test maximum size103 if [ "$i" == "hash_single" ] || [ "$i" == "hash_double" ]; then104 echo "SKIP: Observed problem with exact max $i"105 continue106 fi107 108 devlink_resource_size_set "$size" kvd "$i"109 devlink_reload110 log_test "'$i' maximize [$size]"111 112 devlink_sp_size_kvd_to_default113 done114}115 116profiles_test117resources_min_test118resources_max_test119 120exit "$RET"121