summaryrefslogtreecommitdiff
path: root/test/dfu
diff options
context:
space:
mode:
authorLukasz Majewski <l.majewski@samsung.com>2014-06-18 11:38:56 +0200
committerTom Rini <trini@ti.com>2014-08-09 11:16:59 -0400
commita4c86bbb5ae89606d5318be4e2a6ae23110bb220 (patch)
treedba76eaaa824ec23bf28000eef7e0213fb880ea8 /test/dfu
parent6f12ebf6ea7bcae1b6d9ff090b5c1e7452be90e9 (diff)
downloadu-boot-imx-a4c86bbb5ae89606d5318be4e2a6ae23110bb220.zip
u-boot-imx-a4c86bbb5ae89606d5318be4e2a6ae23110bb220.tar.gz
u-boot-imx-a4c86bbb5ae89606d5318be4e2a6ae23110bb220.tar.bz2
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>
Diffstat (limited to 'test/dfu')
-rw-r--r--test/dfu/README30
-rwxr-xr-xtest/dfu/dfu_gadget_test.sh88
-rwxr-xr-xtest/dfu/dfu_gadget_test_init.sh34
3 files changed, 152 insertions, 0 deletions
diff --git a/test/dfu/README b/test/dfu/README
new file mode 100644
index 0000000..f8c1a74
--- /dev/null
+++ b/test/dfu/README
@@ -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.
diff --git a/test/dfu/dfu_gadget_test.sh b/test/dfu/dfu_gadget_test.sh
new file mode 100755
index 0000000..4a848c8
--- /dev/null
+++ b/test/dfu/dfu_gadget_test.sh
@@ -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
diff --git a/test/dfu/dfu_gadget_test_init.sh b/test/dfu/dfu_gadget_test_init.sh
new file mode 100755
index 0000000..b319ed0
--- /dev/null
+++ b/test/dfu/dfu_gadget_test_init.sh
@@ -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