public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Lukasz Majewski <l.majewski@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] test:dfu: Add test script for testing DFU regression
Date: Mon, 26 May 2014 08:20:31 +0200	[thread overview]
Message-ID: <20140526082031.3ea5974d@amdc2363> (raw)
In-Reply-To: <CAPnjgZ3tO9o9gRdc6mHMOzyB0fT5vuP3f7BCxuJLaqgBOOLYEA@mail.gmail.com>

Hi Simon,

> Hi Lukasz,
> 
> On 22 May 2014 00:43, Lukasz Majewski <l.majewski@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@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?

I think it will be better.

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

I generate them with using dd if=/dev/urandom of=/dev/null bs=XX
count=YY

Generation of those test images can be easily scripted.

> Is this intended for use with a particular board?

No. Those values shall be applicable to all boards which use DFU. For
example, since DFU uses the 64B as packet size, it is important to test
+1/-1 size. With those tests one can also test UDC driver for
regression.

Other file sizes (like 33MiB or 97MiB) are picked randomly to check if
transferring large or very large files work.

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

[1] is the entry: "dfu_test.bin fat 0 6;", which should be added to the
"dfu_alt_info" environment variable to define one special alt setting
for testing purposes. 

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

Ok. 

In short - the parameter which the script ./dfu_gadget_test.sh accepts
is 11 (therefore we must type ./dfu_gadget_test.sh 11

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

Good point, thanks.

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

OK.

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

Yes, agree. This line seems like a remain after testing.

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

OK.

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

OK.

> 
> > --
> > 1.7.10.4
> >
> 
> Regards,
> Simon



-- 
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group

  reply	other threads:[~2014-05-26  6:20 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-22 10:43 [U-Boot] [PATCH] test:dfu: Add test script for testing DFU regression Lukasz Majewski
2014-05-24  0:51 ` Simon Glass
2014-05-26  6:20   ` Lukasz Majewski [this message]
2014-05-29 15:58   ` Stephen Warren
2014-05-29 23:41     ` Simon Glass
2014-05-30  7:13       ` Lukasz Majewski
2014-06-03  9:54 ` [U-Boot] [PATCH v2] test:dfu: Add test scripts " Lukasz Majewski
2014-06-06 21:08   ` Simon Glass
2014-06-12  9:00     ` Lukasz Majewski
2014-06-12 13:34       ` Simon Glass
2014-06-17 10:09     ` Lukasz Majewski
2014-06-18  9:38 ` [U-Boot] [PATCH v3] " Lukasz Majewski
2014-06-20  7:48   ` Lukasz Majewski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140526082031.3ea5974d@amdc2363 \
    --to=l.majewski@samsung.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox