Whamcloud - gitweb
LU-13709 tests: test lfs mkdir -c without -i 57/39457/5
authorOlaf Faaland <faaland1@llnl.gov>
Thu, 16 Jul 2020 22:50:29 +0000 (15:50 -0700)
committerOleg Drokin <green@whamcloud.com>
Thu, 19 Nov 2020 10:19:18 +0000 (10:19 +0000)
Almost every test with lfs mkdir -c in the test suite also
uses option -i, so lfs mkdir -c (same as -i -1, where lustre
chooses the MDTs) is poorly tested.  Add a test for that
case, sanity test_300s.

Signed-off-by: Olaf Faaland <faaland1@llnl.gov>
Change-Id: Iede537d52cf445c9c9a6353338670e55a11364da
Reviewed-on: https://review.whamcloud.com/39457
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Lai Siyao <lai.siyao@whamcloud.com>
Reviewed-by: Gian-Carlo DeFazio <defazio1@llnl.gov>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/tests/sanity.sh

index 3fcbc65..8a6313d 100755 (executable)
@@ -21649,6 +21649,56 @@ test_300r() {
 }
 run_test 300r "test -1 striped directory"
 
+test_300s_helper() {
+       local count=$1
+
+       local stripe_dir=$DIR/$tdir/striped_dir.$count
+
+       $LFS mkdir -c $count $stripe_dir ||
+               error "lfs mkdir -c error"
+
+       $LFS getdirstripe $stripe_dir ||
+               error "lfs getdirstripe fails"
+
+       local stripe_count
+       stripe_count=$($LFS getdirstripe $stripe_dir |
+                     awk '/lmv_stripe_count:/ { print $2 }')
+
+       [ $count -ne $stripe_count ] &&
+               error_noexit "bad stripe count $stripe_count expected $count"
+
+       local dupe_stripes
+       dupe_stripes=$($LFS getdirstripe $stripe_dir |
+               awk '/0x/ {count[$1] += 1}; END {
+                       for (idx in count) {
+                               if (count[idx]>1) {
+                                       print "index " idx " count " count[idx]
+                               }
+                       }
+               }')
+
+       if [[ -n "$dupe_stripes" ]] ; then
+               lfs getdirstripe $stripe_dir
+               error_noexit "Dupe MDT above: $dupe_stripes "
+       fi
+
+       rm -rf $stripe_dir ||
+               error_noexit "unlink $stripe_dir fails"
+}
+
+test_300s() {
+       [ $MDS1_VERSION -lt $(version_code 2.7.55) ] &&
+               skip "Need MDS version at least 2.7.55" && return
+       [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+
+       mkdir $DIR/$tdir
+       for count in $(seq 2 $MDSCOUNT); do
+               test_300s_helper $count
+       done
+}
+run_test 300s "test lfs mkdir -c without -i"
+
+
 prepare_remote_file() {
        mkdir $DIR/$tdir/src_dir ||
                error "create remote source failed"