[LTP] [PATCH v3] runltp: add -R option for randomize test order
Zorro Lang
zlang@redhat.com
Sun Sep 25 15:47:01 CEST 2016
On Sun, Sep 25, 2016 at 05:38:07PM +0800, Li Wang wrote:
> On Sat, Sep 24, 2016 at 8:35 PM, Zorro Lang <zlang@redhat.com> wrote:
> > Generally we write test entries into runtests/${testfile}, then
> > runltp reads and runs lines sequentially everytime, nearly no one
> > will change the test order.
> >
> > Recently we find bugs by change the test order,different test
> > combination maybe find more bugs. So I add this new option -R to
> > randomize test order.
> >
> > Signed-off-by: Zorro Lang <zlang@redhat.com>
> > ---
> >
> > V2 use 'sort -R' to instead of 'randlines.awk'.
> > V3 remove change log and someone useless comment
> >
> > Thanks,
> > Zorro
> >
> > runltp | 11 ++++++++++-
> > 1 file changed, 10 insertions(+), 1 deletion(-)
> >
> > diff --git a/runltp b/runltp
> > index bb2e5d8..33e23ab 100755
> > --- a/runltp
> > +++ b/runltp
> > @@ -153,6 +153,7 @@ usage()
> > -p Human readable format logfiles.
> > -q Print less verbose output to screen.
> > -r LTPROOT Fully qualified path where testsuite is installed.
> > + -R Randomize test order.
> > -s PATTERN Only run test cases which match PATTERN.
> > -S SKIPFILE Skip tests specified in SKIPFILE
> > -t DURATION Execute the testsuite for given duration. Examples:
> > @@ -213,12 +214,13 @@ main()
> > local EMAIL_TO=""
> > local TAG_RESTRICT_STRING=""
> > local PAN_COMMAND=""
> > + local RANDOMRUN=0
> > local DEFAULT_FILE_NAME_GENERATION_TIME=`date +"%Y_%m_%d-%Hh_%Mm_%Ss"`
> > local scenfile=
> >
> > version_date=$(cat "$LTPROOT/Version")
> >
> > - while getopts a:c:C:T:d:D:f:F:ehi:I:K:g:l:m:M:Nno:pqr:s:S:t:T:w:x:b:B:z:Z: arg
> > + while getopts a:c:C:T:d:D:f:F:ehi:I:K:g:l:m:M:Nno:pqr:Rs:S:t:T:w:x:b:B:z:Z: arg
> > do case $arg in
> > a) EMAIL_TO=$OPTARG
> > ALT_EMAIL_OUT=1;;
> > @@ -410,6 +412,8 @@ main()
> >
> > r) LTPROOT=$OPTARG;;
> >
> > + R) RANDOMRUN=1;;
> > +
> > s) TAG_RESTRICT_STRING=$OPTARG;;
> >
> > S) case $OPTARG in
> > @@ -740,6 +744,11 @@ main()
> > done
> > fi
> >
> > + if [ "$RANDOMRUN" != "0" ]; then
> > + sort -R ${TMP}/alltests > ${TMP}/alltests.temp
> > + cat ${TMP}/alltests.temp > ${TMP}/alltests
>
> How about combine them in one line?
>
> shuf ${TMP}/alltests -o ${TMP}/alltests
> or,
> sort -R ${TMP}/alltests -o ${TMP}/alltests
Thanks Li:)
Hm, it works, even works for large file (>pagesize). I thought it maybe make
mistake if read and rewrite same file at same time when I sent this patch.
Now I just read the code of sort.c, it'll read the file into buffer and temp
file at first, then close the fopen(r) file and go to fopen(w) the file:
if (buf.eof && !nfiles && !ntemps && !buf.left)
{
xfclose (fp, file);
tfp = xfopen (output_file, "w");
...
...
So it looks safe to read and write the same file together ... But I don't know
if it worth changing this patch (the old way looks safer:). Can maintainers
choose a favorite way?
Thanks,
Zorro
>
> > + fi
> > +
> > [ ! -z "$QUIET_MODE" ] && { echo "INFO: Test start time: $(date)" ; }
> > PAN_COMMAND="${LTPROOT}/bin/ltp-pan $QUIET_MODE -e -S $INSTANCES $DURATION -a $$ \
> > -n $$ $PRETTY_PRT -f ${TMP}/alltests $LOGFILE $OUTPUTFILE $FAILCMDFILE $TCONFCMDFILE"
> > --
> > 2.7.4
> >
> >
> > --
> > Mailing list info: https://lists.linux.it/listinfo/ltp
>
>
>
> --
> Regards,
> Li Wang
> Email: liwang@redhat.com
More information about the ltp
mailing list