121 lines
2.3 KiB
Bash
121 lines
2.3 KiB
Bash
|
#!/bin/bash
|
||
|
# SPDX-License-Identifier: GPL-2.0
|
||
|
|
||
|
lib_dir=$(dirname $0)/../../../../net/forwarding
|
||
|
|
||
|
NUM_NETIFS=1
|
||
|
source $lib_dir/lib.sh
|
||
|
source devlink_lib_spectrum.sh
|
||
|
|
||
|
setup_prepare()
|
||
|
{
|
||
|
devlink_sp_read_kvd_defaults
|
||
|
}
|
||
|
|
||
|
cleanup()
|
||
|
{
|
||
|
pre_cleanup
|
||
|
devlink_sp_size_kvd_to_default
|
||
|
}
|
||
|
|
||
|
trap cleanup EXIT
|
||
|
|
||
|
setup_prepare
|
||
|
|
||
|
profiles_test()
|
||
|
{
|
||
|
local i
|
||
|
|
||
|
log_info "Running profile tests"
|
||
|
|
||
|
for i in $KVD_PROFILES; do
|
||
|
RET=0
|
||
|
devlink_sp_resource_kvd_profile_set $i
|
||
|
log_test "'$i' profile"
|
||
|
done
|
||
|
|
||
|
# Default is explicitly tested at end to ensure it's actually applied
|
||
|
RET=0
|
||
|
devlink_sp_resource_kvd_profile_set "default"
|
||
|
log_test "'default' profile"
|
||
|
}
|
||
|
|
||
|
resources_min_test()
|
||
|
{
|
||
|
local size
|
||
|
local i
|
||
|
local j
|
||
|
|
||
|
log_info "Running KVD-minimum tests"
|
||
|
|
||
|
for i in $KVD_CHILDREN; do
|
||
|
RET=0
|
||
|
size=$(devlink_resource_get kvd "$i" | jq '.["size_min"]')
|
||
|
devlink_resource_size_set "$size" kvd "$i"
|
||
|
|
||
|
# In case of linear, need to minimize sub-resources as well
|
||
|
if [[ "$i" == "linear" ]]; then
|
||
|
for j in $KVDL_CHILDREN; do
|
||
|
devlink_resource_size_set 0 kvd linear "$j"
|
||
|
done
|
||
|
fi
|
||
|
|
||
|
devlink_reload
|
||
|
devlink_sp_size_kvd_to_default
|
||
|
log_test "'$i' minimize [$size]"
|
||
|
done
|
||
|
}
|
||
|
|
||
|
resources_max_test()
|
||
|
{
|
||
|
local min_size
|
||
|
local size
|
||
|
local i
|
||
|
local j
|
||
|
|
||
|
log_info "Running KVD-maximum tests"
|
||
|
for i in $KVD_CHILDREN; do
|
||
|
RET=0
|
||
|
devlink_sp_resource_minimize
|
||
|
|
||
|
# Calculate the maximum possible size for the given partition
|
||
|
size=$(devlink_resource_size_get kvd)
|
||
|
for j in $KVD_CHILDREN; do
|
||
|
if [ "$i" != "$j" ]; then
|
||
|
min_size=$(devlink_resource_get kvd "$j" | \
|
||
|
jq '.["size_min"]')
|
||
|
size=$((size - min_size))
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
# Test almost maximum size
|
||
|
devlink_resource_size_set "$((size - 128))" kvd "$i"
|
||
|
devlink_reload
|
||
|
log_test "'$i' almost maximize [$((size - 128))]"
|
||
|
|
||
|
# Test above maximum size
|
||
|
devlink resource set "$DEVLINK_DEV" \
|
||
|
path "kvd/$i" size $((size + 128)) &> /dev/null
|
||
|
check_fail $? "Set kvd/$i to size $((size + 128)) should fail"
|
||
|
log_test "'$i' Overflow rejection [$((size + 128))]"
|
||
|
|
||
|
# Test maximum size
|
||
|
if [ "$i" == "hash_single" ] || [ "$i" == "hash_double" ]; then
|
||
|
echo "SKIP: Observed problem with exact max $i"
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
devlink_resource_size_set "$size" kvd "$i"
|
||
|
devlink_reload
|
||
|
log_test "'$i' maximize [$size]"
|
||
|
|
||
|
devlink_sp_size_kvd_to_default
|
||
|
done
|
||
|
}
|
||
|
|
||
|
profiles_test
|
||
|
resources_min_test
|
||
|
resources_max_test
|
||
|
|
||
|
exit "$RET"
|