1f08c3bdfSopenharmony_ci#!/bin/sh 2f08c3bdfSopenharmony_ci# SPDX-License-Identifier: GPL-2.0-or-later 3f08c3bdfSopenharmony_ci# Copyright (c) 2021 SUSE LLC <mdoucha@suse.cz> 4f08c3bdfSopenharmony_ci# 5f08c3bdfSopenharmony_ci# DESCRIPTION: Create a large number of files and directories on NFS volume. 6f08c3bdfSopenharmony_ci# Then check whether they can be listed via NFS. 7f08c3bdfSopenharmony_ci 8f08c3bdfSopenharmony_ciFILE_COUNT=5000 9f08c3bdfSopenharmony_ci 10f08c3bdfSopenharmony_ciTST_OPTS="n:" 11f08c3bdfSopenharmony_ciTST_PARSE_ARGS="do_parse_args" 12f08c3bdfSopenharmony_ciTST_TESTFUNC="do_test" 13f08c3bdfSopenharmony_ciTST_SETUP="do_setup" 14f08c3bdfSopenharmony_ciTST_USAGE="show_usage" 15f08c3bdfSopenharmony_ci 16f08c3bdfSopenharmony_cido_parse_args() 17f08c3bdfSopenharmony_ci{ 18f08c3bdfSopenharmony_ci case "$1" in 19f08c3bdfSopenharmony_ci n) FILE_COUNT="$2";; 20f08c3bdfSopenharmony_ci esac 21f08c3bdfSopenharmony_ci} 22f08c3bdfSopenharmony_ci 23f08c3bdfSopenharmony_cishow_usage() 24f08c3bdfSopenharmony_ci{ 25f08c3bdfSopenharmony_ci nfs_usage 26f08c3bdfSopenharmony_ci echo "-n x Create x files and x directories, default is 5000" 27f08c3bdfSopenharmony_ci} 28f08c3bdfSopenharmony_ci 29f08c3bdfSopenharmony_cido_setup() 30f08c3bdfSopenharmony_ci{ 31f08c3bdfSopenharmony_ci nfs_setup 32f08c3bdfSopenharmony_ci 33f08c3bdfSopenharmony_ci local rpath=$(nfs_get_remote_path | sed -e 's/%/%%/g') 34f08c3bdfSopenharmony_ci local file_fmt="$rpath/file%1.0f" 35f08c3bdfSopenharmony_ci local dir_fmt="$rpath/dir%1.0f" 36f08c3bdfSopenharmony_ci 37f08c3bdfSopenharmony_ci tst_rhost_run -s -c "touch \$(seq -f \"$file_fmt\" -s ' ' $FILE_COUNT)" 38f08c3bdfSopenharmony_ci tst_rhost_run -s -c "mkdir \$(seq -f \"$dir_fmt\" -s ' ' $FILE_COUNT)" 39f08c3bdfSopenharmony_ci} 40f08c3bdfSopenharmony_ci 41f08c3bdfSopenharmony_cido_test() 42f08c3bdfSopenharmony_ci{ 43f08c3bdfSopenharmony_ci local count 44f08c3bdfSopenharmony_ci 45f08c3bdfSopenharmony_ci # Pass the list of files through `sort -u` in case `ls` doesn't filter 46f08c3bdfSopenharmony_ci # out potential duplicate filenames returned by buggy NFS 47f08c3bdfSopenharmony_ci count=$(ls | grep '^file' | sort -u | wc -l) 48f08c3bdfSopenharmony_ci 49f08c3bdfSopenharmony_ci if [ $count -ne $FILE_COUNT ]; then 50f08c3bdfSopenharmony_ci tst_res TFAIL "Listing files failed: $count != $FILE_COUNT" 51f08c3bdfSopenharmony_ci return 52f08c3bdfSopenharmony_ci fi 53f08c3bdfSopenharmony_ci 54f08c3bdfSopenharmony_ci count=$(ls | grep '^dir' | sort -u | wc -l) 55f08c3bdfSopenharmony_ci 56f08c3bdfSopenharmony_ci if [ $count -ne $FILE_COUNT ]; then 57f08c3bdfSopenharmony_ci tst_res TFAIL "Listing dirs failed: $count != $FILE_COUNT" 58f08c3bdfSopenharmony_ci return 59f08c3bdfSopenharmony_ci fi 60f08c3bdfSopenharmony_ci 61f08c3bdfSopenharmony_ci tst_res TPASS "All files and directories were correctly listed" 62f08c3bdfSopenharmony_ci} 63f08c3bdfSopenharmony_ci 64f08c3bdfSopenharmony_ci. nfs_lib.sh 65f08c3bdfSopenharmony_citst_run 66