Whamcloud - gitweb
LU-14264 tests: make PARALLEL available to all suites
[fs/lustre-release.git] / lustre / tests / sanity-benchmark.sh
index 370afae..35a58fc 100644 (file)
@@ -8,17 +8,18 @@ set -e
 
 ONLY=${ONLY:-"$*"}
 
-LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)}
+LUSTRE=${LUSTRE:-$(dirname $0)/..}
 . $LUSTRE/tests/test-framework.sh
 init_test_env $@
-. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
 init_logging
 
-# bug number:
 ALWAYS_EXCEPT="$SANITY_BENCHMARK_EXCEPT"
+[ "$SLOW" = "no" ] && EXCEPT_SLOW="iozone"
+
+build_test_filter
 
 MAX_THREADS=${MAX_THREADS:-20}
-RAMKB=`awk '/MemTotal:/ { print $2 }' /proc/meminfo`
+RAMKB=$(awk '/MemTotal:/ { print $2 }' /proc/meminfo)
 if [ -z "$THREADS" ]; then
        THREADS=$((RAMKB / 16384))
        [ $THREADS -gt $MAX_THREADS ] && THREADS=$MAX_THREADS
@@ -31,9 +32,6 @@ DEBUG_OFF=${DEBUG_OFF:-"eval lctl set_param debug=\"$DEBUG_LVL\""}
 DEBUG_ON=${DEBUG_ON:-"eval lctl set_param debug=0x33f0484"}
 DIRECTIO=${DIRECTIO:-directio}
 
-[ "$SLOW" = "no" ] && EXCEPT_SLOW="iozone"
-
-build_test_filter
 check_and_setup_lustre
 
 assert_DIR
@@ -180,24 +178,52 @@ test_iozone() {
 run_test iozone "iozone"
 
 test_fsx() {
-    local testfile=$DIR/f0.fsxfile
-    FSX_SIZE=$SIZE
-    FSX_COUNT=1000
-    local SPACE=`df -P $MOUNT | tail -n 1 | awk '{ print $4 }'`
-    [ $SPACE -lt $FSX_SIZE ] && FSX_SIZE=$((SPACE * 3 / 4))
-    $DEBUG_OFF
-    FSX_SEED=${FSX_SEED:-$RANDOM}
-    rm -f $testfile
-    $LFS setstripe -c -1 $testfile
-    CMD="fsx -c 50 -p 1000 -S $FSX_SEED -P $TMP -l $FSX_SIZE \
-        -N $((FSX_COUNT * 100)) $FSXOPT $testfile"
-    echo "Using: $CMD"
-    $CMD || error "fsx failed"
-    rm -f $testfile
-    $DEBUG_ON
+       local testfile=$DIR/f0.fsxfile
+       FSX_SIZE=$SIZE
+       FSX_COUNT=1000
+       local SPACE=`df -P $MOUNT | tail -n 1 | awk '{ print $4 }'`
+
+       check_set_fallocate
+
+       [ $SPACE -lt $FSX_SIZE ] && FSX_SIZE=$((SPACE * 3 / 4))
+       $DEBUG_OFF
+       FSX_SEED=${FSX_SEED:-$RANDOM}
+       rm -f $testfile
+       $LFS setstripe -c -1 $testfile
+       CMD="$FSX -c 50 -p 1000 -S $FSX_SEED -P $TMP -l $FSX_SIZE \
+            -N $((FSX_COUNT * 100)) $FSXOPT $testfile"
+       echo "Using: $CMD"
+       $CMD || error "fsx failed"
+       rm -f $testfile
+       $DEBUG_ON
 }
 run_test fsx "fsx"
 
+test_fsx_partial_punch() {
+       local fsx_count=100000
+       local testfile=$DIR/f0.fsxfile
+       local fsx_size=5407677 # upper bound file size
+       local fsx_seed=7919
+
+       check_set_fallocate
+
+       rm -f $testfile
+       $LFS setstripe -c -1 $testfile
+
+       #
+       # $fsx_seed, $fsx_count and $fsx_size combination almost
+       # always reproduces the LASSERT under LU-14640. Therefore these
+       # constants are used as reproducer vs using a random value and
+       # hoping it hits the error condition
+       #
+       CMD="$FSX -c 50 -p 1000 -S $fsx_seed -P $TMP -l $fsx_size \
+            -N $fsx_count $testfile"
+       echo "Using: $CMD"
+       $CMD || error "fsx failed"
+       rm -f $testfile
+}
+run_test fsx_partial_punch "Verify fsx with partial punch via fallocate"
+
 complete $SECONDS
 check_and_cleanup_lustre
 exit_status