From bced3375b9d170ed223dafb852d5b5242f475e7a Mon Sep 17 00:00:00 2001 From: Jian Yu Date: Tue, 28 Sep 2021 11:45:13 -0700 Subject: [PATCH] EX-2659 tests: allow multiple MDTs in sanity-lipe.sh This patch improves sanity-lipe.sh to support multiple MDTs. Test-Parameters: trivial testlist=sanity-lipe Test-Parameters: trivial testlist=sanity-lipe facet=mds1 Test-Parameters: trivial mdscount=2 mdtcount=4 \ testlist=sanity-lipe Test-Parameters: trivial env=LIPE_FIND=lipe_find2 \ testlist=sanity-lipe Test-Parameters: trivial env=LIPE_FIND=lipe_find2 \ testlist=sanity-lipe facet=mds1 Test-Parameters: trivial env=LIPE_FIND=lipe_find2 \ mdscount=2 mdtcount=4 testlist=sanity-lipe Change-Id: I9db6f01e810e8c40e419dcfad409741a3334687c Signed-off-by: Jian Yu Reviewed-on: https://review.whamcloud.com/44588 Tested-by: jenkins Tested-by: Maloo Reviewed-by: James Nunez Reviewed-by: Andreas Dilger Reviewed-by: John L. Hammond --- lustre/tests/sanity-lipe.sh | 952 +++++++++++++++++++++++++------------------- 1 file changed, 544 insertions(+), 408 deletions(-) diff --git a/lustre/tests/sanity-lipe.sh b/lustre/tests/sanity-lipe.sh index 20f706f..e3e2a23 100644 --- a/lustre/tests/sanity-lipe.sh +++ b/lustre/tests/sanity-lipe.sh @@ -18,8 +18,6 @@ init_logging ALWAYS_EXCEPT="$SANITY_LIPE_EXCEPT " # UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT! -# FIXME to support DNE -(( MDSCOUNT == 1 )) || skip_env "need 1 MDT" (( OSTCOUNT >= 2 )) || skip_env "need at least 2 OSTs" [[ $(facet_fstype mds1) = ldiskfs ]] || skip_env "need ldiskfs on MDS" @@ -59,6 +57,26 @@ if [[ -n $LIPE_MDS_NODE ]]; then stack_trap "zconf_umount_clients $LIPE_MDS_NODE $MOUNT" fi +# choose a random MDS and return its facet +lipe_get_random_mds() { + (( MDSCOUNT != 1 )) || { echo -n mds1; return; } + echo -n $(get_random_entry $(get_facets MDS)) +} + +# if the test suite was run on an MDS, then return the MDS facet +lipe_get_local_mds() { + local facet + local facets + + facets=$(get_facets MDS) + for facet in ${facets//,/ }; do + if local_node $(facet_active_host $facet); then + echo -n $facet + return + fi + done +} + # create OST pools create_ost_pools() { pool_add $LIPE_POOL1 || error "failed to create OST pool '$LIPE_POOL1'" @@ -144,9 +162,6 @@ create_regular_files() { local file="$1" [[ -n "$file" ]] || error "file was not specified" - # create OST pools - [[ -z "$pool" ]] || create_ost_pools - # create a regular file cmd="$LFS setstripe -c -1 -i -1 -S 4M ${pool:+-p $LIPE_POOL1 }$file.1" echo $cmd @@ -244,18 +259,20 @@ expect_file() { } lipe_find_expect_file() { - local file="$1" - local which="$2" + local facet="$1" + local file="$2" + local which="$3" - do_lipe_find_facet mds1 $PRINT_FID_OPT "${@:3}" | + do_lipe_find_facet $facet $PRINT_FID_OPT "${@:4}" | expect_file "$file" "$which" } lipe_find_expect_fid() { - local fid="$1" - local which="$2" + local facet="$1" + local fid="$2" + local which="$3" - do_lipe_find_facet mds1 $PRINT_FID_OPT "${@:3}" | + do_lipe_find_facet $facet $PRINT_FID_OPT "${@:4}" | expect_fid "$fid" "$which" } @@ -281,140 +298,163 @@ lipe_find_max_stripe_size() { echo -n $max_stripe_size } +LIPE_MDS_FACET="" +(( MDSCOUNT == 1 )) && LIPE_MDS_FACET=mds1 || + LIPE_MDS_FACET=$(lipe_get_local_mds) +[[ -n $LIPE_MDS_FACET ]] || + echo "No local MDS. Each test will be run on a random MDS." + # lipe_find test cases test_1() { - do_lipe_find_facet mds1 $PRINT_FID_OPT || error "cannot run lipe_find" + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + + do_lipe_find_facet $facet $PRINT_FID_OPT || + error "cannot run lipe_find on $facet" } run_test 1 "lipe_find works" test_2() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) - mkdir $td || error "mkdir '$td' failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" touch $tf || error "touch '$tf' failed" - lipe_find_expect_file $td - lipe_find_expect_file $tf + lipe_find_expect_file $facet $td + lipe_find_expect_file $facet $tf } run_test 2 "lipe_find finds dir and file" test_3_sub() { - local path="$1" + local facet="$1" + local path="$2" local fid fid=$($LFS path2fid "$path" | tr -d '[]') [[ -n "$fid" ]] || error "cannot get FID of '$path'" - lipe_find_expect_fid $fid true "-fid $fid" - lipe_find_expect_fid $fid true "-expr 'fid_match(\\\"$fid\\\")'" - lipe_find_expect_fid $fid true "-fid '*'" - lipe_find_expect_fid $fid true "-fid '*${fid:3}'" - lipe_find_expect_fid $fid true "-fid '${fid%:*}*'" - lipe_find_expect_fid $fid true "-fid '*${fid:3:12}*'" - lipe_find_expect_fid $fid false "-fid X$fid" - lipe_find_expect_fid $fid false "-fid ${fid}X" + lipe_find_expect_fid $facet $fid true "-fid $fid" + lipe_find_expect_fid $facet $fid true "-expr 'fid_match(\\\"$fid\\\")'" + lipe_find_expect_fid $facet $fid true "-fid '*'" + lipe_find_expect_fid $facet $fid true "-fid '*${fid:3}'" + lipe_find_expect_fid $facet $fid true "-fid '${fid%:*}*'" + lipe_find_expect_fid $facet $fid true "-fid '*${fid:3:12}*'" + lipe_find_expect_fid $facet $fid false "-fid X$fid" + lipe_find_expect_fid $facet $fid false "-fid ${fid}X" } test_3() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" create_lipe_find_files $tf echo -e "\nTest $td" - test_3_sub $td + test_3_sub $facet $td for file in $(ls $td); do echo -e "\nTest $td/$file" - test_3_sub $td/$file + test_3_sub $facet $td/$file done } run_test 3 "lipe_find -fid works" test_4_sub() { - local file="$1" + local facet="$1" + local file="$2" local name=$(basename $file) # -name is the same with -iname except the match is case sensitive - lipe_find_expect_file $file true "-name $name" - lipe_find_expect_file $file true "-expr 'fname_match(\\\"$name\\\")'" - lipe_find_expect_file $file false "-name ${name^^}" - lipe_find_expect_file $file false "-name ${name^}" - lipe_find_expect_file $file true "-name '*'" - lipe_find_expect_file $file false "! -name $name" - lipe_find_expect_file $file true "! -name ${name^^}" - lipe_find_expect_file $file true "! -name ${name^}" - lipe_find_expect_file $file false "! -name '*'" + lipe_find_expect_file $facet $file true "-name $name" + lipe_find_expect_file $facet $file true \ + "-expr 'fname_match(\\\"$name\\\")'" + lipe_find_expect_file $facet $file false "-name ${name^^}" + lipe_find_expect_file $facet $file false "-name ${name^}" + lipe_find_expect_file $facet $file true "-name '*'" + lipe_find_expect_file $facet $file false "! -name $name" + lipe_find_expect_file $facet $file true "! -name ${name^^}" + lipe_find_expect_file $facet $file true "! -name ${name^}" + lipe_find_expect_file $facet $file false "! -name '*'" # -iname is the same with -name except the match is case insensitive - lipe_find_expect_file $file true "-iname $name" - lipe_find_expect_file $file true "-expr 'fname_imatch(\\\"$name\\\")'" - lipe_find_expect_file $file true "-iname ${name^^}" - lipe_find_expect_file $file true \ + lipe_find_expect_file $facet $file true "-iname $name" + lipe_find_expect_file $facet $file true \ + "-expr 'fname_imatch(\\\"$name\\\")'" + lipe_find_expect_file $facet $file true "-iname ${name^^}" + lipe_find_expect_file $facet $file true \ "-expr 'fname_imatch(\\\"${name^^}\\\")'" - lipe_find_expect_file $file true "-iname ${name^}" - lipe_find_expect_file $file true "-iname '*'" - lipe_find_expect_file $file false "! -iname $name" - lipe_find_expect_file $file false "! -iname ${name^^}" - lipe_find_expect_file $file false "! -iname ${name^}" - lipe_find_expect_file $file false "! -iname '*'" + lipe_find_expect_file $facet $file true "-iname ${name^}" + lipe_find_expect_file $facet $file true "-iname '*'" + lipe_find_expect_file $facet $file false "! -iname $name" + lipe_find_expect_file $facet $file false "! -iname ${name^^}" + lipe_find_expect_file $facet $file false "! -iname ${name^}" + lipe_find_expect_file $facet $file false "! -iname '*'" } test_4() { local td=$DIR/$tdir local tf=$td/${tfile//-/_} + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" create_lipe_find_files $tf for file in $(ls $td); do echo -e "\nTest $td/$file" - test_4_sub $td/$file + test_4_sub $facet $td/$file done } run_test 4 "lipe_find -name and -iname works" test_5_sub() { - local file="$1" + local facet="$1" + local file="$2" local inum inum=$(stat -c %i $file) [[ -n "$inum" ]] || error "cannot get inode number of '$file'" - lipe_find_expect_file $file true "-inum $inum" - lipe_find_expect_file $file true "-expr 'inum == $inum'" - lipe_find_expect_file $file true "-expr '== inum $inum'" - lipe_find_expect_file $file false "! -inum $inum" + lipe_find_expect_file $facet $file true "-inum $inum" + lipe_find_expect_file $facet $file true "-expr 'inum == $inum'" + lipe_find_expect_file $facet $file true "-expr '== inum $inum'" + lipe_find_expect_file $facet $file false "! -inum $inum" } test_5() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" - create_lipe_find_files $tf - local saved_LIPE_FIND_USE_MOUNT=$LIPE_FIND_USE_MOUNT LIPE_FIND_USE_MOUNT=true stack_trap "LIPE_FIND_USE_MOUNT=$saved_LIPE_FIND_USE_MOUNT" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" + create_lipe_find_files $tf + echo -e "\nTest $td" - test_5_sub $td + test_5_sub $facet $td for file in $(ls $td); do echo -e "\nTest $td/$file" - test_5_sub $td/$file + test_5_sub $facet $td/$file done } run_test 5 "lipe_find -inum works" test_6_sub() { - local path="$1" + local facet="$1" + local path="$2" local fid local t_option local t_constant @@ -429,41 +469,44 @@ test_6_sub() { t_constant=$(convert_file_type constant "$(stat -c %F $path)") [[ -n "$t_constant" ]] || error "cannot get type constant of '$path'" - lipe_find_expect_fid $fid true "-type $t_option" - lipe_find_expect_fid $fid false "! -type $t_option" - lipe_find_expect_fid $fid true "-expr '== type $t_constant'" - lipe_find_expect_fid $fid true "-expr 'type == $t_constant'" - lipe_find_expect_fid $fid true \ + lipe_find_expect_fid $facet $fid true "-type $t_option" + lipe_find_expect_fid $facet $fid false "! -type $t_option" + lipe_find_expect_fid $facet $fid true "-expr '== type $t_constant'" + lipe_find_expect_fid $facet $fid true "-expr 'type == $t_constant'" + lipe_find_expect_fid $facet $fid true \ "-expr '(type == $t_constant) && fid_match(\\\"$fid\\\")'" - lipe_find_expect_fid $fid true \ + lipe_find_expect_fid $facet $fid true \ "-expr '(type==$t_constant) && fid_match(\\\"$fid\\\")'" - lipe_find_expect_fid $fid true \ + lipe_find_expect_fid $facet $fid true \ "-expr '(type != $t_constant) || fid_match(\\\"$fid\\\")'" - lipe_find_expect_fid $fid true "-name $name -type $t_option" - lipe_find_expect_fid $fid true "-name '*' -type $t_option" + lipe_find_expect_fid $facet $fid true "-name $name -type $t_option" + lipe_find_expect_fid $facet $fid true "-name '*' -type $t_option" } test_6() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" create_lipe_find_files $tf echo -e "\nTest $td" - test_6_sub $td + test_6_sub $facet $td for file in $(ls $td); do echo -e "\nTest $td/$file" - test_6_sub $td/$file + test_6_sub $facet $td/$file done } run_test 6 "lipe_find -type works" test_7_sub() { - local path="$1" + local facet="$1" + local path="$2" local fid local pool @@ -473,43 +516,50 @@ test_7_sub() { pool=$($LFS getstripe -p "$path" | head -1) if [[ -z "$pool" ]]; then - lipe_find_expect_fid $fid false "-pool '*'" - lipe_find_expect_fid $fid false "-pool-regex '.*'" + lipe_find_expect_fid $facet $fid false "-pool '*'" + lipe_find_expect_fid $facet $fid false "-pool-regex '.*'" return fi - lipe_find_expect_fid $fid true "-pool '*'" - lipe_find_expect_fid $fid true "-pool-regex '.*'" - lipe_find_expect_fid $fid true "-pool $pool" - lipe_find_expect_fid $fid true "-pool-regex $pool" - lipe_find_expect_fid $fid false "-pool ${pool}x" - lipe_find_expect_fid $fid false "-pool-regex ${pool}x" - lipe_find_expect_fid $fid false "-pool x$pool" - lipe_find_expect_fid $fid false "-pool-regex x$pool" - lipe_find_expect_fid $fid true "-expr 'pool_match(\\\"$pool\\\")'" - lipe_find_expect_fid $fid true "-expr 'pool_reg(\\\"$pool\\\")'" + lipe_find_expect_fid $facet $fid true "-pool '*'" + lipe_find_expect_fid $facet $fid true "-pool-regex '.*'" + lipe_find_expect_fid $facet $fid true "-pool $pool" + lipe_find_expect_fid $facet $fid true "-pool-regex $pool" + lipe_find_expect_fid $facet $fid false "-pool ${pool}x" + lipe_find_expect_fid $facet $fid false "-pool-regex ${pool}x" + lipe_find_expect_fid $facet $fid false "-pool x$pool" + lipe_find_expect_fid $facet $fid false "-pool-regex x$pool" + lipe_find_expect_fid $facet $fid true "-expr 'pool_reg(\\\"$pool\\\")'" + lipe_find_expect_fid $facet $fid true \ + "-expr 'pool_match(\\\"$pool\\\")'" } test_7() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" + # create OST pools + create_ost_pools + + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" create_regular_files --with-pool $tf echo -e "\nTest $td" - test_7_sub $td + test_7_sub $facet $td for file in $(ls $td); do echo -e "\nTest $td/$file" - test_7_sub $td/$file + test_7_sub $facet $td/$file done } run_test 7 "lipe_find -pool works" test_8_sub() { - local file="$1" + local facet="$1" + local file="$2" local type local count local size @@ -520,13 +570,14 @@ test_8_sub() { if [[ $type != S_IFREG && $type != S_IFDIR ]] || [[ "$($LFS getstripe -c $file)" =~ "no stripe info" ]]; then - lipe_find_expect_file $file false "-stripe-count 1" - lipe_find_expect_file $file false "! -stripe-count 1" - lipe_find_expect_file $file false "-stripe-count +1" - - lipe_find_expect_file $file false "-stripe-size 1048576" - lipe_find_expect_file $file false "! -stripe-size 1048576" - lipe_find_expect_file $file false "-stripe-size +1" + lipe_find_expect_file $facet $file false "-stripe-count 1" + lipe_find_expect_file $facet $file false "! -stripe-count 1" + lipe_find_expect_file $facet $file false "-stripe-count +1" + + lipe_find_expect_file $facet $file false "-stripe-size +1" + lipe_find_expect_file $facet $file false "-stripe-size 1048576" + lipe_find_expect_file $facet $file false \ + "! -stripe-size 1048576" return fi @@ -538,47 +589,57 @@ test_8_sub() { max_stripe_size=$(lipe_find_max_stripe_size $file) - lipe_find_expect_file $file true "-stripe-count $count" - lipe_find_expect_file $file false "! -stripe-count $count" - lipe_find_expect_file $file false "-stripe-count +2000" - lipe_find_expect_file $file true "-expr 'stripe_count == $count'" - lipe_find_expect_file $file false "-expr 'stripe_count != $count'" - lipe_find_expect_file $file true "-expr 'stripe_count >= $count'" - lipe_find_expect_file $file true "-expr 'stripe_count <= $count'" + lipe_find_expect_file $facet $file true "-stripe-count $count" + lipe_find_expect_file $facet $file false "! -stripe-count $count" + lipe_find_expect_file $facet $file false "-stripe-count +2000" + lipe_find_expect_file $facet $file true "-expr 'stripe_count == $count'" + lipe_find_expect_file $facet $file false \ + "-expr 'stripe_count != $count'" + lipe_find_expect_file $facet $file true "-expr 'stripe_count >= $count'" + lipe_find_expect_file $facet $file true "-expr 'stripe_count <= $count'" - lipe_find_expect_file $file false "-stripe-size $((size - 1))" - lipe_find_expect_file $file false "-stripe-size $((size + 1))" - lipe_find_expect_file $file false "-stripe-size +$max_stripe_size" + lipe_find_expect_file $facet $file false "-stripe-size $((size - 1))" + lipe_find_expect_file $facet $file false "-stripe-size $((size + 1))" + lipe_find_expect_file $facet $file false \ + "-stripe-size +$max_stripe_size" if [[ $type != S_IFDIR ]]; then - lipe_find_expect_file $file true "-expr 'stripe_size == $size'" - lipe_find_expect_file $file false "-expr 'stripe_size != $size'" - lipe_find_expect_file $file true "-expr 'stripe_size >= $size'" - lipe_find_expect_file $file true "-expr 'stripe_size <= $size'" + lipe_find_expect_file $facet $file true \ + "-expr 'stripe_size == $size'" + lipe_find_expect_file $facet $file false \ + "-expr 'stripe_size != $size'" + lipe_find_expect_file $facet $file true \ + "-expr 'stripe_size >= $size'" + lipe_find_expect_file $facet $file true \ + "-expr 'stripe_size <= $size'" fi } test_8() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" - $LFS setstripe -c 1 $td || error "$LFS setstripe -c 1 $td failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" + $LFS setstripe -c 1 $td || + error "$LFS setstripe -c 1 $td failed" create_lipe_find_files $tf echo -e "\nTest $td" - test_8_sub $td + test_8_sub $facet $td for file in $(ls $td); do echo -e "\nTest $td/$file" - test_8_sub $td/$file + test_8_sub $facet $td/$file done } run_test 8 "lipe_find -stripe-count and -stripe-size work" test_9_sub() { - local file="$1" + local facet="$1" + local file="$2" local type local idx @@ -587,11 +648,11 @@ test_9_sub() { if [[ $type != S_IFREG && $type != S_IFDIR ]] || [[ "$($LFS getstripe -i $file)" =~ "no stripe info" ]]; then - lipe_find_expect_file $file false "-ost 0" - lipe_find_expect_file $file false "! -ost 0" + lipe_find_expect_file $facet $file false "-ost 0" + lipe_find_expect_file $facet $file false "! -ost 0" - lipe_find_expect_file $file false "-stripe-index 0" - lipe_find_expect_file $file false "! -stripe-index 0" + lipe_find_expect_file $facet $file false "-stripe-index 0" + lipe_find_expect_file $facet $file false "! -stripe-index 0" return fi @@ -599,27 +660,31 @@ test_9_sub() { [[ -n "$idx" ]] || error "cannot get stripe index of '$file'" if [[ $type = S_IFDIR || "$($LFS getstripe -L $file)" == "mdt" ]]; then - lipe_find_expect_file $file false "-ost $idx" - lipe_find_expect_file $file true "! -ost $idx" - lipe_find_expect_file $file false "-ost $((idx + 1))" - lipe_find_expect_file $file true "! -ost $((idx + 1))" - - lipe_find_expect_file $file false "-stripe-index $idx" - lipe_find_expect_file $file true "! -stripe-index $idx" - lipe_find_expect_file $file false "-stripe-index $((idx + 1))" - lipe_find_expect_file $file true "! -stripe-index $((idx + 1))" + lipe_find_expect_file $facet $file false "-ost $idx" + lipe_find_expect_file $facet $file true "! -ost $idx" + lipe_find_expect_file $facet $file false "-ost $((idx + 1))" + lipe_find_expect_file $facet $file true "! -ost $((idx + 1))" + + lipe_find_expect_file $facet $file false "-stripe-index $idx" + lipe_find_expect_file $facet $file true "! -stripe-index $idx" + lipe_find_expect_file $facet $file false \ + "-stripe-index $((idx + 1))" + lipe_find_expect_file $facet $file true \ + "! -stripe-index $((idx + 1))" elif [[ $type = S_IFREG ]]; then - lipe_find_expect_file $file true "-ost $idx" - lipe_find_expect_file $file true "-expr 'ost($idx)'" - lipe_find_expect_file $file false "! -ost $idx" - lipe_find_expect_file $file false "-ost $((idx + OSTCOUNT))" - lipe_find_expect_file $file true "! -ost $((idx + OSTCOUNT))" - - lipe_find_expect_file $file true "-stripe-index $idx" - lipe_find_expect_file $file false "! -stripe-index $idx" - lipe_find_expect_file $file false \ + lipe_find_expect_file $facet $file true "-ost $idx" + lipe_find_expect_file $facet $file true "-expr 'ost($idx)'" + lipe_find_expect_file $facet $file false "! -ost $idx" + lipe_find_expect_file $facet $file false \ + "-ost $((idx + OSTCOUNT))" + lipe_find_expect_file $facet $file true \ + "! -ost $((idx + OSTCOUNT))" + + lipe_find_expect_file $facet $file true "-stripe-index $idx" + lipe_find_expect_file $facet $file false "! -stripe-index $idx" + lipe_find_expect_file $facet $file false \ "-stripe-index $((idx + OSTCOUNT))" - lipe_find_expect_file $file true \ + lipe_find_expect_file $facet $file true \ "! -stripe-index $((idx + OSTCOUNT))" fi } @@ -627,24 +692,28 @@ test_9_sub() { test_9() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" - $LFS setstripe -i 0 $td || error "$LFS setstripe -i 0 $td failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" + $LFS setstripe -i 0 $td || + error "$LFS setstripe -i 0 $td failed" create_lipe_find_files $tf echo -e "\nTest $td" - test_9_sub $td + test_9_sub $facet $td for file in $(ls $td); do echo -e "\nTest $td/$file" - test_9_sub $td/$file + test_9_sub $facet $td/$file done } run_test 9 "lipe_find -ost and -stripe-index work" test_10_sub() { - local file="$1" + local facet="$1" + local file="$2" local type local count @@ -654,15 +723,15 @@ test_10_sub() { if [[ $type != S_IFREG && $type != S_IFDIR ]] || [[ "$($LFS getstripe --comp-count $file)" =~ "no stripe info" ]] then - lipe_find_expect_file $file false "-comp-count 0" - lipe_find_expect_file $file false "! -comp-count 0" - lipe_find_expect_file $file false "-comp-count +1" - lipe_find_expect_file $file false "-comp-count -1" - - lipe_find_expect_file $file false "-component-count 0" - lipe_find_expect_file $file false "! -component-count 0" - lipe_find_expect_file $file false "-component-count +1" - lipe_find_expect_file $file false "-component-count -1" + lipe_find_expect_file $facet $file false "-comp-count 0" + lipe_find_expect_file $facet $file false "! -comp-count 0" + lipe_find_expect_file $facet $file false "-comp-count +1" + lipe_find_expect_file $facet $file false "-comp-count -1" + + lipe_find_expect_file $facet $file false "-component-count 0" + lipe_find_expect_file $facet $file false "! -component-count 0" + lipe_find_expect_file $facet $file false "-component-count +1" + lipe_find_expect_file $facet $file false "-component-count -1" return fi @@ -670,41 +739,47 @@ test_10_sub() { [[ -n "$count" ]] || error "cannot get component count of '$file'" (( count != 0 )) || return 0 - lipe_find_expect_file $file true "-comp-count $count" - lipe_find_expect_file $file false "! -comp-count $count" - lipe_find_expect_file $file false "-comp-count +$count" - lipe_find_expect_file $file false "-comp-count -$count" - lipe_find_expect_file $file true "-comp-count -$((count + 1))" - - lipe_find_expect_file $file true "-expr 'comp_count == $count'" - lipe_find_expect_file $file false "-expr 'comp_count != $count'" - lipe_find_expect_file $file true "-expr 'comp_count >= $count'" - lipe_find_expect_file $file true "-expr 'comp_count <= $count'" - - lipe_find_expect_file $file true "-component-count $count" - lipe_find_expect_file $file false "! -component-count $count" - lipe_find_expect_file $file false "-component-count $((count + 1))" - lipe_find_expect_file $file true "! -component-count $((count + 1))" - lipe_find_expect_file $file true "-component-count +$((count - 1))" + lipe_find_expect_file $facet $file true "-comp-count $count" + lipe_find_expect_file $facet $file false "! -comp-count $count" + lipe_find_expect_file $facet $file false "-comp-count +$count" + lipe_find_expect_file $facet $file false "-comp-count -$count" + lipe_find_expect_file $facet $file true "-comp-count -$((count + 1))" + + lipe_find_expect_file $facet $file true "-expr 'comp_count == $count'" + lipe_find_expect_file $facet $file false "-expr 'comp_count != $count'" + lipe_find_expect_file $facet $file true "-expr 'comp_count >= $count'" + lipe_find_expect_file $facet $file true "-expr 'comp_count <= $count'" + + lipe_find_expect_file $facet $file true "-component-count $count" + lipe_find_expect_file $facet $file false "! -component-count $count" + lipe_find_expect_file $facet $file false \ + "-component-count $((count + 1))" + lipe_find_expect_file $facet $file true \ + "! -component-count $((count + 1))" + lipe_find_expect_file $facet $file true \ + "-component-count +$((count - 1))" } test_10() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" create_lipe_find_files $tf for file in $(ls $td); do echo -e "\nTest $td/$file" - test_10_sub $td/$file + test_10_sub $facet $td/$file done } run_test 10 "lipe_find -comp-count and -component-count work" test_11_sub() { - local file="$1" + local facet="$1" + local file="$2" local type local layout @@ -713,48 +788,52 @@ test_11_sub() { if [[ $type != S_IFREG || "$($LFS getstripe -L $file)" =~ "no stripe info" ]]; then - lipe_find_expect_file $file false "-layout raid0" - lipe_find_expect_file $file false "-layout mdt" - lipe_find_expect_file $file false "-layout released" + lipe_find_expect_file $facet $file false "-layout raid0" + lipe_find_expect_file $facet $file false "-layout mdt" + lipe_find_expect_file $facet $file false "-layout released" - lipe_find_expect_file $file false "! -layout raid0" - lipe_find_expect_file $file false "! -layout mdt" - lipe_find_expect_file $file false "! -layout released" + lipe_find_expect_file $facet $file false "! -layout raid0" + lipe_find_expect_file $facet $file false "! -layout mdt" + lipe_find_expect_file $facet $file false "! -layout released" return fi layout=$($LFS getstripe -L $file) [[ -n "$layout" ]] || error "cannot get file layout of '$file'" - lipe_find_expect_file $file false "-layout released" - lipe_find_expect_file $file true "! -layout released" - lipe_find_expect_file $file true "-layout $layout" - lipe_find_expect_file $file false "! -layout $layout" - lipe_find_expect_file $file true "-layout $layout,$layout" - lipe_find_expect_file $file false "-layout $layout,released" - lipe_find_expect_file $file false "-layout raid0,mdt,released" - lipe_find_expect_file $file true "-expr 'layout(\\\"$layout\\\")'" - lipe_find_expect_file $file false \ + lipe_find_expect_file $facet $file false "-layout released" + lipe_find_expect_file $facet $file true "! -layout released" + lipe_find_expect_file $facet $file true "-layout $layout" + lipe_find_expect_file $facet $file false "! -layout $layout" + lipe_find_expect_file $facet $file true "-layout $layout,$layout" + lipe_find_expect_file $facet $file false "-layout $layout,released" + lipe_find_expect_file $facet $file false "-layout raid0,mdt,released" + lipe_find_expect_file $facet $file true \ + "-expr 'layout(\\\"$layout\\\")'" + lipe_find_expect_file $facet $file false \ "-expr 'layout(\\\"mdt,raid0,released\\\")'" } test_11() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" create_lipe_find_files $tf for file in $(ls $td); do echo -e "\nTest $td/$file" - test_11_sub $td/$file + test_11_sub $facet $td/$file done } run_test 11 "lipe_find -layout works" test_12_sub() { - local file="$1" + local facet="$1" + local file="$2" local uid local user @@ -764,59 +843,64 @@ test_12_sub() { user=$(stat -c %U $file) [[ -n "$user" ]] || error "cannot get user name of owner for '$file'" - lipe_find_expect_file $file true "-uid $uid" - lipe_find_expect_file $file true "! ! -uid $uid" - lipe_find_expect_file $file false "! -uid $uid" - lipe_find_expect_file $file false "! -uid $((uid + 1)) ! -uid $uid" - lipe_find_expect_file $file true "-expr 'uid == $uid'" - lipe_find_expect_file $file false "-expr 'uid != $uid'" - lipe_find_expect_file $file true \ + lipe_find_expect_file $facet $file true "-uid $uid" + lipe_find_expect_file $facet $file true "! ! -uid $uid" + lipe_find_expect_file $facet $file false "! -uid $uid" + lipe_find_expect_file $facet $file false \ + "! -uid $((uid + 1)) ! -uid $uid" + lipe_find_expect_file $facet $file true "-expr 'uid == $uid'" + lipe_find_expect_file $facet $file false "-expr 'uid != $uid'" + lipe_find_expect_file $facet $file true \ "-expr 'uid == user2id(\\\"$user\\\")'" - lipe_find_expect_file $file true "-user $uid" - lipe_find_expect_file $file true "! ! -user $uid" - lipe_find_expect_file $file false "! -user $uid" - lipe_find_expect_file $file false "! -user $((uid + 1)) ! -user $uid" - lipe_find_expect_file $file true "-expr 'user(\\\"$uid\\\")'" - - lipe_find_expect_file $file true "-user $user" - lipe_find_expect_file $file true "! ! -user $user" - lipe_find_expect_file $file false "! -user $user" - lipe_find_expect_file $file false "! -user bin ! -user $user" - lipe_find_expect_file $file false "-nouser" - lipe_find_expect_file $file false "-expr nouser" - lipe_find_expect_file $file true "-expr 'user(\\\"$user\\\")'" + lipe_find_expect_file $facet $file true "-user $uid" + lipe_find_expect_file $facet $file true "! ! -user $uid" + lipe_find_expect_file $facet $file false "! -user $uid" + lipe_find_expect_file $facet $file false \ + "! -user $((uid + 1)) ! -user $uid" + lipe_find_expect_file $facet $file true "-expr 'user(\\\"$uid\\\")'" + + lipe_find_expect_file $facet $file true "-user $user" + lipe_find_expect_file $facet $file true "! ! -user $user" + lipe_find_expect_file $facet $file false "! -user $user" + lipe_find_expect_file $facet $file false "! -user bin ! -user $user" + lipe_find_expect_file $facet $file false "-nouser" + lipe_find_expect_file $facet $file false "-expr nouser" + lipe_find_expect_file $facet $file true "-expr 'user(\\\"$user\\\")'" [[ $uid != $RUNAS_ID ]] || return 0 chown $RUNAS_ID $file || return 0 - lipe_find_expect_file $file false "-uid $uid" - lipe_find_expect_file $file true "! -uid $uid" - lipe_find_expect_file $file true "-uid $RUNAS_ID" - lipe_find_expect_file $file false "! -uid $RUNAS_ID" + lipe_find_expect_file $facet $file false "-uid $uid" + lipe_find_expect_file $facet $file true "! -uid $uid" + lipe_find_expect_file $facet $file true "-uid $RUNAS_ID" + lipe_find_expect_file $facet $file false "! -uid $RUNAS_ID" } test_12() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" create_lipe_find_files $tf echo -e "\nTest $td" - test_12_sub $td + test_12_sub $facet $td for file in $(ls $td); do echo -e "\nTest $td/$file" - test_12_sub $td/$file + test_12_sub $facet $td/$file done } run_test 12 "lipe_find -uid, -user and -nouser work" test_13_sub() { - local file="$1" + local facet="$1" + local file="$2" local gid local group @@ -826,59 +910,64 @@ test_13_sub() { group=$(stat -c %G $file) [[ -n "$group" ]] || error "cannot get group name of owner for '$file'" - lipe_find_expect_file $file true "-gid $gid" - lipe_find_expect_file $file true "! ! -gid $gid" - lipe_find_expect_file $file false "! -gid $gid" - lipe_find_expect_file $file false "! -gid $((gid + 1)) ! -gid $gid" - lipe_find_expect_file $file true "-expr 'gid == $gid'" - lipe_find_expect_file $file false "-expr 'gid != $gid'" - lipe_find_expect_file $file true \ + lipe_find_expect_file $facet $file true "-gid $gid" + lipe_find_expect_file $facet $file true "! ! -gid $gid" + lipe_find_expect_file $facet $file false "! -gid $gid" + lipe_find_expect_file $facet $file false \ + "! -gid $((gid + 1)) ! -gid $gid" + lipe_find_expect_file $facet $file true "-expr 'gid == $gid'" + lipe_find_expect_file $facet $file false "-expr 'gid != $gid'" + lipe_find_expect_file $facet $file true \ "-expr 'gid == group2id(\\\"$group\\\")'" - lipe_find_expect_file $file true "-group $gid" - lipe_find_expect_file $file true "! ! -group $gid" - lipe_find_expect_file $file false "! -group $gid" - lipe_find_expect_file $file false "! -group $((gid + 1)) ! -group $gid" - lipe_find_expect_file $file true "-expr 'group(\\\"$gid\\\")'" - - lipe_find_expect_file $file true "-group $group" - lipe_find_expect_file $file true "! ! -group $group" - lipe_find_expect_file $file false "! -group $group" - lipe_find_expect_file $file false "! -group bin ! -group $group" - lipe_find_expect_file $file false "-nogroup" - lipe_find_expect_file $file false "-expr nogroup" - lipe_find_expect_file $file true "-expr 'group(\\\"$group\\\")'" + lipe_find_expect_file $facet $file true "-group $gid" + lipe_find_expect_file $facet $file true "! ! -group $gid" + lipe_find_expect_file $facet $file false "! -group $gid" + lipe_find_expect_file $facet $file false \ + "! -group $((gid + 1)) ! -group $gid" + lipe_find_expect_file $facet $file true "-expr 'group(\\\"$gid\\\")'" + + lipe_find_expect_file $facet $file true "-group $group" + lipe_find_expect_file $facet $file true "! ! -group $group" + lipe_find_expect_file $facet $file false "! -group $group" + lipe_find_expect_file $facet $file false "! -group bin ! -group $group" + lipe_find_expect_file $facet $file false "-nogroup" + lipe_find_expect_file $facet $file false "-expr nogroup" + lipe_find_expect_file $facet $file true "-expr 'group(\\\"$group\\\")'" [[ $gid != $RUNAS_GID ]] || return 0 chown :$RUNAS_GID $file || return 0 - lipe_find_expect_file $file false "-gid $gid" - lipe_find_expect_file $file true "! -gid $gid" - lipe_find_expect_file $file true "-gid $RUNAS_GID" - lipe_find_expect_file $file false "! -gid $RUNAS_GID" + lipe_find_expect_file $facet $file false "-gid $gid" + lipe_find_expect_file $facet $file true "! -gid $gid" + lipe_find_expect_file $facet $file true "-gid $RUNAS_GID" + lipe_find_expect_file $facet $file false "! -gid $RUNAS_GID" } test_13() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" create_lipe_find_files $tf echo -e "\nTest $td" - test_13_sub $td + test_13_sub $facet $td for file in $(ls $td); do echo -e "\nTest $td/$file" - test_13_sub $td/$file + test_13_sub $facet $td/$file done } run_test 13 "lipe_find -gid, -group and -nogroup work" test_14_sub() { - local file="$1" + local facet="$1" + local file="$2" local uid local gid local xtime @@ -891,254 +980,274 @@ test_14_sub() { [[ -n "$gid" ]] || error "cannot get group ID of owner for '$file'" for xtime in atime ctime mtime; do - lipe_find_expect_file $file true "-$xtime 0" - lipe_find_expect_file $file false "! -$xtime 0" - lipe_find_expect_file $file false "-$xtime +0" - lipe_find_expect_file $file true "! -$xtime +0" - lipe_find_expect_file $file false "-$xtime -0" - lipe_find_expect_file $file true "! -$xtime -0" - lipe_find_expect_file $file true "-$xtime -1" - lipe_find_expect_file $file false "! -$xtime -1" - lipe_find_expect_file $file true "-expr '$xtime > 0'" - lipe_find_expect_file $file false "-expr '$xtime < 0'" + lipe_find_expect_file $facet $file true "-$xtime 0" + lipe_find_expect_file $facet $file false "! -$xtime 0" + lipe_find_expect_file $facet $file false "-$xtime +0" + lipe_find_expect_file $facet $file true "! -$xtime +0" + lipe_find_expect_file $facet $file false "-$xtime -0" + lipe_find_expect_file $facet $file true "! -$xtime -0" + lipe_find_expect_file $facet $file true "-$xtime -1" + lipe_find_expect_file $facet $file false "! -$xtime -1" + lipe_find_expect_file $facet $file true "-expr '$xtime > 0'" + lipe_find_expect_file $facet $file false "-expr '$xtime < 0'" expr_cmd="-expr '($xtime > (sys_time - 1 * days) ||" expr_cmd+=" uid == $((uid + 100))) && gid == $gid'" - lipe_find_expect_file $file true "$expr_cmd" + lipe_find_expect_file $facet $file true "$expr_cmd" done } test_14() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" create_lipe_find_files $tf echo -e "\nTest $td" - test_14_sub $td + test_14_sub $facet $td for file in $(ls $td); do echo -e "\nTest $td/$file" - test_14_sub $td/$file + test_14_sub $facet $td/$file done } run_test 14 "lipe_find -atime, -ctime and -mtime work" test_15_sub() { - local file="$1" + local facet="$1" + local file="$2" local xmin for xmin in amin cmin mmin; do - lipe_find_expect_file $file false "-$xmin +600" - lipe_find_expect_file $file true "! -$xmin +600" - lipe_find_expect_file $file false "-$xmin -0" - lipe_find_expect_file $file true "! -$xmin -0" - lipe_find_expect_file $file true "-$xmin -600" - lipe_find_expect_file $file false "! -$xmin -600" + lipe_find_expect_file $facet $file false "-$xmin +600" + lipe_find_expect_file $facet $file true "! -$xmin +600" + lipe_find_expect_file $facet $file false "-$xmin -0" + lipe_find_expect_file $facet $file true "! -$xmin -0" + lipe_find_expect_file $facet $file true "-$xmin -600" + lipe_find_expect_file $facet $file false "! -$xmin -600" done } test_15() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" create_lipe_find_files $tf echo -e "\nTest $td" - test_15_sub $td + test_15_sub $facet $td for file in $(ls $td); do echo -e "\nTest $td/$file" - test_15_sub $td/$file + test_15_sub $facet $td/$file done } run_test 15 "lipe_find -amin, -cmin and -mmin work" test_16_sub() { - local file="$1" + local facet="$1" + local file="$2" - lipe_find_expect_file $file false "-used +0" - lipe_find_expect_file $file false "-used 1" - lipe_find_expect_file $file true "-used -1" - lipe_find_expect_file $file false "-used +1" + lipe_find_expect_file $facet $file false "-used +0" + lipe_find_expect_file $facet $file false "-used 1" + lipe_find_expect_file $facet $file true "-used -1" + lipe_find_expect_file $facet $file false "-used +1" } test_16() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" create_lipe_find_files $tf echo -e "\nTest $td" - test_16_sub $td + test_16_sub $facet $td for file in $(ls $td); do echo -e "\nTest $td/$file" - test_16_sub $td/$file + test_16_sub $facet $td/$file done } run_test 16 "lipe_find -used works" test_17_sub() { - local file="$1" + local facet="$1" + local file="$2" local type type=$(convert_file_type constant "$(stat -c %F $file)") [[ -n "$type" ]] || error "cannot get type of '$file'" if [[ $type != S_IFREG && $type != S_IFDIR ]]; then - lipe_find_expect_file $file false "-empty" - lipe_find_expect_file $file true "! -empty" + lipe_find_expect_file $facet $file false "-empty" + lipe_find_expect_file $facet $file true "! -empty" return fi if [[ $type = S_IFDIR ]]; then if [[ -z "$(ls $file)" ]]; then - lipe_find_expect_file $file true "-empty" - lipe_find_expect_file $file false "! -empty" + lipe_find_expect_file $facet $file true "-empty" + lipe_find_expect_file $facet $file false "! -empty" else - lipe_find_expect_file $file false "-empty" - lipe_find_expect_file $file true "! -empty" + lipe_find_expect_file $facet $file false "-empty" + lipe_find_expect_file $facet $file true "! -empty" fi return fi # S_IFREG if (( $(stat -c %s $file) == 0 )); then - lipe_find_expect_file $file true "-empty" - lipe_find_expect_file $file false "! -empty" + lipe_find_expect_file $facet $file true "-empty" + lipe_find_expect_file $facet $file false "! -empty" echo foo > $file || error "echo foo > $file failed" sync; sleep 5; sync fi - lipe_find_expect_file $file false "-empty" - lipe_find_expect_file $file true "! -empty" - lipe_find_expect_file $file false "-expr empty" + lipe_find_expect_file $facet $file false "-empty" + lipe_find_expect_file $facet $file true "! -empty" + lipe_find_expect_file $facet $file false "-expr empty" } test_17() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" - mkdir $td-1 || error "mkdir $td-1 failed" - create_lipe_find_files $tf - local saved_LIPE_FIND_USE_MOUNT=$LIPE_FIND_USE_MOUNT LIPE_FIND_USE_MOUNT=true stack_trap "LIPE_FIND_USE_MOUNT=$saved_LIPE_FIND_USE_MOUNT" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" + mkdir_on_mdt -i $index $td-1 || error "$LFS mkdir '$td-1' failed" + + create_lipe_find_files $tf + echo -e "\nTest $td" - test_17_sub $td + test_17_sub $facet $td echo -e "\nTest $td-1" - test_17_sub $td-1 + test_17_sub $facet $td-1 for file in $(ls $td); do echo -e "\nTest $td/$file" - test_17_sub $td/$file + test_17_sub $facet $td/$file done } run_test 17 "lipe_find -empty works" test_18_sub() { - local file="$1" + local facet="$1" + local file="$2" local type type=$(convert_file_type constant "$(stat -c %F $file)") [[ -n "$type" ]] || error "cannot get type of '$file'" if [[ $type != S_IFDIR ]]; then - lipe_find_expect_file $file true "-entries 0" - lipe_find_expect_file $file false "! -entries 0" - lipe_find_expect_file $file true "-expr 'entries == 0'" - lipe_find_expect_file $file false "-expr 'entries != 0'" + lipe_find_expect_file $facet $file true "-entries 0" + lipe_find_expect_file $facet $file false "! -entries 0" + lipe_find_expect_file $facet $file true "-expr 'entries == 0'" + lipe_find_expect_file $facet $file false "-expr 'entries != 0'" return fi if [[ -z "$(ls $file)" ]]; then - lipe_find_expect_file $file true "-entries 0" - lipe_find_expect_file $file false "! -entries 0" - lipe_find_expect_file $file false "-entries +0" - lipe_find_expect_file $file true "! -entries +0" - lipe_find_expect_file $file false "-entries -0" - lipe_find_expect_file $file true "! -entries -0" + lipe_find_expect_file $facet $file true "-entries 0" + lipe_find_expect_file $facet $file false "! -entries 0" + lipe_find_expect_file $facet $file false "-entries +0" + lipe_find_expect_file $facet $file true "! -entries +0" + lipe_find_expect_file $facet $file false "-entries -0" + lipe_find_expect_file $facet $file true "! -entries -0" else - lipe_find_expect_file $file false "-entries 0" - lipe_find_expect_file $file true "! -entries 0" - lipe_find_expect_file $file true "-entries +0" - lipe_find_expect_file $file false "! -entries +0" - lipe_find_expect_file $file false "-entries -0" - lipe_find_expect_file $file true "! -entries -0" + lipe_find_expect_file $facet $file false "-entries 0" + lipe_find_expect_file $facet $file true "! -entries 0" + lipe_find_expect_file $facet $file true "-entries +0" + lipe_find_expect_file $facet $file false "! -entries +0" + lipe_find_expect_file $facet $file false "-entries -0" + lipe_find_expect_file $facet $file true "! -entries -0" fi } test_18() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" - mkdir $td-1 || error "mkdir $td-1 failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" + mkdir_on_mdt -i $index $td-1 || error "$LFS mkdir '$td-1' failed" + create_lipe_find_files $tf echo -e "\nTest $td" - test_18_sub $td + test_18_sub $facet $td echo -e "\nTest $td-1" - test_18_sub $td-1 + test_18_sub $facet $td-1 for file in $(ls $td); do echo -e "\nTest $td/$file" - test_18_sub $td/$file + test_18_sub $facet $td/$file done } run_test 18 "lipe_find -entries works" test_19_sub() { - local file="$1" + local facet="$1" + local file="$2" local nlink nlink=$(stat -c %h $file) [[ -n "$nlink" ]] || error "cannot get number of hard links for '$file'" - lipe_find_expect_file $file true "-links $nlink" - lipe_find_expect_file $file false "! -links $nlink" - lipe_find_expect_file $file false "-links $((nlink + 1))" - lipe_find_expect_file $file false "-links $((nlink - 1))" - lipe_find_expect_file $file true "-expr 'nlink == $nlink'" - lipe_find_expect_file $file false "-expr 'nlink != $nlink'" - lipe_find_expect_file $file true "-expr 'nlink >= $nlink'" - lipe_find_expect_file $file true "-expr 'nlink <= $nlink'" + lipe_find_expect_file $facet $file true "-links $nlink" + lipe_find_expect_file $facet $file false "! -links $nlink" + lipe_find_expect_file $facet $file false "-links $((nlink + 1))" + lipe_find_expect_file $facet $file false "-links $((nlink - 1))" + lipe_find_expect_file $facet $file true "-expr 'nlink == $nlink'" + lipe_find_expect_file $facet $file false "-expr 'nlink != $nlink'" + lipe_find_expect_file $facet $file true "-expr 'nlink >= $nlink'" + lipe_find_expect_file $facet $file true "-expr 'nlink <= $nlink'" } test_19() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" create_lipe_find_files $tf echo -e "\nTest $td" - test_19_sub $td + test_19_sub $facet $td for file in $(ls $td); do echo -e "\nTest $td/$file" - test_19_sub $td/$file + test_19_sub $facet $td/$file done } run_test 19 "lipe_find -links works" test_20_sub() { - local file="$1" + local facet="$1" + local file="$2" local type local cmd @@ -1151,17 +1260,19 @@ test_20_sub() { echo $cmd $cmd || error "setfattr $file failed" - lipe_find_expect_file $file true "-xattr 'user.xattr_name=*'" - lipe_find_expect_file $file true "-xattr '*=xattr_value'" - lipe_find_expect_file $file true "-xattr 'user.xattr_name=xattr_value'" - lipe_find_expect_file $file true "-xattr 'user.xattr_name*=xattr_value'" - lipe_find_expect_file $file true "-xattr 'user.*=xattr_value'" - lipe_find_expect_file $file true "-xattr 'user.*=*_value'" - lipe_find_expect_file $file true "-xattr '*=*'" - lipe_find_expect_file $file true "-xattr 'trusted.lma=*'" - lipe_find_expect_file $file false "-xattr 'invalid_name=*'" - lipe_find_expect_file $file false "-xattr '*=invalid_value'" - lipe_find_expect_file $file true "-expr \ + lipe_find_expect_file $facet $file true "-xattr 'user.xattr_name=*'" + lipe_find_expect_file $facet $file true "-xattr '*=xattr_value'" + lipe_find_expect_file $facet $file true \ + "-xattr 'user.xattr_name=xattr_value'" + lipe_find_expect_file $facet $file true \ + "-xattr 'user.xattr_name*=xattr_value'" + lipe_find_expect_file $facet $file true "-xattr 'user.*=xattr_value'" + lipe_find_expect_file $facet $file true "-xattr 'user.*=*_value'" + lipe_find_expect_file $facet $file true "-xattr '*=*'" + lipe_find_expect_file $facet $file true "-xattr 'trusted.lma=*'" + lipe_find_expect_file $facet $file false "-xattr 'invalid_name=*'" + lipe_find_expect_file $facet $file false "-xattr '*=invalid_value'" + lipe_find_expect_file $facet $file true "-expr \ 'xattr_match(\\\"user.xattr_name\\\", \\\"xattr_value\\\")'" } @@ -1170,99 +1281,108 @@ test_20() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" create_lipe_find_files $tf echo -e "\nTest $td" - test_20_sub $td + test_20_sub $facet $td for file in $(ls $td); do echo -e "\nTest $td/$file" - test_20_sub $td/$file + test_20_sub $facet $td/$file done } run_test 20 "lipe_find -xattr works" test_21_sub() { - local file="$1" + local facet="$1" + local file="$2" local perm perm=$(stat -c %a $file) [[ -n "$perm" ]] || error "cannot get access rights for '$file'" - lipe_find_expect_file $file true "-perm -0" - lipe_find_expect_file $file true "-perm /0" + lipe_find_expect_file $facet $file true "-perm -0" + lipe_find_expect_file $facet $file true "-perm /0" - lipe_find_expect_file $file true "-perm $perm" - lipe_find_expect_file $file true "-perm -$perm" - lipe_find_expect_file $file true "-perm /$perm" + lipe_find_expect_file $facet $file true "-perm $perm" + lipe_find_expect_file $facet $file true "-perm -$perm" + lipe_find_expect_file $facet $file true "-perm /$perm" chmod 666 $file || return 0 - lipe_find_expect_file $file false "-perm 777" - lipe_find_expect_file $file false "-perm -777" - lipe_find_expect_file $file true "-perm /777" + lipe_find_expect_file $facet $file false "-perm 777" + lipe_find_expect_file $facet $file false "-perm -777" + lipe_find_expect_file $facet $file true "-perm /777" - lipe_find_expect_file $file false "-expr 'perm_equal(444)'" - lipe_find_expect_file $file true "-expr 'perm_at_least(444)'" - lipe_find_expect_file $file true "-expr 'perm_any(444)'" + lipe_find_expect_file $facet $file false "-expr 'perm_equal(444)'" + lipe_find_expect_file $facet $file true "-expr 'perm_at_least(444)'" + lipe_find_expect_file $facet $file true "-expr 'perm_any(444)'" } test_21() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" create_lipe_find_files $tf echo -e "\nTest $td" - test_21_sub $td + test_21_sub $facet $td for file in $(ls $td); do echo -e "\nTest $td/$file" - test_21_sub $td/$file + test_21_sub $facet $td/$file done } run_test 21 "lipe_find -perm works" test_22_sub() { - local file="$1" - - lipe_find_expect_file $file true "-projid 0" - lipe_find_expect_file $file false "! -projid 0" - lipe_find_expect_file $file true "-expr 'projid == 0'" - lipe_find_expect_file $file true "-expr '== projid 0'" - lipe_find_expect_file $file false "-projid +0" - lipe_find_expect_file $file true "-projid -1" + local facet="$1" + local file="$2" + + lipe_find_expect_file $facet $file true "-projid 0" + lipe_find_expect_file $facet $file false "! -projid 0" + lipe_find_expect_file $facet $file true "-expr 'projid == 0'" + lipe_find_expect_file $facet $file true "-expr '== projid 0'" + lipe_find_expect_file $facet $file false "-projid +0" + lipe_find_expect_file $facet $file true "-projid -1" } test_22() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" - create_lipe_find_files $tf - local saved_LIPE_FIND_USE_MOUNT=$LIPE_FIND_USE_MOUNT LIPE_FIND_USE_MOUNT=true stack_trap "LIPE_FIND_USE_MOUNT=$saved_LIPE_FIND_USE_MOUNT" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" + create_lipe_find_files $tf + echo -e "\nTest $td" - test_22_sub $td + test_22_sub $facet $td for file in $(ls $td); do echo -e "\nTest $td/$file" - test_22_sub $td/$file + test_22_sub $facet $td/$file done } run_test 22 "lipe_find -projid works" test_23_sub() { - local file="$1" + local facet="$1" + local file="$2" local size local f_size local b_num @@ -1284,52 +1404,55 @@ test_23_sub() { for opt in size blocks; do [[ $opt = size ]] && size=$f_size || size=$b_size - lipe_find_expect_file $file true "-$opt ${size}c" - lipe_find_expect_file $file false "! -$opt ${size}c" - lipe_find_expect_file $file false "-$opt +${size}c" - lipe_find_expect_file $file false "-$opt -${size}c" + lipe_find_expect_file $facet $file true "-$opt ${size}c" + lipe_find_expect_file $facet $file false "! -$opt ${size}c" + lipe_find_expect_file $facet $file false "-$opt +${size}c" + lipe_find_expect_file $facet $file false "-$opt -${size}c" - lipe_find_expect_file $file false "-$opt $((size + 1))c" - lipe_find_expect_file $file true "! -$opt $((size + 1))c" - lipe_find_expect_file $file false "-$opt +$((size + 1))c" - lipe_find_expect_file $file true "-$opt -$((size + 1))c" + lipe_find_expect_file $facet $file false "-$opt $((size + 1))c" + lipe_find_expect_file $facet $file true "! -$opt $((size + 1))c" + lipe_find_expect_file $facet $file false "-$opt +$((size + 1))c" + lipe_find_expect_file $facet $file true "-$opt -$((size + 1))c" (( size != 0 )) || continue - lipe_find_expect_file $file true "-$opt $((size / 512))b" - lipe_find_expect_file $file true "-$opt $((size / 1024))" - lipe_find_expect_file $file true "-$opt $((size / 1048576))M" + lipe_find_expect_file $facet $file true "-$opt $((size / 512))b" + lipe_find_expect_file $facet $file true "-$opt $((size / 1024))" + lipe_find_expect_file $facet $file true \ + "-$opt $((size / 1048576))M" - lipe_find_expect_file $file true "-expr '$opt == $size'" - lipe_find_expect_file $file true "-expr '$opt >= $size'" - lipe_find_expect_file $file true "-expr '$opt <= $size'" - lipe_find_expect_file $file false "-expr '$opt != $size'" + lipe_find_expect_file $facet $file true "-expr '$opt == $size'" + lipe_find_expect_file $facet $file true "-expr '$opt >= $size'" + lipe_find_expect_file $facet $file true "-expr '$opt <= $size'" + lipe_find_expect_file $facet $file false "-expr '$opt != $size'" - lipe_find_expect_file $file false "-$opt $((size - 1))c" - lipe_find_expect_file $file true "! -$opt $((size - 1))c" - lipe_find_expect_file $file true "-$opt +$((size - 1))c" - lipe_find_expect_file $file false "-$opt -$((size - 1))c" + lipe_find_expect_file $facet $file false "-$opt $((size - 1))c" + lipe_find_expect_file $facet $file true "! -$opt $((size - 1))c" + lipe_find_expect_file $facet $file true "-$opt +$((size - 1))c" + lipe_find_expect_file $facet $file false "-$opt -$((size - 1))c" done } test_23() { local td=$DIR/$tdir local tf=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local file - mkdir $td || error "mkdir $td failed" - create_lipe_find_files $tf - local saved_LIPE_FIND_USE_MOUNT=$LIPE_FIND_USE_MOUNT LIPE_FIND_USE_MOUNT=true stack_trap "LIPE_FIND_USE_MOUNT=$saved_LIPE_FIND_USE_MOUNT" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" + create_lipe_find_files $tf + echo -e "\nTest $td" - test_23_sub $td + test_23_sub $facet $td for file in $(ls $td); do echo -e "\nTest $td/$file" - test_23_sub $td/$file + test_23_sub $facet $td/$file done } run_test 23 "lipe_find -size and -blocks work" @@ -1343,7 +1466,10 @@ do_lipe_scan2_facet() { } test_200() { - local file=$DIR/$tdir/$tfile + local td=$DIR/$tdir + local file=$td/$tfile + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) local fid local attrs local size1 @@ -1353,7 +1479,7 @@ test_200() { local flags1 local flags2 - mkdir -p $DIR/$tdir || error "mkdir $DIR/$tdir failed" + mkdir_on_mdt -i $index $td || error "$LFS mkdir '$td' failed" echo XXX > $file fid=$($LFS path2fid $file) @@ -1367,7 +1493,7 @@ test_200() { size1=$($LFS getsom -s $file) blocks1=$($LFS getsom -b $file) - attrs=$(do_lipe_scan2_facet mds1 --print-json=fid,som | + attrs=$(do_lipe_scan2_facet $facet --print-json=fid,som | jq --arg FID "$fid" 'select(.fid == $FID)') echo "attrs = '$attrs'" >&2 @@ -1377,18 +1503,25 @@ test_200() { ((flags1 == flags2)) || error "flags1 ($flags1) != flags2 ($flags2)" ((size1 == size2)) || error "size1 ($size1) != size2 ($size2)" - ((blocks1 == blocks2)) || error "blocks1 ($blocks1) != blocks2 ($blocks2)" + ((blocks1 == blocks2)) || + error "blocks1 ($blocks1) != blocks2 ($blocks2)" } run_test 200 "lipe_scan2 SoM support" test_201() { - local file0=$DIR/$tdir/$tfile - local file1=$DIR/$tdir.2/$tfile.2 + local td0=$DIR/$tdir + local td1=$DIR/$tdir.1 + local file0=$td0/$tfile + local file1=$td1/$tfile.1 local fid local -a path local path_count + local facet=${LIPE_MDS_FACET:-$(lipe_get_random_mds)} + local index=$(($(facet_number $facet) - 1)) + + mkdir_on_mdt -i $index $td0 || error "$LFS mkdir '$td0' failed" + mkdir_on_mdt -i $index $td1 || error "$LFS mkdir '$td1' failed" - mkdir -p $DIR/$tdir $DIR/$tdir.2 || error "mkdir $DIR/$tdir failed" echo XXX > $file0 fid=$($LFS path2fid $file0) ln $file0 $file1 @@ -1398,7 +1531,8 @@ test_201() { sync cancel_lru_locks mdc - attrs=$(do_lipe_scan2_facet mds1 --client-mount="$MOUNT" --print-json=fid,paths | + attrs=$(do_lipe_scan2_facet $facet --client-mount="$MOUNT" \ + --print-json=fid,paths | jq --arg FID "$fid" 'select(.fid == $FID)') echo "attrs = '$attrs'" >&2 @@ -1406,8 +1540,10 @@ test_201() { ((path_count == 2)) || error "path_count ($path_count) != 2" path=( $(jq --null-input --raw-output "$attrs.paths[]") ) - [[ "${path[0]}" == "$tdir/$tfile" ]] || error "path0 '${path[0]}' != '$tdir/$tfile'" - [[ "${path[1]}" == "$tdir.2/$tfile.2" ]] || error "path1 '${path[1]}' != '$tdir.2/$tfile.2'" + [[ "${path[0]}" == "$tdir/$tfile" ]] || + error "path0 '${path[0]}' != '$tdir/$tfile'" + [[ "${path[1]}" == "$tdir.1/$tfile.1" ]] || + error "path1 '${path[1]}' != '$tdir.1/$tfile.1'" } run_test 201 "lipe_scan2 paths support" -- 1.8.3.1