#!/bin/sh
#
# Testcase for JFFS2 verification. We do not want to see any
# kernel errors occuring when this is executed.
#
#
# To have a standardized output I define the following function to be
# used when a test was ok or when it failed.
#
failed ()
{
    echo "FAILED"
}

passed ()
{
    echo "PASSED"
}

#
# Print sucess message. Consider to exit with zero as return code.
#
exit_success ()
{
    echo "SUCCESS"
    exit 0
}

#
# Print failure message. Consider to exit with non zero return code.
#
exit_failure ()
{
    echo "FAILED"
    exit 1
}

echo "***********************************************************************"
echo "*        jffs2 testing ...                                            *"
echo "***********************************************************************"

ulimit -c unlimited

for i in `seq 5000`; do
    echo "Testing $i byte (dd if=/dev/urandom of=foo bs=$i count=1) ... "
    dd if=/dev/urandom of=test.bin bs=$i count=1;
    if [ $? -ne "0" ] ; then
        exit_failure
    fi
    passed

    echo "Copy to different file ... "
    dd if=test.bin of=new.bin bs=$i count=1;
    if [ $? -ne "0" ] ; then
        exit_failure
    fi
    passed

    echo "Comparing files ... "
    cmp test.bin new.bin
    dd if=test.bin of=new.bin bs=$i count=1;
    if [ $? -ne "0" ] ; then
        exit_failure
    fi
    passed
done

for i in `seq 5000`; do
    echo "Testing $i byte (dd if=/dev/urandom of=foo bs=$i count=1) ... "
    dd if=/dev/urandom of=foo bs=$i count=1;
    if [ $? -ne "0" ] ; then
        exit_failure
    fi
    passed
done

for i in `seq 5000`; do 
    echo "Testing $i byte (dd if=/dev/zero of=foo bs=$i count=1) ... "
    dd if=/dev/zero of=foo bs=$i count=1;
    if [ $? -ne "0" ] ; then
        exit_failure
    fi
    passed
done

echo "***********************************************************************"
echo "*               Congratulations, no errors found!                     *"
echo "*              Have fun with your cool JFFS2 using system!            *"
echo "***********************************************************************"

exit_success