Fixed bug #50386: --fifo does not export function, --cat does.

Test broken.
This commit is contained in:
Ole Tange 2017-03-02 22:40:46 +01:00
parent 68610ea9dd
commit 180ed0dd32
12 changed files with 681 additions and 688 deletions

View file

@ -4,7 +4,7 @@
Check that documentation is updated (compare to web): Check that documentation is updated (compare to web):
Fixet for 20170222 Fixet for 20170322
git diff last-release-commit git diff last-release-commit
Unmodified beta since last version => production Unmodified beta since last version => production
Unmodified alpha since last version => beta Unmodified alpha since last version => beta
@ -193,66 +193,20 @@ file:///home/tange/privat/parallel/doc/release_new_version
from:tange@gnu.org from:tange@gnu.org
to:parallel@gnu.org, bug-parallel@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/
<<No new functionality was introduced so this is a good candidate for a stable release.>> <<No new functionality was introduced so this is a good candidate for a stable release.>>
Haiku of the month: Haiku of the month:
Alias and vars <<>>
export them more easily
With env parallel
-- Ole Tange -- Ole Tange
New in this release: New in this release:
* env_parallel now supports /bin/sh, ash, dash. http://garf.us/2017/02/stig-sandbeck-mathisen-change-all-the-passwords-again/
* --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 Edinburghs 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
* <<Possibly http://link.springer.com/chapter/10.1007%2F978-3-319-22053-6_46>> * <<Possibly http://link.springer.com/chapter/10.1007%2F978-3-319-22053-6_46>>

View file

@ -24,7 +24,7 @@
use strict; use strict;
use Getopt::Long; use Getopt::Long;
$Global::progname="niceload"; $Global::progname="niceload";
$Global::version = 20170222; $Global::version = 20170223;
Getopt::Long::Configure("bundling","require_order"); Getopt::Long::Configure("bundling","require_order");
get_options_from_array(\@ARGV) || die_usage(); get_options_from_array(\@ARGV) || die_usage();
if($opt::version) { if($opt::version) {

View file

@ -1361,7 +1361,7 @@ sub check_invalid_option_combinations {
sub init_globals { sub init_globals {
# Defaults: # Defaults:
$Global::version = 20170222; $Global::version = 20170223;
$Global::progname = 'parallel'; $Global::progname = 'parallel';
$Global::infinity = 2**31; $Global::infinity = 2**31;
$Global::debug = 0; $Global::debug = 0;
@ -7168,29 +7168,6 @@ sub wrapped {
$command = "/bin/echo " . $command = "/bin/echo " .
::shell_quote_scalar(::shell_quote_scalar($command)); ::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($ENV{'PARALLEL_ENV'}) {
if(-e $ENV{'PARALLEL_ENV'}) { if(-e $ENV{'PARALLEL_ENV'}) {
# This is a file/fifo: Replace envvar with content of file # This is a file/fifo: Replace envvar with content of file
@ -7212,6 +7189,33 @@ sub wrapped {
$command = $ENV{'PARALLEL_ENV'}."\n".$command; $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 # Wrap with ssh + tranferring of files
$command = $self->sshlogin_wrap($command); $command = $self->sshlogin_wrap($command);
if(@Global::cat_prepends) { if(@Global::cat_prepends) {

View file

@ -640,7 +640,7 @@ If I<eof-str> 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. B<-E> nor B<-e> is used, no end of file string is used.
=item B<--env> I<var> (beta testing) =item B<--env> I<var>
Copy environment variable I<var>. This will copy I<var> to the Copy environment variable I<var>. This will copy I<var> to the
environment that the command is run in. This is especially useful for 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>. Only used with B<--pipe>.
=item B<--results> I<name> (alpha testing) =item B<--results> I<name> (beta testing)
=item B<--res> I<name> (alpha testing) =item B<--res> I<name> (beta testing)
Save the output into files. Save the output into files.
@ -1943,7 +1943,7 @@ when called with B<--shebang>).
Use B<--sqlmaster> instead. Use B<--sqlmaster> instead.
=item B<--sqlmaster> I<DBURL> (beta testing) =item B<--sqlmaster> I<DBURL>
Submit jobs via SQL server. I<DBURL> must point to a table, which will Submit jobs via SQL server. I<DBURL> must point to a table, which will
contain the same information as B<--joblog>, the values from the input 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 :myalias mysql:///mydb/paralleljobs
=item B<--sqlandworker> I<DBURL> (beta testing) =item B<--sqlandworker> I<DBURL>
Shorthand for: B<--sqlmaster> I<DBURL> B<--sqlworker> I<DBURL>. Shorthand for: B<--sqlmaster> I<DBURL> B<--sqlworker> I<DBURL>.
=item B<--sqlworker> I<DBURL> (beta testing) =item B<--sqlworker> I<DBURL>
Execute jobs via SQL server. Read the input sources variables from the Execute jobs via SQL server. Read the input sources variables from the
table pointed to by I<DBURL>. The I<command> on the command line table pointed to by I<DBURL>. The I<command> on the command line
@ -2208,13 +2208,13 @@ different dir for the files. Setting B<--tmpdir> is equivalent to
setting $TMPDIR. setting $TMPDIR.
=item B<--tmux> (beta testing) =item B<--tmux>
Use B<tmux> for output. Start a B<tmux> session and run each job in a Use B<tmux> for output. Start a B<tmux> session and run each job in a
window in that session. No other output will be produced. window in that session. No other output will be produced.
=item B<--tmuxpane> (beta testing) =item B<--tmuxpane>
Use B<tmux> for output but put output into panes in the first window. Use B<tmux> for output but put output into panes in the first window.
Useful if you want to monitor the progress of less than 100 concurrent Useful if you want to monitor the progress of less than 100 concurrent

View file

@ -397,6 +397,12 @@ The ordering of the wrapping is important:
=item * =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 B<--nice>/B<--cat>/B<--fifo> should be done on the remote machine
=item * =item *

View file

@ -576,7 +576,7 @@ $Global::Initfile && unlink $Global::Initfile;
exit ($err); exit ($err);
sub parse_options { sub parse_options {
$Global::version = 20170222; $Global::version = 20170223;
$Global::progname = 'sql'; $Global::progname = 'sql';
# This must be done first as this may exec myself # This must be done first as this may exec myself

View file

@ -61,20 +61,6 @@ par_pipepart_spawn() {
grep 1:local | perl -pe 's/\d\d\d/999/g' 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() { par_halt_on_error() {
mytest() { mytest() {
HALT=$1 HALT=$1

View file

@ -4,6 +4,23 @@
# Each should be taking 30-100s and be possible to run in parallel # Each should be taking 30-100s and be possible to run in parallel
# I.e.: No race conditions, no logins # 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() { par_race_condition1() {
echo '### Test race condition on 8 CPU (my laptop)' echo '### Test race condition on 8 CPU (my laptop)'
seq 1 5000000 > /tmp/parallel_race_cond seq 1 5000000 > /tmp/parallel_race_cond
@ -30,8 +47,8 @@ par_memory_leak() {
} }
export -f a_run export -f a_run
echo "### Test for memory leaks" echo "### Test for memory leaks"
echo "Of 30 runs of 1 job at least one should be bigger than a 3000 job run" echo "Of 100 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) small_max=$(seq 100 | parallel a_run 1 | jq -s max)
big=$(a_run 3000) big=$(a_run 3000)
if [ $small_max -lt $big ] ; then if [ $small_max -lt $big ] ; then
echo "Bad: Memleak likely." echo "Bad: Memleak likely."

View file

@ -4,6 +4,10 @@
chmod 777 "$TMPDIR" 2>/dev/null 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 cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | stdout parallel -vj300% --retries 3 -k --joblog /tmp/jl-`basename $0` -L1
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" 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 # Pre-20141106 Would reset the number of jobs run on all sshlogin if --slf changed
# Thus must take at least 25 sec to run # Thus must take at least 25 sec to run
@ -12,39 +16,69 @@ echo "### bug #43518: GNU Parallel doesn't obey servers' jobs capacity when an s
seq 30 | stdout /usr/bin/time -f %e parallel --slf /tmp/parallel.bug43518 'sleep {=$_=$_%3?0:10=}.{%}' | seq 30 | stdout /usr/bin/time -f %e parallel --slf /tmp/parallel.bug43518 'sleep {=$_=$_%3?0:10=}.{%}' |
perl -ne '$_ > 25 and print "OK\n"'; perl -ne '$_ > 25 and print "OK\n"';
rm /tmp/parallel.bug43518 rm /tmp/parallel.bug43518
}
par_filter_hosts_slf() {
echo '### --filter-hosts --slf <()' echo '### --filter-hosts --slf <()'
parallel --nonall --filter-hosts --slf <(echo localhost) echo OK parallel --nonall --filter-hosts --slf <(echo localhost) echo OK
}
par_wd_no_such_dir() {
echo '### --wd no-such-dir - csh' echo '### --wd no-such-dir - csh'
stdout parallel --wd /no-such-dir -S csh@localhost echo ::: "ERROR IF PRINTED"; echo Exit code $? stdout parallel --wd /no-such-dir -S csh@localhost echo ::: "ERROR IF PRINTED"
echo Exit code $?
echo '### --wd no-such-dir - tcsh' echo '### --wd no-such-dir - tcsh'
stdout parallel --wd /no-such-dir -S tcsh@localhost echo ::: "ERROR IF PRINTED"; echo Exit code $? stdout parallel --wd /no-such-dir -S tcsh@localhost echo ::: "ERROR IF PRINTED"
echo Exit code $?
echo '### --wd no-such-dir - bash' echo '### --wd no-such-dir - bash'
stdout parallel --wd /no-such-dir -S parallel@localhost echo ::: "ERROR IF PRINTED"; echo Exit code $? 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' echo '### bug #42725: csh with \n in variables'
not_csh() { echo This is not csh/tcsh; }; not_csh() { echo This is not csh/tcsh; };
export -f not_csh; export -f not_csh;
parallel --env not_csh -S csh@lo not_csh ::: 1; 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 tcsh@lo not_csh ::: 1;
parallel --env not_csh -S parallel@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' echo '### bug #42999: --pipepart with remote does not work'
seq 100 > /tmp/bug42999; chmod 600 /tmp/bug42999; 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.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.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:' ; 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 rm /tmp/bug42999
}
par_cat_incorrect_exit_csh() {
echo '### --cat gives incorrect exit value in csh' echo '### --cat gives incorrect exit value in csh'
echo false | parallel --pipe --cat -Scsh@lo 'cat {}; false' ; echo $?; echo false | parallel --pipe --cat -Scsh@lo 'cat {}; false' ; echo $?;
echo false | parallel --pipe --cat -Stcsh@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 -Scsh@lo 'cat {}; true' ; echo $?;
echo true | parallel --pipe --cat -Stcsh@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 '### --cat and --fifo exit value in bash'
echo true | parallel --pipe --fifo -Slo 'cat {}; true' ; echo $?; echo true | parallel --pipe --fifo -Slo 'cat {}; true' ; echo $?;
echo false | parallel --pipe --fifo -Slo 'cat {}; false' ; echo $?; echo false | parallel --pipe --fifo -Slo 'cat {}; false' ; echo $?;
}
EOF 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'

View file

@ -967,470 +967,6 @@ par_sigterm parallel: sleep 10; echo 6
par_sigterm parallel: sleep 10; echo 7 par_sigterm parallel: sleep 10; echo 7
par_sigterm parallel: sleep 10; echo 8 par_sigterm parallel: sleep 10; echo 8
par_sigterm parallel: sleep 10; echo 9 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 bug #50107: --tmux --fg should also write how to access it
par_tmux_fg See output with: tmux -S tmp attach par_tmux_fg See output with: tmux -S tmp attach
par_tmux_fg open terminal failed: not a terminal par_tmux_fg open terminal failed: not a terminal

View file

@ -20,6 +20,476 @@ par_race_condition1 7
par_race_condition1 8 par_race_condition1 8
par_race_condition1 9 par_race_condition1 9
par_race_condition1 10 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 ### 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: 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. par_tmp_full parallel: Error: Change $TMPDIR with --tmpdir or use --compress.

View file

@ -1,81 +1,67 @@
echo "### bug #43518: GNU Parallel doesn't obey servers' jobs capacity when an ssh login file is reloaded" par_cat_fifo_exit ### --cat and --fifo exit value in bash
### bug #43518: GNU Parallel doesn't obey servers' jobs capacity when an ssh login file is reloaded par_cat_fifo_exit true
# Pre-20141106 Would reset the number of jobs run on all sshlogin if --slf changed par_cat_fifo_exit 0
# Thus must take at least 25 sec to run par_cat_fifo_exit false
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_cat_fifo_exit 1
OK par_cat_incorrect_exit_csh ### --cat gives incorrect exit value in csh
echo '### --filter-hosts --slf <()' par_cat_incorrect_exit_csh false
### --filter-hosts --slf <() par_cat_incorrect_exit_csh 1
parallel --nonall --filter-hosts --slf <(echo localhost) echo OK par_cat_incorrect_exit_csh false
OK par_cat_incorrect_exit_csh 1
echo '### --wd no-such-dir - csh' par_cat_incorrect_exit_csh true
### --wd no-such-dir - csh par_cat_incorrect_exit_csh 0
stdout parallel --wd /no-such-dir -S csh@localhost echo ::: "ERROR IF PRINTED"; echo Exit code $? par_cat_incorrect_exit_csh true
mkdir: cannot create directory /no-such-dir: Permission denied par_cat_incorrect_exit_csh 0
parallel: Cannot chdir to /no-such-dir par_csh_newline_var ### bug #42725: csh with \n in variables
Exit code 1 par_csh_newline_var CSH/TCSH DO NOT SUPPORT newlines IN VARIABLES/FUNCTIONS. Unset not_csh
echo '### --wd no-such-dir - tcsh' par_csh_newline_var CSH/TCSH DO NOT SUPPORT newlines IN VARIABLES/FUNCTIONS. Unset not_csh
### --wd no-such-dir - tcsh par_csh_newline_var This is not csh/tcsh
stdout parallel --wd /no-such-dir -S tcsh@localhost echo ::: "ERROR IF PRINTED"; echo Exit code $? par_env_parallel_fifo ### bug #50386: --fifo does not export function, --cat does
mkdir: cannot create directory /no-such-dir: Permission denied par_env_parallel_fifo transferred non-exported func
parallel: Cannot chdir to /no-such-dir par_env_parallel_fifo cat: /tmp/parallel-local-ssh2-tmpdir/parZEeqC: No such file or directory
Exit code 1 par_env_parallel_fifo transferred non-exported func
echo '### --wd no-such-dir - bash' par_env_parallel_fifo cat: /tmp/parallel-local-ssh2-tmpdir/parZEeqC: No such file or directory
### --wd no-such-dir - bash par_filter_hosts_slf ### --filter-hosts --slf <()
stdout parallel --wd /no-such-dir -S parallel@localhost echo ::: "ERROR IF PRINTED"; echo Exit code $? par_filter_hosts_slf OK
mkdir: cannot create directory /no-such-dir: Permission denied par_obey_servers_capacity_slf_reload ### bug #43518: GNU Parallel doesn't obey servers' jobs capacity when an ssh login file is reloaded
parallel: Cannot chdir to /no-such-dir par_obey_servers_capacity_slf_reload OK
Exit code 1 par_pipepart_remote ### bug #42999: --pipepart with remote does not work
echo '### bug #42725: csh with \n in variables' par_pipepart_remote 14 14 33
### bug #42725: csh with \n in variables par_pipepart_remote 11 11 33
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 11 11 33
This is not csh/tcsh par_pipepart_remote 11 11 33
CSH/TCSH DO NOT SUPPORT newlines IN VARIABLES/FUNCTIONS. Unset not_csh par_pipepart_remote 11 11 33
CSH/TCSH DO NOT SUPPORT newlines IN VARIABLES/FUNCTIONS. Unset not_csh par_pipepart_remote 11 11 33
echo '### bug #42999: --pipepart with remote does not work' par_pipepart_remote 11 11 33
### bug #42999: --pipepart with remote does not work par_pipepart_remote 11 11 33
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_pipepart_remote 9 9 28
14 14 33 par_pipepart_remote 14 14 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
11 11 33 par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
11 11 33 par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
11 11 33 par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
11 11 33 par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
11 11 33 par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
11 11 33 par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
11 11 33 par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
9 9 28 par_pipepart_remote 9 9 28 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
14 14 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_pipepart_remote 14 14 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_pipepart_remote 11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
9 9 28 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_pipepart_remote 9 9 28 /tmp/parallel-local-ssh2-tmpdir/parXXXXX
14 14 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_wd_no_such_dir ### --wd no-such-dir - csh
11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_wd_no_such_dir mkdir: cannot create directory /no-such-dir: Permission denied
11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_wd_no_such_dir parallel: Cannot chdir to /no-such-dir
11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_wd_no_such_dir Exit code 1
11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_wd_no_such_dir ### --wd no-such-dir - tcsh
11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_wd_no_such_dir mkdir: cannot create directory /no-such-dir: Permission denied
11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_wd_no_such_dir parallel: Cannot chdir to /no-such-dir
11 11 33 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_wd_no_such_dir Exit code 1
9 9 28 /tmp/parallel-local-ssh2-tmpdir/parXXXXX par_wd_no_such_dir ### --wd no-such-dir - bash
echo '### --cat gives incorrect exit value in csh' par_wd_no_such_dir mkdir: cannot create directory /no-such-dir: Permission denied
### --cat gives incorrect exit value in csh par_wd_no_such_dir parallel: Cannot chdir to /no-such-dir
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' par_wd_no_such_dir Exit code 1
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