#! /bin/bash
# FSQA Test No. 124
#
# Test preallocated_rw_pattern_test modified from CXFSQA test preallocated_rw_pattern_test
#
# pat stands for pattern.  First 8 bytes contains the 64-bit number 0,
# second is 1, ..., until last 8 bytes (1048568-1048575) contain 131071.
# patw preallocates the file and then writes the pattern, patr checks it
#
#-----------------------------------------------------------------------
# Copyright (c) 2006 Silicon Graphics, Inc.  All Rights Reserved.
#
# 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.
#
# This program is distributed in the hope that it would 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 the Free Software Foundation,
# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#
#-----------------------------------------------------------------------
#

seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"

here=`pwd`
tmp=/tmp/$$
status=1	# failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15

_cleanup()
{
    cd /
}

# get standard environment, filters and checks
. ./common/rc
. ./common/filter

# real QA test starts here
_supported_fs generic
_supported_os Linux

_require_test
_require_scratch
_scratch_mkfs >/dev/null 2>&1
_scratch_mount

# Run preallo_rw_pattern on both test and scratch partitions
for TESTFILE in $TEST_DIR/rw_pattern.tmp $SCRATCH_MNT/rw_pattern.tmp
  do
  count=1
  while (( count < 101 ))
    do
    src/preallo_rw_pattern_writer $TESTFILE
    src/preallo_rw_pattern_reader $TESTFILE
    if (test $? -ne 0) then
	echo Read/Write Pattern Test FAILED.
	_cleanup
	exit 1
    fi
    rm $TESTFILE
    ((count=count+1))
  done #done for count of  100
done

if (test $? -eq 0 ) then
    status=0
fi

_scratch_unmount

exit 
