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):
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/
<<No new functionality was introduced so this is a good candidate for a stable release.>>
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 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
http://garf.us/2017/02/stig-sandbeck-mathisen-change-all-the-passwords-again/
* <<Possibly http://link.springer.com/chapter/10.1007%2F978-3-319-22053-6_46>>

View file

@ -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) {

View file

@ -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) {

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.
=item B<--env> I<var> (beta testing)
=item B<--env> I<var>
Copy environment variable I<var>. This will copy I<var> 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<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.
@ -1943,7 +1943,7 @@ when called with B<--shebang>).
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
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<DBURL> (beta testing)
=item B<--sqlandworker> 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
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.
=item B<--tmux> (beta testing)
=item B<--tmux>
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.
=item B<--tmuxpane> (beta testing)
=item B<--tmuxpane>
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

View file

@ -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 *

View file

@ -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

View file

@ -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

View file

@ -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."

View file

@ -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'

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 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

View file

@ -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.

View file

@ -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