It's similar like XZ compressed files.  For the simplicity, both XZ
and ZSTD tests are done in a single function.  The format is specified
via $COMPRESS_FORMAT and the compression function is pre-defined.

Signed-off-by: Takashi Iwai <[email protected]>
---
 .../selftests/firmware/fw_filesystem.sh       | 75 ++++++++++++++-----
 tools/testing/selftests/firmware/fw_lib.sh    | 12 ++-
 2 files changed, 64 insertions(+), 23 deletions(-)

diff --git a/tools/testing/selftests/firmware/fw_filesystem.sh 
b/tools/testing/selftests/firmware/fw_filesystem.sh
index f1976e650672..abaceac83d6e 100755
--- a/tools/testing/selftests/firmware/fw_filesystem.sh
+++ b/tools/testing/selftests/firmware/fw_filesystem.sh
@@ -211,7 +211,7 @@ read_firmwares()
        else
                fwfile="$FW"
        fi
-       if [ "$1" = "xzonly" ]; then
+       if [ "$1" = "componly" ]; then
                fwfile="${fwfile}-orig"
        fi
        for i in $(seq 0 3); do
@@ -235,7 +235,7 @@ read_partial_firmwares()
                fwfile="${FW}"
        fi
 
-       if [ "$1" = "xzonly" ]; then
+       if [ "$1" = "componly" ]; then
                fwfile="${fwfile}-orig"
        fi
 
@@ -409,10 +409,8 @@ test_request_firmware_nowait_custom()
        config_unset_uevent
        RANDOM_FILE_PATH=$(setup_random_file)
        RANDOM_FILE="$(basename $RANDOM_FILE_PATH)"
-       if [ "$2" = "both" ]; then
-               xz -9 -C crc32 -k $RANDOM_FILE_PATH
-       elif [ "$2" = "xzonly" ]; then
-               xz -9 -C crc32 $RANDOM_FILE_PATH
+       if [ -n "$2" -a "$2" != "normal" ]; then
+               compress-"$2"-$COMPRESS_FORMAT $RANDOM_FILE_PATH
        fi
        config_set_name $RANDOM_FILE
        config_trigger_async
@@ -488,21 +486,58 @@ test_request_partial_firmware_into_buf_nofile 0 5
 test_request_partial_firmware_into_buf_nofile 1 6
 test_request_partial_firmware_into_buf_nofile 2 10
 
-test "$HAS_FW_LOADER_COMPRESS" != "yes" && exit 0
+test_request_firmware_compressed ()
+{
+       export COMPRESS_FORMAT="$1"
 
-# test with both files present
-xz -9 -C crc32 -k $FW
-xz -9 -C crc32 -k $FW_INTO_BUF
-config_set_name $NAME
-echo
-echo "Testing with both plain and xz files present..."
-do_tests both
+       # test with both files present
+       compress-both-$COMPRESS_FORMAT $FW
+       compress-both-$COMPRESS_FORMAT $FW_INTO_BUF
 
-# test with only xz file present
-mv "$FW" "${FW}-orig"
-mv "$FW_INTO_BUF" "${FW_INTO_BUF}-orig"
-echo
-echo "Testing with only xz file present..."
-do_tests xzonly
+       config_set_name $NAME
+       echo
+       echo "Testing with both plain and $COMPRESS_FORMAT files present..."
+       do_tests both
+
+       # test with only compressed file present
+       mv "$FW" "${FW}-orig"
+       mv "$FW_INTO_BUF" "${FW_INTO_BUF}-orig"
+
+       config_set_name $NAME
+       echo
+       echo "Testing with only $COMPRESS_FORMAT file present..."
+       do_tests componly
+
+       mv "${FW}-orig" "$FW"
+       mv "${FW_INTO_BUF}-orig" "$FW_INTO_BUF"
+}
+
+compress-both-XZ ()
+{
+       xz -k -9 -C crc32 "$@"
+}
+
+compress-componly-XZ ()
+{
+       xz -9 -C crc32 "$@"
+}
+
+compress-both-ZSTD ()
+{
+       zstd -q -k "$@"
+}
+
+compress-componly-ZSTD ()
+{
+       zstd -q --rm "$@"
+}
+
+if test "$HAS_FW_LOADER_COMPRESS_XZ" = "yes"; then
+       test_request_firmware_compressed XZ
+fi
+
+if test "$HAS_FW_LOADER_COMPRESS_ZSTD" = "yes"; then
+       test_request_firmware_compressed ZSTD
+fi
 
 exit 0
diff --git a/tools/testing/selftests/firmware/fw_lib.sh 
b/tools/testing/selftests/firmware/fw_lib.sh
index 5b8c0fedee76..3fa8282b053b 100755
--- a/tools/testing/selftests/firmware/fw_lib.sh
+++ b/tools/testing/selftests/firmware/fw_lib.sh
@@ -62,7 +62,8 @@ check_setup()
 {
        HAS_FW_LOADER_USER_HELPER="$(kconfig_has 
CONFIG_FW_LOADER_USER_HELPER=y)"
        HAS_FW_LOADER_USER_HELPER_FALLBACK="$(kconfig_has 
CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y)"
-       HAS_FW_LOADER_COMPRESS="$(kconfig_has CONFIG_FW_LOADER_COMPRESS=y)"
+       HAS_FW_LOADER_COMPRESS_XZ="$(kconfig_has 
CONFIG_FW_LOADER_COMPRESS_XZ=y)"
+       HAS_FW_LOADER_COMPRESS_ZSTD="$(kconfig_has 
CONFIG_FW_LOADER_COMPRESS_ZSTD=y)"
        PROC_FW_IGNORE_SYSFS_FALLBACK="0"
        PROC_FW_FORCE_SYSFS_FALLBACK="0"
 
@@ -98,9 +99,14 @@ check_setup()
 
        OLD_FWPATH="$(cat /sys/module/firmware_class/parameters/path)"
 
-       if [ "$HAS_FW_LOADER_COMPRESS" = "yes" ]; then
+       if [ "$HAS_FW_LOADER_COMPRESS_XZ" = "yes" ]; then
                if ! which xz 2> /dev/null > /dev/null; then
-                       HAS_FW_LOADER_COMPRESS=""
+                       HAS_FW_LOADER_COMPRESS_XZ=""
+               fi
+       fi
+       if [ "$HAS_FW_LOADER_COMPRESS_ZSTD" = "yes" ]; then
+               if ! which zstd 2> /dev/null > /dev/null; then
+                       HAS_FW_LOADER_COMPRESS_ZSTD=""
                fi
        fi
 }
-- 
2.26.2

Reply via email to