#!/bin/bash ################################################################################ ## ## ## Copyright (c) Dan Carpenter., 2004 ## ## ## ## This program is free software; you can redistribute it and#or modify ## ## it under the terms of the GNU General Public License as published by ## ## the Free Software Foundation; either version 2 of the License, or ## ## (at your option) any later version. ## ## ## ## This program is distributed in the hope that it will be useful, but ## ## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ## ## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## ## for more details. ## ## ## ## You should have received a copy of the GNU General Public License ## ## along with this program; if not, write to the Free Software ## ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ## ## ## ################################################################################ ## DESCRIPTION: ## This test creates 20 files (0 thru 19) and then shuffles them around, ## deletes, and recreates them as fast as possible. This is all done in ## an effort to test for race conditions in the filesystem code. This test ## runs until killed or Ctrl-C'd. It is suggested that it run overnight ## with preempt turned on to make the system more sensitive to race ## conditions. MAX_FILES=20 CLEAR_SECS=30 DIR="$TMPDIR/race" execute_test() { [ -e $DIR ] || mkdir $DIR ./fs_racer_file_create.sh $DIR $MAX_FILES & ./fs_racer_file_create.sh $DIR $MAX_FILES & ./fs_racer_file_create.sh $DIR $MAX_FILES & ./fs_racer_dir_create.sh $DIR $MAX_FILES & ./fs_racer_dir_create.sh $DIR $MAX_FILES & ./fs_racer_dir_create.sh $DIR $MAX_FILES & ./fs_racer_file_rename.sh $DIR $MAX_FILES & ./fs_racer_file_rename.sh $DIR $MAX_FILES & ./fs_racer_file_rename.sh $DIR $MAX_FILES & ./fs_racer_file_link.sh $DIR $MAX_FILES & ./fs_racer_file_link.sh $DIR $MAX_FILES & ./fs_racer_file_link.sh $DIR $MAX_FILES & ./fs_racer_file_symlink.sh $DIR $MAX_FILES & ./fs_racer_file_symlink.sh $DIR $MAX_FILES & ./fs_racer_file_symlink.sh $DIR $MAX_FILES & ./fs_racer_file_concat.sh $DIR $MAX_FILES & ./fs_racer_file_concat.sh $DIR $MAX_FILES & ./fs_racer_file_concat.sh $DIR $MAX_FILES & ./fs_racer_file_list.sh $DIR & ./fs_racer_file_list.sh $DIR & ./fs_racer_file_list.sh $DIR & ./fs_racer_file_rm.sh $DIR $MAX_FILES & ./fs_racer_file_rm.sh $DIR $MAX_FILES & ./fs_racer_file_rm.sh $DIR $MAX_FILES & } usage() { echo usage: fs_racer.sh -t DURATION [Execute the testsuite for given DURATION seconds] exit 0; } call_exit() { echo \"Cleaning up\" killall fs_racer_file_create.sh killall fs_racer_dir_create.sh killall fs_racer_file_rm.sh killall fs_racer_file_rename.sh killall fs_racer_file_link.sh killall fs_racer_file_symlink.sh killall fs_racer_file_list.sh killall fs_racer_file_concat.sh rm -rf $DIR exit 0 } while getopts :t: arg do case $arg in t) execute_test sleep $OPTARG call_exit;; \?) usage;; esac done exit 0