[U-Boot] [PATCH v2] test:dfu: Add test scripts for testing DFU regression

Simon Glass sjg at chromium.org
Fri Jun 6 23:08:03 CEST 2014


Hi Lukasz,

On 3 June 2014 03:54, Lukasz Majewski <l.majewski at samsung.com> wrote:
> 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 at samsung.com>
> ---
> Changes for v2:
> - Rename DESCRIPTION.TXT to README
> - Introduction of COLOUR_* variables to hold code necessary to change
>   console color
> - File to create initial setup - dfu_gadget_test_init.sh has been added
> - Test files are now automatically generated with the above script

Looks good, but a few comments below.

> ---
>  test/dfu/README                  |   27 ++++++++++++
>  test/dfu/dfu_gadget_test.sh      |   88 ++++++++++++++++++++++++++++++++++++++
>  test/dfu/dfu_gadget_test_init.sh |   34 +++++++++++++++
>  3 files changed, 149 insertions(+)
>  create mode 100644 test/dfu/README
>  create mode 100755 test/dfu/dfu_gadget_test.sh
>  create mode 100755 test/dfu/dfu_gadget_test_init.sh
>
> diff --git a/test/dfu/README b/test/dfu/README
> new file mode 100644
> index 0000000..f8f5a43
> --- /dev/null
> +++ b/test/dfu/README
> @@ -0,0 +1,27 @@
> +DFU TEST CASE DESCRIPTION:
> +
> +The prerequisites for running this script are assured by
> +dfu_gadget_test_init.sh script.
> +In this file user is able to generate their own set of test files by altering
> +the default set of TEST_FILES_SIZES variable
> +
> +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
> +
> +where 11 is the mumber of alt setting corresponding to entry [1].
> +
> +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..8abd8e7
> --- /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
> +
> +COLOR_RED="\33[31m"
> +COLOR_GREEN="\33[32m"
> +COLOR_DEFAULT="\33[0m"

Which side of the pond are you? :-) I think it should be COLOUR in U-Boot.

> +
> +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 "   $COLOR_RED FAILED $COLOR_DEFAULT \n"
> +       cleanup
> +       exit 1
> +}
> +
> +calculate_md5sum () {
> +    MD5SUM=`md5sum $1`
> +    MD5SUM=`echo $MD5SUM | cut -d ' ' -f1`
> +    echo "md5sum:"$MD5SUM
> +}
> +
> +dfu_test_file () {
> +    printf "$COLOR_GREEN ========================================================================================= $COLOR_DEFAULT\n"
> +    printf "File:$COLOR_GREEN %s $COLOR_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 "   $COLOR_GREEN -------> OK $COLOR_DEFAULT \n"
> +    else
> +       printf "   $COLOR_RED -------> FAILED $COLOR_DEFAULT \n"
> +       cleanup
> +       exit 1
> +    fi
> +
> +}
> +
> +printf "$COLOR_GREEN========================================================================================= $COLOR_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 "   $COLOR_RED Please pass alt setting number!!  $COLOR_DEFAULT \n"
> +       exit 0
> +fi
> +
> +TARGET_ALT_SETTING=$1
> +
> +if [ -n "$2" ]
> +then
> +       dfu_test_file $2

Where is $2 mentioned? in your example usage?

> +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..ea2f715
> --- /dev/null
> +++ b/test/dfu/dfu_gadget_test_init.sh

Should this script be run by the main script in the default case? You
could have a flag to force it to use existing files.

> @@ -0,0 +1,34 @@
> +#! /bin/bash
> +set -e # any command return if not equal to zero
> +clear
> +
> +COLOR_RED="\33[31m"
> +COLOR_GREEN="\33[32m"
> +COLOR_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 "$COLOR_GREEN OK $COLOR_DEFAULT \n"
> +
> +exit 0
> --
> 1.7.10.4
>

Regards,
Simon


More information about the U-Boot mailing list