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

Simon Glass sjg at chromium.org
Sat May 24 02:51:24 CEST 2014


Hi Lukasz,

On 22 May 2014 00:43, Lukasz Majewski <l.majewski at samsung.com> wrote:
> This commit adds test script for testing if any commit has introduced
> regression to the DFU.
>
> It uses md5 to test if sent and received file is correct.
> The test detailed description is available at DESCRIPTION.TXT file.
>
> Signed-off-by: Lukasz Majewski <l.majewski at samsung.com>
> ---
>  test/dfu/DESCRIPTION.TXT    |   27 ++++++++++++++

This sounds like an important and useful test, but I have a few
comments (coming from someone with little knowledge of dfu)

Would README be a better name?

>  test/dfu/dfu_gadget_test.sh |   86 +++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 113 insertions(+)
>  create mode 100644 test/dfu/DESCRIPTION.TXT
>  create mode 100755 test/dfu/dfu_gadget_test.sh
>
> diff --git a/test/dfu/DESCRIPTION.TXT b/test/dfu/DESCRIPTION.TXT
> new file mode 100644
> index 0000000..48da06b
> --- /dev/null
> +++ b/test/dfu/DESCRIPTION.TXT
> @@ -0,0 +1,27 @@
> +DFU TEST CASE DESCRIPTION:
> +
> +For running test script one needs to create:
> +./log and ./bkp
> +
> +One also need to generate with dd following files:
> +
> +dat_*
> +
> +(e.g. dat_127B.img  dat_128B.img  dat_129B.img  dat_33M.img  dat_4095B.img
> +dat_4096B.img  dat_4097B.img  dat_63B.img  dat_64B.img  dat_65B.img
> +dat_960.img  dat_97M.img)

How do you do that? Is this intended for use with a particular board?
I think you are missing some info here.

> +
> +The size is only important (so if=/dev/urandom), especially corner cases of
> +DFU EP0's size of packet (64B). This is very helpful for fixing UDC driver
> +regressions.
> +
> +Moreover on a target device the "dfu_alt_info" env variable should be extended
> +to have "dfu_test.bin fat 0 6;" \ entry [1].

What is [1] ?

> +One can use fat, ext4 or any other supported file system.
> +
> +As a prerequisite one must also create proper partition with file system on it.
> +
> +Example usage:
> +./dfu_gadget_test.sh 11
> +
> +where 11 is the mumber of alt setting corresponding to entry [1].
> \ No newline at end of file

I'm really none-the-wiser as to how this works - I think you need to
add a bit more detail.

> diff --git a/test/dfu/dfu_gadget_test.sh b/test/dfu/dfu_gadget_test.sh
> new file mode 100755
> index 0000000..ebde2ff
> --- /dev/null
> +++ b/test/dfu/dfu_gadget_test.sh
> @@ -0,0 +1,86 @@
> +#! /bin/bash
> +set -e # any command return not equal to zero
> +clear
> +
> +DIR=./
> +SUFFIX=img
> +RCV_DIR=rcv/
> +LOG_FILE=./log/log-`date +%d-%m-%Y_%H-%M-%S`
> +
> +cleanup () {
> +    rm -rf $RCV_DIR
> +}
> +
> +die () {
> +       printf "   \33[31m FAILED \33[0m \n"

Perhaps define $RED or whatever at the top and use those here?

> +       cleanup
> +       exit 1
> +}
> +
> +calculate_md5sum () {
> +    MD5SUM=`md5sum $1`
> +    MD5SUM=`echo $MD5SUM | cut -d ' ' -f1`
> +    echo "md5sum:"$MD5SUM
> +}
> +
> +dfu_test_file () {

I suggest putting the argument in a variable here, instead of using $1
throughout the function.

> +    printf "\33[32m========================================================================================= \33[0m\n"
> +    printf "File:\33[32m %s \33[0m\n" $1
> +
> +    # dfu-util -D $1 -a $TARGET_ALT_SETTING > /dev/null 2>&1

Remove this line?

> +    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 > /dev/null 2>&1

And again

> +    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 "   \33[32m -------> OK \33[0m \n"
> +       else

outdent

> +       printf "   \33[31m -------> FAILED \33[0m \n"
> +       cleanup
> +       exit 1
> +    fi
> +
> +#    echo $N_FILE
> +}
> +
> +printf "\33[32m========================================================================================= \33[0m\n"
> +echo "DFU EP0 transmission test program"
> +echo "Trouble shoot -> disable DBG (even the KERN_DEBUG) in the UDC driver"
> +echo "@ -> TRATS # dfu mmc 0"
> +mkdir -p $RCV_DIR
> +touch $LOG_FILE
> +
> +if [ $# -eq 0 ]
> +then
> +       printf "   \33[31m Please pass alt setting number!!  \33[0m \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
> \ No newline at end of file

Why not?

> --
> 1.7.10.4
>

Regards,
Simon


More information about the U-Boot mailing list