📄 sanity.sh
字号:
mkdir -p $DIR/d17 ln -s foo $DIR/d17/f17d touch $DIR/d17/f17d || error "creating to new symlink"}run_test 17d "symlinks: create dangling ========================"test_17e() { mkdir -p $DIR/$tdir local foo=$DIR/$tdir/$tfile ln -s $foo $foo || error "create symlink failed" ls -l $foo || error "ls -l failed" ls $foo && error "ls not failed" || true}run_test 17e "symlinks: create recursive symlink (should return error) ===="test_18() { touch $DIR/f ls $DIR || error}run_test 18 "touch .../f ; ls ... =============================="test_19a() { touch $DIR/f19 ls -l $DIR rm $DIR/f19 $CHECKSTAT -a $DIR/f19 || error}run_test 19a "touch .../f19 ; ls -l ... ; rm .../f19 ==========="test_19b() { ls -l $DIR/f19 && error || true}run_test 19b "ls -l .../f19 (should return error) =============="test_19c() { [ $RUNAS_ID -eq $UID ] && skip "RUNAS_ID = UID = $UID -- skipping" && return $RUNAS touch $DIR/f19 && error || true}run_test 19c "$RUNAS touch .../f19 (should return error) =="test_19d() { cat $DIR/f19 && error || true}run_test 19d "cat .../f19 (should return error) =============="test_20() { touch $DIR/f rm $DIR/f log "1 done" touch $DIR/f rm $DIR/f log "2 done" touch $DIR/f rm $DIR/f log "3 done" $CHECKSTAT -a $DIR/f || error}run_test 20 "touch .../f ; ls -l ... ==========================="test_21() { mkdir $DIR/d21 [ -f $DIR/d21/dangle ] && rm -f $DIR/d21/dangle ln -s dangle $DIR/d21/link echo foo >> $DIR/d21/link cat $DIR/d21/dangle $CHECKSTAT -t link $DIR/d21/link || error $CHECKSTAT -f -t file $DIR/d21/link || error}run_test 21 "write to dangling link ============================"test_22() { WDIR=$DIR/$tdir chown $RUNAS_ID $WDIR (cd $WDIR || error "cd $WDIR failed"; $RUNAS tar cf - /etc/hosts /etc/sysconfig/network | \ $RUNAS tar xf -) ls -lR $WDIR/etc || error "ls -lR $WDIR/etc failed" $CHECKSTAT -t dir $WDIR/etc || error "checkstat -t dir failed" $CHECKSTAT -u \#$RUNAS_ID $WDIR/etc || error "checkstat -u failed"}run_test 22 "unpack tar archive as non-root user ==============="test_23() { mkdir $DIR/d23 $TOEXCL $DIR/d23/f23 $TOEXCL -e $DIR/d23/f23 || error}run_test 23 "O_CREAT|O_EXCL in subdir =========================="test_24a() { echo '== rename sanity ==============================================' echo '-- same directory rename' mkdir $DIR/R1 touch $DIR/R1/f mv $DIR/R1/f $DIR/R1/g $CHECKSTAT -t file $DIR/R1/g || error}run_test 24a "touch .../R1/f; rename .../R1/f .../R1/g ========="test_24b() { mkdir $DIR/R2 touch $DIR/R2/{f,g} mv $DIR/R2/f $DIR/R2/g $CHECKSTAT -a $DIR/R2/f || error $CHECKSTAT -t file $DIR/R2/g || error}run_test 24b "touch .../R2/{f,g}; rename .../R2/f .../R2/g ====="test_24c() { mkdir $DIR/R3 mkdir $DIR/R3/f mv $DIR/R3/f $DIR/R3/g $CHECKSTAT -a $DIR/R3/f || error $CHECKSTAT -t dir $DIR/R3/g || error}run_test 24c "mkdir .../R3/f; rename .../R3/f .../R3/g ========="test_24d() { mkdir $DIR/R4 mkdir $DIR/R4/{f,g} mrename $DIR/R4/f $DIR/R4/g $CHECKSTAT -a $DIR/R4/f || error $CHECKSTAT -t dir $DIR/R4/g || error}run_test 24d "mkdir .../R4/{f,g}; rename .../R4/f .../R4/g ====="test_24e() { echo '-- cross directory renames --' mkdir $DIR/R5{a,b} touch $DIR/R5a/f mv $DIR/R5a/f $DIR/R5b/g $CHECKSTAT -a $DIR/R5a/f || error $CHECKSTAT -t file $DIR/R5b/g || error}run_test 24e "touch .../R5a/f; rename .../R5a/f .../R5b/g ======"test_24f() { mkdir $DIR/R6{a,b} touch $DIR/R6a/f $DIR/R6b/g mv $DIR/R6a/f $DIR/R6b/g $CHECKSTAT -a $DIR/R6a/f || error $CHECKSTAT -t file $DIR/R6b/g || error}run_test 24f "touch .../R6a/f R6b/g; mv .../R6a/f .../R6b/g ===="test_24g() { mkdir $DIR/R7{a,b} mkdir $DIR/R7a/d mv $DIR/R7a/d $DIR/R7b/e $CHECKSTAT -a $DIR/R7a/d || error $CHECKSTAT -t dir $DIR/R7b/e || error}run_test 24g "mkdir .../R7{a,b}/d; mv .../R7a/d .../R5b/e ======"test_24h() { mkdir $DIR/R8{a,b} mkdir $DIR/R8a/d $DIR/R8b/e mrename $DIR/R8a/d $DIR/R8b/e $CHECKSTAT -a $DIR/R8a/d || error $CHECKSTAT -t dir $DIR/R8b/e || error}run_test 24h "mkdir .../R8{a,b}/{d,e}; rename .../R8a/d .../R8b/e"test_24i() { echo "-- rename error cases" mkdir $DIR/R9 mkdir $DIR/R9/a touch $DIR/R9/f mrename $DIR/R9/f $DIR/R9/a $CHECKSTAT -t file $DIR/R9/f || error $CHECKSTAT -t dir $DIR/R9/a || error $CHECKSTAT -a file $DIR/R9/a/f || error}run_test 24i "rename file to dir error: touch f ; mkdir a ; rename f a"test_24j() { mkdir $DIR/R10 mrename $DIR/R10/f $DIR/R10/g $CHECKSTAT -t dir $DIR/R10 || error $CHECKSTAT -a $DIR/R10/f || error $CHECKSTAT -a $DIR/R10/g || error}run_test 24j "source does not exist ============================" test_24k() { mkdir $DIR/R11a $DIR/R11a/d touch $DIR/R11a/f mv $DIR/R11a/f $DIR/R11a/d $CHECKSTAT -a $DIR/R11a/f || error $CHECKSTAT -t file $DIR/R11a/d/f || error}run_test 24k "touch .../R11a/f; mv .../R11a/f .../R11a/d ======="# bug 2429 - rename foo foo foo creates invalid filetest_24l() { f="$DIR/f24l" multiop $f OcNs || error}run_test 24l "Renaming a file to itself ========================"test_24m() { f="$DIR/f24m" multiop $f OcLN ${f}2 ${f}2 || error "link ${f}2 ${f}2 failed" # on ext3 this does not remove either the source or target files # though the "expected" operation would be to remove the source $CHECKSTAT -t file ${f} || error "${f} missing" $CHECKSTAT -t file ${f}2 || error "${f}2 missing"}run_test 24m "Renaming a file to a hard link to itself ========="test_24n() { f="$DIR/f24n" # this stats the old file after it was renamed, so it should fail touch ${f} $CHECKSTAT ${f} mv ${f} ${f}.rename $CHECKSTAT ${f}.rename $CHECKSTAT -a ${f}}run_test 24n "Statting the old file after renaming (Posix rename 2)"test_24o() { check_kernel_version 37 || return 0 mkdir -p $DIR/d24o rename_many -s random -v -n 10 $DIR/d24o}run_test 24o "rename of files during htree split ==============="test_24p() { mkdir $DIR/R12{a,b} DIRINO=`ls -lid $DIR/R12a | awk '{ print $1 }'` mrename $DIR/R12a $DIR/R12b $CHECKSTAT -a $DIR/R12a || error $CHECKSTAT -t dir $DIR/R12b || error DIRINO2=`ls -lid $DIR/R12b | awk '{ print $1 }'` [ "$DIRINO" = "$DIRINO2" ] || error "R12a $DIRINO != R12b $DIRINO2"}run_test 24p "mkdir .../R12{a,b}; rename .../R12a .../R12b"test_24q() { mkdir $DIR/R13{a,b} DIRINO=`ls -lid $DIR/R13a | awk '{ print $1 }'` multiop_bg_pause $DIR/R13b D_c || return 1 MULTIPID=$! mrename $DIR/R13a $DIR/R13b $CHECKSTAT -a $DIR/R13a || error $CHECKSTAT -t dir $DIR/R13b || error DIRINO2=`ls -lid $DIR/R13b | awk '{ print $1 }'` [ "$DIRINO" = "$DIRINO2" ] || error "R13a $DIRINO != R13b $DIRINO2" kill -USR1 $MULTIPID wait $MULTIPID || error "multiop close failed"}run_test 24q "mkdir .../R13{a,b}; open R13b rename R13a R13b ==="test_24r() { #bug 3789 mkdir $DIR/R14a $DIR/R14a/b mrename $DIR/R14a $DIR/R14a/b && error "rename to subdir worked!" $CHECKSTAT -t dir $DIR/R14a || error "$DIR/R14a missing" $CHECKSTAT -t dir $DIR/R14a/b || error "$DIR/R14a/b missing"}run_test 24r "mkdir .../R14a/b; rename .../R14a .../R14a/b ====="test_24s() { mkdir $DIR/R15a $DIR/R15a/b $DIR/R15a/b/c mrename $DIR/R15a $DIR/R15a/b/c && error "rename to sub-subdir worked!" $CHECKSTAT -t dir $DIR/R15a || error "$DIR/R15a missing" $CHECKSTAT -t dir $DIR/R15a/b/c || error "$DIR/R15a/b/c missing"}run_test 24s "mkdir .../R15a/b/c; rename .../R15a .../R15a/b/c ="test_24t() { mkdir $DIR/R16a $DIR/R16a/b $DIR/R16a/b/c mrename $DIR/R16a/b/c $DIR/R16a && error "rename to sub-subdir worked!" $CHECKSTAT -t dir $DIR/R16a || error "$DIR/R16a missing" $CHECKSTAT -t dir $DIR/R16a/b/c || error "$DIR/R16a/b/c missing"}run_test 24t "mkdir .../R16a/b/c; rename .../R16a/b/c .../R16a ="test_24u() { # bug12192 multiop $DIR/$tfile C2w$((2048 * 1024))c || error $CHECKSTAT -s $((2048 * 1024)) $DIR/$tfile || error "wrong file size"}run_test 24u "create stripe file"test_25a() { echo '== symlink sanity =============================================' mkdir $DIR/d25 ln -s d25 $DIR/s25 touch $DIR/s25/foo || error}run_test 25a "create file in symlinked directory ==============="test_25b() { [ ! -d $DIR/d25 ] && test_25a $CHECKSTAT -t file $DIR/s25/foo || error}run_test 25b "lookup file in symlinked directory ==============="test_26a() { mkdir $DIR/d26 mkdir $DIR/d26/d26-2 ln -s d26/d26-2 $DIR/s26 touch $DIR/s26/foo || error}run_test 26a "multiple component symlink ======================="test_26b() { mkdir -p $DIR/d26b/d26-2 ln -s d26b/d26-2/foo $DIR/s26-2 touch $DIR/s26-2 || error}run_test 26b "multiple component symlink at end of lookup ======"test_26c() { mkdir $DIR/d26.2 touch $DIR/d26.2/foo ln -s d26.2 $DIR/s26.2-1 ln -s s26.2-1 $DIR/s26.2-2 ln -s s26.2-2 $DIR/s26.2-3 chmod 0666 $DIR/s26.2-3/foo}run_test 26c "chain of symlinks ================================"# recursive symlinks (bug 439)test_26d() { ln -s d26-3/foo $DIR/d26-3}run_test 26d "create multiple component recursive symlink ======"test_26e() { [ ! -h $DIR/d26-3 ] && test_26d rm $DIR/d26-3}run_test 26e "unlink multiple component recursive symlink ======"# recursive symlinks (bug 7022)test_26f() { mkdir $DIR/$tdir/$tfile || error "mkdir $DIR/$tdir/$tfile failed" cd $DIR/$tdir/$tfile || error "cd $DIR/$tdir/$tfile failed" mkdir -p lndir/bar1 || error "mkdir lndir/bar1 failed" mkdir $tfile || error "mkdir $tfile failed" cd $tfile || error "cd $tfile failed" ln -s .. dotdot || error "ln dotdot failed" ln -s dotdot/lndir lndir || error "ln lndir failed" cd $DIR/$tdir || error "cd $DIR/$tdir failed" output=`ls $tfile/$tfile/lndir/bar1` [ "$output" = bar1 ] && error "unexpected output" rm -r $tfile || error "rm $tfile failed" $CHECKSTAT -a $DIR/$tfile || error "$tfile not gone"}run_test 26f "rm -r of a directory which has recursive symlink ="test_27a() { echo '== stripe sanity ==============================================' mkdir -p $DIR/d27 || error "mkdir failed" $SETSTRIPE $DIR/d27/f0 -c 1 || error "lstripe failed" $CHECKSTAT -t file $DIR/d27/f0 || error "checkstat failed" pass log "== test 27b: write to one stripe file =========================" cp /etc/hosts $DIR/d27/f0 || error}run_test 27a "one stripe file =================================="test_27c() { [ "$OSTCOUNT" -lt "2" ] && skip "skipping 2-stripe test" && return mkdir -p $DIR/d27 $SETSTRIPE $DIR/d27/f01 -c 2 || error "lstripe failed" [ `$GETSTRIPE $DIR/d27/f01 | grep -A 10 obdidx | wc -l` -eq 4 ] || error "two-stripe file doesn't have two stripes" pass log "== test 27d: write to two stripe file file f01 ================" dd if=/dev/zero of=$DIR/d27/f01 bs=4k count=4 || error "dd failed"}run_test 27c "create two stripe file f01 ======================="test_27d() { mkdir -p $DIR/d27 $SETSTRIPE $DIR/d27/fdef 0 -1 0 || error "lstripe failed" $CHECKSTAT -t file $DIR/d27/fdef || error "checkstat failed" dd if=/dev/zero of=$DIR/d27/fdef bs=4k count=4 || error}run_test 27d "create file with default settings ================"test_27e() { mkdir -p $DIR/d27 $SETSTRIPE $DIR/d27/f12 -c 2 || error "lstripe failed" $SETSTRIPE $DIR/d27/f12 -c 2 && error "lstripe succeeded twice" $CHECKSTAT -t file $DIR/d27/f12 || error "checkstat failed"}run_test 27e "lstripe existing file (should return error) ======"test_27f() { mkdir -p $DIR/d27 $SETSTRIPE $DIR/d27/fbad -s 100 -i 0 -c 1 && error "lstripe failed" dd if=/dev/zero of=$DIR/d27/f12 bs=4k count=4 || error "dd failed" $GETSTRIPE $DIR/d27/fbad || error "lfs getstripe failed"}run_test 27f "lstripe with bad stripe size (should return error)"test_27g() { mkdir -p $DIR/d27 $MCREATE $DIR/d27/fnone || error "mcreate failed" pass log "== test 27h: lfs getstripe with no objects ====================" $GETSTRIPE $DIR/d27/fnone 2>&1 | grep "no stripe info" || error "has object" pass log "== test 27i: lfs getstripe with some objects ==================" touch $DIR/d27/fsome || error "touch failed" $GETSTRIPE $DIR/d27/fsome | grep obdidx || error "missing objects"}run_test 27g "test lfs getstripe ==========================================="test_27j() { mkdir -p $DIR/d27 $SETSTRIPE $DIR/d27/f27j -i $OSTCOUNT && error "lstripe failed"||true}run_test 27j "lstripe with bad stripe offset (should return error)"test_27k() { # bug 2844 mkdir -p $DIR/d27 FILE=$DIR/d27/f27k LL_MAX_BLKSIZE=$((4 * 1024 * 1024))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -