testsuite: --joblog added to many tests.

This commit is contained in:
Ole Tange 2015-01-03 18:57:37 +01:00
parent 40668af537
commit 8d3bc91cc0
36 changed files with 220 additions and 93 deletions

View file

@ -21,7 +21,7 @@ freepl >/dev/null &
# niceload -q -l 5 perl -e '$a=join"",<>; while(1){push @a,$a}' & # niceload -q -l 5 perl -e '$a=join"",<>; while(1){push @a,$a}' &
cat <<'EOF' | stdout parallel -vj0 -k -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo '### --rm and --runmem' echo '### --rm and --runmem'
niceload -H --rm 1g free -g | perl -ane '/buffers.cache:/ and print $F[3],"\n"' | grep '[1-9]' >/dev/null && echo OK--rm niceload -H --rm 1g free -g | perl -ane '/buffers.cache:/ and print $F[3],"\n"' | grep '[1-9]' >/dev/null && echo OK--rm
niceload -H --runmem 1g free -g | perl -ane '/buffers.cache:/ and print $F[3],"\n"' | grep '[1-9]' >/dev/null && echo OK--runmem niceload -H --runmem 1g free -g | perl -ane '/buffers.cache:/ and print $F[3],"\n"' | grep '[1-9]' >/dev/null && echo OK--runmem
@ -34,13 +34,13 @@ EOF
# force load > 10 # force load > 10
while uptime | grep -v age:.[1-9][0-9].[0-9][0-9] >/dev/null ; do (timeout 5 nice burnP6 2>/dev/null &) done while uptime | grep -v age:.[1-9][0-9].[0-9][0-9] >/dev/null ; do (timeout 5 nice burnP6 2>/dev/null &) done
cat <<'EOF' | stdout parallel -vj0 -k -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo '### -H and --hard' echo '### -H and --hard'
niceload -H -l 9.9 uptime | grep ':.[1-9][0-9].[0-9][0-9],' || echo OK-l9.9 niceload -H -l 9.9 uptime | grep ':.[1-9][0-9].[0-9][0-9],' || echo OK-l9.9
niceload --hard -l 9 uptime | grep ':.[1-9][0-9].[0-9][0-9],' || echo OK-l9 niceload --hard -l 9 uptime | grep ':.[1-9][0-9].[0-9][0-9],' || echo OK-l9
EOF EOF
cat <<'EOF' | stdout parallel -vj0 -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo '### -f and --factor' echo '### -f and --factor'
niceload -H --factor 10 -l6 echo factor 10 finish last niceload -H --factor 10 -l6 echo factor 10 finish last
niceload -H -f 0.01 -l6 echo f 0.1 finish first niceload -H -f 0.01 -l6 echo f 0.1 finish first

View file

@ -8,7 +8,7 @@ int() {
} }
export -f int export -f int
cat <<'EOF' | stdout parallel -k -vj0 -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
# The seq 30000000 should take > 1 cpu sec to run. # The seq 30000000 should take > 1 cpu sec to run.
echo '### --soft -f and test if child is actually suspended and thus takes longer' echo '### --soft -f and test if child is actually suspended and thus takes longer'
niceload --soft -f 0.5 'seq 30000000 | nice wc;echo This should finish last' & niceload --soft -f 0.5 'seq 30000000 | nice wc;echo This should finish last' &

View file

@ -9,7 +9,7 @@ ping -c 1 freebsd7.tange.dk >/dev/null 2>&1
ssh freebsd7.tange.dk touch .parallel/will-cite ssh freebsd7.tange.dk touch .parallel/will-cite
scp -q .*/src/{parallel,sem,sql,niceload} freebsd7.tange.dk:bin/ scp -q .*/src/{parallel,sem,sql,niceload} freebsd7.tange.dk:bin/
cat <<'EOF' | sed -e 's/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -k -S freebsd7.tange.dk -vj9 -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj9 -k --joblog /tmp/jl-`basename $0` -L1 -S freebsd7.tange.dk
echo 'bug #40136: FreeBSD: No more processes' echo 'bug #40136: FreeBSD: No more processes'
sem --jobs 3 --id my_id -u 'echo First started; sleep 5; echo The first finished' && sem --jobs 3 --id my_id -u 'echo First started; sleep 5; echo The first finished' &&
sem --jobs 3 --id my_id -u 'echo Second started; sleep 6; echo The second finished' && sem --jobs 3 --id my_id -u 'echo Second started; sleep 6; echo The second finished' &&

View file

@ -3,7 +3,7 @@
# Simple jobs that never fails # Simple jobs that never fails
# Each should be taking 0.3-1s and be possible to run in parallel # Each should be taking 0.3-1s and be possible to run in parallel
# I.e.: No race conditions, no logins # I.e.: No race conditions, no logins
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -k -vj4 -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo '### Test exit val - true'; echo '### Test exit val - true';
echo true | parallel; echo true | parallel;
echo $? echo $?

View file

@ -3,7 +3,7 @@
# Simple jobs that never fails # Simple jobs that never fails
# Each should be taking >100s and be possible to run in parallel # Each should be taking >100s and be possible to run in parallel
# I.e.: No race conditions, no logins # I.e.: No race conditions, no logins
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -k -vj4 -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo '### Test if we can deal with output > 4 GB' echo '### Test if we can deal with output > 4 GB'
## echo | niceload --io 10 parallel -q perl -e '"\$a=\"x\"x1000000;for(0..4300){print \$a}"' | md5sum ## echo | niceload --io 10 parallel -q perl -e '"\$a=\"x\"x1000000;for(0..4300){print \$a}"' | md5sum
echo | parallel --tmpdir /dev/shm -q perl -e '$a="x"x1000000;for(0..4300){print $a}' | md5sum echo | parallel --tmpdir /dev/shm -q perl -e '$a="x"x1000000;for(0..4300){print $a}' | md5sum

View file

@ -3,5 +3,5 @@
# Simple jobs that never fails # Simple jobs that never fails
# Each should be taking 10-30s and be possible to run in parallel # Each should be taking 10-30s and be possible to run in parallel
# I.e.: No race conditions, no logins # I.e.: No race conditions, no logins
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -k -vj4 -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
EOF EOF

View file

@ -10,7 +10,7 @@ mkdir -p $SHM
sudo umount -l $SHM sudo umount -l $SHM
sudo mount -t tmpfs -o size=10% none $SHM sudo mount -t tmpfs -o size=10% none $SHM
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -k -vj4 -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj4 -k --joblog /tmp/jl-`basename $0` -L1
echo '### Test race condition on 8 CPU (my laptop)'; echo '### Test race condition on 8 CPU (my laptop)';
seq 1 5000000 > /tmp/parallel_test; seq 1 5000000 > /tmp/parallel_test;
seq 1 10 | parallel -k "cat /tmp/parallel_test | parallel --pipe --recend '' -k gzip >/dev/null; echo {}" seq 1 10 | parallel -k "cat /tmp/parallel_test | parallel --pipe --recend '' -k gzip >/dev/null; echo {}"

View file

@ -3,7 +3,7 @@
# Simple jobs that never fails # Simple jobs that never fails
# Each should be taking 3-10s and be possible to run in parallel # Each should be taking 3-10s and be possible to run in parallel
# I.e.: No race conditions, no logins # I.e.: No race conditions, no logins
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -k -vj4 -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj4 -k --joblog /tmp/jl-`basename $0` -L1
echo '### bug #42089: --results with arg > 256 chars (should be 1 char shorter)' echo '### bug #42089: --results with arg > 256 chars (should be 1 char shorter)'
parallel --results parallel_test_dir echo ::: 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456; parallel --results parallel_test_dir echo ::: 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456;
ls parallel_test_dir/1/ ls parallel_test_dir/1/

View file

@ -5,7 +5,7 @@ rm -rf tmp
mkdir tmp mkdir tmp
cd tmp cd tmp
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | stdout parallel -vj5 -k -L1 cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | stdout parallel -vj5 -k --joblog /tmp/jl-`basename $0` -L1
echo '### Stop if all hosts are filtered and there are no hosts left to run on' echo '### Stop if all hosts are filtered and there are no hosts left to run on'
stdout parallel --filter-hosts -S no-such.host echo ::: 1 stdout parallel --filter-hosts -S no-such.host echo ::: 1

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | stdout parallel -vj6 -k -L1 cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | stdout parallel -vj6 -k --joblog /tmp/jl-`basename $0` -L1
echo "### bug #43518: GNU Parallel doesn't obey servers' jobs capacity when an ssh login file is reloaded" echo "### bug #43518: GNU Parallel doesn't obey servers' jobs capacity when an ssh login file is reloaded"
# Pre-20141106 Would reset the number of jobs run on all sshlogin if --slf changed # Pre-20141106 Would reset the number of jobs run on all sshlogin if --slf changed
# Thus must take at least 25 sec to run # Thus must take at least 25 sec to run

View file

