X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=linux-tests%2Fstress_test.sh;h=6c531ab0174877a8c9e9ecafe3a7f46adb9ab262;hp=27498e59b5739ba9efc26576460217accc406d0e;hb=f2d455470f1677828cf1c4fc74b64592edb79139;hpb=e0f1d0213364d12d512b044afd637d3761d31bdc diff --git a/linux-tests/stress_test.sh b/linux-tests/stress_test.sh index 27498e5..6c531ab 100755 --- a/linux-tests/stress_test.sh +++ b/linux-tests/stress_test.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # Do some random operations on a yaffs2 file system MTD="/dev/mtdblock0" @@ -11,9 +11,16 @@ MAX_LOW_WATER=85 MIN_HIGH_WATER=15 MAX_HIGH_WATER=95 -let low_water=25 -let high_water=90 -let df_percent=50 +low_water=25 +high_water=90 +df_percent=50 + + +random_number(){ + local val + val=$RANDOM + echo $val +} update_df_percent(){ @@ -23,25 +30,25 @@ update_df_percent(){ update_df_percent calc_low_water() { - let low_water=0 + low_water=0 while [ $low_water -lt $MIN_LOW_WATER ] ; do - let low_water=$RANDOM%100 + low_water=$(($(random_number) % 100)) while [[ $low_water -ge $df_percent || $low_water -gt $MAX_LOW_WATER ]] ; do - let low_water=$RANDOM%100 + low_water=$(($(random_number) % 100)) done done } calc_high_water() { - let high_water=100 + high_water=100 while [ $high_water -gt $MAX_HIGH_WATER ] ; do - let high_water=$RANDOM%100 + high_water=$(($(random_number) % 100)) while [[ $high_water -le $df_percent || $high_water -lt $MIN_HIGH_WATER ]] ; do - let high_water=$RANDOM%100 + high_water=$(($(random_number) % 100)) done done } @@ -50,9 +57,9 @@ calc_high_water() { maybe_sleep(){ local val - let val=$RANDOM%10000 + val=$(($(random_number) % 10000)) if [ $val -le 1 ] ; then - let val=$RANDOM%100 + val=$(($(random_number) % 100)) echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" echo "!!!!!!!!! !!!!!!!!!!!!!!!!!!!" @@ -65,15 +72,20 @@ maybe_sleep(){ fi } +remount_count=0 +maybe_remount_count=0 + maybe_remount(){ local val - let val=$RANDOM%10000 + val=$(($(random_number) % 10000)) + maybe_remount_count=$(($maybe_remount_count+1)) if [ $val -le 1 ] ; then + remount_count=$(($remount_count+1)) echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" echo "!!!!!!!!! !!!!!!!!!!!!!!!!!!!" - echo "!!!!!!!!! R E M O U N T !!!!!!!!!!!!!!!!!!!" + echo "!!!!!!!!! R E M O U N T $remount_count from $maybe_remount_count" echo "!!!!!!!!! !!!!!!!!!!!!!!!!!!!" echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" @@ -85,6 +97,7 @@ maybe_remount(){ } + make_space_slow(){ update_df_percent @@ -99,7 +112,7 @@ make_space_slow(){ while [ $df_percent -ge $low_water ] ; do DELETE_FILE=`ls $TEST_DIR | head -n 1` - rm "$TEST_DIR/$DELETE_FILE" + rm -rf "$TEST_DIR/$DELETE_FILE" update_df_percent maybe_sleep @@ -118,8 +131,8 @@ make_space_fast(){ echo "!!!!!!" while [ $df_percent -ge $low_water ] ; do - let file_prefix=$RANDOM%100 - rm -f $TEST_DIR/dummy $TEST_DIR/$file_prefix* + file_prefix=$(($(random_number) % 100)) + rm -rf $TEST_DIR/dummy $TEST_DIR/$file_prefix* update_df_percent maybe_sleep @@ -129,7 +142,7 @@ make_space_fast(){ make_space(){ local xx - let xx=$RANDOM%100 + xx=$(($(random_number) % 100)) update_df_percent if [ $df_percent -gt $MIN_LOW_WATER ] ; then @@ -148,11 +161,6 @@ periodic_action(){ maybe_remount } -random_number(){ - local val - val=$RANDOM - echo $val -} drop_caches(){ @@ -165,7 +173,7 @@ drop_caches(){ maybe_drop_caches(){ local x - let x=$RANDOM%10000 + x=$(($(random_number) % 10000)) if [ $x -eq 99 ] ; then drop_caches fi @@ -179,35 +187,51 @@ create_files(){ calc_high_water - md5sum $TEST_DIR/* > $SUM_FILE + rm -f $SUM_FILE + + for i in $(find $TEST_DIR) ; do + [ -f $i ] && md5sum $i >> $SUM_FILE + done echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" echo "!!!!! Fill from $df_percent percent to $high_water percent" echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" - let chunks=$RANDOM%100 - let fsize=$RANDOM*$chunks+1 - echo "!!!!!! File size is $fsize" + chunks=$(($(random_number) % 100)) update_df_percent - let skip=0 + skip_file_create=0 + skip_dir_create=0 while [ $df_percent -le $high_water ] ; do - if [ $skip -lt 1 ] ; then + if [ $skip_file_create -lt 1 ] ; then + fsize=$(($(random_number)*$chunks+1)) + echo "!!!!!! File size is $fsize" dd if=/dev/urandom of=$REF_FILE bs=$fsize count=1 REF_SUM=$(md5sum $REF_FILE | cut -f1 -d" " ) - let skip=500 + skip_file_create=$(($(random_number) % 50)) + else + skip_file_create=$(($skip_file_create-1)) + fi + + if [ $skip_dir_create -lt 1 ] ; then + dir_name=$TEST_DIR/$(random_number)-dir + mkdir -p $dir_name + echo "Creating in directory $dir_name" + skip_dir_create=$(($(random_number) % 100)) + else + skip_dir_create=$(($skip_dir_create-1)) fi - FNAME=$TEST_DIR/$RANDOM-$RANDOM-$RANDOM + FNAME=$dir_name/$(random_number)-$(random_number)-$(random_number) cp $REF_FILE $FNAME FILE_SUM=$(md5sum $FNAME | cut -f1 -d" ") md5sum $FNAME >> $SUM_FILE if [ "$FILE_SUM" != "$REF_SUM" ] ; then - echo "File comparison failed $REF_SUM - $FILE_SUM" + echo "File comparison between $REF_FILE and $FNAME failed $REF_SUM - $FILE_SUM" exit 1 fi @@ -229,36 +253,36 @@ fill_disk(){ echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" echo "!!!!!!!!!!! F I L L D I S K" echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" - let full=0 + full=0 while [ $full -eq 0 ] ; do - dd if=/dev/urandom of=$TEST_DIR/$RANDOM-$RANDOM-fill bs=1000 count=50 2> /dev/null || let full=1 || true + dd if=/dev/urandom of=$TEST_DIR/$(random_number)-$(random_number)-fill bs=1000 count=50 2> /dev/null || full=1 || true done } +rm -rf $TEST_DIR/* mkdir -p $TEST_DIR -rm -f $TEST_DIR/* touch $TEST_DIR/dont-want-empty-dir create_files while true ; do - let x=$RANDOM%100 + x=$(($(random_number) % 100)) if [ $x -lt 50 ] ; then create_files fi - let x=$RANDOM%100 + x=$(($(random_number) % 100)) if [ $x -lt 50 ] ; then make_space fi - let x=$RANDOM%100 - if [ $x -lt 10 ] ; then + x=$(($(random_number) % 100)) + if [ $x -lt 5 ] ; then fill_disk fi - let x=$RANDOM%100 + x=$(($(random_number) % 100)) if [ $x -lt 1 ] ; then drop_caches fi