[petsc-dev] every test example runs in a new directory with new test harness

Satish Balay balay at mcs.anl.gov
Mon Feb 6 09:42:44 CST 2017


I just tried it - and it doesn't appear to work..

Should the keyword for 'subtest' be different than 'test:'?

Satish

-----------------------------------------------------
balay at asterix /home/balay/petsc (next *=)
$ git diff|cat
diff --git a/src/snes/examples/tutorials/ex12.c b/src/snes/examples/tutorials/ex12.c
index 71166bf..c097018 100644
--- a/src/snes/examples/tutorials/ex12.c
+++ b/src/snes/examples/tutorials/ex12.c
@@ -1168,10 +1168,8 @@ int main(int argc, char **argv)
     suffix: restart_0
     requires: hdf5
     args: -run_type test -refinement_limit 0.0    -bc_type dirichlet -interpolate 1 -petscspace_order 1 -dm_view hdf5:sol.h5 -vec_view hdf5:sol.h5::append
-  test:
-    suffix: restart_1
-    requires: hdf5
-    args: -run_type test -refinement_limit 0.0    -bc_type dirichlet -interpolate 1 -petscspace_order 1 -f sol.h5 -restart
+    test:
+      args: -run_type test -refinement_limit 0.0    -bc_type dirichlet -interpolate 1 -petscspace_order 1 -f sol.h5 -restart
   # Periodicity
   test:
     suffix: periodic_0
balay at asterix /home/balay/petsc (next *=)
$ ./config/gmakegentest.py 
balay at asterix /home/balay/petsc (next *=)
$ cat arch-next/tests/src/snes/examples/tutorials/runex12_restart_0.sh 
#!/usr/bin/env bash
# This script was created by gmakegentest.py

# PATH for DLLs on windows
PATH="$PATH":"/home/balay/petsc/arch-next/lib"

mpiexec='mpiexec'
exec='../ex12'
testname='runex12_restart_0'
label='snes_tutorials-ex12_restart_0'
runfiles=''
wPETSC_DIR='/home/balay/petsc'
petsc_dir='/home/balay/petsc'
args='-run_type test -refinement_limit 0.0    -bc_type dirichlet -interpolate 1 -petscspace_order 1 -dm_view hdf5:sol.h5 -vec_view hdf5:sol.h5::append'

. "${petsc_dir}/config/petsc_harness.sh"

# The diff flags come from script arguments
diff_exe="${petsc_dir}/bin/petscdiff ${diff_flags}"


printf "ok ${label} # SKIP PETSC_HAVE_HDF5 requirement not met\n"
total=1; skip=1
petsc_testend "/home/balay/petsc/arch-next/tests" 
exit


petsc_testrun "${mpiexec} -n 1 ${exec} ${args}" ex12_restart_0.tmp ${testname}.err "${label}" ''

petsc_testrun "${diff_exe} /home/balay/petsc/src/snes/examples/tutorials/output/ex12_restart_0.out ex12_restart_0.tmp" diff-${testname}.out diff-${testname}.out diff-${label} ""

petsc_testend "/home/balay/petsc/arch-next/tests" 
balay at asterix /home/balay/petsc (next *=)
$ 


On Mon, 6 Feb 2017, Scott Kruger wrote:

> 
> The basic idea of running multiple commands within a single shell
> script was what I called a subtest (for lack of a better word).
> So:
> 
> 
>  test:
>     suffix: restart
>     requires: hdf5
>     args: -run_type test -refinement_limit 0.0    -bc_type dirichlet 
> -interpolate 1 -petscspace_order 1
>     test:
>         args: -dm_view hdf5:sol.h5 -vec_view hdf5:sol.h5::append
>     test:
>         args: -f sol.h5 -restart
> 
> The args in the subtest inherit from the parent test.  This seems
> to be generally useful as a testing idiom in petsc tests as this
> example nicely shows.
> 
> Each mpiexec would be tested separately and reported separately.
> This would give you want you want, and should work as is.
> 
> 
> Tobin pointed out that I broke the for loops and some of the subtest
> functionality in some of the other feature implementations.  We
> have come to consensus (right, Tobin?) on the
> desired functionality and implementation.  A pull request
> is planned this week.  It doesn't affect this directly, but
> should have some minor improvements (like in the reporting).
> 
> Scott
> 
> 
> On 2/6/17 7:10 AM, Matthew Knepley wrote:
> > On Mon, Feb 6, 2017 at 1:05 AM, Jed Brown <jed at jedbrown.org
> > <mailto:jed at jedbrown.org>> wrote:
> >
> >     Barry Smith <bsmith at mcs.anl.gov <mailto:bsmith at mcs.anl.gov>> writes:
> >
> > >   test:
> > >     suffix: restart_0
> > >     requires: hdf5
> > >     args: -run_type test -refinement_limit 0.0    -bc_type dirichlet
> > >     -interpolate 1 -petscspace_order 1 -dm_view hdf5:sol.h5 -vec_view
> > >     hdf5:sol.h5::append
> > >
> > >   test:
> > >     suffix: restart_1
> > >     requires: hdf5
> > >     args: -run_type test -refinement_limit 0.0    -bc_type dirichlet
> > >     -interpolate 1 -petscspace_order 1 -f sol.h5 -restart
> > >
> > > See a problem?
> > >
> > > Should the same run of the example view the files and then load them back
> > > in? versus trying to read in a data file from another run that may not
> > > even have been created before and even if it was, the file was definitely
> > > created  in a different directory?
> >
> >     So if write only is broken, do you want both to fail?  I think it's
> >     better to read and write separately, with comparison using h5diff, since
> >     that independently tests read vs write and establishes backward
> >     compatibility, which you'd really like the test system to make you deal
> >     with explicitly.
> >
> >
> > I know the test is broken, but I did already mail the list about this
> > and was waiting for an answer
> > to be worked out.
> >
> > I agree with Satish that running two commands would be great. I could
> > rewrite the example to
> > both write and load it, but it would complicate it. Also, I am trying to
> > get the pattern I expect the
> > user to follow for checkpointing.
> >
> >    Matt
> >
> > --
> > What most experimenters take for granted before they begin their
> > experiments is infinitely more interesting than any results to which
> > their experiments lead.
> > -- Norbert Wiener
> 
> 




More information about the petsc-dev mailing list