@ -1,8 +1,7 @@
#!/bin/bash #!/bin/bash
# SSH only allowed to localhost/lo # SSH only allowed to localhost/lo
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj2 -k --joblog /tmp/jl-`basename $0` -L1
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | stdout parallel -vj2 -k -L1
echo '### --hostgroup force ncpu' echo '### --hostgroup force ncpu'
parallel --delay 0.1 --hgrp -S @g1/1/parallel@lo -S @g2/3/lo whoami\;sleep 0.{} ::: {1..8} | sort parallel --delay 0.1 --hgrp -S @g1/1/parallel@lo -S @g2/3/lo whoami\;sleep 0.{} ::: {1..8} | sort

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
cat <<'EOF' | parallel -vj0 -k cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo "bug #43654: --bar with command not using {} - only last output line " echo "bug #43654: --bar with command not using {} - only last output line "
COLUMNS=80 stdout parallel --bar true {.} ::: 1 | perl -pe 's/.*\r/\r/' COLUMNS=80 stdout parallel --bar true {.} ::: 1 | perl -pe 's/.*\r/\r/'
@ -109,7 +109,7 @@ echo '### Test of bug: If input is empty string'
(echo ; echo abcbdbebf;echo abc) | parallel -k --colsep b -v echo {1}{2} (echo ; echo abcbdbebf;echo abc) | parallel -k --colsep b -v echo {1}{2}
echo '### Test bug #34241: --pipe should not spawn unneeded processes' echo '### Test bug #34241: --pipe should not spawn unneeded processes'
seq 3 | parallel -j30 --pipe --block-size 10 cat\;echo o seq 3 | parallel -j30 --pipe --block-size 10 cat\;echo o
echo '### Test :::: mixed with :::' echo '### Test :::: mixed with :::'
echo '### Test :::: < ::: :::' echo '### Test :::: < ::: :::'
@ -152,7 +152,7 @@ echo '### bug #37042: -J foo is taken from the whole command line - not just the
echo '--tagstring foo' > ~/.parallel/bug_37042_profile; echo '--tagstring foo' > ~/.parallel/bug_37042_profile;
parallel -J bug_37042_profile echo ::: tag_with_foo; parallel -J bug_37042_profile echo ::: tag_with_foo;
parallel --tagstring a -J bug_37042_profile echo ::: tag_with_a; parallel --tagstring a -J bug_37042_profile echo ::: tag_with_a;
parallel --tagstring a echo -J bug_37042_profile ::: print_-J_bug_37042_profile; parallel --tagstring a echo -J bug_37042_profile ::: print_-J_bug_37042_profile
echo '### Bug introduce by fixing bug #37042' echo '### Bug introduce by fixing bug #37042'
parallel --xapply -a <(printf 'abc') --colsep '\t' echo {1} parallel --xapply -a <(printf 'abc') --colsep '\t' echo {1}

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | parallel -vj0 -k -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo "### --line-buffer" echo "### --line-buffer"
seq 10 | parallel -j20 --line-buffer 'seq {} 10 | pv -qL 10' > /tmp/parallel_l$$; seq 10 | parallel -j20 --line-buffer 'seq {} 10 | pv -qL 10' > /tmp/parallel_l$$;
seq 10 | parallel -j20 'seq {} 10 | pv -qL 10' > /tmp/parallel_$$; seq 10 | parallel -j20 'seq {} 10 | pv -qL 10' > /tmp/parallel_$$;

View file

@ -5,7 +5,7 @@ echo '### Tests from xargs'
rsync -Ha --delete input-files/xargs-inputs/ tmp/ rsync -Ha --delete input-files/xargs-inputs/ tmp/
cd tmp cd tmp
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo '### -0 -n3 echo < files0.xi' echo '### -0 -n3 echo < files0.xi'
stdout xargs -0 -n3 echo < files0.xi stdout xargs -0 -n3 echo < files0.xi
stdout parallel -k -0 -n3 echo < files0.xi stdout parallel -k -0 -n3 echo < files0.xi

View file

@ -17,7 +17,7 @@ echo '### Check that we can have more input than max procs (-j 0) - touch'
perl -e 'print map {"more_than_5000-$_\n" } (4000..9999)' | parallel -vj 0 touch | sort | tail perl -e 'print map {"more_than_5000-$_\n" } (4000..9999)' | parallel -vj 0 touch | sort | tail
echo '### rm' echo '### rm'
perl -e 'print map {"more_than_5000-$_\n" } (4000..9900)' | parallel -j 0 rm | sort perl -e 'print map {"more_than_5000-$_\n" } (4000..9900)' | parallel -j 0 rm | sort
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout nice parallel -vj0 -k -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" {}\n\"}"' | sort ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" {}\n\"}"' | sort
ls | parallel --group -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" {}\n\"}"' | sort ls | parallel --group -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" {}\n\"}"' | sort
find . -type f | parallel --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | sort find . -type f | parallel --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | sort

View file

