test:dfu: Add test scripts for testing DFU regression

This commit adds test scripts for testing if any commit has introduced
regression to the DFU subsystem.

It uses md5 to test if sent and received file is correct.
The test detailed description is available at README file.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
This commit is contained in:
Lukasz Majewski 2014-06-18 11:38:56 +02:00 committed by Tom Rini
parent 6f12ebf6ea
commit a4c86bbb5a
3 changed files with 152 additions and 0 deletions

30
test/dfu/README Normal file
View file

@ -0,0 +1,30 @@
DFU TEST CASE DESCRIPTION:
The prerequisites for running this script are assured by dfu_gadget_test_init.sh.
In this file user is able to generate their own set of test files by altering
the default set of TEST_FILES_SIZES variable.
The dfu_gadget_test_init.sh would generate test images only if they are not
already generated.
Moreover, on a target device the "dfu_alt_info" env variable should be extended
to have "dfu_test.bin fat 0 6;" \ entry ([1]). For reference please consult the
config file for TRATS/TRATS2 devices (./include/configs/trats{2}.h)
One can use fat, ext4 or any other supported file system, which can be
created in a convenient way with exporting partitions via UMS (ums 0 mmc 0)
and using standard tools on host (like mkfs.ext4).
Example usage:
1. On the target:
env default -a
dfu 0 mmc 0
2. On the host:
./dfu_gadget_test.sh 11 [test_file]
where 11 is the mumber of alt setting corresponding to entry [1] and [test_file]
is an optional parameter, with which one can explicitly indicate the test file
to be used.
The number of the alt setting entry can be obtained with dfu-util -l command.
In its output one should look for the 'name="dfu_test1.bin"' and corresponding
alt=11.

88
test/dfu/dfu_gadget_test.sh Executable file
View file

@ -0,0 +1,88 @@
#! /bin/bash
set -e # any command return if not equal to zero
clear
COLOUR_RED="\33[31m"
COLOUR_GREEN="\33[32m"
COLOUR_DEFAULT="\33[0m"
DIR=./
SUFFIX=img
RCV_DIR=rcv/
LOG_FILE=./log/log-`date +%d-%m-%Y_%H-%M-%S`
./dfu_gadget_test_init.sh
cleanup () {
rm -rf $RCV_DIR
}
die () {
printf " $COLOUR_RED FAILED $COLOUR_DEFAULT \n"
cleanup
exit 1
}
calculate_md5sum () {
MD5SUM=`md5sum $1`
MD5SUM=`echo $MD5SUM | cut -d ' ' -f1`
echo "md5sum:"$MD5SUM
}
dfu_test_file () {
printf "$COLOUR_GREEN ========================================================================================= $COLOUR_DEFAULT\n"
printf "File:$COLOUR_GREEN %s $COLOUR_DEFAULT\n" $1
dfu-util -D $1 -a $TARGET_ALT_SETTING >> $LOG_FILE 2>&1 || die $?
echo -n "TX: "
calculate_md5sum $1
MD5_TX=$MD5SUM
N_FILE=$DIR$RCV_DIR${1:2}"_rcv"
dfu-util -U $N_FILE -a $TARGET_ALT_SETTING >> $LOG_FILE 2>&1 || die $?
echo -n "RX: "
calculate_md5sum $N_FILE
MD5_RX=$MD5SUM
if [ "$MD5_TX" == "$MD5_RX" ]; then
printf " $COLOUR_GREEN -------> OK $COLOUR_DEFAULT \n"
else
printf " $COLOUR_RED -------> FAILED $COLOUR_DEFAULT \n"
cleanup
exit 1
fi
}
printf "$COLOUR_GREEN========================================================================================= $COLOUR_DEFAULT\n"
echo "DFU EP0 transmission test program"
echo "Trouble shoot -> disable DBG (even the KERN_DEBUG) in the UDC driver"
echo "@ -> TRATS2 # dfu 0 mmc 0"
mkdir -p $RCV_DIR
touch $LOG_FILE
if [ $# -eq 0 ]
then
printf " $COLOUR_RED Please pass alt setting number!! $COLOUR_DEFAULT \n"
exit 0
fi
TARGET_ALT_SETTING=$1
if [ -n "$2" ]
then
dfu_test_file $2
else
for file in $DIR*.$SUFFIX
do
dfu_test_file $file
done
fi
cleanup
exit 0

View file

@ -0,0 +1,34 @@
#! /bin/bash
set -e # any command return if not equal to zero
clear
COLOUR_RED="\33[31m"
COLOUR_GREEN="\33[32m"
COLOUR_DEFAULT="\33[0m"
LOG_DIR="./log"
BKP_DIR="./bkp"
TEST_FILES_SIZES="127 128 129 8M 4095 4096 4097 63 64 65 960"
printf "Init script for generating data necessary for DFU test script"
if [ ! -d $LOG_DIR ]; then
`mkdir $LOG_DIR`
fi
if [ ! -d $BKP_DIR ]; then
`mkdir $BKP_DIR`
fi
for size in $TEST_FILES_SIZES
do
FILE="./dat_$size.img"
if [ ! -f $FILE ]; then
dd if=/dev/urandom of="./dat_$size.img" bs=$size count=1 > /dev/null 2>&1 || exit $?
fi
done
printf "$COLOUR_GREEN OK $COLOUR_DEFAULT \n"
exit 0