diff options
Diffstat (limited to 'tests/ubi-tests')
| -rwxr-xr-x | tests/ubi-tests/stress-test.sh | 95 | 
1 files changed, 95 insertions, 0 deletions
| diff --git a/tests/ubi-tests/stress-test.sh b/tests/ubi-tests/stress-test.sh new file mode 100755 index 0000000..ad9a2af --- /dev/null +++ b/tests/ubi-tests/stress-test.sh @@ -0,0 +1,95 @@ +#!/bin/sh -euf + +srcdir="$(readlink -ev -- ${0%/*})" +PATH="$srcdir:$PATH" + +fatal() +{ +	echo "Error: $1" 1>&2 +	exit 1 +} + +usage() +{ +	cat 1>&2 <<EOF +Stress-test an UBI device. This test is basically built on top of +'runtests.sh' and runs it several times for different configurations. + +The nandsim and mtdram drivers have to be compiled as kernel modules. + +Usage: +  ${0##*/} run +EOF +} + +cleanup_handler() +{ +	local ret="$1" +	rmmod ubi >/dev/null 2>&1 ||: +	rmmod nandsim >/dev/null 2>&1 ||: +	rmmod mtdram >/dev/null 2>&1  ||: + +	# Below is magic to exit with correct exit code +	if [ "$ret" != "0" ]; then +		trap false EXIT +	else +		trap true EXIT +	fi +} +trap 'cleanup_handler $?' EXIT +trap 'cleanup_handler 1' HUP PIPE INT QUIT TERM + +# Find MTD device number by pattern in /proc/mtd +# Usage: find_mtd_device <pattern> +find_mtd_device() +{ +	printf "%s" "$(grep "$1" /proc/mtd | sed -e "s/^mtd\([0-9]\+\):.*$/\1/")" +} + +exit_handler() +{ +	echo exit +	cleanup +} + +runtests="runtests.sh" + +if [ "$#" -lt 1 ] || [ "$1" != "run" ]; then +	usage +	exit 1 +fi + +# Make sure neither mtdram nor nandsim are used +nandsim_patt="NAND simulator" +mtdram_patt="mtdram test device" +! cat /proc/mtd | grep -q "$nandsim_patt" || +	fatal "the nandsim driver is already used" +! cat /proc/mtd | grep -q "$mtdram_patt" || +	fatal "the mtdram driver is already used" + +rmmod ubi >/dev/null 2>&1 ||: + +if modinfo ubi | grep -q fm_auto; then +	fastmap_supported="yes" +else +	fastmap_supported="no" +fi + +echo "==================================================" +echo "512MiB nandsim, 2KiB NAND pages, no fastmap"  +echo "==================================================" + +modprobe nandsim first_id_byte=0x20 second_id_byte=0xac \ +		 third_id_byte=0x00 fourth_id_byte=0x15 +mtdnum="$(find_mtd_device "$nandsim_patt")" +modprobe ubi mtd="$mtdnum" +$runtests /dev/ubi0 && echo "SUCCESS" || echo "FAILURE" + +echo "==================================================" +echo "256MiB nandsim, 512-byte NAND pages, no fastmap"  +echo "==================================================" + +modprobe nandsim first_id_byte=0x20 second_id_byte=0x71 +mtdnum="$(find_mtd_device "$nandsim_patt")" +modprobe ubi mtd="$mtdnum" +$runtests /dev/ubi0 && echo "SUCCESS" || echo "FAILURE" | 
