diff mbox

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

Message ID 1401789252-4490-1-git-send-email-l.majewski@samsung.com
State Superseded
Delegated to: Marek Vasut
Headers show

Commit Message

Łukasz Majewski June 3, 2014, 9:54 a.m. UTC
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>
---
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
---
 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

Comments

Simon Glass June 6, 2014, 9:08 p.m. UTC | #1
Hi Lukasz,

On 3 June 2014 03:54, Lukasz Majewski <l.majewski@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@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
Łukasz Majewski June 12, 2014, 9 a.m. UTC | #2
Hi Simon,

> Hi Lukasz,
> 
> On 3 June 2014 03:54, Lukasz Majewski <l.majewski@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@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.

This script is run on the host. Could you be more specific.

> 
> > +
> > +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?

I think that I might overlooked it.

> 
> > +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
Simon Glass June 12, 2014, 1:34 p.m. UTC | #3
Hi Lukasz,

On 12 June 2014 05:00, Lukasz Majewski <l.majewski@samsung.com> wrote:
[snip]

>> > +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.
>
> This script is run on the host. Could you be more specific.

I just mean that you should spell it COLOUR, not COLOR as COLOUR is
the spelling that U-Boot uses, so far as I understand it.

Regards,
Simon
Łukasz Majewski June 17, 2014, 10:09 a.m. UTC | #4
Hi Simon,

> Hi Lukasz,
> 
> On 3 June 2014 03:54, Lukasz Majewski <l.majewski@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@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.

Ok, I will change the spelling from COLOR to COLOUR.

> 
> > +
> > +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?

$2 is for the case when one wants to test a particular file. I will add
this to the patch description.

> 
> > +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.

This script (dfu_gadget_test_init.sh) at [1] checks if file which it
intends to create already exists.

Is this the behaviour which you would like to see in this script?

> 
> > @@ -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
		^^^^^^^^^^ [1]

> > +       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
diff mbox

Patch

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"
+
+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
+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
@@ -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