1 #!/bin/bash 2 # SPDX-License-Identifier: GPL-2.0 3 4 lib_dir=$(dirname $0)/../../../../net/forwarding 5 6 NUM_NETIFS=1 7 source $lib_dir/lib.sh 8 source devlink_lib_spectrum.sh 9 10 setup_prepare() 11 { 12 devlink_sp_read_kvd_defaults 13 } 14 15 cleanup() 16 { 17 pre_cleanup 18 devlink_sp_size_kvd_to_default 19 } 20 21 trap cleanup EXIT 22 23 setup_prepare 24 25 profiles_test() 26 { 27 local i 28 29 log_info "Running profile tests" 30 31 for i in $KVD_PROFILES; do 32 RET=0 33 devlink_sp_resource_kvd_profile_set $i 34 log_test "'$i' profile" 35 done 36 37 # Default is explicitly tested at end to ensure it's actually applied 38 RET=0 39 devlink_sp_resource_kvd_profile_set "default" 40 log_test "'default' profile" 41 } 42 43 resources_min_test() 44 { 45 local size 46 local i 47 local j 48 49 log_info "Running KVD-minimum tests" 50 51 for i in $KVD_CHILDREN; do 52 RET=0 53 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 well 57 if [[ "$i" == "linear" ]]; then 58 for j in $KVDL_CHILDREN; do 59 devlink_resource_size_set 0 kvd linear "$j" 60 done 61 fi 62 63 devlink_reload 64 devlink_sp_size_kvd_to_default 65 log_test "'$i' minimize [$size]" 66 done 67 } 68 69 resources_max_test() 70 { 71 local min_size 72 local size 73 local i 74 local j 75 76 log_info "Running KVD-maximum tests" 77 for i in $KVD_CHILDREN; do 78 RET=0 79 devlink_sp_resource_minimize 80 81 # Calculate the maximum possible size for the given partition 82 size=$(devlink_resource_size_get kvd) 83 for j in $KVD_CHILDREN; do 84 if [ "$i" != "$j" ]; then 85 min_size=$(devlink_resource_get kvd "$j" | \ 86 jq '.["size_min"]') 87 size=$((size - min_size)) 88 fi 89 done 90 91 # Test almost maximum size 92 devlink_resource_size_set "$((size - 128))" kvd "$i" 93 devlink_reload 94 log_test "'$i' almost maximize [$((size - 128))]" 95 96 # Test above maximum size 97 devlink resource set "$DEVLINK_DEV" \ 98 path "kvd/$i" size $((size + 128)) &> /dev/null 99 check_fail $? "Set kvd/$i to size $((size + 128)) should fail" 100 log_test "'$i' Overflow rejection [$((size + 128))]" 101 102 # Test maximum size 103 if [ "$i" == "hash_single" ] || [ "$i" == "hash_double" ]; then 104 echo "SKIP: Observed problem with exact max $i" 105 continue 106 fi 107 108 devlink_resource_size_set "$size" kvd "$i" 109 devlink_reload 110 log_test "'$i' maximize [$size]" 111 112 devlink_sp_size_kvd_to_default 113 done 114 } 115 116 profiles_test 117 resources_min_test 118 resources_max_test 119 120 exit "$RET"
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.