diff options
Diffstat (limited to 'ubi-utils/scripts')
-rwxr-xr-x | ubi-utils/scripts/ubi_jffs2_test.sh | 411 |
1 files changed, 0 insertions, 411 deletions
diff --git a/ubi-utils/scripts/ubi_jffs2_test.sh b/ubi-utils/scripts/ubi_jffs2_test.sh deleted file mode 100755 index 883903d..0000000 --- a/ubi-utils/scripts/ubi_jffs2_test.sh +++ /dev/null @@ -1,411 +0,0 @@ -#!/bin/sh -# -# UBI Volume creation/deletion/write/read and JFFS2 on top of UBI -# testcases. -# -# Written in shell language to reduce dependencies to more sophisticated -# interpreters, which may not be available on some stupid platforms. -# -# Author: Frank Haverkamp <haver@vnet.ibm.com> -# -# 1.0 Initial version -# 1.1 Added fixup for delayed device node creation by udev -# This points to a problem in the tools, mabe in the desing -# Tue Oct 31 14:14:54 CET 2006 -# - -VERSION="1.1" - -export PATH=$PATH:/bin:~/bin:/usr/local/bin:/home/dedekind/work/prj/ubi/tools/flashutils/bin/ - -ITERATIONS=250 -ALIGNMENT=2048 - -UBIMKVOL="ubimkvol -a $ALIGNMENT" -UBIRMVOL=ubirmvol -UBIUPDATEVOL=ubiupdatevol - -SIZE_512K=524288 -SIZE_1M=1310720 - -MINVOL=10 -MAXVOL=12 - -TLOG=/dev/null - -# -# 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 -} - -############################################################################### -# -# START -# -############################################################################### - -fix_sysfs_issue () -{ - echo "*** Fixing the sysfs issue with the /dev nodes ... " - - minor=0 - major=`grep ubi0 /proc/devices | sed -e 's/\(.*\) ubi0/\1/'` - - rm -rf /dev/ubi0 - mknod /dev/ubi0 c $major 0 - - for minor in `seq $MINVOL $MAXVOL`; do - echo " -> mknod /dev/ubi0_$minor c $major $(($minor + 1))" - rm -rf /dev/ubi0_$minor - mknod /dev/ubi0_$minor c $major $(($minor + 1)) - done - passed -} - -# -# FIXME Udev needs some time until the device nodes are created. -# This will cause trouble if after ubimkvol an update attempt -# is started immediately, since the device node is not yet -# available. We should either fix the tools with inotify or -# other ideas or figure out a different way to solve the problem -# e.g. to use ubi0 and make the volume device nodes obsolete... -# -udev_wait () -{ - echo -n "FIXME Waiting for udev to create/delete device node " - grep 2\.6\.5 /proc/version > /dev/null - if [ $? -eq "0" ]; then - for i in `seq 0 5`; do - sleep 1; echo -n "."; - done - echo " ok" - fi -} - -# delete_volume - Delete a volume. If it does not exist, do not try -# to delete it. -# @id: volume id -# -delete_volume () -{ - volume=$1 - - ### FIXME broken sysfs!!!! - if [ -e /sys/class/ubi/$volume -o \ - -e /sys/class/ubi/ubi0/$volume -o \ - -e /sys/class/ubi/ubi0_$volume ]; then - - echo "*** Truncate volume if it exists ... " - echo " $UBIUPDATEVOL -d0 -n$volume -t" - $UBIUPDATEVOL -d0 -n$volume -t - if [ $? -ne "0" ] ; then - exit_failure - fi - passed - - echo -n "*** Delete volume if it exists ... " - $UBIRMVOL -d0 -n$volume - if [ $? -ne "0" ] ; then - exit_failure - fi - passed - # udev_wait - fi -} - -# writevol_test - Tests volume creation and writing data to it. -# -# @volume: Volume number -# @size: Size of random data to write -# @type: Volume type static or dynamic -# -writevol_test () -{ - volume=$1 - size=$2 - type=$3 - - echo "*** Write volume test with size $size" - -### Make sure that volume exist, delete existing volume, create new - - delete_volume $volume - - echo "*** Try to create volume" - echo " $UBIMKVOL -d0 -n$volume -t$type -NNEW$volume -s $size ... " - $UBIMKVOL -d0 -n$volume -t$type -N"NEW$volume" -s $size - if [ $? -ne "0" ] ; then - exit_failure - fi - passed - udev_wait - -### Try to create same volume again - echo -n "*** Try to create some volume again, this must fail ... " - $UBIMKVOL -d0 -n$volume -t$type -N"NEW$volume" -s $size - if [ $? -eq "0" ] ; then - exit_failure - fi - passed - -### Now create test data, write it, read it, compare it - echo -n "*** Create test data ... " - dd if=/dev/urandom of=testdata.bin bs=$size count=1 - if [ $? -ne "0" ] ; then - exit_failure - fi - passed - - echo "*** Now writing data to volume ... " - echo " $UBIUPDATEVOL -d0 -n$volume testdata.bin" - ls -l testdata.bin - $UBIUPDATEVOL -d0 -n$volume testdata.bin - if [ $? -ne "0" ] ; then - exit_failure - fi - passed - - echo "*** Download data with dd bs=1 ... " - dd if=/dev/ubi0_$volume of=readdata.bin bs=$size count=1 - if [ $? -ne "0" ] ; then - exit_failure - fi - passed - - echo -n "*** Comparing data ... " - cmp readdata.bin testdata.bin - if [ $? -ne "0" ] ; then - exit_failure - fi - passed - - echo -n "*** Now truncate volume ... " - $UBIUPDATEVOL -d0 -n$volume -t - if [ $? -ne "0" ] ; then - exit_failure - fi - passed -} - -jffs2_torture () -{ - cat /dev/null > TLOG - - echo "*** Torture test ... " - - for i in `seq $iterations`; do - dd if=/dev/urandom of=test.bin bs=$i count=1 2>> $TLOG - if [ $? -ne "0" ] ; then - echo "Testing $i byte (dd if=/dev/urandom of=foo bs=$i count=1) ... " - exit_failure - fi - #passed - - dd if=test.bin of=new.bin bs=$i count=1 2>> $TLOG - if [ $? -ne "0" ] ; then - echo "dd if=test.bin of=new.bin bs=$i count=1 2>> $TLOG" - exit_failure - fi - #passed - - #echo "Comparing files ... " - cmp test.bin new.bin - dd if=test.bin of=new.bin bs=$i count=1 2>> $TLOG - if [ $? -ne "0" ] ; then - exit_failure - fi - #passed - #echo -n "." - done - - echo -n "step0:ok " - - for i in `seq $iterations`; do - dd if=/dev/urandom of=foo bs=$i count=1 2>> $TLOG - if [ $? -ne "0" ] ; then - echo "Testing $i byte (dd if=/dev/urandom of=foo bs=$i count=1) ... " - exit_failure - fi - #passed - done - - echo -n "step1:ok " - - for i in `seq $iterations`; do - dd if=/dev/zero of=foo bs=1 count=$i 2>> $TLOG - if [ $? -ne "0" ] ; then - echo "Testing $i byte (dd if=/dev/zero of=foo bs=1 count=$i) ... " - exit_failure - fi - #passed - done - - echo -n "step2:ok " - - for i in `seq $iterations`; do - dd if=/dev/zero of=foo bs=$i count=16 2>> $TLOG - if [ $? -ne "0" ] ; then - echo "Testing $i byte (dd if=/dev/zero of=foo bs=$i count=1024) ... " - exit_failure - fi - #passed - done - - echo -n "step3:ok " - - passed -} - -# writevol_test - Tests volume creation and writing data to it. -# -# @volume: Volume number -# @size: Size of random data to write -# @type: Volume type static or dynamic -# -jffs2_test () -{ - name=$1 - iterations=$2 - directory=`pwd` - - ### Setup - ulimit -c unlimited - - echo -n "*** Create directory /mnt/$name ... " - mkdir -p /mnt/$name - if [ $? -ne "0" ] ; then - exit_failure - fi - passed - - echo -n "*** mount -t jffs2 mtd:$name /mnt/$name ... " - mount -t jffs2 mtd:$name /mnt/$name - if [ $? -ne "0" ] ; then - exit_failure - fi - passed - - echo -n "*** change directory ... " - cd /mnt/$name - if [ $? -ne "0" ] ; then - exit_failure - fi - passed - - ls - echo "*** list directory ... " - ls -la - if [ $? -ne "0" ] ; then - exit_failure - fi - passed - - ### Torture - echo -n "*** touch I_WAS_HERE ... " - touch I_WAS_HERE - if [ $? -ne "0" ] ; then - exit_failure - fi - passed - - jffs2_torture - - echo "*** list directory ... " - ls -la - if [ $? -ne "0" ] ; then - exit_failure - fi - passed - - ### Cleanup - echo -n "*** go back ... " - cd $directory - if [ $? -ne "0" ] ; then - exit_failure - fi - passed - - ### Still mounted, ubiupdatevol must fail! - - echo -n "*** $UBIUPDATEVOL -d0 -n$volume -t must fail! ..." - $UBIUPDATEVOL -d0 -n$volume -t - if [ $? -eq "0" ] ; then - exit_failure - fi - passed - - echo -n "*** umount /mnt/$name ... " - umount /mnt/$name - if [ $? -ne "0" ] ; then - exit_failure - fi - passed - - return -} - -echo "***********************************************************************" -echo "* UBI JFFS2 Testing starts now ... *" -echo "* Good luck! *" -echo "***********************************************************************" -echo "VERSION: $VERSION" - -# Set to zero if not running on example hardware -grep ubi /proc/devices > /dev/null -if [ $? -ne "0" ]; then - echo "No UBI found in /proc/devices! I am broken!" - exit_failure -fi - -# Set to zero if not running on example hardware -grep 1142 /proc/cpuinfo > /dev/null -if [ $? -eq "0" ]; then - echo "Running on example hardware" - mount -o remount,rw / / - sleep 1 - fix_sysfs_issue -else - echo "Running on Artems hardware" -fi - -for volume in `seq $MINVOL $MAXVOL`; do - echo -n "************ VOLUME $volume NEW$volume " - echo "******************************************" - writevol_test $volume $SIZE_1M dynamic - jffs2_test NEW$volume $ITERATIONS - delete_volume $volume -done - -echo "***********************************************************************" -echo "* Congratulations, no errors found! *" -echo "* Have fun with your cool UBI system! *" -echo "***********************************************************************" - -exit_success |