X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/03e52d7a3c1348355883d168067af8b479f317a3..HEAD:/teshsuite/smpi/mpich3-test/runtests diff --git a/teshsuite/smpi/mpich3-test/runtests b/teshsuite/smpi/mpich3-test/runtests index e47588c7c3..f58c0245c0 100755 --- a/teshsuite/smpi/mpich3-test/runtests +++ b/teshsuite/smpi/mpich3-test/runtests @@ -1,4 +1,4 @@ -#! /usr/bin/perl +#! /usr/bin/env perl # -*- Mode: perl; -*- # # This script is the beginnings of a script to run a sequence of test @@ -40,9 +40,11 @@ use File::Path; # Global variables -$MPIMajorVersion = "1"; +$MPIMajorVersion = "3"; $MPIMinorVersion = "1"; $mpiexec = "smpirun"; # Name of mpiexec program (including path, if necessary) +$platformfile = "../../../../examples/platforms/small_platform_with_routers.xml"; +$hostfile = "../../hostfile_mpich"; $testIsStrict = "true"; $MPIhasMPIX = "no"; $np_arg = "-np"; # Name of argument to specify the number of processes @@ -72,6 +74,9 @@ $testCount = 0; # Used with batchRun to count tests. $batrundir = "."; # Set to the directory into which to run the examples $execarg=""; +$wrapparg=""; + +$enabled_privatization = 1; # disable tests that need SMPI privatization to run # TAP (Test Anything Protocol) output my $tapoutput = 0; my $tapfile = ''; @@ -153,8 +158,10 @@ foreach $_ (@ARGV) { elsif (/--?np=(.*)/) { $np_default = $1; } elsif (/--?maxnp=(.*)/) { $np_max = $1; } elsif (/--?tests=(.*)/) { $listfiles = $1; } + elsif (/--?platformfile=(.*)/) { $platformfile = $1; } + elsif (/--?hostfile=(.*)/) { $hostfile = $1; } elsif (/--?srcdir=(.*)/) { $srcdir = $1; - $mpiexec="$mpiexec -platform ${srcdir}/../../../../examples/platforms/small_platform_with_routers.xml -hostfile ${srcdir}/../hostfile --log=root.thr:critical --cfg=smpi/running_power:1e9"; } + $mpiexec="$mpiexec -platform ${srcdir}/$platformfile -hostfile ${srcdir}/$hostfile --log=root.thr:critical --log=smpi_kernel.thr:warning --cfg=smpi/host-speed:1e9f --cfg=smpi/async-small-thresh:65536 --cfg=smpi/os:1:0.0000003:0.0000002 --cfg=smpi/ois:1:0.0000003:0.0000002"; } elsif (/--?verbose/) { $verbose = 1; } elsif (/--?showprogress/) { $showProgress = 1; } elsif (/--?debug/) { $debug = 1; } @@ -162,6 +169,12 @@ foreach $_ (@ARGV) { elsif (/--?batchdir=(.*)/) { $batrundir = $1; } elsif (/--?timeoutarg=(.*)/) { $timeoutArgPattern = $1; } elsif (/--?execarg=(.*)/) { $execarg = "$execarg $1"; } + elsif (/--?privatization=(.*)/) { +print STDERR "privatization called\n"; +$enabled_privatization = $1; } + elsif (/--?wrapper=(.*)/) { + $wrapparg = "-wrapper \"$1\"" if $1 ne ""; + } elsif (/--?xmlfile=(.*)/) { $xmlfile = $1; if (! ($xmlfile =~ /^\//)) { @@ -207,14 +220,6 @@ foreach $_ (@ARGV) { # we do not know at this point how many tests will be run, so do # not print a test plan line like "1..450" until the very end } - else { - print STDERR "Unrecognized argument $_\n"; - print STDERR "runtests [-tests=testfile] [-np=nprocesses] \ - [-maxnp=max-nprocesses] [-srcdir=location-of-tests] \ - [-xmlfile=filename ] [-noxmlclose] \ - [-verbose] [-showprogress] [-debug] [-batch]\n"; - exit(1); - } } # Perform any post argument processing @@ -268,6 +273,7 @@ if ($batchRun) { else { if ($err_count) { print "$err_count tests failed out of $total_run\n"; + print "Failing tests : $failed_tests\n"; if ($xmloutput) { print "Details in $xmlfullfile\n"; } @@ -279,6 +285,7 @@ else { print "TAP formatted results in $tapfullfile\n"; } } +exit ($err_count > 0); # # --------------------------------------------------------------------------- # Routines @@ -366,6 +373,7 @@ sub RunList { my $requiresMPIX = ""; my $progEnv = ""; my $mpiVersion = ""; + my $needs_privatization = 0; my $xfail = ""; if ($#args >= 1) { $np = $args[1]; } # Process the key=value arguments @@ -394,6 +402,9 @@ sub RunList { elsif ($key eq "mpiversion") { $mpiVersion = $value; } + elsif ($key eq "needs_privatization") { + $needs_privatization = $value; + } elsif ($key eq "strict") { $requiresStrict = $value } @@ -415,6 +426,13 @@ sub RunList { # skip empty lines if ($programname eq "") { next; } + # if privatization is disabled, and if the test needs it, ignore it + if ($needs_privatization == 1 && + $enabled_privatization != 1) { + SkippedTest($programname, $np, $workdir, "requires SMPI privatization"); + next; + } + if ($np eq "") { $np = $np_default; } if ($np_max > 0 && $np > $np_max) { $np = $np_max; } @@ -602,7 +620,7 @@ sub RunMPIProgram { &$InitForTest(); } print STDOUT "Env includes $progEnv\n" if $verbose; - print STDOUT "$mpiexec $mpiexecArgs $np_arg $np $program_wrapper ./$programname $progArgs\n" if $verbose; + print STDOUT "$mpiexec $wrapparg $mpiexecArgs $np_arg $np $program_wrapper ./$programname $progArgs\n" if $verbose; print STDOUT "." if $showProgress; # Save and restore the environment if necessary before running mpiexec. if ($progEnv ne "") { @@ -616,7 +634,7 @@ sub RunMPIProgram { } } } - open ( MPIOUT, "$mpiexec $np_arg $np $mpiexecArgs $program_wrapper ./$programname $progArgs 2>&1 |" ) || + open ( MPIOUT, "$mpiexec $wrapparg $np_arg $np $mpiexecArgs $program_wrapper ./$programname $progArgs 2>&1 |" ) || die "Could not run ./$programname\n"; if ($progEnv ne "") { %ENV = %saveEnv; @@ -627,7 +645,7 @@ sub RunMPIProgram { } else { if ($verbose) { - $inline = "$mpiexec $np_arg $np $program_wrapper ./$programname\n"; + $inline = "$mpiexec $wrapparg $np_arg $np $program_wrapper ./$programname\n"; } else { $inline = ""; @@ -637,6 +655,13 @@ sub RunMPIProgram { # Skip FORTRAN STOP if (/FORTRAN STOP/) { next; } $inline .= $_; + if (m{^==[0-9]+== ?WARNING: ASan doesn't fully support} || + m{^==[0-9]+== ?WARNING: ASan is ignoring requested __asan_handle_no_return: stack } || + m{^False positive error reports may follow$} || + m{^For details see http://code.google.com/p/address-sanitizer/issues/detail\?id=189$} || + m{^For details see https://github.com/google/sanitizers/issues/189$}) { + next; + } if (/^\s*No [Ee]rrors\s*$/ && $found_noerror == 0) { $found_noerror = 1; } @@ -644,6 +669,8 @@ sub RunMPIProgram { print STDERR "Unexpected output in $programname: $_"; if (!$found_error) { $found_error = 1; + $failed_tests .= $programname; + $failed_tests .= " "; $err_count ++; } } @@ -652,6 +679,8 @@ sub RunMPIProgram { print STDERR "Program $programname exited without No Errors\n"; if (!$found_error) { $found_error = 1; + $failed_tests .= $programname; + $failed_tests .= " "; $err_count ++; } } @@ -667,6 +696,8 @@ sub RunMPIProgram { if ($signal_num != 0) { print STDERR "Program $programname exited with signal $signal_num\n"; } + $failed_tests .= $programname; + $failed_tests .= " "; $found_error = 1; $err_count ++; } @@ -693,7 +724,7 @@ sub AddMPIProgram { if ($ResultTest ne "") { # This test really needs to be run manually, with this test - # Eventually, we can update this to include handleing in checktests. + # Eventually, we can update this to include handling in checktests. print STDERR "Run $curdir/$programname with $np processes and use $ResultTest to check the results\n"; return; }