@ -7,7 +7,7 @@ median() { perl -e '@a=sort {$a<=>$b} <>;print $a[$#a/2]';}
export -f median export -f median
# -L1 will join lines ending in ' ' # -L1 will join lines ending in ' '
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj0 -k -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo '### bug #41565: Print happens in blocks - not after each job complete' echo '### bug #41565: Print happens in blocks - not after each job complete'
echo 'The timing here is important: a full second between each' echo 'The timing here is important: a full second between each'
perl -e 'for(1..10){print("$_\n");`sleep 1`}' | parallel -j3 'echo {#}' | timestamp -dd | perl -pe '$_=int($_+0.3)."\n"' | median perl -e 'for(1..10){print("$_\n");`sleep 1`}' | parallel -j3 'echo {#}' | timestamp -dd | perl -pe '$_=int($_+0.3)."\n"' | median
@ -23,17 +23,17 @@ echo '### Test --tagstring'
echo '### Bug in --load'; echo '### Bug in --load';
nice parallel -k --load 30 sleep 0.1\;echo ::: 1 2 3 nice parallel -k --load 30 sleep 0.1\;echo ::: 1 2 3
echo '### Test --timeout'; echo '### Test --timeout'
nice parallel -j0 -k --timeout 1 echo {}\; sleep {}\; echo {} ::: 1.1 7.7 8.8 9.9 nice parallel -j0 -k --timeout 1 echo {}\; sleep {}\; echo {} ::: 1.1 7.7 8.8 9.9
echo '### Test retired'; echo '### Test retired'
stdout parallel -B foo; stdout parallel -B foo
stdout parallel -g; stdout parallel -g
stdout parallel -H 1; stdout parallel -H 1
stdout parallel -T; stdout parallel -T
stdout parallel -U foo; stdout parallel -U foo
stdout parallel -W foo; stdout parallel -W foo
stdout parallel -Y; stdout parallel -Y
echo '### Test --joblog followed by --resume --joblog' echo '### Test --joblog followed by --resume --joblog'
rm -f /tmp/joblog; rm -f /tmp/joblog;
@ -49,16 +49,16 @@ echo '### Test --resume --joblog followed by --resume --joblog';
cat /tmp/joblog2 | wc -lw; cat /tmp/joblog2 | wc -lw;
rm -f /tmp/joblog2; rm -f /tmp/joblog2;
echo '### Test --header'; echo '### Test --header'
printf "a\tb\n1.2\t3/4.5" | parallel --colsep "\t" --header "\n" echo {b} {a} {b.} {b/} {b//} {b/.}; printf "a\tb\n1.2\t3/4.5" | parallel --colsep "\t" --header "\n" echo {b} {a} {b.} {b/} {b//} {b/.}
echo '### 64-bit wierdness - this did not complete on a 64-bit machine'; echo '### 64-bit wierdness - this did not complete on a 64-bit machine';
seq 1 2 | parallel -j1 'seq 1 1 | parallel true' seq 1 2 | parallel -j1 'seq 1 1 | parallel true'
echo "### BUG-fix: bash -c 'parallel -a <(seq 1 3) echo'"; echo "### BUG-fix: bash -c 'parallel -a <(seq 1 3) echo'"
stdout bash -c 'parallel -k -a <(seq 1 3) echo' stdout bash -c 'parallel -k -a <(seq 1 3) echo'
echo "### bug #35268: shell_quote doesn't treats [] brackets correctly"; echo "### bug #35268: shell_quote doesn't treats [] brackets correctly"
touch /tmp/foo1; touch /tmp/foo1;
stdout parallel echo ::: '/tmp/foo[123]' stdout parallel echo ::: '/tmp/foo[123]'
@ -71,38 +71,38 @@ echo '### Test of segfaulting issue'
echo 'before adding wait() before exit'; echo 'before adding wait() before exit';
seq 1 300 | stdout parallel ./trysegfault seq 1 300 | stdout parallel ./trysegfault
echo '### Test basic --arg-sep'; echo '### Test basic --arg-sep'
parallel -k echo ::: a b parallel -k echo ::: a b
echo '### Run commands using --arg-sep'; echo '### Run commands using --arg-sep'
parallel -kv ::: 'echo a' 'echo b' parallel -kv ::: 'echo a' 'echo b'
echo '### Change --arg-sep'; echo '### Change --arg-sep'
parallel --arg-sep ::: -kv ::: 'echo a' 'echo b'; parallel --arg-sep ::: -kv ::: 'echo a' 'echo b'
parallel --arg-sep .--- -kv .--- 'echo a' 'echo b'; parallel --arg-sep .--- -kv .--- 'echo a' 'echo b'
parallel --argsep ::: -kv ::: 'echo a' 'echo b'; parallel --argsep ::: -kv ::: 'echo a' 'echo b'
parallel --argsep .--- -kv .--- 'echo a' 'echo b' parallel --argsep .--- -kv .--- 'echo a' 'echo b'
echo '### Test stdin goes to first command only' echo '### Test stdin goes to first command only'
echo via cat |parallel --arg-sep .--- -kv .--- 'cat' 'echo b' echo via cat |parallel --arg-sep .--- -kv .--- 'cat' 'echo b'
echo via cat |parallel -kv ::: 'cat' 'echo b' echo via cat |parallel -kv ::: 'cat' 'echo b'
echo '### Bug made 4 5 go before 1 2 3'; echo '### Bug made 4 5 go before 1 2 3'
parallel -k ::: "sleep 1; echo 1" "echo 2" "echo 3" "echo 4" "echo 5" parallel -k ::: "sleep 1; echo 1" "echo 2" "echo 3" "echo 4" "echo 5"
echo '### Bug made 3 go before 1 2'; echo '### Bug made 3 go before 1 2'
parallel -kj 1 ::: "sleep 1; echo 1" "echo 2" "echo 3" parallel -kj 1 ::: "sleep 1; echo 1" "echo 2" "echo 3"
echo '### Bug did not quote'; echo '### Bug did not quote'
echo '>' | parallel -v echo; echo '>' | parallel -v echo
parallel -v echo ::: '>'; parallel -v echo ::: '>'
(echo '>'; echo 2) | parallel -j1 -vX echo; (echo '>'; echo 2) | parallel -j1 -vX echo
parallel -X -j1 echo ::: '>' 2 parallel -X -j1 echo ::: '>' 2
echo '### Must not quote'; echo '### Must not quote';
echo 'echo | wc -l' | parallel -v; echo 'echo | wc -l' | parallel -v
parallel -v ::: 'echo | wc -l'; parallel -v ::: 'echo | wc -l'
echo 'echo a b c | wc -w' | parallel -v; echo 'echo a b c | wc -w' | parallel -v
parallel -kv ::: 'echo a b c | wc -w' 'echo a b | wc -w' parallel -kv ::: 'echo a b c | wc -w' 'echo a b | wc -w'
echo '### Test bug #35820: sem breaks if $HOME is not writable' echo '### Test bug #35820: sem breaks if $HOME is not writable'

View file

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# -L1 will join lines ending in ' ' # -L1 will join lines ending in ' '
cat <<'EOF' | parallel -vj10 -k -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo '### bug #38354: -J profile_name should read from `pwd`/profile_name before ~/.parallel/profile_name' echo '### bug #38354: -J profile_name should read from `pwd`/profile_name before ~/.parallel/profile_name'
echo "echo echo from ./local_test_profile" > local_test_profile; echo "echo echo from ./local_test_profile" > local_test_profile;
parallel --profile local_test_profile echo ::: 1; parallel --profile local_test_profile echo ::: 1;
@ -56,9 +56,9 @@ echo "### Computing length of command line"
parallel -k -C %+ echo '"{1}_{3}_{2}_{4}"' ::: 'a% c %%b' 'a%c% b %d' parallel -k -C %+ echo '"{1}_{3}_{2}_{4}"' ::: 'a% c %%b' 'a%c% b %d'
parallel -k -C %+ echo {4} ::: 'a% c %%b' parallel -k -C %+ echo {4} ::: 'a% c %%b'
echo "### test08"; echo "### test08"
cd input-files/test08; cd input-files/test08;
ls | parallel -q perl -ne '/_PRE (\d+)/ and $p=$1; /hatchname> (\d+)/ and $1!=$p and print $ARGV,"\n"' | sort; ls | parallel -q perl -ne '/_PRE (\d+)/ and $p=$1; /hatchname> (\d+)/ and $1!=$p and print $ARGV,"\n"' | sort
seq 1 10 | parallel -j 1 echo | sort seq 1 10 | parallel -j 1 echo | sort
seq 1 10 | parallel -j 2 echo | sort seq 1 10 | parallel -j 2 echo | sort

View file

@ -15,7 +15,7 @@ forceload () {
# Force load avg > number of cpu cores # Force load avg > number of cpu cores
forceload $(parallel --number-of-cores) forceload $(parallel --number-of-cores)
cat <<'EOF' | parallel -vj0 -k -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo "bug #38441: CPU usage goes to 100% if load is higher than --load at first job" echo "bug #38441: CPU usage goes to 100% if load is higher than --load at first job"
/usr/bin/time -f %e parallel --load 100% true ::: a 2>&1 | /usr/bin/time -f %e parallel --load 100% true ::: a 2>&1 |
perl -ne '$_ > 1 and print "More than 1 secs wall clock: OK\n"' perl -ne '$_ > 1 and print "More than 1 secs wall clock: OK\n"'

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo '### Test of xargs -m command lines > 130k'; echo '### Test of xargs -m command lines > 130k';
seq 1 60000 | parallel -m -j1 echo a{}b{}c | tee >(wc >/tmp/awc$$) >(sort | md5sum) >/tmp/a$$; seq 1 60000 | parallel -m -j1 echo a{}b{}c | tee >(wc >/tmp/awc$$) >(sort | md5sum) >/tmp/a$$;
wait; wait;

View file

@ -6,7 +6,7 @@ cp -a input-files/testdir2 tmp
NICEPAR="nice nice parallel" NICEPAR="nice nice parallel"
export NICEPAR export NICEPAR
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo '### bug #42329: --line-buffer gives wrong output'; echo '### bug #42329: --line-buffer gives wrong output';
$NICEPAR --line-buffer --tag seq ::: 10000000 | wc -c; $NICEPAR --line-buffer --tag seq ::: 10000000 | wc -c;
$NICEPAR --line-buffer seq ::: 10000000 | wc -c $NICEPAR --line-buffer seq ::: 10000000 | wc -c

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
cat <<'EOF' | parallel -vj0 -vk cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo '### bug #36595: silent loss of input with --pipe and --sshlogin' echo '### bug #36595: silent loss of input with --pipe and --sshlogin'
seq 10000 | xargs | parallel --pipe -S 10/localhost cat | wc seq 10000 | xargs | parallel --pipe -S 10/localhost cat | wc
@ -32,12 +32,12 @@ echo '### How do we deal with missing $SHELL'
unset SHELL; stdout perl -w $(which parallel) -k echo ::: 1 2 3 unset SHELL; stdout perl -w $(which parallel) -k echo ::: 1 2 3
echo '### Test if length is computed correctly - first should give one line, second 2 lines each' echo '### Test if length is computed correctly - first should give one line, second 2 lines each'
seq 4 | parallel -s 29 -X -kj1 echo a{}b{}c seq 4 | parallel -s 29 -X -kj1 echo a{}b{}c
seq 4 | parallel -s 28 -X -kj1 echo a{}b{}c seq 4 | parallel -s 28 -X -kj1 echo a{}b{}c
seq 4 | parallel -s 21 -X -kj1 echo {} {} seq 4 | parallel -s 21 -X -kj1 echo {} {}
seq 4 | parallel -s 20 -X -kj1 echo {} {} seq 4 | parallel -s 20 -X -kj1 echo {} {}
seq 4 | parallel -s 23 -m -kj1 echo a{}b{}c seq 4 | parallel -s 23 -m -kj1 echo a{}b{}c
seq 4 | parallel -s 22 -m -kj1 echo a{}b{}c seq 4 | parallel -s 22 -m -kj1 echo a{}b{}c
seq 4 | parallel -s 21 -m -kj1 echo {} {} seq 4 | parallel -s 21 -m -kj1 echo {} {}
seq 4 | parallel -s 20 -m -kj1 echo {} {} seq 4 | parallel -s 20 -m -kj1 echo {} {}

View file

@ -5,7 +5,7 @@ echo '### Test --pipe'
seq 1 1000000 >/tmp/parallel-seq seq 1 1000000 >/tmp/parallel-seq
shuf --random-source=/tmp/parallel-seq /tmp/parallel-seq >/tmp/blocktest shuf --random-source=/tmp/parallel-seq /tmp/parallel-seq >/tmp/blocktest
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj2 -k -L1 cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj2 -k --joblog /tmp/jl-`basename $0` -L1
echo '### Test 200M records with too small block'; echo '### Test 200M records with too small block';
( (
echo start; echo start;

View file

@ -7,7 +7,7 @@ export XAP
NICEPAR="nice nice parallel" NICEPAR="nice nice parallel"
export NICEPAR export NICEPAR
cat <<'EOF' | sed -e 's/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k -L1 cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo 'bug #41613: --compress --line-buffer no newline'; echo 'bug #41613: --compress --line-buffer no newline';
perl -e 'print "It worked"'| $NICEPAR --pipe --compress --line-buffer cat; echo perl -e 'print "It worked"'| $NICEPAR --pipe --compress --line-buffer cat; echo

View file

@ -1,6 +1,7 @@
#!/bin/bash #!/bin/bash
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -v -k --joblog /tmp/jl-`basename $0` -L1 # -L1 will join lines ending in ' '
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo '### Test mutex. This should not mix output'; echo '### Test mutex. This should not mix output';
parallel --semaphore --id mutex -u seq 1 10 '|' pv -qL 20; parallel --semaphore --id mutex -u seq 1 10 '|' pv -qL 20;
parallel --semaphore --id mutex -u seq 11 20 '|' pv -qL 100; parallel --semaphore --id mutex -u seq 11 20 '|' pv -qL 100;

View file

@ -132,7 +132,7 @@ echo /tmp/parallel_f1 /tmp/parallel_f2 | stdout parallel -kv --delimiter ' ' gzi
rm /tmp/parallel_f* rm /tmp/parallel_f*
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -j10 -k -L1 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj10 -k --joblog /tmp/jl-`basename $0` -L1
echo '### Test -i and --replace: Replace with argument' echo '### Test -i and --replace: Replace with argument'
(echo a; echo END; echo b) | parallel -k -i -eEND echo repl{}ce (echo a; echo END; echo b) | parallel -k -i -eEND echo repl{}ce
(echo a; echo END; echo b) | parallel -k --replace -eEND echo repl{}ce (echo a; echo END; echo b) | parallel -k --replace -eEND echo repl{}ce

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
cat <<'EOF' | parallel -vj0 -k cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj10 -k --joblog /tmp/jl-`basename $0` -L1
echo '### Test of --eta' echo '### Test of --eta'
seq 1 10 | stdout parallel --eta "sleep 1; echo {}" | wc -l seq 1 10 | stdout parallel --eta "sleep 1; echo {}" | wc -l

View file

@ -4,7 +4,7 @@ SERVER1=parallel-server3
SERVER2=parallel-server1 SERVER2=parallel-server1
# -L1 will join lines ending in ' ' # -L1 will join lines ending in ' '
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj0 -k -L1 cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj10 -k --joblog /tmp/jl-`basename $0` -L1
echo "### BUG: The length for -X is not close to max (131072)"; echo "### BUG: The length for -X is not close to max (131072)";
seq 1 60000 | nice parallel -X echo {.} aa {}{.} {}{}d{} {}dd{}d{.} |head -n 1 |wc seq 1 60000 | nice parallel -X echo {.} aa {}{.} {}{}d{} {}dd{}d{.} |head -n 1 |wc
seq 1 60000 | nice parallel -X echo a{}b{}c |head -n 1 |wc seq 1 60000 | nice parallel -X echo a{}b{}c |head -n 1 |wc

View file

@ -6,7 +6,7 @@ SSHLOGIN1=parallel@$SERVER1
SSHLOGIN2=parallel@$SERVER2 SSHLOGIN2=parallel@$SERVER2
# -L1 will join lines ending in ' ' # -L1 will join lines ending in ' '
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/\;s/\$SSHLOGIN1/$SSHLOGIN1/\;s/\$SSHLOGIN2/$SSHLOGIN2/ | parallel -vj0 -k -L1 cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/\;s/\$SSHLOGIN1/$SSHLOGIN1/\;s/\$SSHLOGIN2/$SSHLOGIN2/ | parallel -vj10 -k --joblog /tmp/jl-`basename $0` -L1
echo '### Test --onall'; echo '### Test --onall';
parallel --onall -S $SSHLOGIN1,$SSHLOGIN2 '(echo {1} {2}) | awk \{print\ \$2}' ::: a b c ::: 1 2 parallel --onall -S $SSHLOGIN1,$SSHLOGIN2 '(echo {1} {2}) | awk \{print\ \$2}' ::: a b c ::: 1 2

View file

@ -3,7 +3,7 @@
SERVER1=parallel-server3 SERVER1=parallel-server3
SERVER2=parallel-server2 SERVER2=parallel-server2
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj0 -k -L1 cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj10 -k --joblog /tmp/jl-`basename $0` -L1
echo '### Test --return of weirdly named file' echo '### Test --return of weirdly named file'
stdout parallel --return {} -vv -S parallel\@$SERVER1 echo '>'{} ::: 'aa<${#}" b' | stdout parallel --return {} -vv -S parallel\@$SERVER1 echo '>'{} ::: 'aa<${#}" b' |
perl -pe 's/\S*parallel-server\S*/one-server/;s/[a-f0-9]{500,}/hex/;s/\d{5,8}/pId/g;'; rm 'aa<${#}" b' perl -pe 's/\S*parallel-server\S*/one-server/;s/[a-f0-9]{500,}/hex/;s/\d{5,8}/pId/g;'; rm 'aa<${#}" b'

View file

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# -L1 will join lines ending in ' ' # -L1 will join lines ending in ' '
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj10 -k -L1 cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj10 -k --joblog /tmp/jl-`basename $0` -L1
echo "### Test memory consumption stays (almost) the same for 30 and 300 jobs" echo "### Test memory consumption stays (almost) the same for 30 and 300 jobs"
out30=$( stdout memusg parallel -j2 true :::: <(perl -e '$a="x"x100000;for(1..30){print $a,"\n"}') ); out30=$( stdout memusg parallel -j2 true :::: <(perl -e '$a="x"x100000;for(1..30){print $a,"\n"}') );
out300=$( stdout memusg parallel -j2 true :::: <(perl -e '$a="x"x100000;for(1..300){print $a,"\n"}') ); out300=$( stdout memusg parallel -j2 true :::: <(perl -e '$a="x"x100000;for(1..300){print $a,"\n"}') );

View file

@ -15,9 +15,8 @@ echo 'Test --compress --pipe'
Test --compress --pipe Test --compress --pipe
jot 1000 | parallel --compress --pipe cat | wc jot 1000 | parallel --compress --pipe cat | wc
1000 1000 3893 1000 1000 3893
echo 'bug #41613: --compress --line-buffer no newline'; echo 'bug #41613: --compress --line-buffer no newline'; perl -e 'print "It worked"'| parallel --pipe --compress --line-buffer cat; echo
bug #41613: --compress --line-buffer no newline bug #41613: --compress --line-buffer no newline
perl -e 'print "It worked"'| parallel --pipe --compress --line-buffer cat; echo
It worked It worked
echo 'bug #40135: FreeBSD: sem --fg does not finish under /bin/sh' echo 'bug #40135: FreeBSD: sem --fg does not finish under /bin/sh'
bug #40135: FreeBSD: sem --fg does not finish under /bin/sh bug #40135: FreeBSD: sem --fg does not finish under /bin/sh

View file

@ -211,7 +211,7 @@ echo ac
ac ac
echo '### Test bug #34241: --pipe should not spawn unneeded processes' echo '### Test bug #34241: --pipe should not spawn unneeded processes'
### Test bug #34241: --pipe should not spawn unneeded processes ### Test bug #34241: --pipe should not spawn unneeded processes
seq 3 | parallel -j30 --pipe --block-size 10 cat\;echo o seq 3 | parallel -j30 --pipe --block-size 10 cat\;echo o
1 1
2 2
3 3
@ -369,12 +369,9 @@ echo '### Test --seqreplace and line too long'
1 parallel: Error: Command line too long (309 >= 210) at number 0: 100... 1 parallel: Error: Command line too long (309 >= 210) at number 0: 100...
echo '### bug #37042: -J foo is taken from the whole command line - not just the part before the command' echo '### bug #37042: -J foo is taken from the whole command line - not just the part before the command'
### bug #37042: -J foo is taken from the whole command line - not just the part before the command ### bug #37042: -J foo is taken from the whole command line - not just the part before the command
echo '--tagstring foo' > ~/.parallel/bug_37042_profile; echo '--tagstring foo' > ~/.parallel/bug_37042_profile; parallel -J bug_37042_profile echo ::: tag_with_foo; parallel --tagstring a -J bug_37042_profile echo ::: tag_with_a; parallel --tagstring a echo -J bug_37042_profile ::: print_-J_bug_37042_profile
parallel -J bug_37042_profile echo ::: tag_with_foo;
foo tag_with_foo foo tag_with_foo
parallel --tagstring a -J bug_37042_profile echo ::: tag_with_a;
a tag_with_a a tag_with_a
parallel --tagstring a echo -J bug_37042_profile ::: print_-J_bug_37042_profile;
a -J bug_37042_profile print_-J_bug_37042_profile a -J bug_37042_profile print_-J_bug_37042_profile
echo '### Bug introduce by fixing bug #37042' echo '### Bug introduce by fixing bug #37042'
### Bug introduce by fixing bug #37042 ### Bug introduce by fixing bug #37042

View file

@ -33,15 +33,17 @@ echo '### Bug in --load'; nice parallel -k --load 30 sleep 0.1\;echo ::: 1 2 3
1 1
2 2
3 3
echo '### Test --timeout'; nice parallel -j0 -k --timeout 1 echo {}\; sleep {}\; echo {} ::: 1.1 7.7 8.8 9.9 echo '### Test --timeout'
### Test --timeout ### Test --timeout
nice parallel -j0 -k --timeout 1 echo {}\; sleep {}\; echo {} ::: 1.1 7.7 8.8 9.9
1.1 1.1
1.1 1.1
7.7 7.7
8.8 8.8
9.9 9.9
echo '### Test retired'; stdout parallel -B foo; stdout parallel -g; stdout parallel -H 1; stdout parallel -T; stdout parallel -U foo; stdout parallel -W foo; stdout parallel -Y; echo '### Test retired'
### Test retired ### Test retired
stdout parallel -B foo
parallel: Error: -g has been retired. Use --group. parallel: Error: -g has been retired. Use --group.
parallel: Error: -B has been retired. Use --bf. parallel: Error: -B has been retired. Use --bf.
parallel: Error: -T has been retired. Use --tty. parallel: Error: -T has been retired. Use --tty.
@ -50,6 +52,7 @@ parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang. parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt. parallel: Error: -H has been retired. Use --halt.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l. parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
stdout parallel -g
parallel: Error: -g has been retired. Use --group. parallel: Error: -g has been retired. Use --group.
parallel: Error: -B has been retired. Use --bf. parallel: Error: -B has been retired. Use --bf.
parallel: Error: -T has been retired. Use --tty. parallel: Error: -T has been retired. Use --tty.
@ -58,6 +61,7 @@ parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang. parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt. parallel: Error: -H has been retired. Use --halt.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l. parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
stdout parallel -H 1
parallel: Error: -g has been retired. Use --group. parallel: Error: -g has been retired. Use --group.
parallel: Error: -B has been retired. Use --bf. parallel: Error: -B has been retired. Use --bf.
parallel: Error: -T has been retired. Use --tty. parallel: Error: -T has been retired. Use --tty.
@ -66,6 +70,7 @@ parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang. parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt. parallel: Error: -H has been retired. Use --halt.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l. parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
stdout parallel -T
parallel: Error: -g has been retired. Use --group. parallel: Error: -g has been retired. Use --group.
parallel: Error: -B has been retired. Use --bf. parallel: Error: -B has been retired. Use --bf.
parallel: Error: -T has been retired. Use --tty. parallel: Error: -T has been retired. Use --tty.
@ -74,6 +79,7 @@ parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang. parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt. parallel: Error: -H has been retired. Use --halt.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l. parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
stdout parallel -U foo
parallel: Error: -g has been retired. Use --group. parallel: Error: -g has been retired. Use --group.
parallel: Error: -B has been retired. Use --bf. parallel: Error: -B has been retired. Use --bf.
parallel: Error: -T has been retired. Use --tty. parallel: Error: -T has been retired. Use --tty.
@ -82,6 +88,7 @@ parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang. parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt. parallel: Error: -H has been retired. Use --halt.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l. parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
stdout parallel -W foo
parallel: Error: -g has been retired. Use --group. parallel: Error: -g has been retired. Use --group.
parallel: Error: -B has been retired. Use --bf. parallel: Error: -B has been retired. Use --bf.
parallel: Error: -T has been retired. Use --tty. parallel: Error: -T has been retired. Use --tty.
@ -90,6 +97,7 @@ parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang. parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt. parallel: Error: -H has been retired. Use --halt.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l. parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
stdout parallel -Y
parallel: Error: -g has been retired. Use --group. parallel: Error: -g has been retired. Use --group.
parallel: Error: -B has been retired. Use --bf. parallel: Error: -B has been retired. Use --bf.
parallel: Error: -T has been retired. Use --tty. parallel: Error: -T has been retired. Use --tty.
@ -100,22 +108,24 @@ parallel: Error: -H has been retired. Use --halt.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l. parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
echo '### Test --joblog followed by --resume --joblog' echo '### Test --joblog followed by --resume --joblog'
### Test --joblog followed by --resume --joblog ### Test --joblog followed by --resume --joblog
rm -f /tmp/joblog; timeout -k 1 1 parallel -j2 --joblog /tmp/joblog sleep {} ::: 1.1 2.2 3.3 4.4 2>/dev/null; parallel -j2 --resume --joblog /tmp/joblog sleep {} ::: 1.1 2.2 3.3 4.4; cat /tmp/joblog | wc -lw; rm -f /tmp/joblog; rm -f /tmp/joblog; timeout -k 1 1 parallel -j2 --joblog /tmp/joblog sleep {} ::: 1.1 2.2 3.3 4.4 2>/dev/null; parallel -j2 --resume --joblog /tmp/joblog sleep {} ::: 1.1 2.2 3.3 4.4; cat /tmp/joblog | wc -lw; rm -f /tmp/joblog; echo '### Test --resume --joblog followed by --resume --joblog'; rm -f /tmp/joblog2; timeout -k 1 1 parallel -j2 --resume --joblog /tmp/joblog2 sleep {} ::: 1.1 2.2 3.3 4.4 2>/dev/null; parallel -j2 --resume --joblog /tmp/joblog2 sleep {} ::: 1.1 2.2 3.3 4.4; cat /tmp/joblog2 | wc -lw; rm -f /tmp/joblog2; echo '### Test --header'
5 49 5 49
echo '### Test --resume --joblog followed by --resume --joblog'; rm -f /tmp/joblog2; timeout -k 1 1 parallel -j2 --resume --joblog /tmp/joblog2 sleep {} ::: 1.1 2.2 3.3 4.4 2>/dev/null; parallel -j2 --resume --joblog /tmp/joblog2 sleep {} ::: 1.1 2.2 3.3 4.4; cat /tmp/joblog2 | wc -lw; rm -f /tmp/joblog2;
### Test --resume --joblog followed by --resume --joblog ### Test --resume --joblog followed by --resume --joblog
5 49 5 49
echo '### Test --header'; printf "a\tb\n1.2\t3/4.5" | parallel --colsep "\t" --header "\n" echo {b} {a} {b.} {b/} {b//} {b/.}; echo '### 64-bit wierdness - this did not complete on a 64-bit machine'; seq 1 2 | parallel -j1 'seq 1 1 | parallel true'
### Test --header ### Test --header
printf "a\tb\n1.2\t3/4.5" | parallel --colsep "\t" --header "\n" echo {b} {a} {b.} {b/} {b//} {b/.}
3/4.5 1.2 3/4 4.5 3 4 3/4.5 1.2 3/4 4.5 3 4
echo '### 64-bit wierdness - this did not complete on a 64-bit machine'; seq 1 2 | parallel -j1 'seq 1 1 | parallel true'
### 64-bit wierdness - this did not complete on a 64-bit machine ### 64-bit wierdness - this did not complete on a 64-bit machine
echo "### BUG-fix: bash -c 'parallel -a <(seq 1 3) echo'"; stdout bash -c 'parallel -k -a <(seq 1 3) echo' echo "### BUG-fix: bash -c 'parallel -a <(seq 1 3) echo'"
### BUG-fix: bash -c 'parallel -a <(seq 1 3) echo' ### BUG-fix: bash -c 'parallel -a <(seq 1 3) echo'
stdout bash -c 'parallel -k -a <(seq 1 3) echo'
1 1
2 2
3 3
echo "### bug #35268: shell_quote doesn't treats [] brackets correctly"; touch /tmp/foo1; stdout parallel echo ::: '/tmp/foo[123]' echo "### bug #35268: shell_quote doesn't treats [] brackets correctly"
### bug #35268: shell_quote doesn't treats [] brackets correctly ### bug #35268: shell_quote doesn't treats [] brackets correctly
touch /tmp/foo1; stdout parallel echo ::: '/tmp/foo[123]'
/tmp/foo[123] /tmp/foo[123]
echo '### Test make .deb package'; cd ~/privat/parallel/packager/debian; stdout make | grep 'To install the GNU Parallel Debian package, run:' echo '### Test make .deb package'; cd ~/privat/parallel/packager/debian; stdout make | grep 'To install the GNU Parallel Debian package, run:'
### Test make .deb package ### Test make .deb package
@ -125,30 +135,36 @@ echo '### Test of segfaulting issue'
echo 'This gave /home/tange/bin/stdout: line 3: 20374 Segmentation fault "$@" 2>&1'; echo 'before adding wait() before exit'; seq 1 300 | stdout parallel ./trysegfault echo 'This gave /home/tange/bin/stdout: line 3: 20374 Segmentation fault "$@" 2>&1'; echo 'before adding wait() before exit'; seq 1 300 | stdout parallel ./trysegfault
This gave /home/tange/bin/stdout: line 3: 20374 Segmentation fault "$@" 2>&1 This gave /home/tange/bin/stdout: line 3: 20374 Segmentation fault "$@" 2>&1
before adding wait() before exit before adding wait() before exit
echo '### Test basic --arg-sep'; parallel -k echo ::: a b echo '### Test basic --arg-sep'
### Test basic --arg-sep ### Test basic --arg-sep
parallel -k echo ::: a b
a a
b b
echo '### Run commands using --arg-sep'; parallel -kv ::: 'echo a' 'echo b' echo '### Run commands using --arg-sep'
### Run commands using --arg-sep ### Run commands using --arg-sep
parallel -kv ::: 'echo a' 'echo b'
echo a echo a
a a
echo b echo b
b b
echo '### Change --arg-sep'; parallel --arg-sep ::: -kv ::: 'echo a' 'echo b'; parallel --arg-sep .--- -kv .--- 'echo a' 'echo b'; parallel --argsep ::: -kv ::: 'echo a' 'echo b'; parallel --argsep .--- -kv .--- 'echo a' 'echo b' echo '### Change --arg-sep'
### Change --arg-sep ### Change --arg-sep
parallel --arg-sep ::: -kv ::: 'echo a' 'echo b'
echo a echo a
a a
echo b echo b
b b
parallel --arg-sep .--- -kv .--- 'echo a' 'echo b'
echo a echo a
a a
echo b echo b
b b
parallel --argsep ::: -kv ::: 'echo a' 'echo b'
echo a echo a
a a
echo b echo b
b b
parallel --argsep .--- -kv .--- 'echo a' 'echo b'
echo a echo a
a a
echo b echo b
@ -165,35 +181,44 @@ cat
via cat via cat
echo b echo b
b b
echo '### Bug made 4 5 go before 1 2 3'; parallel -k ::: "sleep 1; echo 1" "echo 2" "echo 3" "echo 4" "echo 5" echo '### Bug made 4 5 go before 1 2 3'
### Bug made 4 5 go before 1 2 3 ### Bug made 4 5 go before 1 2 3
parallel -k ::: "sleep 1; echo 1" "echo 2" "echo 3" "echo 4" "echo 5"
1 1
2 2
3 3
4 4
5 5
echo '### Bug made 3 go before 1 2'; parallel -kj 1 ::: "sleep 1; echo 1" "echo 2" "echo 3" echo '### Bug made 3 go before 1 2'
### Bug made 3 go before 1 2 ### Bug made 3 go before 1 2
parallel -kj 1 ::: "sleep 1; echo 1" "echo 2" "echo 3"
1 1
2 2
3 3
echo '### Bug did not quote'; echo '>' | parallel -v echo; parallel -v echo ::: '>'; (echo '>'; echo 2) | parallel -j1 -vX echo; parallel -X -j1 echo ::: '>' 2 echo '### Bug did not quote'
### Bug did not quote ### Bug did not quote
echo '>' | parallel -v echo
echo \> echo \>
> >
parallel -v echo ::: '>'
echo \> echo \>
> >
(echo '>'; echo 2) | parallel -j1 -vX echo
echo \> 2 echo \> 2
> 2 > 2
parallel -X -j1 echo ::: '>' 2
> 2 > 2
echo '### Must not quote'; echo 'echo | wc -l' | parallel -v; parallel -v ::: 'echo | wc -l'; echo 'echo a b c | wc -w' | parallel -v; parallel -kv ::: 'echo a b c | wc -w' 'echo a b | wc -w' echo '### Must not quote'; echo 'echo | wc -l' | parallel -v
### Must not quote ### Must not quote
echo | wc -l echo | wc -l
1 1
parallel -v ::: 'echo | wc -l'
echo | wc -l echo | wc -l
1 1
echo 'echo a b c | wc -w' | parallel -v
echo a b c | wc -w echo a b c | wc -w
3 3
parallel -kv ::: 'echo a b c | wc -w' 'echo a b | wc -w'
echo a b c | wc -w echo a b c | wc -w
3 3
echo a b | wc -w echo a b | wc -w

View file

@ -70,8 +70,9 @@ a_b_c_
a_b_c_d a_b_c_d
parallel -k -C %+ echo {4} ::: 'a% c %%b' parallel -k -C %+ echo {4} ::: 'a% c %%b'
echo "### test08"; cd input-files/test08; ls | parallel -q perl -ne '/_PRE (\d+)/ and $p=$1; /hatchname> (\d+)/ and $1!=$p and print $ARGV,"\n"' | sort; echo "### test08"
### test08 ### test08
cd input-files/test08; ls | parallel -q perl -ne '/_PRE (\d+)/ and $p=$1; /hatchname> (\d+)/ and $1!=$p and print $ARGV,"\n"' | sort
b b
d d
seq 1 10 | parallel -j 1 echo | sort seq 1 10 | parallel -j 1 echo | sort
@ -342,6 +343,8 @@ bug #38439: "open files" with --files --pipe blocks after a while
18 of 20 18 of 20
19 of 20 19 of 20
20 of 20 20 of 20
parallel: Warning: Only enough file handles to run 1 jobs in parallel.
Running 'parallel -j0 -N1 --pipe parallel -j0' or raising ulimit -n or /etc/security/limits.conf may help.
echo 'bug #34241: --pipe should not spawn unneeded processes - part 2' echo 'bug #34241: --pipe should not spawn unneeded processes - part 2'
bug #34241: --pipe should not spawn unneeded processes - part 2 bug #34241: --pipe should not spawn unneeded processes - part 2
seq 500 | parallel --tmpdir . -j10 --pipe --block 1k --files wc >/dev/null; ls *.par | wc -l; rm *.par; seq 500 | parallel --tmpdir . -j10 --pipe --block 1k --files --dry-run wc >/dev/null; echo No .par should exist; stdout ls *.par seq 500 | parallel --tmpdir . -j10 --pipe --block 1k --files wc >/dev/null; ls *.par | wc -l; rm *.par; seq 500 | parallel --tmpdir . -j10 --pipe --block 1k --files --dry-run wc >/dev/null; echo No .par should exist; stdout ls *.par

View file

@ -2,6 +2,9 @@ echo '### bug #36595: silent loss of input with --pipe and --sshlogin'
### bug #36595: silent loss of input with --pipe and --sshlogin ### bug #36595: silent loss of input with --pipe and --sshlogin
seq 10000 | xargs | parallel --pipe -S 10/localhost cat | wc seq 10000 | xargs | parallel --pipe -S 10/localhost cat | wc
1 10000 48894 1 10000 48894
parallel: Warning: ssh to localhost only allows for 9 simultaneous logins.
You may raise this by changing /etc/ssh/sshd_config:MaxStartups and MaxSessions on localhost.
Using only 8 connections to avoid race conditions.
echo 'bug #36707: --controlmaster eats jobs' echo 'bug #36707: --controlmaster eats jobs'
bug #36707: --controlmaster eats jobs bug #36707: --controlmaster eats jobs
seq 2 | parallel -k --controlmaster --sshlogin localhost echo OK{} seq 2 | parallel -k --controlmaster --sshlogin localhost echo OK{}
@ -113,7 +116,7 @@ echo '### How do we deal with missing $SHELL'
3 3
echo '### Test if length is computed correctly - first should give one line, second 2 lines each' echo '### Test if length is computed correctly - first should give one line, second 2 lines each'
### Test if length is computed correctly - first should give one line, second 2 lines each ### Test if length is computed correctly - first should give one line, second 2 lines each
seq 4 | parallel -s 29 -X -kj1 echo a{}b{}c seq 4 | parallel -s 29 -X -kj1 echo a{}b{}c
a1b1c a2b2c a3b3c a4b4c a1b1c a2b2c a3b3c a4b4c
seq 4 | parallel -s 28 -X -kj1 echo a{}b{}c seq 4 | parallel -s 28 -X -kj1 echo a{}b{}c
a1b1c a2b2c a3b3c a1b1c a2b2c a3b3c
@ -123,9 +126,9 @@ a4b4c
seq 4 | parallel -s 20 -X -kj1 echo {} {} seq 4 | parallel -s 20 -X -kj1 echo {} {}
1 2 3 1 2 3 1 2 3 1 2 3
4 4 4 4
seq 4 | parallel -s 23 -m -kj1 echo a{}b{}c seq 4 | parallel -s 23 -m -kj1 echo a{}b{}c
a1 2 3 4b1 2 3 4c a1 2 3 4b1 2 3 4c
seq 4 | parallel -s 22 -m -kj1 echo a{}b{}c seq 4 | parallel -s 22 -m -kj1 echo a{}b{}c
a1 2 3b1 2 3c a1 2 3b1 2 3c
a4b4c a4b4c
seq 4 | parallel -s 21 -m -kj1 echo {} {} seq 4 | parallel -s 21 -m -kj1 echo {} {}

View file

@ -297,56 +297,89 @@ via pseudotty
gzip /tmp/parallel_f1 gzip /tmp/parallel_f1
gzip /tmp/parallel_f2' gzip /tmp/parallel_f2'
' '
echo '### Test -i and --replace: Replace with argument'
### Test -i and --replace: Replace with argument ### Test -i and --replace: Replace with argument
(echo a; echo END; echo b) | parallel -k -i -eEND echo repl{}ce
replace replace
(echo a; echo END; echo b) | parallel -k --replace -eEND echo repl{}ce
replace replace
(echo a; echo END; echo b) | parallel -k -i+ -eEND echo repl+ce
replace replace
(echo e; echo END; echo b) | parallel -k -i'*' -eEND echo r'*'plac'*'
replace replace
(echo a; echo END; echo b) | parallel -k --replace + -eEND echo repl+ce
replace replace
(echo a; echo END; echo b) | parallel -k --replace== -eEND echo repl=ce
replace replace
(echo a; echo END; echo b) | parallel -k --replace = -eEND echo repl=ce
replace replace
(echo a; echo END; echo b) | parallel -k --replace=^ -eEND echo repl^ce
replace replace
(echo a; echo END; echo b) | parallel -k -I^ -eEND echo repl^ce
replace replace
echo '### Test -E: Artificial end-of-file'
### Test -E: Artificial end-of-file ### Test -E: Artificial end-of-file
(echo include this; echo END; echo not this) | parallel -k -E END echo
include this include this
(echo include this; echo END; echo not this) | parallel -k -EEND echo
include this include this
echo '### Test -e and --eof: Artificial end-of-file'
### Test -e and --eof: Artificial end-of-file ### Test -e and --eof: Artificial end-of-file
(echo include this; echo END; echo not this) | parallel -k -e END echo
include this include this
(echo include this; echo END; echo not this) | parallel -k -eEND echo
include this include this
(echo include this; echo END; echo not this) | parallel -k --eof=END echo
include this include this
(echo include this; echo END; echo not this) | parallel -k --eof END echo
include this include this
echo '### Test -n and --max-args: Max number of args per line (only with -X and -m)'
### Test -n and --max-args: Max number of args per line (only with -X and -m) ### Test -n and --max-args: Max number of args per line (only with -X and -m)
(echo line 1;echo line 2;echo line 3) | parallel -k -n1 -m echo
line 1 line 1
line 2 line 2
line 3 line 3
(echo line 1;echo line 1;echo line 2) | parallel -k -n2 -m echo
line 1 line 1 line 1 line 1
line 2 line 2
(echo line 1;echo line 2;echo line 3) | parallel -k -n1 -X echo
line 1 line 1
line 2 line 2
line 3 line 3
(echo line 1;echo line 1;echo line 2) | parallel -k -n2 -X echo
line 1 line 1 line 1 line 1
line 2 line 2
(echo line 1;echo line 2;echo line 3) | parallel -k -n1 echo
line 1 line 1
line 2 line 2
line 3 line 3
(echo line 1;echo line 1;echo line 2) | parallel -k -n2 echo
line 1 line 1 line 1 line 1
line 2 line 2
(echo line 1;echo line 2;echo line 3) | parallel -k --max-args=1 -X echo
line 1 line 1
line 2 line 2
line 3 line 3
(echo line 1;echo line 2;echo line 3) | parallel -k --max-args 1 -X echo
line 1 line 1
line 2 line 2
line 3 line 3
(echo line 1;echo line 1;echo line 2) | parallel -k --max-args=2 -X echo
line 1 line 1 line 1 line 1
line 2 line 2
(echo line 1;echo line 1;echo line 2) | parallel -k --max-args 2 -X echo
line 1 line 1 line 1 line 1
line 2 line 2
(echo line 1;echo line 2;echo line 3) | parallel -k --max-args 1 echo
line 1 line 1
line 2 line 2
line 3 line 3
(echo line 1;echo line 1;echo line 2) | parallel -k --max-args 2 echo
line 1 line 1 line 1 line 1
line 2 line 2
echo '### Test --max-procs and -P: Number of processes'
### Test --max-procs and -P: Number of processes ### Test --max-procs and -P: Number of processes
seq 1 10 | parallel -k --max-procs +0 echo max proc
max proc 1 max proc 1
max proc 2 max proc 2
max proc 3 max proc 3
@ -357,6 +390,7 @@ max proc 7
max proc 8 max proc 8
max proc 9 max proc 9
max proc 10 max proc 10
seq 1 10 | parallel -k -P 200% echo 200% proc
200% proc 1 200% proc 1
200% proc 2 200% proc 2
200% proc 3 200% proc 3
@ -367,42 +401,65 @@ max proc 10
200% proc 8 200% proc 8
200% proc 9 200% proc 9
200% proc 10 200% proc 10
echo '### Test --delimiter and -d: Delimiter instead of newline'
### Test --delimiter and -d: Delimiter instead of newline ### Test --delimiter and -d: Delimiter instead of newline
echo '# Yes there is supposed to be an extra newline for -d N'
# Yes there is supposed to be an extra newline for -d N # Yes there is supposed to be an extra newline for -d N
echo line 1Nline 2Nline 3 | parallel -k -d N echo This is
This is line 1 This is line 1
This is line 2 This is line 2
This is line 3 This is line 3
echo line 1Nline 2Nline 3 | parallel -k --delimiter N echo This is
This is line 1 This is line 1
This is line 2 This is line 2
This is line 3 This is line 3
printf "delimiter NUL line 1\0line 2\0line 3" | parallel -k -d '\0' echo
delimiter NUL line 1 delimiter NUL line 1
line 2 line 2
line 3 line 3
printf "delimiter TAB line 1\tline 2\tline 3" | parallel -k --delimiter '\t' echo
delimiter TAB line 1 delimiter TAB line 1
line 2 line 2
line 3 line 3
echo '### Test --max-chars and -s: Max number of chars in a line'
### Test --max-chars and -s: Max number of chars in a line ### Test --max-chars and -s: Max number of chars in a line
(echo line 1;echo line 1;echo line 2) | parallel -k --max-chars 25 -X echo
line 1 line 1 line 1 line 1
line 2 line 2
(echo line 1;echo line 1;echo line 2) | parallel -k -s 25 -X echo
line 1 line 1 line 1 line 1
line 2 line 2
echo '### Test --no-run-if-empty and -r: This should give no output'
### Test --no-run-if-empty and -r: This should give no output ### Test --no-run-if-empty and -r: This should give no output
echo " " | parallel -r echo
echo " " | parallel --no-run-if-empty echo
echo '### Test --help and -h: Help output (just check we get the same amount of lines)'
### Test --help and -h: Help output (just check we get the same amount of lines) ### Test --help and -h: Help output (just check we get the same amount of lines)
echo Output from -h and --help
Output from -h and --help Output from -h and --help
parallel -h | wc -l
35 35
parallel --help | wc -l
35 35
echo '### Test --version: Version output (just check we get the same amount of lines)'
### Test --version: Version output (just check we get the same amount of lines) ### Test --version: Version output (just check we get the same amount of lines)
parallel --version | wc -l
11 11
echo '### Test --verbose and -t'
### Test --verbose and -t ### Test --verbose and -t
(echo b; echo c; echo f) | parallel -k -t echo {}ar 2>&1 >/dev/null
echo bar echo bar
echo car echo car
echo far echo far
(echo b; echo c; echo f) | parallel -k --verbose echo {}ar 2>&1 >/dev/null
echo bar echo bar
echo car echo car
echo far echo far
echo '### Test --show-limits'
### Test --show-limits ### Test --show-limits
(echo b; echo c; echo f) | parallel -k --show-limits echo {}ar
Maximal size of command: 131071 Maximal size of command: 131071
Maximal used size of command: 131071 Maximal used size of command: 131071
@ -412,6 +469,7 @@ press CTRL-D or CTRL-C
bar bar
car car
far far
(echo b; echo c; echo f) | parallel -j1 -kX --show-limits -s 100 echo {}ar
Maximal size of command: 131071 Maximal size of command: 131071
Maximal used size of command: 100 Maximal used size of command: 100
@ -419,9 +477,13 @@ Execution of will continue now, and it will try to read its input
and run commands; if this is not what you wanted to happen, please and run commands; if this is not what you wanted to happen, please
press CTRL-D or CTRL-C press CTRL-D or CTRL-C
bar car far bar car far
echo '### Test empty line as input'
### Test empty line as input ### Test empty line as input
echo | parallel echo empty input line
empty input line empty input line
echo '### Tests if (cat | sh) works'
### Tests if (cat | sh) works ### Tests if (cat | sh) works
perl -e 'for(1..25) {print "echo a $_; echo b $_\n"}' | parallel 2>&1 | sort
a 1 a 1
a 10 a 10
a 11 a 11
@ -472,7 +534,9 @@ b 6
b 7 b 7
b 8 b 8
b 9 b 9
echo '### Test if xargs-mode works'
### Test if xargs-mode works ### Test if xargs-mode works
perl -e 'for(1..25) {print "a $_\nb $_\n"}' | parallel echo 2>&1 | sort
a 1 a 1
a 10 a 10
a 11 a 11
@ -523,17 +587,25 @@ b 6
b 7 b 7
b 8 b 8
b 9 b 9
echo '### Test -q'
### Test -q ### Test -q
parallel -kq perl -e '$ARGV[0]=~/^\S+\s+\S+$/ and print $ARGV[0],"\n"' ::: "a b" c "d e f" g "h i"
a b a b
h i h i
echo '### Test -q {#}'
### Test -q {#} ### Test -q {#}
parallel -kq echo {#} ::: a b
1 1
2 2
parallel -kq echo {\#} ::: a b
1 1
2 2
parallel -kq echo {\\#} ::: a b
{\#} a {\#} a
{\#} b {\#} b
echo '### Test long commands do not take up all memory'
### Test long commands do not take up all memory ### Test long commands do not take up all memory
seq 1 100 | parallel -j0 -qv perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 2>/dev/null | sort
1 1
10 10
100 100
@ -734,29 +806,45 @@ perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 97 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 97
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 98 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 98
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 99 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 99
echo '### Test 0-arguments'
### Test 0-arguments ### Test 0-arguments
seq 1 2 | parallel -k -n0 echo n0
n0 n0
n0 n0
seq 1 2 | parallel -k -L0 echo L0
L0 L0
L0 L0
seq 1 2 | parallel -k -N0 echo N0
N0 N0
N0 N0
echo '### Because of --tollef -l, then -l0 == -l1, sorry'
### Because of --tollef -l, then -l0 == -l1, sorry ### Because of --tollef -l, then -l0 == -l1, sorry
seq 1 2 | parallel -k -l0 echo l0
l0 1 l0 1
l0 2 l0 2
echo '### Test replace {}'
### Test replace {} ### Test replace {}
seq 1 2 | parallel -k -N0 echo replace {} curlies
replace curlies replace curlies
replace curlies replace curlies
echo '### Test arguments on commandline'
### Test arguments on commandline ### Test arguments on commandline
parallel -k -N0 echo args on cmdline ::: 1 2
args on cmdline args on cmdline
args on cmdline args on cmdline
echo '### Test --nice locally'
### Test --nice locally ### Test --nice locally
parallel --nice 1 -vv 'PAR=a bash -c "echo \$PAR {}"' ::: b
\nice -n1 /bin/bash -c PAR=a\ bash\ -c\ \"echo\ \ \\\$PAR\ b\" \nice -n1 /bin/bash -c PAR=a\ bash\ -c\ \"echo\ \ \\\$PAR\ b\"
a b a b
echo '### Test --nice remote'
### Test --nice remote ### Test --nice remote
stdout parallel --nice 1 -S .. -vv 'PAR=a bash -c "echo \$PAR {}"' ::: b | perl -pe 's/\S*parallel-server\S*/one-server/;s/[a-f0-9]{500,}/hex/;s/\d{5,8}/pId/g;'
ssh one-server exec perl -e \\\$ENV\\\{\\\"PARALLEL_PID\\\"\\\}=\\\"pId\\\"\\\;\\\$ENV\\\{\\\"PARALLEL_SEQ\\\"\\\}=\\\"1\\\"\\\;\\\$bashfunc\\\ =\\\ \\\"\\\"\\\;@ARGV=\\\"\\\\\\\\nice\\\ -n1\\\ /bin/bash\\\ -c\\\ PAR=a\\\\\\\\\\\ bash\\\\\\\\\\\ -c\\\\\\\\\\\ \\\\\\\\\\\\\\\"echo\\\\\\\\\\\ \\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\$PAR\\\\\\\\\\\ b\\\\\\\\\\\\\\\"\\\"\\\;\\\$SIG\\\{CHLD\\\}=sub\\\{\\\$done=1\\\;\\\}\\\;\\\$pid=fork\\\;unless\\\(\\\$pid\\\)\\\{setpgrp\\\;exec\\\$ENV\\\{SHELL\\\},\\\"-c\\\",\\\(\\\$bashfunc.\\\"@ARGV\\\"\\\)\\\;die\\\"exec:\\\$\\\!\\\\n\\\"\\\;\\\}do\\\{\\\$s=\\\$s\\\<1\\\?0.001+\\\$s\\\*1.03:\\\$s\\\;select\\\(undef,undef,undef,\\\$s\\\)\\\;\\\}until\\\(\\\$done\\\|\\\|getppid==1\\\)\\\;kill\\\(SIGHUP,-\\\$\\\{pid\\\}\\\)unless\\\$done\\\;wait\\\;exit\\\(\\\$\\\?\\\&127\\\?128+\\\(\\\$\\\?\\\&127\\\):1+\\\$\\\?\\\>\\\>8\\\); ssh one-server exec perl -e \\\$ENV\\\{\\\"PARALLEL_PID\\\"\\\}=\\\"pId\\\"\\\;\\\$ENV\\\{\\\"PARALLEL_SEQ\\\"\\\}=\\\"1\\\"\\\;\\\$bashfunc\\\ =\\\ \\\"\\\"\\\;@ARGV=\\\"\\\\\\\\nice\\\ -n1\\\ /bin/bash\\\ -c\\\ PAR=a\\\\\\\\\\\ bash\\\\\\\\\\\ -c\\\\\\\\\\\ \\\\\\\\\\\\\\\"echo\\\\\\\\\\\ \\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\$PAR\\\\\\\\\\\ b\\\\\\\\\\\\\\\"\\\"\\\;\\\$SIG\\\{CHLD\\\}=sub\\\{\\\$done=1\\\;\\\}\\\;\\\$pid=fork\\\;unless\\\(\\\$pid\\\)\\\{setpgrp\\\;exec\\\$ENV\\\{SHELL\\\},\\\"-c\\\",\\\(\\\$bashfunc.\\\"@ARGV\\\"\\\)\\\;die\\\"exec:\\\$\\\!\\\\n\\\"\\\;\\\}do\\\{\\\$s=\\\$s\\\<1\\\?0.001+\\\$s\\\*1.03:\\\$s\\\;select\\\(undef,undef,undef,\\\$s\\\)\\\;\\\}until\\\(\\\$done\\\|\\\|getppid==1\\\)\\\;kill\\\(SIGHUP,-\\\$\\\{pid\\\}\\\)unless\\\$done\\\;wait\\\;exit\\\(\\\$\\\?\\\&127\\\?128+\\\(\\\$\\\?\\\&127\\\):1+\\\$\\\?\\\>\\\>8\\\);
a b a b
echo '### Test distribute arguments at EOF to 2 jobslots'
### Test distribute arguments at EOF to 2 jobslots ### Test distribute arguments at EOF to 2 jobslots
seq 1 92 | parallel -j+0 -kX -s 100 echo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
66 67 68 69 66 67 68 69
@ -766,7 +854,9 @@ a b
82 83 84 85 82 83 84 85
86 87 88 89 86 87 88 89
90 91 92 90 91 92
echo '### Test distribute arguments at EOF to 5 jobslots'
### Test distribute arguments at EOF to 5 jobslots ### Test distribute arguments at EOF to 5 jobslots
seq 1 92 | parallel -j+3 -kX -s 100 echo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
66 67 68 66 67 68
@ -778,7 +868,9 @@ a b
84 85 86 84 85 86
87 88 89 87 88 89
90 91 92 90 91 92
echo '### Test distribute arguments at EOF to infinity jobslots'
### Test distribute arguments at EOF to infinity jobslots ### Test distribute arguments at EOF to infinity jobslots
seq 1 92 | parallel -j0 -kX -s 100 echo 2>/dev/null
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
66 66
@ -808,14 +900,22 @@ a b
90 90
91 91
92 92
echo '### Test -N is not broken by distribution - single line'
### Test -N is not broken by distribution - single line ### Test -N is not broken by distribution - single line
seq 9 | parallel -N 10 echo
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
echo '### Test -N is not broken by distribution - two lines'
### Test -N is not broken by distribution - two lines ### Test -N is not broken by distribution - two lines
seq 19 | parallel -k -N 10 echo
1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 11 12 13 14 15 16 17 18 19
echo '### Test -N context replace'
### Test -N context replace ### Test -N context replace
seq 19 | parallel -k -N 10 echo a{}b
a1b a2b a3b a4b a5b a6b a7b a8b a9b a10b a1b a2b a3b a4b a5b a6b a7b a8b a9b a10b
a11b a12b a13b a14b a15b a16b a17b a18b a19b a11b a12b a13b a14b a15b a16b a17b a18b a19b
echo '### Test -L context replace'
### Test -L context replace ### Test -L context replace
seq 19 | parallel -k -L 10 echo a{}b
a1b a2b a3b a4b a5b a6b a7b a8b a9b a10b a1b a2b a3b a4b a5b a6b a7b a8b a9b a10b
a11b a12b a13b a14b a15b a16b a17b a18b a19b a11b a12b a13b a14b a15b a16b a17b a18b a19b