diff --git a/doc/release_new_version b/doc/release_new_version index b7548d52..8166de46 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -4,7 +4,7 @@ Check that documentation is updated (compare to web): -Fixet for 20170222 +Fixet for 20170322 git diff last-release-commit Unmodified beta since last version => production Unmodified alpha since last version => beta @@ -193,66 +193,20 @@ file:///home/tange/privat/parallel/doc/release_new_version from:tange@gnu.org to:parallel@gnu.org, bug-parallel@gnu.org -Subject: GNU Parallel 20170222 ('13769') released <<[stable]>> +Subject: GNU Parallel 20170322 ('TRAPPIST-1') released <<[stable]>> -GNU Parallel 20170222 ('13769') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/ +GNU Parallel 20170322 ('TRAPPIST-1') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/ <> Haiku of the month: - Alias and vars - export them more easily - With env parallel + <<>> -- Ole Tange New in this release: -* env_parallel now supports /bin/sh, ash, dash. - -* --tee will pipe all data to all jobs. Used with --pipe/--pipepart and :::. Small example: seq 3333 | parallel --pipe --tee --tag 'grep {} | wc -l' ::: {0..9} - -* If --results {replstr} ends in /: save in dir. Otherwise save as file. Example: parallel --results {} echo {} ::: a b c - -* Vote for GNU Parallel's community ads on - http://meta.unix.stackexchange.com/a/4356/2972 - http://meta.askubuntu.com/a/16750/22307 - http://meta.serverfault.com/a/9040/45704 - -* GNU Parallel was cited in: Low-delay forwarding with multiple candidates for VANETs using multi-criteria decision making http://ieeexplore.ieee.org/document/7835961/ - -* GNU Parallel was cited in: An Integrated Simulator and Dataset that Combines Grasping and Vision for Deep Learning https://arxiv.org/pdf/1702.02103.pdf - -* GNU Parallel was cited in: A Bayesian model selection approach for identifying differentially expressed transcripts from RNA sequencing data http://onlinelibrary.wiley.com/doi/10.1111/rssc.12213/full - -* GNU Parallel was cited in: The impact of copy number variation on gout, and the apple genome https://ourarchive.otago.ac.nz/bitstream/handle/10523/7060/BoocockJames2016MSc.pdf?sequence=3 - -* GNU Parallel was cited in: Determination of crystal structures of proteins of unknown identity using a marathon molecular replacement procedure: structure of Stenotrophomonas maltophilia phosphate-binding protein https://www.researchgate.net/publication/308186413_Determination_of_crystal_structures_of_proteins_of_unknown_identity_using_a_marathon_molecular_replacement_procedure_Structure_of_Stenotrophomonas_maltophilia_phosphate-binding_protein - -* GNU Parallel was cited in: Reaction rates for reaction-diffusion kinetics on unstructured meshes http://aip.scitation.org/doi/10.1063/1.4975167 - -* GNU Parallel was cited in: Modeling prediction error improves power of transcriptome-wide association studies http://biorxiv.org/content/biorxiv/early/2017/02/14/108316.full.pdf - -* GNU Parallel was cited in: Proper experimental design requires randomization/balancing of molecular ecology experiments http://biorxiv.org/content/biorxiv/early/2017/02/17/109280.full.pdf - -* GNU Parallel was cited in: Experiment-based thermal micromagnetic simulations of the magnetization reversal for ns-range clocked nanomagnetic logic http://aip.scitation.org/doi/full/10.1063/1.4974021 - -* GNU Parallel was cited in: The University of Edinburgh’s systems submission to the MT task at IWSLT http://workshop2016.iwslt.org/downloads/IWSLT_2016_paper_27.pdf - -* Fast-GBS uses GNU Parallel: https://bitbucket.org/jerlar73/fast-gbs - -* Job: DevOps Engineer/Senior Systems Administrator in New York, New York http://rockefeller.jobs/new-york-ny/devops-engineersenior-systems-administrator/2DB3408EAC9E4617AD238550F31C7641/job/ - -* Training in GNU Parallel: https://www.carc.unm.edu/education-outreach/workshops--training/ - -* Training in GNU Parallel: http://www.hpc.lsu.edu/training/registration.php?topic=Parallel%20Serial%20Jobs%20Using%20GNU%20Parallel&date=February%2022,%202017&time=9:00%20AM%20-%2011:00%20AM&place=307%20Frey&deadline=2017-02-21%2016:30:00 - -* Batch Convert Images from PNG to JPEG http://coreygoldberg.blogspot.dk/2017/02/batch-convert-images-from-png-to-jpeg.html - -* Accelerating Oxford Nanopore Basecalling http://fowlerlab.org/2017/01/26/accelerating-oxford-nanopore-basecalling/ - -* parallel и imagemagick в loop на bash https://www.linux.org.ru/forum/development/13190247 - +http://garf.us/2017/02/stig-sandbeck-mathisen-change-all-the-passwords-again/ * <> diff --git a/src/niceload b/src/niceload index e04e1538..243a59ce 100755 --- a/src/niceload +++ b/src/niceload @@ -24,7 +24,7 @@ use strict; use Getopt::Long; $Global::progname="niceload"; -$Global::version = 20170222; +$Global::version = 20170223; Getopt::Long::Configure("bundling","require_order"); get_options_from_array(\@ARGV) || die_usage(); if($opt::version) { diff --git a/src/parallel b/src/parallel index 370f1625..996b747f 100755 --- a/src/parallel +++ b/src/parallel @@ -1361,7 +1361,7 @@ sub check_invalid_option_combinations { sub init_globals { # Defaults: - $Global::version = 20170222; + $Global::version = 20170223; $Global::progname = 'parallel'; $Global::infinity = 2**31; $Global::debug = 0; @@ -7168,29 +7168,6 @@ sub wrapped { $command = "/bin/echo " . ::shell_quote_scalar(::shell_quote_scalar($command)); } - if($opt::cat) { - # In '--cat' and '--fifo' {} == $PARALLEL_TMP. - # This is to make it possible to compute $PARALLEL_TMP on - # the fly when running remotely. - # $ENV{PARALLEL_TMP} is set in the remote wrapper before - # the command is run. - # - # Prepend 'cat > $PARALLEL_TMP;' - # Append 'unlink $PARALLEL_TMP without affecting $?' - $command = - 'cat > $PARALLEL_TMP;'. - $command.";". postpone_exit_and_cleanup(). - '$PARALLEL_TMP'; - } elsif($opt::fifo) { - # Prepend 'mkfifo {}; (' - # Append ') & cat > {}; wait; ' - # Append 'unlink {} without affecting $?' - $command = fifo_wrap(). " ". - $Global::shell. " ". - ::shell_quote_scalar($command). - ' $PARALLEL_TMP'. - ';'; - } if($ENV{'PARALLEL_ENV'}) { if(-e $ENV{'PARALLEL_ENV'}) { # This is a file/fifo: Replace envvar with content of file @@ -7212,6 +7189,33 @@ sub wrapped { $command = $ENV{'PARALLEL_ENV'}."\n".$command; } } + if($opt::cat) { + # In '--cat' and '--fifo' {} == $PARALLEL_TMP. + # This is to make it possible to compute $PARALLEL_TMP on + # the fly when running remotely. + # $ENV{PARALLEL_TMP} is set in the remote wrapper before + # the command is run. + # + # Prepend 'cat > $PARALLEL_TMP;' + # Append 'unlink $PARALLEL_TMP without affecting $?' + $command = + 'cat > $PARALLEL_TMP;'. + $command.";". postpone_exit_and_cleanup(). + '$PARALLEL_TMP'; + } elsif($opt::fifo) { + # Prepend fifo-wrapper. In essence: + # mkfifo {} + # ( $command ) & + # # $command must read {}, otherwise this 'cat' will block + # cat > {}; + # wait; rm {} + # without affecting $? + $command = fifo_wrap(). " ". + $Global::shell. " ". + ::shell_quote_scalar($command). + ' $PARALLEL_TMP'. + ';'; + } # Wrap with ssh + tranferring of files $command = $self->sshlogin_wrap($command); if(@Global::cat_prepends) { diff --git a/src/parallel.pod b/src/parallel.pod index e9e3cf5f..99b994bf 100644 --- a/src/parallel.pod +++ b/src/parallel.pod @@ -640,7 +640,7 @@ If I is omitted, there is no end of file string. If neither B<-E> nor B<-e> is used, no end of file string is used. -=item B<--env> I (beta testing) +=item B<--env> I Copy environment variable I. This will copy I to the environment that the command is run in. This is especially useful for @@ -1460,9 +1460,9 @@ it to the command. Only used with B<--pipe>. -=item B<--results> I (alpha testing) +=item B<--results> I (beta testing) -=item B<--res> I (alpha testing) +=item B<--res> I (beta testing) Save the output into files. @@ -1943,7 +1943,7 @@ when called with B<--shebang>). Use B<--sqlmaster> instead. -=item B<--sqlmaster> I (beta testing) +=item B<--sqlmaster> I Submit jobs via SQL server. I must point to a table, which will contain the same information as B<--joblog>, the values from the input @@ -1982,12 +1982,12 @@ It can also be an alias from ~/.sql/aliases: :myalias mysql:///mydb/paralleljobs -=item B<--sqlandworker> I (beta testing) +=item B<--sqlandworker> I Shorthand for: B<--sqlmaster> I B<--sqlworker> I. -=item B<--sqlworker> I (beta testing) +=item B<--sqlworker> I Execute jobs via SQL server. Read the input sources variables from the table pointed to by I. The I on the command line @@ -2208,13 +2208,13 @@ different dir for the files. Setting B<--tmpdir> is equivalent to setting $TMPDIR. -=item B<--tmux> (beta testing) +=item B<--tmux> Use B for output. Start a B session and run each job in a window in that session. No other output will be produced. -=item B<--tmuxpane> (beta testing) +=item B<--tmuxpane> Use B for output but put output into panes in the first window. Useful if you want to monitor the progress of less than 100 concurrent diff --git a/src/parallel_design.pod b/src/parallel_design.pod index 69a81a75..0418849c 100644 --- a/src/parallel_design.pod +++ b/src/parallel_design.pod @@ -397,6 +397,12 @@ The ordering of the wrapping is important: =item * +$PARALLEL_ENV which is set in env_parallel.* must be prepended to the +command first, as the command may contain exported variables or +functions. + +=item * + B<--nice>/B<--cat>/B<--fifo> should be done on the remote machine =item * diff --git a/src/sql b/src/sql index 8c91127c..b3c64f8e 100755 --- a/src/sql +++ b/src/sql @@ -576,7 +576,7 @@ $Global::Initfile && unlink $Global::Initfile; exit ($err); sub parse_options { - $Global::version = 20170222; + $Global::version = 20170223; $Global::progname = 'sql'; # This must be done first as this may exec myself diff --git a/testsuite/tests-to-run/parallel-local-10s.sh b/testsuite/tests-to-run/parallel-local-10s.sh index c3950834..2bf6db6e 100644 --- a/testsuite/tests-to-run/parallel-local-10s.sh +++ b/testsuite/tests-to-run/parallel-local-10s.sh @@ -61,20 +61,6 @@ par_pipepart_spawn() { grep 1:local | perl -pe 's/\d\d\d/999/g' } -par_testhalt() { - testhalt() { - echo '### testhalt --halt '$1; - (yes 0 | head -n 10; seq 10) | stdout parallel -kj4 --halt $1 'sleep {= $_=$_*0.3+1 =}; exit {}'; echo $?; - (seq 10; yes 0 | head -n 10) | stdout parallel -kj4 --halt $1 'sleep {= $_=$_*0.3+1 =}; exit {}'; echo $?; - }; - export -f testhalt; - - stdout parallel -kj0 testhalt {1},{2}={3} \ - ::: now soon ::: fail success ::: 0 1 2 30% 70% | - # Remove lines that only show up now and then - perl -ne '/Starting no more jobs./ or print' -} - par_halt_on_error() { mytest() { HALT=$1 diff --git a/testsuite/tests-to-run/parallel-local-30s.sh b/testsuite/tests-to-run/parallel-local-30s.sh index e07bc0c5..613c1f6c 100755 --- a/testsuite/tests-to-run/parallel-local-30s.sh +++ b/testsuite/tests-to-run/parallel-local-30s.sh @@ -4,6 +4,23 @@ # Each should be taking 30-100s and be possible to run in parallel # I.e.: No race conditions, no logins +par_testhalt() { + testhalt() { + echo '### testhalt --halt '$1; + # Append "00$_" so we can see the original value + (yes 0 | head -n 10; seq 10) | + stdout parallel -kj4 --halt $1 'sleep {= $_=0.2*($_+1+seq()) =}; exit {}'; echo $?; + (seq 10; yes 0 | head -n 10) | + stdout parallel -kj4 --halt $1 'sleep {= $_=0.2*($_+1+seq()) =}; exit {}'; echo $?; + }; + export -f testhalt; + + stdout parallel -kj0 testhalt {1},{2}={3} \ + ::: now soon ::: fail success ::: 0 1 2 30% 70% | + # Remove lines that only show up now and then + perl -ne '/Starting no more jobs./ or print' +} + par_race_condition1() { echo '### Test race condition on 8 CPU (my laptop)' seq 1 5000000 > /tmp/parallel_race_cond @@ -30,8 +47,8 @@ par_memory_leak() { } export -f a_run echo "### Test for memory leaks" - echo "Of 30 runs of 1 job at least one should be bigger than a 3000 job run" - small_max=$(seq 30 | parallel a_run 1 | jq -s max) + echo "Of 100 runs of 1 job at least one should be bigger than a 3000 job run" + small_max=$(seq 100 | parallel a_run 1 | jq -s max) big=$(a_run 3000) if [ $small_max -lt $big ] ; then echo "Bad: Memleak likely." diff --git a/testsuite/tests-to-run/parallel-local-ssh2.sh b/testsuite/tests-to-run/parallel-local-ssh2.sh index a4213264..2b2f0bfc 100644 --- a/testsuite/tests-to-run/parallel-local-ssh2.sh +++ b/testsuite/tests-to-run/parallel-local-ssh2.sh @@ -4,47 +4,81 @@ chmod 777 "$TMPDIR" 2>/dev/null cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | stdout parallel -vj300% --retries 3 -k --joblog /tmp/jl-`basename $0` -L1 -echo "### bug #43518: GNU Parallel doesn't obey servers' jobs capacity when an ssh login file is reloaded" - # Pre-20141106 Would reset the number of jobs run on all sshlogin if --slf changed - # Thus must take at least 25 sec to run - echo -e '1/lo\n1/csh@lo\n1/tcsh@lo\n1/parallel@lo\n' > /tmp/parallel.bug43518; - parallel --delay 0.1 -N0 echo 1/: '>>' /tmp/parallel.bug43518 ::: {1..100} & - seq 30 | stdout /usr/bin/time -f %e parallel --slf /tmp/parallel.bug43518 'sleep {=$_=$_%3?0:10=}.{%}' | - perl -ne '$_ > 25 and print "OK\n"'; - rm /tmp/parallel.bug43518 - -echo '### --filter-hosts --slf <()' - parallel --nonall --filter-hosts --slf <(echo localhost) echo OK - -echo '### --wd no-such-dir - csh' - stdout parallel --wd /no-such-dir -S csh@localhost echo ::: "ERROR IF PRINTED"; echo Exit code $? -echo '### --wd no-such-dir - tcsh' - stdout parallel --wd /no-such-dir -S tcsh@localhost echo ::: "ERROR IF PRINTED"; echo Exit code $? -echo '### --wd no-such-dir - bash' - stdout parallel --wd /no-such-dir -S parallel@localhost echo ::: "ERROR IF PRINTED"; echo Exit code $? - -echo '### bug #42725: csh with \n in variables' - not_csh() { echo This is not csh/tcsh; }; - export -f not_csh; - parallel --env not_csh -S csh@lo not_csh ::: 1; - parallel --env not_csh -S tcsh@lo not_csh ::: 1; - parallel --env not_csh -S parallel@lo not_csh ::: 1 - -echo '### bug #42999: --pipepart with remote does not work' - seq 100 > /tmp/bug42999; chmod 600 /tmp/bug42999; - parallel --sshdelay 0.3 --pipepart --block 31 -a /tmp/bug42999 -k -S parallel@lo wc; - parallel --sshdelay 0.2 --pipepart --block 31 -a /tmp/bug42999 -k --fifo -S parallel@lo wc | perl -pe 's:(/tmp\S+par)\S+:${1}XXXXX:' ; - parallel --sshdelay 0.1 --pipepart --block 31 -a /tmp/bug42999 -k --cat -S parallel@lo wc | perl -pe 's:(/tmp\S+par)\S+:${1}XXXXX:' ; - rm /tmp/bug42999 - -echo '### --cat gives incorrect exit value in csh' - echo false | parallel --pipe --cat -Scsh@lo 'cat {}; false' ; echo $?; - echo false | parallel --pipe --cat -Stcsh@lo 'cat {}; false' ; echo $?; - echo true | parallel --pipe --cat -Scsh@lo 'cat {}; true' ; echo $?; - echo true | parallel --pipe --cat -Stcsh@lo 'cat {}; true' ; echo $?; - -echo '### --cat and --fifo exit value in bash' - echo true | parallel --pipe --fifo -Slo 'cat {}; true' ; echo $?; - echo false | parallel --pipe --fifo -Slo 'cat {}; false' ; echo $?; EOF + +par_obey_servers_capacity_slf_reload() { + echo "### bug #43518: GNU Parallel doesn't obey servers' jobs capacity when an ssh login file is reloaded" + # Pre-20141106 Would reset the number of jobs run on all sshlogin if --slf changed + # Thus must take at least 25 sec to run + echo -e '1/lo\n1/csh@lo\n1/tcsh@lo\n1/parallel@lo\n' > /tmp/parallel.bug43518; + parallel --delay 0.1 -N0 echo 1/: '>>' /tmp/parallel.bug43518 ::: {1..100} & + seq 30 | stdout /usr/bin/time -f %e parallel --slf /tmp/parallel.bug43518 'sleep {=$_=$_%3?0:10=}.{%}' | + perl -ne '$_ > 25 and print "OK\n"'; + rm /tmp/parallel.bug43518 +} + +par_filter_hosts_slf() { + echo '### --filter-hosts --slf <()' + parallel --nonall --filter-hosts --slf <(echo localhost) echo OK +} + +par_wd_no_such_dir() { + echo '### --wd no-such-dir - csh' + stdout parallel --wd /no-such-dir -S csh@localhost echo ::: "ERROR IF PRINTED" + echo Exit code $? + echo '### --wd no-such-dir - tcsh' + stdout parallel --wd /no-such-dir -S tcsh@localhost echo ::: "ERROR IF PRINTED" + echo Exit code $? + echo '### --wd no-such-dir - bash' + stdout parallel --wd /no-such-dir -S parallel@localhost echo ::: "ERROR IF PRINTED" + echo Exit code $? +} + +par_csh_newline_var() { + echo '### bug #42725: csh with \n in variables' + not_csh() { echo This is not csh/tcsh; }; + export -f not_csh; + parallel --env not_csh -S csh@lo not_csh ::: 1; + parallel --env not_csh -S tcsh@lo not_csh ::: 1; + parallel --env not_csh -S parallel@lo not_csh ::: 1 +} + + +par_pipepart_remote() { + echo '### bug #42999: --pipepart with remote does not work' + seq 100 > /tmp/bug42999; chmod 600 /tmp/bug42999; + parallel --sshdelay 0.3 --pipepart --block 31 -a /tmp/bug42999 -k -S parallel@lo wc; + parallel --sshdelay 0.2 --pipepart --block 31 -a /tmp/bug42999 -k --fifo -S parallel@lo wc | perl -pe 's:(/tmp\S+par)\S+:${1}XXXXX:' ; + parallel --sshdelay 0.1 --pipepart --block 31 -a /tmp/bug42999 -k --cat -S parallel@lo wc | perl -pe 's:(/tmp\S+par)\S+:${1}XXXXX:' ; + rm /tmp/bug42999 +} + +par_cat_incorrect_exit_csh() { + echo '### --cat gives incorrect exit value in csh' + echo false | parallel --pipe --cat -Scsh@lo 'cat {}; false' ; echo $?; + echo false | parallel --pipe --cat -Stcsh@lo 'cat {}; false' ; echo $?; + echo true | parallel --pipe --cat -Scsh@lo 'cat {}; true' ; echo $?; + echo true | parallel --pipe --cat -Stcsh@lo 'cat {}; true' ; echo $?; +} + +par_cat_fifo_exit() { + echo '### --cat and --fifo exit value in bash' + echo true | parallel --pipe --fifo -Slo 'cat {}; true' ; echo $?; + echo false | parallel --pipe --fifo -Slo 'cat {}; false' ; echo $?; +} + +par_env_parallel_fifo() { + echo '### bug #50386: --fifo does not export function, --cat does' + . `which env_parallel.bash` + myfunc() { + echo transferred non-exported func; + } + echo | env_parallel --pipe --tmpdir /tmp -S lo --fifo 'cat {};myfunc' + echo | env_parallel --pipe --tmpdir /tmp -S lo --cat 'cat {};myfunc' +} + +export -f $(compgen -A function | grep par_) +#compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1' +compgen -A function | grep par_ | sort | + parallel --joblog /tmp/jl-`basename $0` --retries 3 -j300% --tag -k '{} 2>&1' diff --git a/testsuite/wanted-results/parallel-local-10s b/testsuite/wanted-results/parallel-local-10s index c36050a3..8c66594d 100644 --- a/testsuite/wanted-results/parallel-local-10s +++ b/testsuite/wanted-results/parallel-local-10s @@ -967,470 +967,6 @@ par_sigterm parallel: sleep 10; echo 6 par_sigterm parallel: sleep 10; echo 7 par_sigterm parallel: sleep 10; echo 8 par_sigterm parallel: sleep 10; echo 9 -par_testhalt ### testhalt --halt now,fail=0 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt 0 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt 0 -par_testhalt ### testhalt --halt now,fail=1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt 1 -par_testhalt ### testhalt --halt now,fail=2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.6; exit 2 -par_testhalt 2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.6; exit 2 -par_testhalt 2 -par_testhalt ### testhalt --halt now,fail=30% -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.6; exit 2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.9; exit 3 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.2; exit 4 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.5; exit 5 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.8; exit 6 -par_testhalt 30 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.6; exit 2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.9; exit 3 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.2; exit 4 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.5; exit 5 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.8; exit 6 -par_testhalt 30 -par_testhalt ### testhalt --halt now,fail=70% -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.6; exit 2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.9; exit 3 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.2; exit 4 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.5; exit 5 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.8; exit 6 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.1; exit 7 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.4; exit 8 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.7; exit 9 -par_testhalt parallel: This job failed: -par_testhalt sleep 4; exit 10 -par_testhalt 50 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.6; exit 2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.9; exit 3 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.2; exit 4 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.5; exit 5 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.8; exit 6 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.1; exit 7 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.4; exit 8 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.7; exit 9 -par_testhalt parallel: This job failed: -par_testhalt sleep 4; exit 10 -par_testhalt 50 -par_testhalt ### testhalt --halt now,success=0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 0 -par_testhalt ### testhalt --halt now,success=1 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 0 -par_testhalt ### testhalt --halt now,success=2 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 0 -par_testhalt ### testhalt --halt now,success=30% -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 0 -par_testhalt ### testhalt --halt now,success=70% -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 50 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 50 -par_testhalt ### testhalt --halt soon,fail=0 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.6; exit 2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.9; exit 3 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.2; exit 4 -par_testhalt 0 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.6; exit 2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.9; exit 3 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.2; exit 4 -par_testhalt 0 -par_testhalt ### testhalt --halt soon,fail=1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.6; exit 2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.9; exit 3 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.2; exit 4 -par_testhalt 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.6; exit 2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.9; exit 3 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.2; exit 4 -par_testhalt 1 -par_testhalt ### testhalt --halt soon,fail=2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.6; exit 2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.9; exit 3 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.2; exit 4 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.5; exit 5 -par_testhalt 2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.6; exit 2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.9; exit 3 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.2; exit 4 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.5; exit 5 -par_testhalt 2 -par_testhalt ### testhalt --halt soon,fail=30% -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.6; exit 2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.9; exit 3 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.2; exit 4 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.5; exit 5 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.8; exit 6 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.1; exit 7 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.4; exit 8 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.7; exit 9 -par_testhalt 30 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.6; exit 2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.9; exit 3 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.2; exit 4 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.5; exit 5 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.8; exit 6 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.1; exit 7 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.4; exit 8 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.7; exit 9 -par_testhalt 30 -par_testhalt ### testhalt --halt soon,fail=70% -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.6; exit 2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.9; exit 3 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.2; exit 4 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.5; exit 5 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.8; exit 6 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.1; exit 7 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.4; exit 8 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.7; exit 9 -par_testhalt parallel: This job failed: -par_testhalt sleep 4; exit 10 -par_testhalt 50 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.3; exit 1 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.6; exit 2 -par_testhalt parallel: This job failed: -par_testhalt sleep 1.9; exit 3 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.2; exit 4 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.5; exit 5 -par_testhalt parallel: This job failed: -par_testhalt sleep 2.8; exit 6 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.1; exit 7 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.4; exit 8 -par_testhalt parallel: This job failed: -par_testhalt sleep 3.7; exit 9 -par_testhalt parallel: This job failed: -par_testhalt sleep 4; exit 10 -par_testhalt 50 -par_testhalt ### testhalt --halt soon,success=0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 0 -par_testhalt ### testhalt --halt soon,success=1 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 0 -par_testhalt ### testhalt --halt soon,success=2 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 0 -par_testhalt ### testhalt --halt soon,success=30% -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 0 -par_testhalt ### testhalt --halt soon,success=70% -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 50 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt parallel: This job succeeded: -par_testhalt sleep 1; exit 0 -par_testhalt 50 par_tmux_fg bug #50107: --tmux --fg should also write how to access it par_tmux_fg See output with: tmux -S tmp attach par_tmux_fg open terminal failed: not a terminal diff --git a/testsuite/wanted-results/parallel-local-30s b/testsuite/wanted-results/parallel-local-30s index bd642831..9a90e651 100644 --- a/testsuite/wanted-results/parallel-local-30s +++ b/testsuite/wanted-results/parallel-local-30s @@ -20,6 +20,476 @@ par_race_condition1 7 par_race_condition1 8 par_race_condition1 9 par_race_condition1 10 +par_testhalt ### testhalt --halt now,fail=0 +par_testhalt parallel: This job failed: +par_testhalt sleep 2.6; exit 1 +par_testhalt 0 +par_testhalt parallel: This job failed: +par_testhalt sleep 0.6; exit 1 +par_testhalt 0 +par_testhalt ### testhalt --halt now,fail=1 +par_testhalt parallel: This job failed: +par_testhalt sleep 2.6; exit 1 +par_testhalt 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 0.6; exit 1 +par_testhalt 1 +par_testhalt ### testhalt --halt now,fail=2 +par_testhalt parallel: This job failed: +par_testhalt sleep 2.6; exit 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 3; exit 2 +par_testhalt 2 +par_testhalt parallel: This job failed: +par_testhalt sleep 0.6; exit 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 1; exit 2 +par_testhalt 2 +par_testhalt ### testhalt --halt now,fail=30% +par_testhalt parallel: This job failed: +par_testhalt sleep 2.6; exit 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 3; exit 2 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.4; exit 3 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.8; exit 4 +par_testhalt parallel: This job failed: +par_testhalt sleep 4.2; exit 5 +par_testhalt parallel: This job failed: +par_testhalt sleep 4.6; exit 6 +par_testhalt 30 +par_testhalt parallel: This job failed: +par_testhalt sleep 0.6; exit 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 1; exit 2 +par_testhalt parallel: This job failed: +par_testhalt sleep 1.4; exit 3 +par_testhalt parallel: This job failed: +par_testhalt sleep 1.8; exit 4 +par_testhalt parallel: This job failed: +par_testhalt sleep 2.2; exit 5 +par_testhalt parallel: This job failed: +par_testhalt sleep 2.6; exit 6 +par_testhalt 30 +par_testhalt ### testhalt --halt now,fail=70% +par_testhalt parallel: This job failed: +par_testhalt sleep 2.6; exit 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 3; exit 2 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.4; exit 3 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.8; exit 4 +par_testhalt parallel: This job failed: +par_testhalt sleep 4.2; exit 5 +par_testhalt parallel: This job failed: +par_testhalt sleep 4.6; exit 6 +par_testhalt parallel: This job failed: +par_testhalt sleep 5; exit 7 +par_testhalt parallel: This job failed: +par_testhalt sleep 5.4; exit 8 +par_testhalt parallel: This job failed: +par_testhalt sleep 5.8; exit 9 +par_testhalt parallel: This job failed: +par_testhalt sleep 6.2; exit 10 +par_testhalt 50 +par_testhalt parallel: This job failed: +par_testhalt sleep 0.6; exit 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 1; exit 2 +par_testhalt parallel: This job failed: +par_testhalt sleep 1.4; exit 3 +par_testhalt parallel: This job failed: +par_testhalt sleep 1.8; exit 4 +par_testhalt parallel: This job failed: +par_testhalt sleep 2.2; exit 5 +par_testhalt parallel: This job failed: +par_testhalt sleep 2.6; exit 6 +par_testhalt parallel: This job failed: +par_testhalt sleep 3; exit 7 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.4; exit 8 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.8; exit 9 +par_testhalt parallel: This job failed: +par_testhalt sleep 4.2; exit 10 +par_testhalt 50 +par_testhalt ### testhalt --halt now,success=0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.4; exit 0 +par_testhalt 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.4; exit 0 +par_testhalt 0 +par_testhalt ### testhalt --halt now,success=1 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.4; exit 0 +par_testhalt 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.4; exit 0 +par_testhalt 0 +par_testhalt ### testhalt --halt now,success=2 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.6; exit 0 +par_testhalt 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.6; exit 0 +par_testhalt 0 +par_testhalt ### testhalt --halt now,success=30% +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1.2; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1.4; exit 0 +par_testhalt 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3.2; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3.4; exit 0 +par_testhalt 0 +par_testhalt ### testhalt --halt now,success=70% +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1.2; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.2; exit 0 +par_testhalt 50 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3.2; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 4.2; exit 0 +par_testhalt 50 +par_testhalt ### testhalt --halt soon,fail=0 +par_testhalt parallel: This job failed: +par_testhalt sleep 2.6; exit 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 3; exit 2 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.4; exit 3 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.8; exit 4 +par_testhalt 0 +par_testhalt parallel: This job failed: +par_testhalt sleep 0.6; exit 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 1; exit 2 +par_testhalt parallel: This job failed: +par_testhalt sleep 1.4; exit 3 +par_testhalt parallel: This job failed: +par_testhalt sleep 1.8; exit 4 +par_testhalt 0 +par_testhalt ### testhalt --halt soon,fail=1 +par_testhalt parallel: This job failed: +par_testhalt sleep 2.6; exit 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 3; exit 2 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.4; exit 3 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.8; exit 4 +par_testhalt 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 0.6; exit 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 1; exit 2 +par_testhalt parallel: This job failed: +par_testhalt sleep 1.4; exit 3 +par_testhalt parallel: This job failed: +par_testhalt sleep 1.8; exit 4 +par_testhalt 1 +par_testhalt ### testhalt --halt soon,fail=2 +par_testhalt parallel: This job failed: +par_testhalt sleep 2.6; exit 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 3; exit 2 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.4; exit 3 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.8; exit 4 +par_testhalt parallel: This job failed: +par_testhalt sleep 4.2; exit 5 +par_testhalt 2 +par_testhalt parallel: This job failed: +par_testhalt sleep 0.6; exit 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 1; exit 2 +par_testhalt parallel: This job failed: +par_testhalt sleep 1.4; exit 3 +par_testhalt parallel: This job failed: +par_testhalt sleep 1.8; exit 4 +par_testhalt parallel: This job failed: +par_testhalt sleep 2.2; exit 5 +par_testhalt 2 +par_testhalt ### testhalt --halt soon,fail=30% +par_testhalt parallel: This job failed: +par_testhalt sleep 2.6; exit 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 3; exit 2 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.4; exit 3 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.8; exit 4 +par_testhalt parallel: This job failed: +par_testhalt sleep 4.2; exit 5 +par_testhalt parallel: This job failed: +par_testhalt sleep 4.6; exit 6 +par_testhalt parallel: This job failed: +par_testhalt sleep 5; exit 7 +par_testhalt parallel: This job failed: +par_testhalt sleep 5.4; exit 8 +par_testhalt parallel: This job failed: +par_testhalt sleep 5.8; exit 9 +par_testhalt 30 +par_testhalt parallel: This job failed: +par_testhalt sleep 0.6; exit 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 1; exit 2 +par_testhalt parallel: This job failed: +par_testhalt sleep 1.4; exit 3 +par_testhalt parallel: This job failed: +par_testhalt sleep 1.8; exit 4 +par_testhalt parallel: This job failed: +par_testhalt sleep 2.2; exit 5 +par_testhalt parallel: This job failed: +par_testhalt sleep 2.6; exit 6 +par_testhalt parallel: This job failed: +par_testhalt sleep 3; exit 7 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.4; exit 8 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.8; exit 9 +par_testhalt 30 +par_testhalt ### testhalt --halt soon,fail=70% +par_testhalt parallel: This job failed: +par_testhalt sleep 2.6; exit 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 3; exit 2 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.4; exit 3 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.8; exit 4 +par_testhalt parallel: This job failed: +par_testhalt sleep 4.2; exit 5 +par_testhalt parallel: This job failed: +par_testhalt sleep 4.6; exit 6 +par_testhalt parallel: This job failed: +par_testhalt sleep 5; exit 7 +par_testhalt parallel: This job failed: +par_testhalt sleep 5.4; exit 8 +par_testhalt parallel: This job failed: +par_testhalt sleep 5.8; exit 9 +par_testhalt parallel: This job failed: +par_testhalt sleep 6.2; exit 10 +par_testhalt 50 +par_testhalt parallel: This job failed: +par_testhalt sleep 0.6; exit 1 +par_testhalt parallel: This job failed: +par_testhalt sleep 1; exit 2 +par_testhalt parallel: This job failed: +par_testhalt sleep 1.4; exit 3 +par_testhalt parallel: This job failed: +par_testhalt sleep 1.8; exit 4 +par_testhalt parallel: This job failed: +par_testhalt sleep 2.2; exit 5 +par_testhalt parallel: This job failed: +par_testhalt sleep 2.6; exit 6 +par_testhalt parallel: This job failed: +par_testhalt sleep 3; exit 7 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.4; exit 8 +par_testhalt parallel: This job failed: +par_testhalt sleep 3.8; exit 9 +par_testhalt parallel: This job failed: +par_testhalt sleep 4.2; exit 10 +par_testhalt 50 +par_testhalt ### testhalt --halt soon,success=0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1; exit 0 +par_testhalt 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.8; exit 0 +par_testhalt 0 +par_testhalt ### testhalt --halt soon,success=1 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1; exit 0 +par_testhalt 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.8; exit 0 +par_testhalt 0 +par_testhalt ### testhalt --halt soon,success=2 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1.2; exit 0 +par_testhalt 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3; exit 0 +par_testhalt 0 +par_testhalt ### testhalt --halt soon,success=30% +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1.2; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2; exit 0 +par_testhalt 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3.2; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 4; exit 0 +par_testhalt 0 +par_testhalt ### testhalt --halt soon,success=70% +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 0.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1.2; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 1.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.2; exit 0 +par_testhalt 50 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 2.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3.2; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3.4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3.6; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 3.8; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 4; exit 0 +par_testhalt parallel: This job succeeded: +par_testhalt sleep 4.2; exit 0 +par_testhalt 50 par_tmp_full ### Test --tmpdir running full. bug #40733 was caused by this par_tmp_full parallel: Error: Output is incomplete. Cannot append to buffer file in /tmp/shm/parallel. Is the disk full? par_tmp_full parallel: Error: Change $TMPDIR with --tmpdir or use --compress. diff --git a/testsuite/wanted-results/parallel-local-ssh2 b/testsuite/wanted-results/parallel-local-ssh2 index 5c19da83..b2fd2aed 100644 --- a/testsuite/wanted-results/parallel-local-ssh2 +++ b/testsuite/wanted-results/parallel-local-ssh2 @@ -1,81 +1,67 @@ -echo "### bug #43518: GNU Parallel doesn't obey servers' jobs capacity when an ssh login file is reloaded" -### bug #43518: GNU Parallel doesn't obey servers' jobs capacity when an ssh login file is reloaded - # Pre-20141106 Would reset the number of jobs run on all sshlogin if --slf changed - # Thus must take at least 25 sec to run - echo -e '1/lo\n1/csh@lo\n1/tcsh@lo\n1/parallel@lo\n' > /tmp/parallel.bug43518; parallel --delay 0.1 -N0 echo 1/: '>>' /tmp/parallel.bug43518 ::: {1..100} & seq 30 | stdout /usr/bin/time -f %e parallel --slf /tmp/parallel.bug43518 'sleep {=$_=$_%3?0:10=}.{%}' | perl -ne '$_ > 25 and print "OK\n"'; rm /tmp/parallel.bug43518 -OK -echo '### --filter-hosts --slf <()' -### --filter-hosts --slf <() - parallel --nonall --filter-hosts --slf <(echo localhost) echo OK -OK -echo '### --wd no-such-dir - csh' -### --wd no-such-dir - csh - stdout parallel --wd /no-such-dir -S csh@localhost echo ::: "ERROR IF PRINTED"; echo Exit code $? -mkdir: cannot create directory ‘/no-such-dir’: Permission denied -parallel: Cannot chdir to /no-such-dir -Exit code 1 -echo '### --wd no-such-dir - tcsh' -### --wd no-such-dir - tcsh - stdout parallel --wd /no-such-dir -S tcsh@localhost echo ::: "ERROR IF PRINTED"; echo Exit code $? -mkdir: cannot create directory ‘/no-such-dir’: Permission denied -parallel: Cannot chdir to /no-such-dir -Exit code 1 -echo '### --wd no-such-dir - bash' -### --wd no-such-dir - bash - stdout parallel --wd /no-such-dir -S parallel@localhost echo ::: "ERROR IF PRINTED"; echo Exit code $? -mkdir: cannot create directory ‘/no-such-dir’: Permission denied -parallel: Cannot chdir to /no-such-dir -Exit code 1 -echo '### bug #42725: csh with \n in variables' -### bug #42725: csh with \n in variables - not_csh() { echo This is not csh/tcsh; }; export -f not_csh; parallel --env not_csh -S csh@lo not_csh ::: 1; parallel --env not_csh -S tcsh@lo not_csh ::: 1; parallel --env not_csh -S parallel@lo not_csh ::: 1 -This is not csh/tcsh -CSH/TCSH DO NOT SUPPORT newlines IN VARIABLES/FUNCTIONS. Unset not_csh -CSH/TCSH DO NOT SUPPORT newlines IN VARIABLES/FUNCTIONS. Unset not_csh -echo '### bug #42999: --pipepart with remote does not work' -### bug #42999: --pipepart with remote does not work - seq 100 > /tmp/bug42999; chmod 600 /tmp/bug42999; parallel --sshdelay 0.3 --pipepart --block 31 -a /tmp/bug42999 -k -S parallel@lo wc; parallel --sshdelay 0.2 --pipepart --block 31 -a /tmp/bug42999 -k --fifo -S parallel@lo wc | perl -pe 's:(/tmp\S+par)\S+:${1}XXXXX:' ; parallel --sshdelay 0.1 --pipepart --block 31 -a /tmp/bug42999 -k --cat -S parallel@lo wc | perl -pe 's:(/tmp\S+par)\S+:${1}XXXXX:' ; rm /tmp/bug42999 - 14 14 33 - 11 11 33 - 11 11 33 - 11 11 33 - 11 11 33 - 11 11 33 - 11 11 33 - 11 11 33 - 9 9 28 - 14 14 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX - 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX - 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX - 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX - 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX - 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX - 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX - 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX - 9 9 28 /tmp/parallel-local-ssh2-tmpdir/parXXXXX -14 14 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX -11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX -11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX -11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX -11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX -11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX -11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX -11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX - 9 9 28 /tmp/parallel-local-ssh2-tmpdir/parXXXXX -echo '### --cat gives incorrect exit value in csh' -### --cat gives incorrect exit value in csh - echo false | parallel --pipe --cat -Scsh@lo 'cat {}; false' ; echo $?; echo false | parallel --pipe --cat -Stcsh@lo 'cat {}; false' ; echo $?; echo true | parallel --pipe --cat -Scsh@lo 'cat {}; true' ; echo $?; echo true | parallel --pipe --cat -Stcsh@lo 'cat {}; true' ; echo $?; echo '### --cat and --fifo exit value in bash' -false -1 -false -1 -true -0 -true -0 -### --cat and --fifo exit value in bash - echo true | parallel --pipe --fifo -Slo 'cat {}; true' ; echo $?; echo false | parallel --pipe --fifo -Slo 'cat {}; false' ; echo $?; -true -0 -false -1 +par_cat_fifo_exit ### --cat and --fifo exit value in bash +par_cat_fifo_exit true +par_cat_fifo_exit 0 +par_cat_fifo_exit false +par_cat_fifo_exit 1 +par_cat_incorrect_exit_csh ### --cat gives incorrect exit value in csh +par_cat_incorrect_exit_csh false +par_cat_incorrect_exit_csh 1 +par_cat_incorrect_exit_csh false +par_cat_incorrect_exit_csh 1 +par_cat_incorrect_exit_csh true +par_cat_incorrect_exit_csh 0 +par_cat_incorrect_exit_csh true +par_cat_incorrect_exit_csh 0 +par_csh_newline_var ### bug #42725: csh with \n in variables +par_csh_newline_var CSH/TCSH DO NOT SUPPORT newlines IN VARIABLES/FUNCTIONS. Unset not_csh +par_csh_newline_var CSH/TCSH DO NOT SUPPORT newlines IN VARIABLES/FUNCTIONS. Unset not_csh +par_csh_newline_var This is not csh/tcsh +par_env_parallel_fifo ### bug #50386: --fifo does not export function, --cat does +par_env_parallel_fifo transferred non-exported func +par_env_parallel_fifo cat: /tmp/parallel-local-ssh2-tmpdir/parZEeqC: No such file or directory +par_env_parallel_fifo transferred non-exported func +par_env_parallel_fifo cat: /tmp/parallel-local-ssh2-tmpdir/parZEeqC: No such file or directory +par_filter_hosts_slf ### --filter-hosts --slf <() +par_filter_hosts_slf OK +par_obey_servers_capacity_slf_reload ### bug #43518: GNU Parallel doesn't obey servers' jobs capacity when an ssh login file is reloaded +par_obey_servers_capacity_slf_reload OK +par_pipepart_remote ### bug #42999: --pipepart with remote does not work +par_pipepart_remote 14 14 33 +par_pipepart_remote 11 11 33 +par_pipepart_remote 11 11 33 +par_pipepart_remote 11 11 33 +par_pipepart_remote 11 11 33 +par_pipepart_remote 11 11 33 +par_pipepart_remote 11 11 33 +par_pipepart_remote 11 11 33 +par_pipepart_remote 9 9 28 +par_pipepart_remote 14 14 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_pipepart_remote 9 9 28 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_pipepart_remote 14 14 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_pipepart_remote 9 9 28 /tmp/parallel-local-ssh2-tmpdir/parXXXXX +par_wd_no_such_dir ### --wd no-such-dir - csh +par_wd_no_such_dir mkdir: cannot create directory ‘/no-such-dir’: Permission denied +par_wd_no_such_dir parallel: Cannot chdir to /no-such-dir +par_wd_no_such_dir Exit code 1 +par_wd_no_such_dir ### --wd no-such-dir - tcsh +par_wd_no_such_dir mkdir: cannot create directory ‘/no-such-dir’: Permission denied +par_wd_no_such_dir parallel: Cannot chdir to /no-such-dir +par_wd_no_such_dir Exit code 1 +par_wd_no_such_dir ### --wd no-such-dir - bash +par_wd_no_such_dir mkdir: cannot create directory ‘/no-such-dir’: Permission denied +par_wd_no_such_dir parallel: Cannot chdir to /no-such-dir +par_wd_no_such_dir Exit code 1