testsuite: parallel-local-*s.sh will now timeout if a test takes >10x the median time.

This commit is contained in:
Ole Tange 2020-01-12 09:14:21 +01:00
parent b804568ffd
commit fc97f4f61b
21 changed files with 3049 additions and 3042 deletions

View file

@ -234,4 +234,5 @@ install_packages &&
copy_ssh_keys &&
lsh_setup &&
add_freebsd &&
tmux_versions &&
misc

View file

@ -767,21 +767,6 @@ par_profile() {
rm ~/.parallel/testprofile_config
}
par_bin() {
echo '### Test --bin'
seq 10 | parallel --pipe --bin 1 -j4 wc | sort
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin 2 -j4 wc | sort
echo '### Test --bin with expression that gives 1..n'
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin '2 $_=$_%2+1' -j4 wc | sort
echo '### Test --bin with expression that gives 0..n-1'
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin '2 $_%=2' -j4 wc | sort
# Fails - blocks!
# paste <(seq 10000000) <(seq 10000000 -1 1) | parallel --pipe --colsep '\t' --bin 2 wc
}
par_cr_newline_header() {
echo '### --header : should set named replacement string if input line ends in \r\n'
printf "foo\r\nbar\r\n" |
@ -790,4 +775,4 @@ par_cr_newline_header() {
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | LC_ALL=C sort |
parallel --timeout 30 -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'
parallel --timeout 1000% -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'

View file

@ -1,7 +1,7 @@
#!/bin/bash
# Simple jobs that never fails
# Each should be taking >100s and be possible to run in parallel
# Each should be taking 100-300s and be possible to run in parallel
# I.e.: No race conditions, no logins
# tmpdir with > 5 GB available
@ -10,120 +10,100 @@ export TMP5G
rm -f /tmp/*.{tmx,pac,arg,all,log,swp,loa,ssh,df,pip,tmb,chr,tms,par}
par_exit_code() {
echo 'bug #52207: Exit status 0 when child job is killed, even with "now,fail=1"'
in_shell_run_command() {
# Runs command in given shell via Perl's open3
shell="$1"
prg="$2"
perl -MIPC::Open3 -e 'open3($a,$b,$c,"'$shell'","-c",'"$prg"'); wait; print $?>>8,"\n"'
}
export -f in_shell_run_command
linebuffer_matters() {
echo "### (--linebuffer) --compress $TAG should give different output"
nolbfile=$(mktemp)
lbfile=$(mktemp)
controlfile=$(mktemp)
randomfile=$(mktemp)
# Random data because it does not compress well
# forcing the compress tool to spit out compressed blocks
perl -pe 'y/[A-Za-z]//cd; $t++ % 1000 or print "\n"' < /dev/urandom |
head -c 10000000 > $randomfile
export randomfile
runit() {
OK="ash bash csh dash fish mksh posh rc sash sh static-sh tcsh"
BAD="fdsh fizsh ksh ksh93 yash zsh"
s=100
rm -f /tmp/mysleep
cp /bin/sleep /tmp/mysleep
echo '# Ideally the command should return the same'
echo '# with or without parallel'
echo '# but fish 2.4.0 returns 1 while X.X.X returns 0'
parallel -kj500% --argsep ,, --tag in_shell_run_command {1} '{=2 $_=Q($_) =}' \
,, $OK $BAD ,, \
'/tmp/mysleep '$s \
'parallel --halt-on-error now,fail=1 /tmp/mysleep ::: '$s \
'parallel --halt-on-error now,done=1 /tmp/mysleep ::: '$s \
'parallel --halt-on-error now,done=1 /bin/true ::: '$s \
'parallel --halt-on-error now,done=1 exit ::: '$s \
'true;/tmp/mysleep '$s \
'parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: '$s \
'parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: '$s \
'parallel --halt-on-error now,done=1 "true;/bin/true" ::: '$s \
'parallel --halt-on-error now,done=1 "true;exit" ::: '$s
}
export -f runit
testfunc() {
linebuffer="$1"
killsleep() {
sleep 5
while true; do killall -9 mysleep 2>/dev/null; sleep 1; done
}
export -f killsleep
incompressible_ascii() {
# generate some incompressible ascii
# with lines starting with the same string
id=$1
shuf $randomfile | perl -pe 's/^/'$id' /'
# Sleep to give time to linebuffer-print the first part
sleep 10
shuf $randomfile | perl -pe 's/^/'$id' /'
echo
}
export -f incompressible_ascii
parallel -uj0 --halt now,done=1 ::: runit killsleep
}
par_retries_unreachable() {
echo '### Test of --retries on unreachable host'
seq 2 | stdout parallel -k --retries 2 -v -S 4.3.2.1,: echo
}
par_outside_file_handle_limit() {
ulimit -n 1024
echo "### Test Force outside the file handle limit, 2009-02-17 Gave fork error"
(echo echo Start; seq 1 20000 | perl -pe 's/^/true /'; echo echo end) |
stdout parallel -uj 0 | egrep -v 'processes took|adjusting' |
perl -pe 's/\d\d\d/999/'
}
par_over_4GB() {
echo '### Test if we can deal with output > 4 GB'
echo |
nice parallel --tmpdir $TMP5G -q perl -e '$a="x"x1000000;for(0..4300){print $a}' |
nice md5sum
}
par_mem_leak() {
echo "### test for mem leak"
export parallel=parallel
no_mem_leak() {
run_measurements() {
from=$1
to=$2
pause_every=$3
measure() {
# Input:
# $1 = iterations
# $2 = sleep 1 sec for every $2
seq $1 | ramusage $parallel -u sleep '{= $_=$_%'$2'?0:1 =}'
}
export -f measure
seq $from $to | $parallel measure {} $pause_every |
sort -n
nowarn() {
# Ignore certain warnings
# parallel: Warning: Starting 11 processes took > 2 sec.
# parallel: Warning: Consider adjusting -j. Press CTRL-C to stop.
grep -v '^parallel: Warning: (Starting|Consider)' >&2
}
# Return false if leaking
# Normal: 16940-17320
max1000=$(run_measurements 1000 1007 100000 | tail -n1)
min30000=$(run_measurements 15000 15004 100000 | head -n1)
if [ $max1000 -gt $min30000 ] ; then
echo Probably no leak $max1000 -gt $min30000
return 0
else
echo Probably leaks $max1000 not -gt $min30000
# Make sure there are a few sleeps
max1000=$(run_measurements 1001 1007 100 | tail -n1)
min30000=$(run_measurements 30000 30004 100 | head -n1)
if [ $max1000 -gt $min30000 ] ; then
echo $max1000 -gt $min30000 = very likely no leak
return 0
else
echo not $max1000 -gt $min30000 = very likely leak
return 1
fi
fi
parallel -j0 $linebuffer --compress $TAG \
incompressible_ascii ::: {0..10} 2> >(nowarn) |
perl -ne '/^(\d+)\s/ and print "$1\n"' |
uniq |
sort
}
renice -n 3 $$ 2>/dev/null >/dev/null
if no_mem_leak >/dev/null ; then
echo no mem leak detected
# These can run in parallel if there are enough ressources
testfunc > $nolbfile
testfunc > $controlfile
testfunc --linebuffer > $lbfile
wait
nolb="$(cat $nolbfile)"
control="$(cat $controlfile)"
lb="$(cat $lbfile)"
rm $nolbfile $lbfile $controlfile $randomfile
if [ "$nolb" == "$control" ] ; then
if [ "$lb" == "$nolb" ] ; then
echo "BAD: --linebuffer makes no difference"
else
echo "OK: --linebuffer makes a difference"
fi
else
echo possible mem leak;
echo "BAD: control and nolb are not the same"
fi
}
export -f linebuffer_matters
par_linebuffer_matters_compress_tag() {
export TAG=--tag
linebuffer_matters
}
par_linebuffer_matters_compress() {
linebuffer_matters
}
par_linebuffer_files() {
echo 'bug #48658: --linebuffer --files'
rm -rf /tmp/par48658-*
doit() {
compress="$1"
echo "normal"
parallel --linebuffer --compress-program $compress seq ::: 100000 |
wc -l
echo "--files"
parallel --files --linebuffer --compress-program $1 seq ::: 100000 |
wc -l
echo "--results"
parallel --results /tmp/par48658-$compress --linebuffer --compress-program $compress seq ::: 100000 |
wc -l
rm -rf "/tmp/par48658-$compress"
}
export -f doit
# lrz complains 'Warning, unable to set nice value on thread'
parallel -j1 --tag -k doit ::: zstd pzstd clzip lz4 lzop pigz pxz gzip plzip pbzip2 lzma xz lzip bzip2 lbzip2 lrz
}
par_timeout() {
echo "### test --timeout"
@ -133,62 +113,6 @@ par_timeout() {
perl -ne '10 < $_ and $_ < 100 and print "OK\n"'
}
par_halt_on_error() {
mytest() {
HALT=$1
BOOL1=$2
BOOL2=$3
(echo "sleep 1;$BOOL1";
echo "sleep 2;$BOOL2";
echo "sleep 3;$BOOL1") |
parallel -j10 --halt-on-error $HALT
echo $?
(echo "sleep 1;$BOOL1";
echo "sleep 2;$BOOL2";
echo "sleep 3;$BOOL1";
echo "sleep 4;non_exist";
) |
parallel -j10 --halt-on-error $HALT
echo $?
}
export -f mytest
parallel -j1 -k --tag mytest ::: -2 -1 0 1 2 ::: true false ::: true false
}
par_test_build_and_install() {
cd ~/privat/parallel
# Make a .tar.gz file
stdout make dist |
perl -pe 's/make\[\d\]/make[0]/g;s/\d{8}/00000000/g'
LAST=$(ls *tar.gz | tail -n1)
cd /tmp
rm -rf parallel-20??????/
tar xf ~/privat/parallel/$LAST
cd parallel-20??????/
echo "### Test normal build and install"
# Make sure files depending on *.pod have to be rebuilt
touch src/*pod src/sql
./configure --prefix=/tmp/parallel-install &&
(stdout nice make -j3 >/dev/null;
stdout nice make install) |
perl -pe 's/make\[\d\]/make[0]/g;s/\d{8}/00000000/g'
echo '### Test installation missing pod2*'
parallel which ::: pod2html pod2man pod2texi pod2pdf |
sudo parallel mv {} {}.hidden
# Make sure files depending on *.pod have to be rebuilt
touch src/*pod src/sql
./configure --prefix=/tmp/parallel-install &&
(stdout nice make -j3 >/dev/null;
stdout nice make install) |
perl -pe 's/make\[\d\]/make[0]/g;s/\d{8}/00000000/g'
parallel which {}.hidden ::: pod2html pod2man pod2texi pod2pdf |
sudo parallel mv {} {.}
}
#par_crashing() {
# echo '### bug #56322: sem crashed when running with input from seq'
# echo "### This should not fail"
@ -198,4 +122,5 @@ par_test_build_and_install() {
#}
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | parallel -vj0 -k --tag --joblog /tmp/jl-`basename $0` '{} 2>&1'
compgen -A function | grep par_ | LC_ALL=C sort |
parallel --timeout 1000% -j10 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'

View file

@ -4,34 +4,66 @@
# Each should be taking 10-30s and be possible to run in parallel
# I.e.: No race conditions, no logins
par_macron() {
echo '### See if \257\256 \257<\257> is replaced correctly'
print_it() {
parallel $2 ::: "echo $1"
parallel $2 echo ::: "$1"
parallel $2 echo "$1" ::: "$1"
parallel $2 echo \""$1"\" ::: "$1"
parallel $2 echo "$1"{} ::: "$1"
parallel $2 echo \""$1"\"{} ::: "$1"
}
export -f print_it
parallel --tag -k print_it \
::: "$(perl -e 'print "\257"')" "$(perl -e 'print "\257\256"')" \
"$(perl -e 'print "\257\257\256"')" \
"$(perl -e 'print "\257<\257<\257>\257>"')" \
::: -X -q -Xq -k
par_colsep() {
echo '### Test of --colsep'
echo 'a%c%b' | parallel --colsep % echo {1} {3} {2}
(echo 'a%c%b'; echo a%c%b%d) | parallel -k --colsep % echo {1} {3} {2} {4}
(echo a%c%b; echo d%f%e) | parallel -k --colsep % echo {1} {3} {2}
parallel -k --colsep % echo {1} {3} {2} ::: a%c%b d%f%e
parallel -k --colsep % echo {1} {3} {2} ::: a%c%b
parallel -k --colsep % echo {1} {3} {2} {4} ::: a%c%b a%c%b%d
echo '### Test of tab as colsep'
printf 'def\tabc\njkl\tghi' | parallel -k --colsep '\t' echo {2} {1}
parallel -k -a <(printf 'def\tabc\njkl\tghi') --colsep '\t' echo {2} {1}
echo '### Test of multiple -a plus colsep'
parallel --xapply -k -a <(printf 'def\njkl\n') -a <(printf 'abc\tghi\nmno\tpqr') --colsep '\t' echo {2} {1}
echo '### Test of multiple -a no colsep'
parallel --xapply -k -a <(printf 'ghi\npqr\n') -a <(printf 'abc\tdef\njkl\tmno') echo {2} {1}
echo '### Test of quoting after colsplit'
parallel --colsep % echo {2} {1} ::: '>/dev/null%>/tmp/null'
echo '### Test of --colsep as regexp'
(echo 'a%c%%b'; echo a%c%b%d) | parallel -k --colsep %+ echo {1} {3} {2} {4}
parallel -k --colsep %+ echo {1} {3} {2} {4} ::: a%c%%b a%c%b%d
(echo 'a% c %%b'; echo a%c% b %d) | parallel -k --colsep %+ echo {1} {3} {2} {4}
(echo 'a% c %%b'; echo a%c% b %d) | parallel -k --colsep %+ echo '"{1}_{3}_{2}_{4}"'
echo '### Test of -C'
(echo 'a% c %%b'; echo a%c% b %d) | parallel -k -C %+ echo '"{1}_{3}_{2}_{4}"'
echo '### Test of --trim n'
(echo 'a% c %%b'; echo a%c% b %d) | parallel -k --trim n --colsep %+ echo '"{1}_{3}_{2}_{4}"'
parallel -k -C %+ echo '"{1}_{3}_{2}_{4}"' ::: 'a% c %%b' 'a%c% b %d'
echo '### Test of bug: If input is empty string'
(echo ; echo abcbdbebf;echo abc) | parallel -k --colsep b -v echo {1}{2}
}
par_kill_hup() {
echo '### Are children killed if GNU Parallel receives HUP? There should be no sleep at the end'
par_failing_compressor() {
echo 'Compress with failing (de)compressor'
echo 'Test --tag/--line-buffer/--files in all combinations'
echo 'Test working/failing compressor/decompressor in all combinations'
echo '(-k is used as a dummy argument)'
stdout parallel -vk --header : --argsep ,,, \
parallel -k {tag} {lb} {files} --compress --compress-program {comp} --decompress-program {decomp} echo ::: C={comp},D={decomp} \
,,, tag --tag -k \
,,, lb --line-buffer -k \
,,, files --files -k \
,,, comp 'cat;true' 'cat;false' \
,,, decomp 'cat;true' 'cat;false' |
perl -pe 's:/par......par:/tmpfile:'
}
parallel -j 2 -q bash -c 'sleep {} & pid=$!; wait $pid' ::: 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 &
T=$!
sleep 3.9
pstree $$
kill -HUP $T
sleep 4
pstree $$
par_fifo_under_csh() {
echo '### Test --fifo under csh'
csh -c "seq 3000000 | parallel -k --pipe --fifo 'sleep .{#};cat {}|wc -c ; false; echo \$status; false'"
echo exit $?
}
par_parset() {
@ -331,43 +363,6 @@ par__pipepart_tee() {
rm $tmp
}
par_interactive() {
echo '### Test -p --interactive'
cat >/tmp/parallel-script-for-expect <<_EOF
#!/bin/bash
seq 1 3 | parallel -k -p "sleep 0.1; echo opt-p"
seq 1 3 | parallel -k --interactive "sleep 0.1; echo opt--interactive"
_EOF
chmod 755 /tmp/parallel-script-for-expect
(
expect -b - <<_EOF
spawn /tmp/parallel-script-for-expect
expect "echo opt-p 1"
send "y\n"
expect "echo opt-p 2"
send "n\n"
expect "echo opt-p 3"
send "y\n"
expect "opt-p 1"
expect "opt-p 3"
expect "echo opt--interactive 1"
send "y\n"
expect "echo opt--interactive 2"
send "n\n"
#expect "opt--interactive 1"
expect "echo opt--interactive 3"
send "y\n"
expect "opt--interactive 3"
send "\n"
_EOF
echo
) | perl -ne 's/\r//g;/\S/ and print' |
# Race will cause the order to change
LC_ALL=C sort
}
par_k() {
echo '### Test -k'
ulimit -n 50
@ -515,7 +510,7 @@ par_tmp_full() {
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | LC_ALL=C sort |
parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1' |
parallel --timeout 1000% -j10 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1' |
perl -pe 's/,31,0/,15,0/' |
perl -pe 's:~:'$HOME':' |
perl -pe 's:'$PWD':.:' |

View file

@ -4,6 +4,43 @@
# Each should be taking 1-3s and be possible to run in parallel
# I.e.: No race conditions, no logins
par_interactive() {
echo '### Test -p --interactive'
cat >/tmp/parallel-script-for-expect <<_EOF
#!/bin/bash
seq 1 3 | parallel -k -p "sleep 0.1; echo opt-p"
seq 1 3 | parallel -k --interactive "sleep 0.1; echo opt--interactive"
_EOF
chmod 755 /tmp/parallel-script-for-expect
(
expect -b - <<_EOF
spawn /tmp/parallel-script-for-expect
expect "echo opt-p 1"
send "y\n"
expect "echo opt-p 2"
send "n\n"
expect "echo opt-p 3"
send "y\n"
expect "opt-p 1"
expect "opt-p 3"
expect "echo opt--interactive 1"
send "y\n"
expect "echo opt--interactive 2"
send "n\n"
#expect "opt--interactive 1"
expect "echo opt--interactive 3"
send "y\n"
expect "opt--interactive 3"
send "\n"
_EOF
echo
) | perl -ne 's/\r//g;/\S/ and print' |
# Race will cause the order to change
LC_ALL=C sort
}
par_bug43654() {
echo "bug #43654: --bar with command not using {} - only last output line "
COLUMNS=80 stdout parallel --bar true {.} ::: 1 | perl -pe 's/.*\r/\r/'
@ -92,46 +129,6 @@ par_trailing_space_line_continuation() {
parallel -kr -L2 -E bar echo ::: foo '' 'ole ' bar quux
}
par_colsep() {
echo '### Test of --colsep'
echo 'a%c%b' | parallel --colsep % echo {1} {3} {2}
(echo 'a%c%b'; echo a%c%b%d) | parallel -k --colsep % echo {1} {3} {2} {4}
(echo a%c%b; echo d%f%e) | parallel -k --colsep % echo {1} {3} {2}
parallel -k --colsep % echo {1} {3} {2} ::: a%c%b d%f%e
parallel -k --colsep % echo {1} {3} {2} ::: a%c%b
parallel -k --colsep % echo {1} {3} {2} {4} ::: a%c%b a%c%b%d
echo '### Test of tab as colsep'
printf 'def\tabc\njkl\tghi' | parallel -k --colsep '\t' echo {2} {1}
parallel -k -a <(printf 'def\tabc\njkl\tghi') --colsep '\t' echo {2} {1}
echo '### Test of multiple -a plus colsep'
parallel --xapply -k -a <(printf 'def\njkl\n') -a <(printf 'abc\tghi\nmno\tpqr') --colsep '\t' echo {2} {1}
echo '### Test of multiple -a no colsep'
parallel --xapply -k -a <(printf 'ghi\npqr\n') -a <(printf 'abc\tdef\njkl\tmno') echo {2} {1}
echo '### Test of quoting after colsplit'
parallel --colsep % echo {2} {1} ::: '>/dev/null%>/tmp/null'
echo '### Test of --colsep as regexp'
(echo 'a%c%%b'; echo a%c%b%d) | parallel -k --colsep %+ echo {1} {3} {2} {4}
parallel -k --colsep %+ echo {1} {3} {2} {4} ::: a%c%%b a%c%b%d
(echo 'a% c %%b'; echo a%c% b %d) | parallel -k --colsep %+ echo {1} {3} {2} {4}
(echo 'a% c %%b'; echo a%c% b %d) | parallel -k --colsep %+ echo '"{1}_{3}_{2}_{4}"'
echo '### Test of -C'
(echo 'a% c %%b'; echo a%c% b %d) | parallel -k -C %+ echo '"{1}_{3}_{2}_{4}"'
echo '### Test of --trim n'
(echo 'a% c %%b'; echo a%c% b %d) | parallel -k --trim n --colsep %+ echo '"{1}_{3}_{2}_{4}"'
parallel -k -C %+ echo '"{1}_{3}_{2}_{4}"' ::: 'a% c %%b' 'a%c% b %d'
echo '### Test of bug: If input is empty string'
(echo ; echo abcbdbebf;echo abc) | parallel -k --colsep b -v echo {1}{2}
}
par_mix_triple_colon_with_quad_colon() {
echo '### Test :::: mixed with :::'
echo '### Test :::: < ::: :::'
@ -209,13 +206,6 @@ par_profiles_with_space() {
perl -pe 's:parallel./:parallel/:'
}
par_fifo_under_csh() {
echo '### Test --fifo under csh'
csh -c "seq 3000000 | parallel -k --pipe --fifo 'sleep .{#};cat {}|wc -c ; false; echo \$status; false'"
echo exit $?
}
par_compress_prg_fails() {
echo '### bug #44546: If --compress-program fails: fail'
doit() {
@ -248,21 +238,6 @@ par_test_XI_mI() {
seq 1 10 | parallel -k 'seq 1 {} | parallel -j1 -m -k -I :: echo a{} b::'
}
par_failing_compressor() {
echo 'Compress with failing (de)compressor'
echo 'Test --tag/--line-buffer/--files in all combinations'
echo 'Test working/failing compressor/decompressor in all combinations'
echo '(-k is used as a dummy argument)'
stdout parallel -vk --header : --argsep ,,, \
parallel -k {tag} {lb} {files} --compress --compress-program {comp} --decompress-program {decomp} echo ::: C={comp},D={decomp} \
,,, tag --tag -k \
,,, lb --line-buffer -k \
,,, files --files -k \
,,, comp 'cat;true' 'cat;false' \
,,, decomp 'cat;true' 'cat;false' |
perl -pe 's:/par......par:/tmpfile:'
}
par_result() {
echo "### Test --results"
mkdir -p /tmp/parallel_results_test
@ -2386,4 +2361,4 @@ par_block_negative_prefix() {
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | LC_ALL=C sort |
parallel -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'
parallel --timeout 1000% -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'

View file

@ -0,0 +1,150 @@
#!/bin/bash
# Simple jobs that never fails
# Each should be taking >300s and be possible to run in parallel
# I.e.: No race conditions, no logins
# tmpdir with > 5 GB available
TMP5G=${TMP5G:-/dev/shm}
export TMP5G
rm -f /tmp/*.{tmx,pac,arg,all,log,swp,loa,ssh,df,pip,tmb,chr,tms,par}
par_retries_unreachable() {
echo '### Test of --retries on unreachable host'
seq 2 | stdout parallel -k --retries 2 -v -S 4.3.2.1,: echo
}
par_outside_file_handle_limit() {
ulimit -n 1024
echo "### Test Force outside the file handle limit, 2009-02-17 Gave fork error"
(echo echo Start; seq 1 20000 | perl -pe 's/^/true /'; echo echo end) |
stdout parallel -uj 0 | egrep -v 'processes took|adjusting' |
perl -pe 's/\d\d\d/999/'
}
par_over_4GB() {
echo '### Test if we can deal with output > 4 GB'
echo |
nice parallel --tmpdir $TMP5G -q perl -e '$a="x"x1000000;for(0..4300){print $a}' |
nice md5sum
}
par_mem_leak() {
echo "### test for mem leak"
export parallel=parallel
no_mem_leak() {
run_measurements() {
from=$1
to=$2
pause_every=$3
measure() {
# Input:
# $1 = iterations
# $2 = sleep 1 sec for every $2
seq $1 | ramusage $parallel -u sleep '{= $_=$_%'$2'?0:1 =}'
}
export -f measure
seq $from $to | $parallel measure {} $pause_every |
sort -n
}
# Return false if leaking
# Normal: 16940-17320
max1000=$(run_measurements 1000 1007 100000 | tail -n1)
min30000=$(run_measurements 15000 15004 100000 | head -n1)
if [ $max1000 -gt $min30000 ] ; then
echo Probably no leak $max1000 -gt $min30000
return 0
else
echo Probably leaks $max1000 not -gt $min30000
# Make sure there are a few sleeps
max1000=$(run_measurements 1001 1007 100 | tail -n1)
min30000=$(run_measurements 30000 30004 100 | head -n1)
if [ $max1000 -gt $min30000 ] ; then
echo $max1000 -gt $min30000 = very likely no leak
return 0
else
echo not $max1000 -gt $min30000 = very likely leak
return 1
fi
fi
}
renice -n 3 $$ 2>/dev/null >/dev/null
if no_mem_leak >/dev/null ; then
echo no mem leak detected
else
echo possible mem leak;
fi
}
par_halt_on_error() {
mytest() {
HALT=$1
BOOL1=$2
BOOL2=$3
(echo "sleep 1;$BOOL1";
echo "sleep 2;$BOOL2";
echo "sleep 3;$BOOL1") |
parallel -j10 --halt-on-error $HALT
echo $?
(echo "sleep 1;$BOOL1";
echo "sleep 2;$BOOL2";
echo "sleep 3;$BOOL1";
echo "sleep 4;non_exist";
) |
parallel -j10 --halt-on-error $HALT
echo $?
}
export -f mytest
parallel -j1 -k --tag mytest ::: -2 -1 0 1 2 ::: true false ::: true false
}
par_test_build_and_install() {
cd ~/privat/parallel
# Make a .tar.gz file
stdout make dist |
perl -pe 's/make\[\d\]/make[0]/g;s/\d{8}/00000000/g'
LAST=$(ls *tar.gz | tail -n1)
cd /tmp
rm -rf parallel-20??????/
tar xf ~/privat/parallel/$LAST
cd parallel-20??????/
echo "### Test normal build and install"
# Make sure files depending on *.pod have to be rebuilt
touch src/*pod src/sql
./configure --prefix=/tmp/parallel-install &&
(stdout nice make -j3 >/dev/null;
stdout nice make install) |
perl -pe 's/make\[\d\]/make[0]/g;s/\d{8}/00000000/g'
echo '### Test installation missing pod2*'
parallel which ::: pod2html pod2man pod2texi pod2pdf |
sudo parallel mv {} {}.hidden
# Make sure files depending on *.pod have to be rebuilt
touch src/*pod src/sql
./configure --prefix=/tmp/parallel-install &&
(stdout nice make -j3 >/dev/null;
stdout nice make install) |
perl -pe 's/make\[\d\]/make[0]/g;s/\d{8}/00000000/g'
parallel which {}.hidden ::: pod2html pod2man pod2texi pod2pdf |
sudo parallel mv {} {.}
}
#par_crashing() {
# echo '### bug #56322: sem crashed when running with input from seq'
# echo "### This should not fail"
# doit() { seq 100000000 |xargs -P 80 -n 1 sem true; }
# export -f doit
# parallel -j1 --timeout 100 --nice 11 doit ::: 1
#}
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | LC_ALL=C sort |
parallel --timeout 1000% -j10 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'

View file

@ -4,6 +4,187 @@
# Each should be taking 30-100s and be possible to run in parallel
# I.e.: No race conditions, no logins
par_exit_code() {
echo 'bug #52207: Exit status 0 when child job is killed, even with "now,fail=1"'
in_shell_run_command() {
# Runs command in given shell via Perl's open3
shell="$1"
prg="$2"
perl -MIPC::Open3 -e 'open3($a,$b,$c,"'$shell'","-c",'"$prg"'); wait; print $?>>8,"\n"'
}
export -f in_shell_run_command
runit() {
OK="ash bash csh dash fish mksh posh rc sash sh static-sh tcsh"
BAD="fdsh fizsh ksh ksh93 yash zsh"
s=100
rm -f /tmp/mysleep
cp /bin/sleep /tmp/mysleep
echo '# Ideally the command should return the same'
echo '# with or without parallel'
echo '# but fish 2.4.0 returns 1 while X.X.X returns 0'
parallel -kj500% --argsep ,, --tag in_shell_run_command {1} '{=2 $_=Q($_) =}' \
,, $OK $BAD ,, \
'/tmp/mysleep '$s \
'parallel --halt-on-error now,fail=1 /tmp/mysleep ::: '$s \
'parallel --halt-on-error now,done=1 /tmp/mysleep ::: '$s \
'parallel --halt-on-error now,done=1 /bin/true ::: '$s \
'parallel --halt-on-error now,done=1 exit ::: '$s \
'true;/tmp/mysleep '$s \
'parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: '$s \
'parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: '$s \
'parallel --halt-on-error now,done=1 "true;/bin/true" ::: '$s \
'parallel --halt-on-error now,done=1 "true;exit" ::: '$s
}
export -f runit
killsleep() {
sleep 5
while true; do killall -9 mysleep 2>/dev/null; sleep 1; done
}
export -f killsleep
parallel -uj0 --halt now,done=1 ::: runit killsleep
}
par_macron() {
echo '### See if \257\256 \257<\257> is replaced correctly'
print_it() {
parallel $2 ::: "echo $1"
parallel $2 echo ::: "$1"
parallel $2 echo "$1" ::: "$1"
parallel $2 echo \""$1"\" ::: "$1"
parallel $2 echo "$1"{} ::: "$1"
parallel $2 echo \""$1"\"{} ::: "$1"
}
export -f print_it
parallel --tag -k print_it \
::: "$(perl -e 'print "\257"')" "$(perl -e 'print "\257\256"')" \
"$(perl -e 'print "\257\257\256"')" \
"$(perl -e 'print "\257<\257<\257>\257>"')" \
::: -X -q -Xq -k
}
par_groupby() {
tsv() {
printf "%s\t" a1 b1 C1; echo
printf "%s\t" 2 2 2; echo
printf "%s\t" 3 2 2; echo
printf "%s\t" 3 3 2; echo
printf "%s\t" 3 2 4; echo
printf "%s\t" 3 2 2; echo
printf "%s\t" 3 2 3; echo
}
export -f tsv
ssv() {
# space separated
printf "%s\t" a1 b1 C1; echo
printf "%s " 2 2 2; echo
printf "%s \t" 3 2 2; echo
printf "%s\t " 3 3 2; echo
printf "%s " 3 2 4; echo
printf "%s\t\t" 3 2 2; echo
printf "%s\t \t" 3 2 3; echo
}
export -f ssv
cssv() {
# , + space separated
printf "%s,\t" a1 b1 C1; echo
printf "%s ," 2 2 2; echo
printf "%s ,\t" 3 2 2; echo
printf "%s\t, " 3 3 2; echo
printf "%s,," 3 2 4; echo
printf "%s\t,,, " 3 2 2; echo
printf "%s\t" 3 2 3; echo
}
export -f cssv
csv() {
# , separated
printf "%s," a1 b1 C1; echo
printf "%s," 2 2 2; echo
printf "%s," 3 2 2; echo
printf "%s," 3 3 2; echo
printf "%s," 3 2 4; echo
printf "%s," 3 2 2; echo
printf "%s," 3 2 3; echo
}
export -f csv
tester() {
block="$1"
groupby="$2"
generator="$3"
colsep="$4"
echo "### test $generator | --colsep $colsep --groupby $groupby $block"
$generator |
parallel --pipe --colsep "$colsep" --groupby "$groupby" -k $block 'echo NewRec; cat'
}
export -f tester
parallel --tag -k tester \
::: -N1 '--block 20' \
::: '3 $_%=2' 3 's/^(.).*/$1/' C1 'C1 $_%=2' \
::: tsv ssv cssv csv \
:::+ '\t' '\s+' '[\s,]+' ','
# Test --colsep char: OK
# Test --colsep pattern: OK
# Test --colsep -N1: OK
# Test --colsep --block 20: OK
# Test --groupby colno: OK
# Test --groupby 'colno perl': OK
# Test --groupby colname: OK
# Test --groupby 'colname perl': OK
# Test space sep --colsep '\s': OK
# Test --colsep --header : (OK: --header : not needed)
}
par_groupby_pipepart() {
tsv() {
printf "%s\t" a1 b1 c1 d1 e1 f1; echo
seq 100000 999999 | perl -pe '$_=join"\t",split//' |
sort --parallel=8 --buffer-size=50% -rk3
}
export -f tsv
ssv() {
# space separated
tsv | perl -pe '@sep=("\t"," "); s/\t/$sep[rand(2)]/ge;'
}
export -f ssv
cssv() {
# , + space separated
tsv | perl -pe '@sep=("\t"," ",","); s/\t/$sep[rand(2)].$sep[rand(2)]/ge;'
}
export -f cssv
csv() {
# , separated
tsv | perl -pe 's/\t/,/g;'
}
export -f csv
tester() {
generator="$1"
colsep="$2"
groupby="$3"
tmp=`tempfile`
echo "### test $generator | --colsep $colsep --groupby $groupby"
$generator > $tmp
parallel --pipepart -a $tmp --colsep "$colsep" --groupby "$groupby" -k 'echo NewRec; wc'
}
export -f tester
parallel --tag -k tester \
::: tsv ssv cssv csv \
:::+ '\t' '\s+' '[\s,]+' ',' \
::: '3 $_%=2' 3 c1 'c1 $_%=2' 's/^(\d+[\t ,]+){2}(\d+).*/$2/'
}
par_bug57364() {
echo '### bug #57364: Race condition creating len cache file.'
j=32
@ -59,79 +240,6 @@ par_slow_total_jobs() {
parallel -k echo '{=total_jobs()=}' 2> >(perl -pe 's/\d/X/g')
}
linebuffer_matters() {
echo "### (--linebuffer) --compress $TAG should give different output"
nolbfile=$(mktemp)
lbfile=$(mktemp)
controlfile=$(mktemp)
randomfile=$(mktemp)
# Random data because it does not compress well
# forcing the compress tool to spit out compressed blocks
perl -pe 'y/[A-Za-z]//cd; $t++ % 1000 or print "\n"' < /dev/urandom |
head -c 10000000 > $randomfile
export randomfile
testfunc() {
linebuffer="$1"
incompressible_ascii() {
# generate some incompressible ascii
# with lines starting with the same string
id=$1
shuf $randomfile | perl -pe 's/^/'$id' /'
# Sleep to give time to linebuffer-print the first part
sleep 10
shuf $randomfile | perl -pe 's/^/'$id' /'
echo
}
export -f incompressible_ascii
nowarn() {
# Ignore certain warnings
# parallel: Warning: Starting 11 processes took > 2 sec.
# parallel: Warning: Consider adjusting -j. Press CTRL-C to stop.
grep -v '^parallel: Warning: (Starting|Consider)' >&2
}
parallel -j0 $linebuffer --compress $TAG \
incompressible_ascii ::: {0..10} 2> >(nowarn) |
perl -ne '/^(\d+)\s/ and print "$1\n"' |
uniq |
sort
}
# These can run in parallel if there are enough ressources
testfunc > $nolbfile
testfunc > $controlfile
testfunc --linebuffer > $lbfile
wait
nolb="$(cat $nolbfile)"
control="$(cat $controlfile)"
lb="$(cat $lbfile)"
rm $nolbfile $lbfile $controlfile $randomfile
if [ "$nolb" == "$control" ] ; then
if [ "$lb" == "$nolb" ] ; then
echo "BAD: --linebuffer makes no difference"
else
echo "OK: --linebuffer makes a difference"
fi
else
echo "BAD: control and nolb are not the same"
fi
}
export -f linebuffer_matters
par_linebuffer_matters_compress_tag() {
export TAG=--tag
linebuffer_matters
}
par_linebuffer_matters_compress() {
linebuffer_matters
}
par_memfree() {
echo '### test memfree - it should be killed by timeout'
parallel --memfree 1k echo Free mem: ::: 1k
@ -176,28 +284,6 @@ par_test_detected_shell() {
grep -Ev 'parallel: Warning: (Starting .* processes took|Consider adjusting)'
}
par_linebuffer_files() {
echo 'bug #48658: --linebuffer --files'
rm -rf /tmp/par48658-*
doit() {
compress="$1"
echo "normal"
parallel --linebuffer --compress-program $compress seq ::: 100000 |
wc -l
echo "--files"
parallel --files --linebuffer --compress-program $1 seq ::: 100000 |
wc -l
echo "--results"
parallel --results /tmp/par48658-$compress --linebuffer --compress-program $compress seq ::: 100000 |
wc -l
rm -rf "/tmp/par48658-$compress"
}
export -f doit
# lrz complains 'Warning, unable to set nice value on thread'
parallel -j1 --tag -k doit ::: zstd pzstd clzip lz4 lzop pigz pxz gzip plzip pbzip2 lzma xz lzip bzip2 lbzip2 lrz
}
par_no_newline_compress() {
echo 'bug #41613: --compress --line-buffer - no newline';
pipe_doit() {
@ -347,4 +433,4 @@ par_keeporder_roundrobin() {
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort |
parallel --delay 0.3 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'
parallel --delay 0.3 --timeout 1000% -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'

View file

@ -4,6 +4,21 @@
# Each should be taking 3-10s and be possible to run in parallel
# I.e.: No race conditions, no logins
par_bin() {
echo '### Test --bin'
seq 10 | parallel --pipe --bin 1 -j4 wc | sort
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin 2 -j4 wc | sort
echo '### Test --bin with expression that gives 1..n'
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin '2 $_=$_%2+1' -j4 wc | sort
echo '### Test --bin with expression that gives 0..n-1'
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin '2 $_%=2' -j4 wc | sort
# Fails - blocks!
# paste <(seq 10000000) <(seq 10000000 -1 1) | parallel --pipe --colsep '\t' --bin 2 wc
}
par_tee_with_premature_close() {
echo '--tee --pipe should send all data to all commands'
echo 'even if a command closes stdin before reading everything'
@ -167,20 +182,6 @@ par_test_X_with_multiple_source() {
parallel -j0 -kX echo {}-{.} ::: a b c ::: d e f
}
par_resume_failed_k() {
echo '### bug #38299: --resume-failed -k'
tmp=$(tempfile)
parallel -k --resume-failed --joblog $tmp echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
echo try 2. Gives failing - not 0
parallel -k --resume-failed --joblog $tmp echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
echo with exit 0
parallel -k --resume-failed --joblog $tmp echo job{#} val {}\;exit 0 ::: 0 1 2 3 0 1
sleep 0.5
echo try 2 again. Gives empty
parallel -k --resume-failed --joblog $tmp echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
rm $tmp
}
par_resume_k() {
echo '### --resume -k'
tmp=$(tempfile)
@ -434,125 +435,6 @@ par_lb_mem_usage() {
memusage 100000 parallel --lb ::: 'long_line; long_line'
}
par_groupby() {
tsv() {
printf "%s\t" a1 b1 C1; echo
printf "%s\t" 2 2 2; echo
printf "%s\t" 3 2 2; echo
printf "%s\t" 3 3 2; echo
printf "%s\t" 3 2 4; echo
printf "%s\t" 3 2 2; echo
printf "%s\t" 3 2 3; echo
}
export -f tsv
ssv() {
# space separated
printf "%s\t" a1 b1 C1; echo
printf "%s " 2 2 2; echo
printf "%s \t" 3 2 2; echo
printf "%s\t " 3 3 2; echo
printf "%s " 3 2 4; echo
printf "%s\t\t" 3 2 2; echo
printf "%s\t \t" 3 2 3; echo
}
export -f ssv
cssv() {
# , + space separated
printf "%s,\t" a1 b1 C1; echo
printf "%s ," 2 2 2; echo
printf "%s ,\t" 3 2 2; echo
printf "%s\t, " 3 3 2; echo
printf "%s,," 3 2 4; echo
printf "%s\t,,, " 3 2 2; echo
printf "%s\t" 3 2 3; echo
}
export -f cssv
csv() {
# , separated
printf "%s," a1 b1 C1; echo
printf "%s," 2 2 2; echo
printf "%s," 3 2 2; echo
printf "%s," 3 3 2; echo
printf "%s," 3 2 4; echo
printf "%s," 3 2 2; echo
printf "%s," 3 2 3; echo
}
export -f csv
tester() {
block="$1"
groupby="$2"
generator="$3"
colsep="$4"
echo "### test $generator | --colsep $colsep --groupby $groupby $block"
$generator |
parallel --pipe --colsep "$colsep" --groupby "$groupby" -k $block 'echo NewRec; cat'
}
export -f tester
parallel --tag -k tester \
::: -N1 '--block 20' \
::: '3 $_%=2' 3 's/^(.).*/$1/' C1 'C1 $_%=2' \
::: tsv ssv cssv csv \
:::+ '\t' '\s+' '[\s,]+' ','
# Test --colsep char: OK
# Test --colsep pattern: OK
# Test --colsep -N1: OK
# Test --colsep --block 20: OK
# Test --groupby colno: OK
# Test --groupby 'colno perl': OK
# Test --groupby colname: OK
# Test --groupby 'colname perl': OK
# Test space sep --colsep '\s': OK
# Test --colsep --header : (OK: --header : not needed)
}
par_groupby_pipepart() {
tsv() {
printf "%s\t" a1 b1 c1 d1 e1 f1; echo
seq 100000 999999 | perl -pe '$_=join"\t",split//' |
sort --parallel=8 --buffer-size=50% -rk3
}
export -f tsv
ssv() {
# space separated
tsv | perl -pe '@sep=("\t"," "); s/\t/$sep[rand(2)]/ge;'
}
export -f ssv
cssv() {
# , + space separated
tsv | perl -pe '@sep=("\t"," ",","); s/\t/$sep[rand(2)].$sep[rand(2)]/ge;'
}
export -f cssv
csv() {
# , separated
tsv | perl -pe 's/\t/,/g;'
}
export -f csv
tester() {
generator="$1"
colsep="$2"
groupby="$3"
tmp=`tempfile`
echo "### test $generator | --colsep $colsep --groupby $groupby"
$generator > $tmp
parallel --pipepart -a $tmp --colsep "$colsep" --groupby "$groupby" -k 'echo NewRec; wc'
}
export -f tester
parallel --tag -k tester \
::: tsv ssv cssv csv \
:::+ '\t' '\s+' '[\s,]+' ',' \
::: '3 $_%=2' 3 c1 'c1 $_%=2' 's/^(\d+[\t ,]+){2}(\d+).*/$2/'
}
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | LC_ALL=C sort |
parallel -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'
parallel --timeout 1000% -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'

View file

@ -61,6 +61,89 @@ par_hostgroup() {
parallel -S @g1+g2 -S @g1/1/tcsh@lo -S @g1/1/localhost -S @g2/1/parallel@lo whoami\;true ::: {1..6} | sort
}
par_PARALLEL_RSYNC_OPTS() {
echo '### test rsync opts'
touch parallel_rsync_opts.test
parallel --rsync-opts -rlDzRRRR -vv -S parallel@lo --trc {}.out touch {}.out ::: parallel_rsync_opts.test |
perl -ne 's/(rsync .*?RRRR)/print $1/ge'
export PARALLEL_RSYNC_OPTS=-zzrrllddRRRR
parallel -vv -S parallel@lo --trc {}.out touch {}.out ::: parallel_rsync_opts.test |
perl -ne 's/(rsync .*?RRRR)/print $1/ge'
rm parallel_rsync_opts.test parallel_rsync_opts.test.out
echo
}
par_retries_bug_from_2010() {
echo '### Bug with --retries'
seq 1 8 |
parallel --retries 2 --sshlogin 8/localhost,8/: -j+0 "hostname; false" |
wc -l
seq 1 8 |
parallel --retries 2 --sshlogin 8/localhost,8/: -j+1 "hostname; false" |
wc -l
seq 1 2 |
parallel --retries 2 --sshlogin 8/localhost,8/: -j-1 "hostname; false" |
wc -l
seq 1 1 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j1 "hostname; false" |
wc -l
seq 1 1 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j9 "hostname; false" |
wc -l
seq 1 1 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j0 "hostname; false" |
wc -l
echo '### These were not affected by the bug'
seq 1 8 |
parallel --retries 2 --sshlogin 1/localhost,9/: -j-1 "hostname; false" |
wc -l
seq 1 8 |
parallel --retries 2 --sshlogin 8/localhost,8/: -j-1 "hostname; false" |
wc -l
seq 1 1 |
parallel --retries 2 --sshlogin 1/localhost,1/: "hostname; false" |
wc -l
seq 1 4 |
parallel --retries 2 --sshlogin 2/localhost,2/: -j-1 "hostname; false" |
wc -l
seq 1 4 |
parallel --retries 2 --sshlogin 2/localhost,2/: -j1 "hostname; false" |
wc -l
seq 1 4 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j1 "hostname; false" |
wc -l
seq 1 2 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j1 "hostname; false" |
wc -l
}
par_kill_hup() {
echo '### Are children killed if GNU Parallel receives HUP? There should be no sleep at the end'
parallel -j 2 -q bash -c 'sleep {} & pid=$!; wait $pid' ::: 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 &
T=$!
sleep 3.9
pstree $$
kill -HUP $T
sleep 4
pstree $$
}
par_resume_failed_k() {
echo '### bug #38299: --resume-failed -k'
tmp=$(tempfile)
parallel -k --resume-failed --joblog $tmp echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
echo try 2. Gives failing - not 0
parallel -k --resume-failed --joblog $tmp echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
echo with exit 0
parallel -k --resume-failed --joblog $tmp echo job{#} val {}\;exit 0 ::: 0 1 2 3 0 1
sleep 0.5
echo try 2 again. Gives empty
parallel -k --resume-failed --joblog $tmp echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
rm $tmp
}
par_testhalt() {
testhalt_false() {
echo '### testhalt --halt '$1;

View file

@ -7,129 +7,118 @@ export MYSQL=mysql://`whoami`:`whoami`@lo/`whoami`
export DEBUG=false
p_showsqlresult() {
SERVERURL=$1
TABLE=$2
# No hostname as it can differ
sql $SERVERURL "select Command,V1,V2,Stdout,Stderr from $TABLE order by seq;"
SERVERURL=$1
TABLE=$2
# No hostname as it can differ
sql $SERVERURL "select Command,V1,V2,Stdout,Stderr from $TABLE order by seq;"
}
p_wrapper() {
INNER=$1
SERVERURL=$(eval echo $2)
TABLE=TBL$RANDOM
DBURL=$SERVERURL/$TABLE
T1=$(tempfile)
T2=$(tempfile)
eval "$INNER"
echo Exit=$?
wait
echo Exit=$?
$DEBUG && sort -u $T1 $T2;
rm $T1 $T2
p_showsqlresult $SERVERURL $TABLE
$DEBUG || sql $SERVERURL "drop table $TABLE;" >/dev/null 2>/dev/null
INNER=$1
SERVERURL=$(eval echo $2)
TABLE=TBL$RANDOM
DBURL=$SERVERURL/$TABLE
T1=$(tempfile)
T2=$(tempfile)
eval "$INNER"
echo Exit=$?
wait
echo Exit=$?
$DEBUG && sort -u $T1 $T2;
rm $T1 $T2
p_showsqlresult $SERVERURL $TABLE
$DEBUG || sql $SERVERURL "drop table $TABLE;" >/dev/null 2>/dev/null
}
p_template() {
(sleep 3;
parallel --sqlworker $DBURL "$@" sleep .3\;echo >$T1) &
parallel --sqlandworker $DBURL "$@" sleep .3\;echo ::: {1..5} ::: {a..e} >$T2;
(
# Make sure all jobs are inserted before starting a worker
sleep 10;
parallel --sqlworker $DBURL "$@" sleep .3\;echo >$T1
) &
parallel --sqlandworker $DBURL "$@" sleep .3\;echo ::: {1..5} ::: {a..e} >$T2;
}
par_sqlandworker() {
p_template
p_template
}
par_sqlandworker_lo() {
p_template -S lo
p_template -S lo
}
par_sqlandworker_results() {
p_template --results /tmp/out--sql
p_template --results /tmp/out--sql
}
par_sqlandworker_tag() {
p_template --tag
p_template --tag
}
# --linebuffer no longer works with sql
#
# par_sqlandworker_linebuffer() {
# p_template --linebuffer
# }
#
# par_sqlandworker_linebuffer_tag() {
# p_template --linebuffer --tag
# }
#
# par_sqlandworker_compress_linebuffer_tag() {
# p_template --compress --linebuffer --tag
# }
par_sqlandworker_unbuffer() {
p_template -u
p_template -u
}
par_sqlandworker_total_jobs() {
p_template echo {#} of '{=1 $_=total_jobs(); =};'
p_template echo {#} of '{=1 $_=total_jobs(); =};'
}
par_append_different_cmd() {
parallel --sqlmaster $DBURL sleep .3\;echo ::: {1..5} ::: {a..e} >$T2;
parallel --sqlmaster +$DBURL sleep .3\;echo {2}-{1} ::: {11..15} ::: {A..E} >>$T2;
parallel --sqlworker $DBURL >$T1
parallel --sqlmaster $DBURL sleep .3\;echo ::: {1..5} ::: {a..e} >$T2;
parallel --sqlmaster +$DBURL sleep .3\;echo {2}-{1} ::: {11..15} ::: {A..E} >>$T2;
parallel --sqlworker $DBURL >$T1
}
par_shuf() {
MD5=$(echo $SERVERURL | md5sum | perl -pe 's/(...).*/$1/')
T=/tmp/parallel-bug49791-$MD5
[ -e $T ] && rm -rf $T
export PARALLEL="--shuf --result $T"
parallel --sqlandworker $DBURL sleep .3\;echo \
::: {1..5} ::: {a..e} >$T2;
parallel --sqlworker $DBURL >$T2 &
parallel --sqlworker $DBURL >$T2 &
parallel --sqlworker $DBURL >$T2 &
parallel --sqlworker $DBURL >$T2 &
unset PARALLEL
wait;
# Did it compute correctly?
cat $T/1/*/*/*/stdout
# Did it shuffle
SHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;")
export PARALLEL="--result $T"
parallel --sqlandworker $DBURL sleep .3\;echo \
::: {1..5} ::: {a..e} >$T2;
parallel --sqlworker $DBURL >$T2 &
parallel --sqlworker $DBURL >$T2 &
parallel --sqlworker $DBURL >$T2 &
parallel --sqlworker $DBURL >$T2 &
unset PARALLEL
wait;
NOSHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;")
DIFFSIZE=$(diff <(echo "$SHUF") <(echo "$NOSHUF") | wc -c)
if [ $DIFFSIZE -gt 2500 ]; then
echo OK: Diff bigger than 2500 char
fi
[ -e $T ] && rm -rf $T
touch $T1
MD5=$(echo $SERVERURL | md5sum | perl -pe 's/(...).*/$1/')
T=/tmp/parallel-bug49791-$MD5
[ -e $T ] && rm -rf $T
export PARALLEL="--shuf --result $T"
parallel --sqlandworker $DBURL sleep .3\;echo \
::: {1..5} ::: {a..e} >$T2;
parallel --sqlworker $DBURL >$T2 &
parallel --sqlworker $DBURL >$T2 &
parallel --sqlworker $DBURL >$T2 &
parallel --sqlworker $DBURL >$T2 &
unset PARALLEL
wait;
# Did it compute correctly?
cat $T/1/*/*/*/stdout
# Did it shuffle
SHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;")
export PARALLEL="--result $T"
parallel --sqlandworker $DBURL sleep .3\;echo \
::: {1..5} ::: {a..e} >$T2;
parallel --sqlworker $DBURL >$T2 &
parallel --sqlworker $DBURL >$T2 &
parallel --sqlworker $DBURL >$T2 &
parallel --sqlworker $DBURL >$T2 &
unset PARALLEL
wait;
NOSHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;")
DIFFSIZE=$(diff <(echo "$SHUF") <(echo "$NOSHUF") | wc -c)
if [ $DIFFSIZE -gt 2500 ]; then
echo OK: Diff bigger than 2500 char
fi
[ -e $T ] && rm -rf $T
touch $T1
}
par_sql_joblog() {
echo '### should only give a single --joblog heading'
echo '### --sqlmaster/--sqlworker'
parallel -k --joblog - --sqlmaster $DBURL --wait sleep .3\;echo ::: {1..5} ::: {a..e} |
perl -pe 's/\d+\.\d+/999.999/g' | sort -n &
sleep 0.5
T=$(tempfile)
parallel -k --joblog - --sqlworker $DBURL > $T
wait
# Needed because of race condition
cat $T; rm $T
echo '### --sqlandworker'
parallel -k --joblog - --sqlandworker $DBURL sleep .3\;echo ::: {1..5} ::: {a..e} |
perl -pe 's/\d+\.\d+/999.999/g' | sort -n
# TODO --sqlandworker --wait
echo '### should only give a single --joblog heading'
echo '### --sqlmaster/--sqlworker'
parallel -k --joblog - --sqlmaster $DBURL --wait sleep .3\;echo ::: {1..5} ::: {a..e} |
perl -pe 's/\d+\.\d+/999.999/g' | sort -n &
sleep 0.5
T=$(tempfile)
parallel -k --joblog - --sqlworker $DBURL > $T
wait
# Needed because of race condition
cat $T; rm $T
echo '### --sqlandworker'
parallel -k --joblog - --sqlandworker $DBURL sleep .3\;echo ::: {1..5} ::: {a..e} |
perl -pe 's/\d+\.\d+/999.999/g' | sort -n
# TODO --sqlandworker --wait
}
par_no_table() {
@ -147,6 +136,7 @@ par_no_table() {
export -f $(compgen -A function | egrep 'p_|par_')
# Tested that -j0 in parallel is fastest (up to 15 jobs)
# more than 3 jobs: sqlite locks
compgen -A function | grep par_ | LC_ALL=C sort |
stdout parallel --timeout 100 -vj50% -k --tag --joblog /tmp/jl-`basename $0` p_wrapper \
export LC_ALL=C
compgen -A function | grep par_ | sort |
stdout parallel --timeout 2000 -vj50% -k --tag --joblog /tmp/jl-`basename $0` p_wrapper \
:::: - ::: \$MYSQL \$PG \$SQLITE

View file

@ -1,6 +1,6 @@
#!/bin/bash
# GNU SQL tests
# GNU Parallel SQL tests
# The tests must be able to run in parallel
export SQLITE=sqlite3:///%2Frun%2Fshm%2Fparallel.db
@ -34,7 +34,7 @@ p_wrapper() {
}
p_template() {
(sleep 4;
(sleep 6;
parallel --sqlworker $DBURL "$@" sleep .3\;echo >$T1) &
parallel --sqlandworker $DBURL "$@" sleep .3\;echo ::: {1..5} ::: {a..e} >$T2;
}
@ -96,7 +96,7 @@ par_shuf() {
wait;
# Did it compute correctly?
cat $T/1/*/*/*/stdout
# Did it shuffle
# Did it shuffle (Compare job table to non-shuffled)
SHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;")
export PARALLEL="--result $T"
parallel --sqlandworker $DBURL sleep .3\;echo \

View file

@ -68,18 +68,6 @@ par_load_csh() {
parallel --load 100% -S csh@lo echo ::: a
}
par_PARALLEL_RSYNC_OPTS() {
echo '### test rsync opts'
touch parallel_rsync_opts.test
parallel --rsync-opts -rlDzRRRR -vv -S parallel@lo --trc {}.out touch {}.out ::: parallel_rsync_opts.test |
perl -ne 's/(rsync .*?RRRR)/print $1/ge'
export PARALLEL_RSYNC_OPTS=-zzrrllddRRRR
parallel -vv -S parallel@lo --trc {}.out touch {}.out ::: parallel_rsync_opts.test |
perl -ne 's/(rsync .*?RRRR)/print $1/ge'
rm parallel_rsync_opts.test parallel_rsync_opts.test.out
echo
}
par_bar_m() {
echo '### test --bar -m'
stdout parallel --bar -P 2 -m sleep ::: 1 1 2 2 3 3 |
@ -118,51 +106,6 @@ par_retries_4() {
retries 4 48 49
}
par_retries_bug_from_2010() {
echo '### Bug with --retries'
seq 1 8 |
parallel --retries 2 --sshlogin 8/localhost,8/: -j+0 "hostname; false" |
wc -l
seq 1 8 |
parallel --retries 2 --sshlogin 8/localhost,8/: -j+1 "hostname; false" |
wc -l
seq 1 2 |
parallel --retries 2 --sshlogin 8/localhost,8/: -j-1 "hostname; false" |
wc -l
seq 1 1 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j1 "hostname; false" |
wc -l
seq 1 1 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j9 "hostname; false" |
wc -l
seq 1 1 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j0 "hostname; false" |
wc -l
echo '### These were not affected by the bug'
seq 1 8 |
parallel --retries 2 --sshlogin 1/localhost,9/: -j-1 "hostname; false" |
wc -l
seq 1 8 |
parallel --retries 2 --sshlogin 8/localhost,8/: -j-1 "hostname; false" |
wc -l
seq 1 1 |
parallel --retries 2 --sshlogin 1/localhost,1/: "hostname; false" |
wc -l
seq 1 4 |
parallel --retries 2 --sshlogin 2/localhost,2/: -j-1 "hostname; false" |
wc -l
seq 1 4 |
parallel --retries 2 --sshlogin 2/localhost,2/: -j1 "hostname; false" |
wc -l
seq 1 4 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j1 "hostname; false" |
wc -l
seq 1 2 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j1 "hostname; false" |
wc -l
}
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_ | LC_ALL=C sort |

View file

@ -44,25 +44,6 @@ par_basic_halt true
par_basic_halt parallel: Error: --halt must have 'never', 'soon', or 'now'.
par_basic_halt parallel: Error: --halt soon must be followed by ,success or ,fail.
par_basic_halt parallel: Error: --halt now must be followed by ,success or ,fail.
par_bin ### Test --bin
par_bin 2 2 4
par_bin 2 2 4
par_bin 3 3 6
par_bin 3 3 7
par_bin 2 4 8
par_bin 2 4 8
par_bin 3 6 13
par_bin 3 6 13
par_bin ### Test --bin with expression that gives 1..n
par_bin 0 0 0
par_bin 0 0 0
par_bin 5 10 21
par_bin 5 10 21
par_bin ### Test --bin with expression that gives 0..n-1
par_bin 0 0 0
par_bin 0 0 0
par_bin 5 10 21
par_bin 5 10 21
par_blocking_redir 0 0 0
par_blocking_redir 0 0 0
par_blocking_redir 1 9 54

File diff suppressed because it is too large Load diff

View file

@ -24,21 +24,187 @@ par__pipepart_spawn 1:local / 2+ / 2+2+2+
par__pipepart_tee bug #45479: --pipe/--pipepart --tee
par__pipepart_tee --pipepart --tee
par__pipepart_tee 314572800
par_colsep ### Test of --colsep
par_colsep a b c
par_colsep a b c
par_colsep a b c d
par_colsep a b c
par_colsep d e f
par_colsep a b c
par_colsep d e f
par_colsep a b c
par_colsep a b c
par_colsep a b c d
par_colsep ### Test of tab as colsep
par_colsep abc def
par_colsep ghi jkl
par_colsep abc def
par_colsep ghi jkl
par_colsep ### Test of multiple -a plus colsep
par_colsep abc def
par_colsep mno jkl
par_colsep ### Test of multiple -a no colsep
par_colsep abc def ghi
par_colsep jkl mno pqr
par_colsep ### Test of quoting after colsplit
par_colsep >/tmp/null >/dev/null
par_colsep ### Test of --colsep as regexp
par_colsep a b c
par_colsep a b c d
par_colsep a b c
par_colsep a b c d
par_colsep a b c
par_colsep a b c d
par_colsep a_b_c_
par_colsep a_b_c_d
par_colsep ### Test of -C
par_colsep a_b_c_
par_colsep a_b_c_d
par_colsep ### Test of --trim n
par_colsep a_b_' c '_
par_colsep a_' b '_c_d
par_colsep a_b_c_
par_colsep a_b_c_d
par_colsep ### Test of bug: If input is empty string
par_colsep echo ''
par_colsep
par_colsep echo ac
par_colsep ac
par_colsep echo ac
par_colsep ac
par_compress_fail ### bug #41609: --compress fails
par_compress_fail f1a751b1283e99e7dda40f63f1225f74 -
par_compress_fail f1a751b1283e99e7dda40f63f1225f74 -
par_interactive ### Test -p --interactive
par_interactive opt--interactive 1
par_interactive opt--interactive 3
par_interactive opt-p 1
par_interactive opt-p 3
par_interactive sleep 0.1; echo opt--interactive 1 ?...y
par_interactive sleep 0.1; echo opt--interactive 2 ?...n
par_interactive sleep 0.1; echo opt--interactive 3 ?...y
par_interactive sleep 0.1; echo opt-p 1 ?...y
par_interactive sleep 0.1; echo opt-p 2 ?...n
par_interactive sleep 0.1; echo opt-p 3 ?...y
par_interactive spawn /tmp/parallel-script-for-expect
par_failing_compressor Compress with failing (de)compressor
par_failing_compressor Test --tag/--line-buffer/--files in all combinations
par_failing_compressor Test working/failing compressor/decompressor in all combinations
par_failing_compressor (-k is used as a dummy argument)
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true /tmp/parallel-local-10s-tmpdir/tmpfile
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false /tmp/parallel-local-10s-tmpdir/tmpfile
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true /tmp/parallel-local-10s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false /tmp/parallel-local-10s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true C=cat;true,D=cat;true
par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false C=cat;true,D=cat;false
par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true C=cat;false,D=cat;true
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false C=cat;false,D=cat;false
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true /tmp/parallel-local-10s-tmpdir/tmpfile
par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false /tmp/parallel-local-10s-tmpdir/tmpfile
par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true /tmp/parallel-local-10s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false /tmp/parallel-local-10s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true C=cat;true,D=cat;true
par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false C=cat;true,D=cat;false
par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true C=cat;false,D=cat;true
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false C=cat;false,D=cat;false
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor /tmp/parallel-local-10s-tmpdir/tmpfile
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor /tmp/parallel-local-10s-tmpdir/tmpfile
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor /tmp/parallel-local-10s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor /tmp/parallel-local-10s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true
par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false
par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor /tmp/parallel-local-10s-tmpdir/tmpfile
par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor /tmp/parallel-local-10s-tmpdir/tmpfile
par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor /tmp/parallel-local-10s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor /tmp/parallel-local-10s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true
par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false
par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false
par_failing_compressor parallel: Error: cat;false failed.
par_fifo_under_csh ### Test --fifo under csh
par_fifo_under_csh 1048571
par_fifo_under_csh 1
par_fifo_under_csh 1048572
par_fifo_under_csh 1
par_fifo_under_csh 1048572
par_fifo_under_csh 1
par_fifo_under_csh 1048572
par_fifo_under_csh 1
par_fifo_under_csh 1048572
par_fifo_under_csh 1
par_fifo_under_csh 1048572
par_fifo_under_csh 1
par_fifo_under_csh 1048569
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 868832
par_fifo_under_csh 1
par_fifo_under_csh exit 22
par_k ### Test -k
par_k parallel: Warning: Only enough file handles to run X jobs in parallel.
par_k parallel: Warning: Running 'parallel -jX -N X --pipe parallel -jX' or
@ -253,119 +419,12 @@ par_kill_children_timeout parallel: Warning: This job was killed because it time
par_kill_children_timeout parallel: Warning: doit 1000000001
par_kill_children_timeout 2
par_kill_children_timeout 0 0 0
par_kill_hup ### Are children killed if GNU Parallel receives HUP? There should be no sleep at the end
par_kill_hup bash-+-perl---2*[bash---sleep]
par_kill_hup `-pstree
par_kill_hup parallel: SIGHUP received. No new jobs will be started.
par_kill_hup parallel: Waiting for these 2 jobs to finish. Send SIGTERM to stop now.
par_kill_hup parallel: bash -c 'sleep 3 & pid=$!; wait $pid'
par_kill_hup parallel: bash -c 'sleep 3 & pid=$!; wait $pid'
par_kill_hup bash---pstree
par_line_buffer ### --line-buffer
par_line_buffer 55 55 120
par_line_buffer These must diff: 1
par_long_line_remote ### Deal with long command lines on remote servers
par_long_line_remote 2 6 30006
par_long_line_remote 3 50 250050
par_macron ### See if \257\256 \257<\257> is replaced correctly
par_macron ¯ -X ¯
par_macron ¯ -X ¯
par_macron ¯ -X ¯ ¯
par_macron ¯ -X ¯ ¯
par_macron ¯ -X ¯¯
par_macron ¯ -X ¯¯
par_macron ¯ -q ¯
par_macron ¯ -q ¯ ¯
par_macron ¯ -q "¯" ¯
par_macron ¯ -q ¯¯
par_macron ¯ -q "¯"¯
par_macron ¯ -q /bin/bash: $'echo \257': command not found
par_macron ¯ -Xq ¯
par_macron ¯ -Xq ¯ ¯
par_macron ¯ -Xq "¯" ¯
par_macron ¯ -Xq ¯¯
par_macron ¯ -Xq "¯"¯
par_macron ¯ -Xq /bin/bash: $'echo \257': command not found
par_macron ¯ -k ¯
par_macron ¯ -k ¯
par_macron ¯ -k ¯ ¯
par_macron ¯ -k ¯ ¯
par_macron ¯ -k ¯¯
par_macron ¯ -k ¯¯
par_macron ¯® -X ¯®
par_macron ¯® -X ¯®
par_macron ¯® -X ¯® ¯®
par_macron ¯® -X ¯® ¯®
par_macron ¯® -X ¯®¯®
par_macron ¯® -X ¯®¯®
par_macron ¯® -q ¯®
par_macron ¯® -q ¯® ¯®
par_macron ¯® -q "¯®" ¯®
par_macron ¯® -q ¯®¯®
par_macron ¯® -q "¯®"¯®
par_macron ¯® -q /bin/bash: $'echo \257\256': command not found
par_macron ¯® -Xq ¯®
par_macron ¯® -Xq ¯® ¯®
par_macron ¯® -Xq "¯®" ¯®
par_macron ¯® -Xq ¯®¯®
par_macron ¯® -Xq "¯®"¯®
par_macron ¯® -Xq /bin/bash: $'echo \257\256': command not found
par_macron ¯® -k ¯®
par_macron ¯® -k ¯®
par_macron ¯® -k ¯® ¯®
par_macron ¯® -k ¯® ¯®
par_macron ¯® -k ¯®¯®
par_macron ¯® -k ¯®¯®
par_macron ¯¯® -X ¯¯®
par_macron ¯¯® -X ¯¯®
par_macron ¯¯® -X ¯¯® ¯¯®
par_macron ¯¯® -X ¯¯® ¯¯®
par_macron ¯¯® -X ¯¯®¯¯®
par_macron ¯¯® -X ¯¯®¯¯®
par_macron ¯¯® -q ¯¯®
par_macron ¯¯® -q ¯¯® ¯¯®
par_macron ¯¯® -q "¯¯®" ¯¯®
par_macron ¯¯® -q ¯¯®¯¯®
par_macron ¯¯® -q "¯¯®"¯¯®
par_macron ¯¯® -q /bin/bash: $'echo \257\257\256': command not found
par_macron ¯¯® -Xq ¯¯®
par_macron ¯¯® -Xq ¯¯® ¯¯®
par_macron ¯¯® -Xq "¯¯®" ¯¯®
par_macron ¯¯® -Xq ¯¯®¯¯®
par_macron ¯¯® -Xq "¯¯®"¯¯®
par_macron ¯¯® -Xq /bin/bash: $'echo \257\257\256': command not found
par_macron ¯¯® -k ¯¯®
par_macron ¯¯® -k ¯¯®
par_macron ¯¯® -k ¯¯® ¯¯®
par_macron ¯¯® -k ¯¯® ¯¯®
par_macron ¯¯® -k ¯¯®¯¯®
par_macron ¯¯® -k ¯¯®¯¯®
par_macron ¯<¯<¯>¯> -X ¯<¯<¯>¯>
par_macron ¯<¯<¯>¯> -X ¯<¯<¯>¯> ¯<¯<¯>¯>
par_macron ¯<¯<¯>¯> -X ¯<¯<¯>¯>¯<¯<¯>¯>
par_macron ¯<¯<¯>¯> -X /bin/bash: -c: line 0: syntax error near unexpected token `newline'
par_macron ¯<¯<¯>¯> -X /bin/bash: -c: line 0: `echo ¯<¯<¯>¯>'
par_macron ¯<¯<¯>¯> -X /bin/bash: ¯: No such file or directory
par_macron ¯<¯<¯>¯> -X /bin/bash: ¯: No such file or directory
par_macron ¯<¯<¯>¯> -q ¯<¯<¯>¯>
par_macron ¯<¯<¯>¯> -q ¯<¯<¯>¯> ¯<¯<¯>¯>
par_macron ¯<¯<¯>¯> -q "¯<¯<¯>¯>" ¯<¯<¯>¯>
par_macron ¯<¯<¯>¯> -q ¯<¯<¯>¯>¯<¯<¯>¯>
par_macron ¯<¯<¯>¯> -q "¯<¯<¯>¯>"¯<¯<¯>¯>
par_macron ¯<¯<¯>¯> -q /bin/bash: $'echo \257<\257<\257>\257>': command not found
par_macron ¯<¯<¯>¯> -Xq ¯<¯<¯>¯>
par_macron ¯<¯<¯>¯> -Xq ¯<¯<¯>¯> ¯<¯<¯>¯>
par_macron ¯<¯<¯>¯> -Xq "¯<¯<¯>¯>" ¯<¯<¯>¯>
par_macron ¯<¯<¯>¯> -Xq ¯<¯<¯>¯>¯<¯<¯>¯>
par_macron ¯<¯<¯>¯> -Xq "¯<¯<¯>¯>"¯<¯<¯>¯>
par_macron ¯<¯<¯>¯> -Xq /bin/bash: $'echo \257<\257<\257>\257>': command not found
par_macron ¯<¯<¯>¯> -k ¯<¯<¯>¯>
par_macron ¯<¯<¯>¯> -k ¯<¯<¯>¯> ¯<¯<¯>¯>
par_macron ¯<¯<¯>¯> -k ¯<¯<¯>¯>¯<¯<¯>¯>
par_macron ¯<¯<¯>¯> -k /bin/bash: -c: line 0: syntax error near unexpected token `newline'
par_macron ¯<¯<¯>¯> -k /bin/bash: -c: line 0: `echo ¯<¯<¯>¯>'
par_macron ¯<¯<¯>¯> -k /bin/bash: ¯: No such file or directory
par_macron ¯<¯<¯>¯> -k /bin/bash: ¯: No such file or directory
par_maxlinelen_X_I ### Test max line length -X -I
par_maxlinelen_X_I 3cfc69ee81b0fe7fdbe8eb059ad2da61 -
par_maxlinelen_X_I Chars per line (817788/7): 116826

View file

@ -10,54 +10,6 @@ par_bug37042 ### Bug introduce by fixing bug #37042
par_bug37042 abc
par_bug43654 bug #43654: --bar with command not using {} - only last output line
par_bug43654 par_bug43654 100% 1:0=0s 1 
par_colsep ### Test of --colsep
par_colsep a b c
par_colsep a b c
par_colsep a b c d
par_colsep a b c
par_colsep d e f
par_colsep a b c
par_colsep d e f
par_colsep a b c
par_colsep a b c
par_colsep a b c d
par_colsep ### Test of tab as colsep
par_colsep abc def
par_colsep ghi jkl
par_colsep abc def
par_colsep ghi jkl
par_colsep ### Test of multiple -a plus colsep
par_colsep abc def
par_colsep mno jkl
par_colsep ### Test of multiple -a no colsep
par_colsep abc def ghi
par_colsep jkl mno pqr
par_colsep ### Test of quoting after colsplit
par_colsep >/tmp/null >/dev/null
par_colsep ### Test of --colsep as regexp
par_colsep a b c
par_colsep a b c d
par_colsep a b c
par_colsep a b c d
par_colsep a b c
par_colsep a b c d
par_colsep a_b_c_
par_colsep a_b_c_d
par_colsep ### Test of -C
par_colsep a_b_c_
par_colsep a_b_c_d
par_colsep ### Test of --trim n
par_colsep a_b_' c '_
par_colsep a_' b '_c_d
par_colsep a_b_c_
par_colsep a_b_c_d
par_colsep ### Test of bug: If input is empty string
par_colsep echo ''
par_colsep
par_colsep echo ac
par_colsep ac
par_colsep echo ac
par_colsep ac
par_compress_prg_fails ### bug #44546: If --compress-program fails: fail
par_compress_prg_fails 1
par_compress_prg_fails parallel: Error: false failed.
@ -89,136 +41,6 @@ par_empty_string_command_line ole
par_empty_string_command_line bar
par_eof_on_command_line_input_source ### Test of eof string on :::
par_eof_on_command_line_input_source foo
par_failing_compressor Compress with failing (de)compressor
par_failing_compressor Test --tag/--line-buffer/--files in all combinations
par_failing_compressor Test working/failing compressor/decompressor in all combinations
par_failing_compressor (-k is used as a dummy argument)
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true C=cat;true,D=cat;true
par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false C=cat;true,D=cat;false
par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true C=cat;false,D=cat;true
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false C=cat;false,D=cat;false
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true C=cat;true,D=cat;true
par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false C=cat;true,D=cat;false
par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true C=cat;false,D=cat;true
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false C=cat;false,D=cat;false
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true
par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false
par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true
par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false
par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false
par_failing_compressor parallel: Error: cat;false failed.
par_fifo_under_csh ### Test --fifo under csh
par_fifo_under_csh 1048571
par_fifo_under_csh 1
par_fifo_under_csh 1048572
par_fifo_under_csh 1
par_fifo_under_csh 1048572
par_fifo_under_csh 1
par_fifo_under_csh 1048572
par_fifo_under_csh 1
par_fifo_under_csh 1048572
par_fifo_under_csh 1
par_fifo_under_csh 1048572
par_fifo_under_csh 1
par_fifo_under_csh 1048569
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 1048576
par_fifo_under_csh 1
par_fifo_under_csh 868832
par_fifo_under_csh 1
par_fifo_under_csh exit 22
par_header ### Test --header with -N
par_header Start
par_header h1
@ -293,6 +115,18 @@ par_incomplete_linebuffer 7
par_incomplete_linebuffer 8
par_incomplete_linebuffer 9
par_incomplete_linebuffer 10
par_interactive ### Test -p --interactive
par_interactive opt--interactive 1
par_interactive opt--interactive 3
par_interactive opt-p 1
par_interactive opt-p 3
par_interactive sleep 0.1; echo opt--interactive 1 ?...y
par_interactive sleep 0.1; echo opt--interactive 2 ?...n
par_interactive sleep 0.1; echo opt--interactive 3 ?...y
par_interactive sleep 0.1; echo opt-p 1 ?...y
par_interactive sleep 0.1; echo opt-p 2 ?...n
par_interactive sleep 0.1; echo opt-p 3 ?...y
par_interactive spawn /tmp/parallel-script-for-expect
par_mix_triple_colon_with_quad_colon ### Test :::: mixed with :::
par_mix_triple_colon_with_quad_colon ### Test :::: < ::: :::
par_mix_triple_colon_with_quad_colon 6 4 1

View file

@ -0,0 +1,712 @@
par_halt_on_error -2 true true 0
par_halt_on_error -2 true true 0
par_halt_on_error -2 true true parallel: This job succeeded:
par_halt_on_error -2 true true sleep 1;true
par_halt_on_error -2 true true parallel: This job succeeded:
par_halt_on_error -2 true true sleep 1;true
par_halt_on_error -2 true false 0
par_halt_on_error -2 true false 0
par_halt_on_error -2 true false parallel: This job succeeded:
par_halt_on_error -2 true false sleep 1;true
par_halt_on_error -2 true false parallel: This job succeeded:
par_halt_on_error -2 true false sleep 1;true
par_halt_on_error -2 false true 0
par_halt_on_error -2 false true 0
par_halt_on_error -2 false true parallel: This job succeeded:
par_halt_on_error -2 false true sleep 2;true
par_halt_on_error -2 false true parallel: This job succeeded:
par_halt_on_error -2 false true sleep 2;true
par_halt_on_error -2 false false 3
par_halt_on_error -2 false false 4
par_halt_on_error -2 false false /bin/bash: non_exist: command not found
par_halt_on_error -1 true true 0
par_halt_on_error -1 true true 0
par_halt_on_error -1 true true parallel: This job succeeded:
par_halt_on_error -1 true true sleep 1;true
par_halt_on_error -1 true true parallel: Starting no more jobs. Waiting for 2 jobs to finish.
par_halt_on_error -1 true true parallel: This job succeeded:
par_halt_on_error -1 true true sleep 2;true
par_halt_on_error -1 true true parallel: Starting no more jobs. Waiting for 1 jobs to finish.
par_halt_on_error -1 true true parallel: This job succeeded:
par_halt_on_error -1 true true sleep 3;true
par_halt_on_error -1 true true parallel: This job succeeded:
par_halt_on_error -1 true true sleep 1;true
par_halt_on_error -1 true true parallel: Starting no more jobs. Waiting for 3 jobs to finish.
par_halt_on_error -1 true true parallel: This job succeeded:
par_halt_on_error -1 true true sleep 2;true
par_halt_on_error -1 true true parallel: Starting no more jobs. Waiting for 2 jobs to finish.
par_halt_on_error -1 true true parallel: This job succeeded:
par_halt_on_error -1 true true sleep 3;true
par_halt_on_error -1 true true parallel: Starting no more jobs. Waiting for 1 jobs to finish.
par_halt_on_error -1 true true /bin/bash: non_exist: command not found
par_halt_on_error -1 true false 0
par_halt_on_error -1 true false 0
par_halt_on_error -1 true false parallel: This job succeeded:
par_halt_on_error -1 true false sleep 1;true
par_halt_on_error -1 true false parallel: Starting no more jobs. Waiting for 2 jobs to finish.
par_halt_on_error -1 true false parallel: This job succeeded:
par_halt_on_error -1 true false sleep 3;true
par_halt_on_error -1 true false parallel: This job succeeded:
par_halt_on_error -1 true false sleep 1;true
par_halt_on_error -1 true false parallel: Starting no more jobs. Waiting for 3 jobs to finish.
par_halt_on_error -1 true false parallel: This job succeeded:
par_halt_on_error -1 true false sleep 3;true
par_halt_on_error -1 true false parallel: Starting no more jobs. Waiting for 1 jobs to finish.
par_halt_on_error -1 true false /bin/bash: non_exist: command not found
par_halt_on_error -1 false true 0
par_halt_on_error -1 false true 0
par_halt_on_error -1 false true parallel: This job succeeded:
par_halt_on_error -1 false true sleep 2;true
par_halt_on_error -1 false true parallel: Starting no more jobs. Waiting for 1 jobs to finish.
par_halt_on_error -1 false true parallel: This job succeeded:
par_halt_on_error -1 false true sleep 2;true
par_halt_on_error -1 false true parallel: Starting no more jobs. Waiting for 2 jobs to finish.
par_halt_on_error -1 false true /bin/bash: non_exist: command not found
par_halt_on_error -1 false false 3
par_halt_on_error -1 false false 4
par_halt_on_error -1 false false /bin/bash: non_exist: command not found
par_halt_on_error 0 true true 0
par_halt_on_error 0 true true 1
par_halt_on_error 0 true true /bin/bash: non_exist: command not found
par_halt_on_error 0 true false 1
par_halt_on_error 0 true false 2
par_halt_on_error 0 true false /bin/bash: non_exist: command not found
par_halt_on_error 0 false true 2
par_halt_on_error 0 false true 3
par_halt_on_error 0 false true /bin/bash: non_exist: command not found
par_halt_on_error 0 false false 3
par_halt_on_error 0 false false 4
par_halt_on_error 0 false false /bin/bash: non_exist: command not found
par_halt_on_error 1 true true 0
par_halt_on_error 1 true true 127
par_halt_on_error 1 true true /bin/bash: non_exist: command not found
par_halt_on_error 1 true true parallel: This job failed:
par_halt_on_error 1 true true sleep 4;non_exist
par_halt_on_error 1 true false 1
par_halt_on_error 1 true false 1
par_halt_on_error 1 true false parallel: This job failed:
par_halt_on_error 1 true false sleep 2;false
par_halt_on_error 1 true false parallel: Starting no more jobs. Waiting for 1 jobs to finish.
par_halt_on_error 1 true false parallel: This job failed:
par_halt_on_error 1 true false sleep 2;false
par_halt_on_error 1 true false parallel: Starting no more jobs. Waiting for 2 jobs to finish.
par_halt_on_error 1 true false /bin/bash: non_exist: command not found
par_halt_on_error 1 true false parallel: This job failed:
par_halt_on_error 1 true false sleep 4;non_exist
par_halt_on_error 1 false true 1
par_halt_on_error 1 false true 1
par_halt_on_error 1 false true parallel: This job failed:
par_halt_on_error 1 false true sleep 1;false
par_halt_on_error 1 false true parallel: Starting no more jobs. Waiting for 2 jobs to finish.
par_halt_on_error 1 false true parallel: This job failed:
par_halt_on_error 1 false true sleep 3;false
par_halt_on_error 1 false true parallel: This job failed:
par_halt_on_error 1 false true sleep 1;false
par_halt_on_error 1 false true parallel: Starting no more jobs. Waiting for 3 jobs to finish.
par_halt_on_error 1 false true parallel: This job failed:
par_halt_on_error 1 false true sleep 3;false
par_halt_on_error 1 false true parallel: Starting no more jobs. Waiting for 1 jobs to finish.
par_halt_on_error 1 false true /bin/bash: non_exist: command not found
par_halt_on_error 1 false true parallel: This job failed:
par_halt_on_error 1 false true sleep 4;non_exist
par_halt_on_error 1 false false 1
par_halt_on_error 1 false false 1
par_halt_on_error 1 false false parallel: This job failed:
par_halt_on_error 1 false false sleep 1;false
par_halt_on_error 1 false false parallel: Starting no more jobs. Waiting for 2 jobs to finish.
par_halt_on_error 1 false false parallel: This job failed:
par_halt_on_error 1 false false sleep 2;false
par_halt_on_error 1 false false parallel: Starting no more jobs. Waiting for 1 jobs to finish.
par_halt_on_error 1 false false parallel: This job failed:
par_halt_on_error 1 false false sleep 3;false
par_halt_on_error 1 false false parallel: This job failed:
par_halt_on_error 1 false false sleep 1;false
par_halt_on_error 1 false false parallel: Starting no more jobs. Waiting for 3 jobs to finish.
par_halt_on_error 1 false false parallel: This job failed:
par_halt_on_error 1 false false sleep 2;false
par_halt_on_error 1 false false parallel: Starting no more jobs. Waiting for 2 jobs to finish.
par_halt_on_error 1 false false parallel: This job failed:
par_halt_on_error 1 false false sleep 3;false
par_halt_on_error 1 false false parallel: Starting no more jobs. Waiting for 1 jobs to finish.
par_halt_on_error 1 false false /bin/bash: non_exist: command not found
par_halt_on_error 1 false false parallel: This job failed:
par_halt_on_error 1 false false sleep 4;non_exist
par_halt_on_error 2 true true 0
par_halt_on_error 2 true true 127
par_halt_on_error 2 true true /bin/bash: non_exist: command not found
par_halt_on_error 2 true true parallel: This job failed:
par_halt_on_error 2 true true sleep 4;non_exist
par_halt_on_error 2 true false 1
par_halt_on_error 2 true false 1
par_halt_on_error 2 true false parallel: This job failed:
par_halt_on_error 2 true false sleep 2;false
par_halt_on_error 2 true false parallel: This job failed:
par_halt_on_error 2 true false sleep 2;false
par_halt_on_error 2 false true 1
par_halt_on_error 2 false true 1
par_halt_on_error 2 false true parallel: This job failed:
par_halt_on_error 2 false true sleep 1;false
par_halt_on_error 2 false true parallel: This job failed:
par_halt_on_error 2 false true sleep 1;false
par_halt_on_error 2 false false 1
par_halt_on_error 2 false false 1
par_halt_on_error 2 false false parallel: This job failed:
par_halt_on_error 2 false false sleep 1;false
par_halt_on_error 2 false false parallel: This job failed:
par_halt_on_error 2 false false sleep 1;false
par_mem_leak ### test for mem leak
par_mem_leak no mem leak detected
par_outside_file_handle_limit ### Test Force outside the file handle limit, 2009-02-17 Gave fork error
par_outside_file_handle_limit parallel: Warning: Only enough file handles to run 999 jobs in parallel.
par_outside_file_handle_limit parallel: Warning: Running 'parallel -j0 -N 999 --pipe parallel -j0' or
par_outside_file_handle_limit parallel: Warning: raising 'ulimit -n' or 'nofile' in /etc/security/limits.conf
par_outside_file_handle_limit parallel: Warning: or /proc/sys/fs/file-max may help.
par_outside_file_handle_limit Start
par_outside_file_handle_limit end
par_over_4GB ### Test if we can deal with output > 4 GB
par_over_4GB 46a318993dfc8e2afd71ff2bc6f605f1 -
par_retries_unreachable ### Test of --retries on unreachable host
par_retries_unreachable parallel: Warning: Could not figure out number of cpus on 4.3.2.1 (). Using 1.
par_retries_unreachable echo 1
par_retries_unreachable 1
par_retries_unreachable echo 2
par_retries_unreachable 2
par_test_build_and_install make[0]: Entering directory '~/privat/parallel'
par_test_build_and_install make dist-gzip am__post_remove_distdir='@:'
par_test_build_and_install make[0]: Entering directory '~/privat/parallel'
par_test_build_and_install if test -d "parallel-00000000"; then find "parallel-00000000" -type d ! -perm -200 -exec chmod u+w {} ';' && rm -rf "parallel-00000000" || { sleep 5 && rm -rf "parallel-00000000"; }; else :; fi
par_test_build_and_install test -d "parallel-00000000" || mkdir "parallel-00000000"
par_test_build_and_install (cd src && make top_distdir=../parallel-00000000 distdir=../parallel-00000000/src \
par_test_build_and_install am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
par_test_build_and_install make[0]: Entering directory '~/privat/parallel/src'
par_test_build_and_install make[0]: Leaving directory '~/privat/parallel/src'
par_test_build_and_install test -n "" \
par_test_build_and_install || find "parallel-00000000" -type d ! -perm -755 \
par_test_build_and_install -exec chmod u+rwx,go+rx {} \; -o \
par_test_build_and_install ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
par_test_build_and_install ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
par_test_build_and_install ! -type d ! -perm -444 -exec /bin/bash ~/privat/parallel/install-sh -c -m a+r {} {} \; \
par_test_build_and_install || chmod -R a+r "parallel-00000000"
par_test_build_and_install tardir=parallel-00000000 && ${TAR-tar} chof - "$tardir" | eval GZIP= gzip --best -c >parallel-00000000.tar.gz
par_test_build_and_install make[0]: Leaving directory '~/privat/parallel'
par_test_build_and_install if test -d "parallel-00000000"; then find "parallel-00000000" -type d ! -perm -200 -exec chmod u+w {} ';' && rm -rf "parallel-00000000" || { sleep 5 && rm -rf "parallel-00000000"; }; else :; fi
par_test_build_and_install make[0]: Leaving directory '~/privat/parallel'
par_test_build_and_install ### Test normal build and install
par_test_build_and_install checking for a BSD-compatible install... /usr/bin/install -c
par_test_build_and_install checking whether build environment is sane... yes
par_test_build_and_install checking for a thread-safe mkdir -p... /bin/mkdir -p
par_test_build_and_install checking for gawk... gawk
par_test_build_and_install checking whether make sets $(MAKE)... yes
par_test_build_and_install checking whether make supports nested variables... yes
par_test_build_and_install checking whether ln -s works... yes
par_test_build_and_install checking that generated files are newer than configure... done
par_test_build_and_install configure: creating ./config.status
par_test_build_and_install config.status: creating Makefile
par_test_build_and_install config.status: creating src/Makefile
par_test_build_and_install config.status: creating config.h
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000'
par_test_build_and_install Making install in src
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000/src'
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000/src'
par_test_build_and_install /bin/mkdir -p '/tmp/parallel-install/bin'
par_test_build_and_install /usr/bin/install -c parallel sql niceload parcat parset env_parallel env_parallel.ash env_parallel.bash env_parallel.csh env_parallel.dash env_parallel.fish env_parallel.ksh env_parallel.mksh env_parallel.pdksh env_parallel.sh env_parallel.tcsh env_parallel.zsh '/tmp/parallel-install/bin'
par_test_build_and_install make install-exec-hook
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000/src'
par_test_build_and_install rm /tmp/parallel-install/bin/sem || true
par_test_build_and_install ln -s parallel /tmp/parallel-install/bin/sem
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000/src'
par_test_build_and_install /bin/mkdir -p '/tmp/parallel-install/share/doc/parallel'
par_test_build_and_install /usr/bin/install -c -m 644 parallel.html env_parallel.html sem.html sql.html niceload.html parallel_tutorial.html parallel_book.html parallel_design.html parallel_alternatives.html parcat.html parset.html parallel.texi env_parallel.texi sem.texi sql.texi niceload.texi parallel_tutorial.texi parallel_book.texi parallel_design.texi parallel_alternatives.texi parcat.texi parset.texi parallel.pdf env_parallel.pdf sem.pdf sql.pdf niceload.pdf parallel_tutorial.pdf parallel_book.pdf parallel_design.pdf parallel_alternatives.pdf parcat.pdf parset.pdf parallel_cheat_bw.pdf '/tmp/parallel-install/share/doc/parallel'
par_test_build_and_install /bin/mkdir -p '/tmp/parallel-install/share/man/man1'
par_test_build_and_install /usr/bin/install -c -m 644 parallel.1 env_parallel.1 sem.1 sql.1 niceload.1 parcat.1 parset.1 '/tmp/parallel-install/share/man/man1'
par_test_build_and_install /bin/mkdir -p '/tmp/parallel-install/share/man/man7'
par_test_build_and_install /usr/bin/install -c -m 644 parallel_tutorial.7 parallel_book.7 parallel_design.7 parallel_alternatives.7 '/tmp/parallel-install/share/man/man7'
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000/src'
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000/src'
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000'
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000'
par_test_build_and_install make[0]: Nothing to be done for 'install-exec-am'.
par_test_build_and_install make[0]: Nothing to be done for 'install-data-am'.
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
par_test_build_and_install ### Test installation missing pod2*
par_test_build_and_install checking for a BSD-compatible install... /usr/bin/install -c
par_test_build_and_install checking whether build environment is sane... yes
par_test_build_and_install checking for a thread-safe mkdir -p... /bin/mkdir -p
par_test_build_and_install checking for gawk... gawk
par_test_build_and_install checking whether make sets $(MAKE)... yes
par_test_build_and_install checking whether make supports nested variables... yes
par_test_build_and_install checking whether ln -s works... yes
par_test_build_and_install checking that generated files are newer than configure... done
par_test_build_and_install configure: creating ./config.status
par_test_build_and_install config.status: creating Makefile
par_test_build_and_install config.status: creating src/Makefile
par_test_build_and_install config.status: creating config.h
par_test_build_and_install config.status: config.h is unchanged
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000'
par_test_build_and_install Making install in src
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000/src'
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./parallel.pod > ./parallel.1n \
par_test_build_and_install && mv ./parallel.1n ./parallel.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./env_parallel.pod > ./env_parallel.1n \
par_test_build_and_install && mv ./env_parallel.1n ./env_parallel.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old env_parallel.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old env_parallel.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./sem.pod > ./sem.1n \
par_test_build_and_install && mv ./sem.1n ./sem.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old sem.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old sem.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./sql > ./sql.1n \
par_test_build_and_install && mv ./sql.1n ./sql.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old sql.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old sql.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./niceload.pod > ./niceload.1n \
par_test_build_and_install && mv ./niceload.1n ./niceload.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old niceload.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old niceload.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=7 ./parallel_tutorial.pod > ./parallel_tutorial.7n \
par_test_build_and_install && mv ./parallel_tutorial.7n ./parallel_tutorial.7 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel_tutorial.7"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel_tutorial.7
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=7 ./parallel_book.pod > ./parallel_book.7n \
par_test_build_and_install && mv ./parallel_book.7n ./parallel_book.7 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel_book.7"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel_book.7
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=7 ./parallel_design.pod > ./parallel_design.7n \
par_test_build_and_install && mv ./parallel_design.7n ./parallel_design.7 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel_design.7"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel_design.7
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=7 ./parallel_alternatives.pod > ./parallel_alternatives.7n \
par_test_build_and_install && mv ./parallel_alternatives.7n ./parallel_alternatives.7 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel_alternatives.7"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel_alternatives.7
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./parcat.pod > ./parcat.1n \
par_test_build_and_install && mv ./parcat.1n ./parcat.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parcat.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parcat.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./parset.pod > ./parset.1n \
par_test_build_and_install && mv ./parset.1n ./parset.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parset.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parset.1
par_test_build_and_install pod2html --title "GNU Parallel" ./parallel.pod > ./parallel.htmln \
par_test_build_and_install && mv ./parallel.htmln ./parallel.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel with environment" ./env_parallel.pod > ./env_parallel.htmln \
par_test_build_and_install && mv ./env_parallel.htmln ./env_parallel.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old env_parallel.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old env_parallel.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel tutorial" ./parallel_tutorial.pod > ./parallel_tutorial.htmln \
par_test_build_and_install && mv ./parallel_tutorial.htmln ./parallel_tutorial.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel_tutorial.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel_tutorial.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel book" ./parallel_book.pod > ./parallel_book.htmln \
par_test_build_and_install && mv ./parallel_book.htmln ./parallel_book.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel_book.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel_book.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel design" ./parallel_design.pod > ./parallel_design.htmln \
par_test_build_and_install && mv ./parallel_design.htmln ./parallel_design.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel_design.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel_design.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel alternatives" ./parallel_alternatives.pod > ./parallel_alternatives.htmln \
par_test_build_and_install && mv ./parallel_alternatives.htmln ./parallel_alternatives.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel_alternatives.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel_alternatives.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "sem (GNU Parallel)" ./sem.pod > ./sem.htmln \
par_test_build_and_install && mv ./sem.htmln ./sem.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old sem.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old sem.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU SQL" ./sql > ./sql.htmln \
par_test_build_and_install && mv ./sql.htmln ./sql.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old sql.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old sql.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU niceload" ./niceload.pod > ./niceload.htmln \
par_test_build_and_install && mv ./niceload.htmln ./niceload.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old niceload.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old niceload.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU parcat" ./parcat.pod > ./parcat.htmln \
par_test_build_and_install && mv ./parcat.htmln ./parcat.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parcat.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parcat.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU parset" ./parset.pod > ./parset.htmln \
par_test_build_and_install && mv ./parset.htmln ./parset.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parset.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parset.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2texi --output=./parallel.texi ./parallel.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel.texi
par_test_build_and_install pod2texi --output=./env_parallel.texi ./env_parallel.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old env_parallel.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old env_parallel.texi
par_test_build_and_install pod2texi --output=./sem.texi ./sem.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old sem.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old sem.texi
par_test_build_and_install pod2texi --output=./sql.texi ./sql \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old sql.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old sql.texi
par_test_build_and_install pod2texi --output=./niceload.texi ./niceload.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old niceload.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old niceload.texi
par_test_build_and_install pod2texi --output=./parallel_tutorial.texi ./parallel_tutorial.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel_tutorial.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel_tutorial.texi
par_test_build_and_install pod2texi --output=./parallel_book.texi ./parallel_book.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel_book.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel_book.texi
par_test_build_and_install pod2texi --output=./parallel_design.texi ./parallel_design.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel_design.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel_design.texi
par_test_build_and_install pod2texi --output=./parallel_alternatives.texi ./parallel_alternatives.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel_alternatives.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel_alternatives.texi
par_test_build_and_install pod2texi --output=./parcat.texi ./parcat.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parcat.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parcat.texi
par_test_build_and_install pod2texi --output=./parset.texi ./parset.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parset.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parset.texi
par_test_build_and_install pod2pdf --output-file ./parallel.pdf ./parallel.pod --title "GNU Parallel" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel.pdf
par_test_build_and_install pod2pdf --output-file ./env_parallel.pdf ./env_parallel.pod --title "GNU Parallel with environment" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old env_parallel.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old env_parallel.pdf
par_test_build_and_install pod2pdf --output-file ./sem.pdf ./sem.pod --title "GNU sem" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old sem.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old sem.pdf
par_test_build_and_install pod2pdf --output-file ./sql.pdf ./sql --title "GNU SQL" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old sql.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old sql.pdf
par_test_build_and_install pod2pdf --output-file ./niceload.pdf ./niceload.pod --title "GNU niceload" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old niceload.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old niceload.pdf
par_test_build_and_install pod2pdf --output-file ./parallel_tutorial.pdf ./parallel_tutorial.pod --title "GNU Parallel Tutorial" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel_tutorial.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel_tutorial.pdf
par_test_build_and_install pod2pdf --output-file ./parallel_book.pdf ./parallel_book.pod --title "GNU Parallel Book" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel_book.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel_book.pdf
par_test_build_and_install pod2pdf --output-file ./parallel_design.pdf ./parallel_design.pod --title "GNU Parallel Design" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel_design.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel_design.pdf
par_test_build_and_install pod2pdf --output-file ./parallel_alternatives.pdf ./parallel_alternatives.pod --title "GNU Parallel alternatives" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel_alternatives.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel_alternatives.pdf
par_test_build_and_install pod2pdf --output-file ./parcat.pdf ./parcat.pod --title "GNU parcat" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parcat.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parcat.pdf
par_test_build_and_install pod2pdf --output-file ./parset.pdf ./parset.pod --title "GNU parset" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parset.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parset.pdf
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000/src'
par_test_build_and_install /bin/mkdir -p '/tmp/parallel-install/bin'
par_test_build_and_install /usr/bin/install -c parallel sql niceload parcat parset env_parallel env_parallel.ash env_parallel.bash env_parallel.csh env_parallel.dash env_parallel.fish env_parallel.ksh env_parallel.mksh env_parallel.pdksh env_parallel.sh env_parallel.tcsh env_parallel.zsh '/tmp/parallel-install/bin'
par_test_build_and_install make install-exec-hook
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000/src'
par_test_build_and_install rm /tmp/parallel-install/bin/sem || true
par_test_build_and_install ln -s parallel /tmp/parallel-install/bin/sem
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000/src'
par_test_build_and_install pod2html --title "GNU Parallel" ./parallel.pod > ./parallel.htmln \
par_test_build_and_install && mv ./parallel.htmln ./parallel.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel with environment" ./env_parallel.pod > ./env_parallel.htmln \
par_test_build_and_install && mv ./env_parallel.htmln ./env_parallel.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old env_parallel.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old env_parallel.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel tutorial" ./parallel_tutorial.pod > ./parallel_tutorial.htmln \
par_test_build_and_install && mv ./parallel_tutorial.htmln ./parallel_tutorial.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel_tutorial.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel_tutorial.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel book" ./parallel_book.pod > ./parallel_book.htmln \
par_test_build_and_install && mv ./parallel_book.htmln ./parallel_book.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel_book.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel_book.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel design" ./parallel_design.pod > ./parallel_design.htmln \
par_test_build_and_install && mv ./parallel_design.htmln ./parallel_design.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel_design.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel_design.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel alternatives" ./parallel_alternatives.pod > ./parallel_alternatives.htmln \
par_test_build_and_install && mv ./parallel_alternatives.htmln ./parallel_alternatives.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel_alternatives.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel_alternatives.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "sem (GNU Parallel)" ./sem.pod > ./sem.htmln \
par_test_build_and_install && mv ./sem.htmln ./sem.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old sem.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old sem.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU SQL" ./sql > ./sql.htmln \
par_test_build_and_install && mv ./sql.htmln ./sql.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old sql.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old sql.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU niceload" ./niceload.pod > ./niceload.htmln \
par_test_build_and_install && mv ./niceload.htmln ./niceload.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old niceload.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old niceload.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU parcat" ./parcat.pod > ./parcat.htmln \
par_test_build_and_install && mv ./parcat.htmln ./parcat.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parcat.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parcat.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU parset" ./parset.pod > ./parset.htmln \
par_test_build_and_install && mv ./parset.htmln ./parset.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parset.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parset.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2texi --output=./parallel.texi ./parallel.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel.texi
par_test_build_and_install pod2texi --output=./env_parallel.texi ./env_parallel.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old env_parallel.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old env_parallel.texi
par_test_build_and_install pod2texi --output=./sem.texi ./sem.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old sem.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old sem.texi
par_test_build_and_install pod2texi --output=./sql.texi ./sql \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old sql.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old sql.texi
par_test_build_and_install pod2texi --output=./niceload.texi ./niceload.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old niceload.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old niceload.texi
par_test_build_and_install pod2texi --output=./parallel_tutorial.texi ./parallel_tutorial.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel_tutorial.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel_tutorial.texi
par_test_build_and_install pod2texi --output=./parallel_book.texi ./parallel_book.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel_book.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel_book.texi
par_test_build_and_install pod2texi --output=./parallel_design.texi ./parallel_design.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel_design.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel_design.texi
par_test_build_and_install pod2texi --output=./parallel_alternatives.texi ./parallel_alternatives.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel_alternatives.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel_alternatives.texi
par_test_build_and_install pod2texi --output=./parcat.texi ./parcat.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parcat.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parcat.texi
par_test_build_and_install pod2texi --output=./parset.texi ./parset.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parset.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parset.texi
par_test_build_and_install pod2pdf --output-file ./parallel.pdf ./parallel.pod --title "GNU Parallel" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel.pdf
par_test_build_and_install pod2pdf --output-file ./env_parallel.pdf ./env_parallel.pod --title "GNU Parallel with environment" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old env_parallel.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old env_parallel.pdf
par_test_build_and_install pod2pdf --output-file ./sem.pdf ./sem.pod --title "GNU sem" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old sem.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old sem.pdf
par_test_build_and_install pod2pdf --output-file ./sql.pdf ./sql --title "GNU SQL" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old sql.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old sql.pdf
par_test_build_and_install pod2pdf --output-file ./niceload.pdf ./niceload.pod --title "GNU niceload" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old niceload.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old niceload.pdf
par_test_build_and_install pod2pdf --output-file ./parallel_tutorial.pdf ./parallel_tutorial.pod --title "GNU Parallel Tutorial" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel_tutorial.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel_tutorial.pdf
par_test_build_and_install pod2pdf --output-file ./parallel_book.pdf ./parallel_book.pod --title "GNU Parallel Book" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel_book.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel_book.pdf
par_test_build_and_install pod2pdf --output-file ./parallel_design.pdf ./parallel_design.pod --title "GNU Parallel Design" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel_design.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel_design.pdf
par_test_build_and_install pod2pdf --output-file ./parallel_alternatives.pdf ./parallel_alternatives.pod --title "GNU Parallel alternatives" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel_alternatives.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel_alternatives.pdf
par_test_build_and_install pod2pdf --output-file ./parcat.pdf ./parcat.pod --title "GNU parcat" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parcat.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parcat.pdf
par_test_build_and_install pod2pdf --output-file ./parset.pdf ./parset.pod --title "GNU parset" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parset.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parset.pdf
par_test_build_and_install /bin/mkdir -p '/tmp/parallel-install/share/doc/parallel'
par_test_build_and_install /usr/bin/install -c -m 644 parallel.html env_parallel.html sem.html sql.html niceload.html parallel_tutorial.html parallel_book.html parallel_design.html parallel_alternatives.html parcat.html parset.html parallel.texi env_parallel.texi sem.texi sql.texi niceload.texi parallel_tutorial.texi parallel_book.texi parallel_design.texi parallel_alternatives.texi parcat.texi parset.texi parallel.pdf env_parallel.pdf sem.pdf sql.pdf niceload.pdf parallel_tutorial.pdf parallel_book.pdf parallel_design.pdf parallel_alternatives.pdf parcat.pdf parset.pdf parallel_cheat_bw.pdf '/tmp/parallel-install/share/doc/parallel'
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./parallel.pod > ./parallel.1n \
par_test_build_and_install && mv ./parallel.1n ./parallel.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./env_parallel.pod > ./env_parallel.1n \
par_test_build_and_install && mv ./env_parallel.1n ./env_parallel.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old env_parallel.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old env_parallel.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./sem.pod > ./sem.1n \
par_test_build_and_install && mv ./sem.1n ./sem.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old sem.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old sem.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./sql > ./sql.1n \
par_test_build_and_install && mv ./sql.1n ./sql.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old sql.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old sql.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./niceload.pod > ./niceload.1n \
par_test_build_and_install && mv ./niceload.1n ./niceload.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old niceload.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old niceload.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=7 ./parallel_tutorial.pod > ./parallel_tutorial.7n \
par_test_build_and_install && mv ./parallel_tutorial.7n ./parallel_tutorial.7 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel_tutorial.7"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel_tutorial.7
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=7 ./parallel_book.pod > ./parallel_book.7n \
par_test_build_and_install && mv ./parallel_book.7n ./parallel_book.7 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel_book.7"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel_book.7
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=7 ./parallel_design.pod > ./parallel_design.7n \
par_test_build_and_install && mv ./parallel_design.7n ./parallel_design.7 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel_design.7"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel_design.7
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=7 ./parallel_alternatives.pod > ./parallel_alternatives.7n \
par_test_build_and_install && mv ./parallel_alternatives.7n ./parallel_alternatives.7 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel_alternatives.7"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel_alternatives.7
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./parcat.pod > ./parcat.1n \
par_test_build_and_install && mv ./parcat.1n ./parcat.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parcat.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parcat.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./parset.pod > ./parset.1n \
par_test_build_and_install && mv ./parset.1n ./parset.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parset.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parset.1
par_test_build_and_install /bin/mkdir -p '/tmp/parallel-install/share/man/man1'
par_test_build_and_install /usr/bin/install -c -m 644 parallel.1 env_parallel.1 sem.1 sql.1 niceload.1 parcat.1 parset.1 '/tmp/parallel-install/share/man/man1'
par_test_build_and_install /bin/mkdir -p '/tmp/parallel-install/share/man/man7'
par_test_build_and_install /usr/bin/install -c -m 644 parallel_tutorial.7 parallel_book.7 parallel_design.7 parallel_alternatives.7 '/tmp/parallel-install/share/man/man7'
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000/src'
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000/src'
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000'
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000'
par_test_build_and_install make[0]: Nothing to be done for 'install-exec-am'.
par_test_build_and_install make[0]: Nothing to be done for 'install-data-am'.
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -11,6 +11,8 @@ Control case: Burn for 2.9 seconds
stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" ::: 1 | \grep -q CPUTIME=1
1=OK 1
par_PARALLEL_RSYNC_OPTS ### test rsync opts
par_PARALLEL_RSYNC_OPTS rsync --protocol 30 -rlDzRRRRrsync --protocol 30 --rsync-path='cd ././.; rsync' -rlDzRRRRrsync --protocol 30 -zzrrllddRRRRrsync --protocol 30 --rsync-path='cd ././.; rsync' -zzrrllddRRRR
par_continuous_output Test delayed output with ''
par_continuous_output -u is optimal but hard to reach, due to non-mixing
par_continuous_output 6
@ -104,6 +106,47 @@ par_hostgroup tange
par_hostgroup tange
par_hostgroup tcsh
par_hostgroup tcsh
par_kill_hup ### Are children killed if GNU Parallel receives HUP? There should be no sleep at the end
par_kill_hup bash-+-perl---2*[bash---sleep]
par_kill_hup `-pstree
par_kill_hup parallel: SIGHUP received. No new jobs will be started.
par_kill_hup parallel: Waiting for these 2 jobs to finish. Send SIGTERM to stop now.
par_kill_hup parallel: bash -c 'sleep 3 & pid=$!; wait $pid'
par_kill_hup parallel: bash -c 'sleep 3 & pid=$!; wait $pid'
par_kill_hup bash---pstree
par_resume_failed_k ### bug #38299: --resume-failed -k
par_resume_failed_k job1 val 0
par_resume_failed_k job2 val 1
par_resume_failed_k job3 val 2
par_resume_failed_k job4 val 3
par_resume_failed_k job5 val 0
par_resume_failed_k job6 val 1
par_resume_failed_k try 2. Gives failing - not 0
par_resume_failed_k job2 val 1
par_resume_failed_k job3 val 2
par_resume_failed_k job4 val 3
par_resume_failed_k job6 val 1
par_resume_failed_k with exit 0
par_resume_failed_k job2 val 1
par_resume_failed_k job3 val 2
par_resume_failed_k job4 val 3
par_resume_failed_k job6 val 1
par_resume_failed_k try 2 again. Gives empty
par_retries_bug_from_2010 ### Bug with --retries
par_retries_bug_from_2010 8
par_retries_bug_from_2010 8
par_retries_bug_from_2010 2
par_retries_bug_from_2010 1
par_retries_bug_from_2010 1
par_retries_bug_from_2010 1
par_retries_bug_from_2010 ### These were not affected by the bug
par_retries_bug_from_2010 8
par_retries_bug_from_2010 8
par_retries_bug_from_2010 1
par_retries_bug_from_2010 4
par_retries_bug_from_2010 4
par_retries_bug_from_2010 4
par_retries_bug_from_2010 2
par_testhalt now fail 0 true ### testhalt --halt now,fail=0
par_testhalt now fail 0 true job 1
par_testhalt now fail 0 true parallel: This job failed:

View file

@ -1,5 +1,3 @@
par_PARALLEL_RSYNC_OPTS ### test rsync opts
par_PARALLEL_RSYNC_OPTS rsync --protocol 30 -rlDzRRRRrsync --protocol 30 --rsync-path='cd ././.; rsync' -rlDzRRRRrsync --protocol 30 -zzrrllddRRRRrsync --protocol 30 --rsync-path='cd ././.; rsync' -zzrrllddRRRR
par_bar_m ### test --bar -m
par_bar_m 0
par_bar_m 50
@ -34,18 +32,3 @@ par_retries_2 ### Test of --retries - it should run 25 jobs in total
par_retries_2 OK
par_retries_4 ### Test of --retries - it should run 49 jobs in total
par_retries_4 OK
par_retries_bug_from_2010 ### Bug with --retries
par_retries_bug_from_2010 8
par_retries_bug_from_2010 8
par_retries_bug_from_2010 2
par_retries_bug_from_2010 1
par_retries_bug_from_2010 1
par_retries_bug_from_2010 1
par_retries_bug_from_2010 ### These were not affected by the bug
par_retries_bug_from_2010 8
par_retries_bug_from_2010 8
par_retries_bug_from_2010 1
par_retries_bug_from_2010 4
par_retries_bug_from_2010 4
par_retries_bug_from_2010 4
par_retries_bug_from_2010 2