testsuite: Made the tests more portable.

This commit is contained in:
Ole Tange 2017-06-22 13:35:58 +02:00
parent 0b8e949cbb
commit dce32425eb
50 changed files with 2142 additions and 2056 deletions

12
README
View file

@ -44,9 +44,9 @@ document.
Full installation of GNU Parallel is as simple as:
wget http://ftpmirror.gnu.org/parallel/parallel-20170522.tar.bz2
bzip2 -dc parallel-20170522.tar.bz2 | tar xvf -
cd parallel-20170522
wget http://ftpmirror.gnu.org/parallel/parallel-20170622.tar.bz2
bzip2 -dc parallel-20170622.tar.bz2 | tar xvf -
cd parallel-20170622
./configure && make && sudo make install
@ -55,9 +55,9 @@ Full installation of GNU Parallel is as simple as:
If you are not root you can add ~/bin to your path and install in
~/bin and ~/share:
wget http://ftpmirror.gnu.org/parallel/parallel-20170522.tar.bz2
bzip2 -dc parallel-20170522.tar.bz2 | tar xvf -
cd parallel-20170522
wget http://ftpmirror.gnu.org/parallel/parallel-20170622.tar.bz2
bzip2 -dc parallel-20170622.tar.bz2 | tar xvf -
cd parallel-20170622
./configure --prefix=$HOME && make && make install
Or if your system lacks 'make' you can simply copy src/parallel

View file

@ -1,4 +1,4 @@
AC_INIT([parallel], [20170522], [bug-parallel@gnu.org])
AC_INIT([parallel], [20170622], [bug-parallel@gnu.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([

View file

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

View file

@ -1376,7 +1376,7 @@ sub check_invalid_option_combinations {
sub init_globals {
# Defaults:
$Global::version = 20170523;
$Global::version = 20170622;
$Global::progname = 'parallel';
$Global::infinity = 2**31;
$Global::debug = 0;
@ -1804,7 +1804,7 @@ sub find_compression_program {
# 16-cores: pzstd lz4 pigz lzop lbzip2 pbzip2 plzip lzip lrz pxz gzip lzma xz bzip2
# 32-cores: pzstd lbzip2 pbzip2 zstd pigz lz4 lzop plzip lzip lrz gzip pxz lzma bzip2 xz clzip
my @prg = qw(pzstd lbzip2 pbzip2 zstd pigz lz4 lzop plzip lzip lrz
my @prg = qw(pzstd lbzip2 pbzip2 zstd pigz lz4 lzop plzip pixz lzip lrz
gzip pxz lzma bzip2 xz clzip);
for my $p (@prg) {
if(which($p)) {

View file

@ -95,7 +95,7 @@ B<Zsh, Fish, Ksh, and Pdksh functions and aliases>: Use B<env_parallel>.
The command cannot contain the character \257 (macron: ¯).
=item B<{}>
=item B<{}> (alpha testing)
Input line. This replacement string will be replaced by a full line
read from the input source. The input source is normally stdin
@ -112,7 +112,7 @@ parsed by the shell. The exception is if the command starts with a
replacement string; then the string is not quoted.
=item B<{.}>
=item B<{.}> (alpha testing)
Input line without extension. This replacement string will be replaced
by the input with the extension removed. If the input line contains
@ -128,7 +128,7 @@ The replacement string B<{.}> can be changed with B<--er>.
To understand replacement strings see B<{}>.
=item B<{/}>
=item B<{/}> (alpha testing)
Basename of input line. This replacement string will be replaced by
the input with the directory part removed.
@ -139,7 +139,7 @@ B<--basenamereplace>.
To understand replacement strings see B<{}>.
=item B<{//}>
=item B<{//}> (alpha testing)
Dirname of input line. This replacement string will be replaced by the
dir of the input line. See B<dirname>(1).
@ -150,7 +150,7 @@ B<--dirnamereplace>.
To understand replacement strings see B<{}>.
=item B<{/.}>
=item B<{/.}> (alpha testing)
Basename of input line without extension. This replacement string will
be replaced by the input with the directory and extension part
@ -162,7 +162,7 @@ B<--basenameextensionreplace>.
To understand replacement strings see B<{}>.
=item B<{#}>
=item B<{#}> (alpha testing)
Sequence number of the job to run. This replacement string will be
replaced by the sequence number of the job being run. It contains the
@ -173,7 +173,7 @@ The replacement string B<{#}> can be changed with B<--seqreplace>.
To understand replacement strings see B<{}>.
=item B<{%}>
=item B<{%}> (alpha testing)
Job slot number. This replacement string will be replaced by the job's
slot number between 1 and number of jobs to run in parallel. There
@ -185,7 +185,7 @@ The replacement string B<{%}> can be changed with B<--slotreplace>.
To understand replacement strings see B<{}>.
=item B<{>I<n>B<}>
=item B<{>I<n>B<}> (alpha testing)
Argument from input source I<n> or the I<n>'th argument. This
positional replacement string will be replaced by the input from input
@ -196,7 +196,7 @@ I<n>'th last argument.
To understand replacement strings see B<{}>.
=item B<{>I<n>.B<}>
=item B<{>I<n>.B<}> (alpha testing)
Argument from input source I<n> or the I<n>'th argument without
extension. It is a combination of B<{>I<n>B<}> and B<{.}>.
@ -209,7 +209,7 @@ extension removed.
To understand positional replacement strings see B<{>I<n>B<}>.
=item B<{>I<n>/B<}>
=item B<{>I<n>/B<}> (alpha testing)
Basename of argument from input source I<n> or the I<n>'th argument.
It is a combination of B<{>I<n>B<}> and B<{/}>.
@ -222,7 +222,7 @@ directory (if any) removed.
To understand positional replacement strings see B<{>I<n>B<}>.
=item B<{>I<n>//B<}>
=item B<{>I<n>//B<}> (alpha testing)
Dirname of argument from input source I<n> or the I<n>'th argument.
It is a combination of B<{>I<n>B<}> and B<{//}>.
@ -234,7 +234,7 @@ the I<n>'th argument (when used with B<-N>). See B<dirname>(1).
To understand positional replacement strings see B<{>I<n>B<}>.
=item B<{>I<n>/.B<}>
=item B<{>I<n>/.B<}> (alpha testing)
Basename of argument from input source I<n> or the I<n>'th argument
without extension. It is a combination of B<{>I<n>B<}>, B<{/}>, and
@ -248,7 +248,7 @@ directory (if any) and extension removed.
To understand positional replacement strings see B<{>I<n>B<}>.
=item B<{=>I<perl expression>B<=}>
=item B<{=>I<perl expression>B<=}> (alpha testing)
Replace with calculated I<perl expression>. B<$_> will contain the
same as B<{}>. After evaluating I<perl expression> B<$_> will be used
@ -294,7 +294,7 @@ Example:
See also: B<--rpl> B<--parens>
=item B<{=>I<n> I<perl expression>B<=}>
=item B<{=>I<n> I<perl expression>B<=}> (alpha testing)
Positional equivalent to B<{=perl expression=}>. To understand
positional replacement strings see B<{>I<n>B<}>.
@ -1076,7 +1076,7 @@ Arguments will be recycled if one input source has more arguments than the other
See also B<--header>, B<:::+>, B<::::+>.
=item B<--load> I<max-load> (beta testing)
=item B<--load> I<max-load> (alpha testing)
Do not start new jobs on a given computer unless the number of running
processes on the computer is less than I<max-load>. I<max-load> uses
@ -1254,7 +1254,7 @@ control on the command line (used by GNU B<parallel> internally when
called with B<--sshlogin>).
=item B<--plus>
=item B<--plus> (alpha testing)
Activate additional replacement strings: {+/} {+.} {+..} {+...} {..}
{...} {/..} {/...} {##}. The idea being that '{+foo}' matches the opposite of
@ -1767,7 +1767,7 @@ impossible to track which input block corresponds to which output.
B<--round-robin> implies B<--pipe>, except if B<--pipepart> is given.
=item B<--rpl> 'I<tag> I<perl expression>' (beta testing)
=item B<--rpl> 'I<tag> I<perl expression>' (alpha testing)
Use I<tag> as a replacement string for I<perl expression>. This makes
it possible to define your own replacement strings. GNU B<parallel>'s
@ -3107,11 +3107,14 @@ printed as soon as possible you can use B<-u>.
Compare the output of:
parallel wget --limit-rate=100k \
https://ftpmirror.gnu.org/parallel/parallel-20{}0822.tar.bz2 ::: {12..16}
https://ftpmirror.gnu.org/parallel/parallel-20{}0822.tar.bz2 \
::: {12..16}
parallel --line-buffer wget --limit-rate=100k \
https://ftpmirror.gnu.org/parallel/parallel-20{}0822.tar.bz2 ::: {12..16}
https://ftpmirror.gnu.org/parallel/parallel-20{}0822.tar.bz2 \
::: {12..16}
parallel -u wget --limit-rate=100k \
https://ftpmirror.gnu.org/parallel/parallel-20{}0822.tar.bz2 ::: {12..16}
https://ftpmirror.gnu.org/parallel/parallel-20{}0822.tar.bz2 \
::: {12..16}
=head1 EXAMPLE: Tag output lines

3
src/parset Executable file
View file

@ -0,0 +1,3 @@
#!/bin/bash
echo You need to: source `which env_parallel.bash`

View file

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

View file

@ -44,7 +44,7 @@ prereqlocal: installparallel
echo | pv -qL 10 || (echo pv is required for testsuite; /bin/false)
echo | script -c echo -q /dev/null || (echo script is required for testsuite; /bin/false)
niceload true || (echo niceload is required for testsuite; /bin/false)
which burnP6 || (echo burnP6 is required for testsuite; /bin/false)
which cpuburn || (echo cpuburn is required for testsuite; /bin/false)
which timeout || (echo timeout is required for testsuite; /bin/false)
which autossh || (echo autossh is required for testsuite; /bin/false)
which lsh || (echo lsh is required for testsuite; /bin/false)

View file

@ -2,28 +2,29 @@
mysqlrootpass=${mysqlrootpass:-b+Ydjq4ejT4E}
# To configure zsh
echo Configure zsh and exit
zsh
INSTALL="echo sudo aptitude -y install"
# After first run, set this:
# export INSTALL=echo
INSTALL=${INSTALL:-"sudo aptitude -y install"}
# The testsuite depends on this:
$INSTALL imagemagick expect autossh sshpass jq libpod-simple-perl pod2pdf
$INSTALL lua5.2 clisp php7.0-cli nodejs-legacy mono-csharp-shell
test_pkgs="imagemagick expect autossh sshpass jq libpod-simple-perl pod2pdf gawk"
test_pkgs="$test_pkgs lua5.2 clisp php7.0-cli nodejs-legacy mono-csharp-shell"
# DEBIAN package
$INSTALL dpkg-dev build-essential debhelper
packaging_pkgs="dpkg-dev build-essential debhelper"
# SHEBANG TOOLS
$INSTALL gnuplot octave ruby r-base-core
shebang_pkgs="gnuplot octave ruby r-base-core"
# SQL TOOLS
$INSTALL libdbd-pg-perl libdbd-sqlite3-perl libdbd-csv-perl libdbd-mysql-perl rlwrap
sql_pkgs="libdbd-pg-perl libdbd-sqlite3-perl libdbd-csv-perl libdbd-mysql-perl rlwrap"
# Compression
$INSTALL pxz pixz
compression_pkgs="zstd clzip liblz4-tool lzop pigz pixz pxz gzip plzip pbzip2 lzma xz-utils lzip bzip2 lbzip2 lrzip"
# Shells
shell_pkgs="ash csh dash fdclone fish fizsh ksh mksh posh rc rush sash tcsh yash zsh"
# Databases
database_pkgs="postgresql mysql-server sqlite"
$INSTALL $test_pkgs $packaging_pkgs $shebang_pkgs $sql_pkgs $compression_pkgs $shell_pkgs $database_pkgs
# DATABASES
$INSTALL postgresql mysql-server sqlite
echo '# Create PostgreSQL'
sudo su - postgres -c 'createdb '`whoami`
sudo su - postgres -c 'createuser '`whoami`
@ -35,8 +36,7 @@ sql mysql://root:"$mysqlrootpass"@/mysql "DROP DATABASE `whoami`;DROP USER '`who
sql mysql://root:"$mysqlrootpass"@/mysql "CREATE DATABASE `whoami`;CREATE USER '`whoami`'@'localhost' IDENTIFIED BY '`whoami`'; GRANT ALL ON `whoami`.* TO '`whoami`'@'localhost';"
# SHELLS
$INSTALL ash csh dash fdclone fish fizsh ksh mksh pdksh posh rc rush sash tcsh yash zsh
touch ~/.zshrc
SSHPASS=`goodpasswd`
export SSHPASS
#shells="bash sh csh ash tcsh zsh ksh fish fizsh mksh pdksh posh rc sash yash nopathbash nopathcsh"
@ -48,13 +48,14 @@ create_shell_user() {
sudo adduser --disabled-password --gecos "$shell for parallel,,," $shell &&
echo "$shell:$SSHPASS" | sudo chpasswd &&
sshpass -e ssh-copy-id $shell@lo &&
echo "ssh-keyscan" &&
echo Add server keys for lo and server &&
ssh $shell@lo 'ssh-keyscan -t rsa lo >> .ssh/known_hosts' &&
ssh $shell@lo 'ssh-keyscan -t rsa server >> .ssh/known_hosts' &&
echo Do chsh -s $(which $shell || which ${shell#"nopath"}) $shell &&
(echo $shell | grep parallel ||
sudo chsh -s $(which $shell || which ${shell#"nopath"}) $shell) &&
echo | ssh -t $shell@lo ssh-keygen &&
echo Do ssh-keygen &&
echo | ssh -t $shell@lo ssh-keygen -b 1024 &&
echo Do ssh $shell@lo 'cat .ssh/id_rsa.pub >> .ssh/authorized_keys' &&
ssh $shell@lo 'cat .ssh/id_rsa.pub >> .ssh/authorized_keys' &&
ssh $shell@lo cat .ssh/id_rsa.pub | ssh parallel@lo 'cat >> .ssh/authorized_keys' &&
@ -63,15 +64,22 @@ create_shell_user() {
ssh $shell@lo env_parallel --install &&
ssh $shell@lo 'mkdir .parallel; touch .parallel/will-cite' &&
echo OK Created $shell &&
echo >&2 &&
echo OK Created $shell >&2 &&
echo
}
export -f create_shell_user
. `which env_parallel.bash`
shellsplus="parallel $shells"
parallel -u --timeout 15 --retries 2 --tag -j1 create_shell_user ::: $shellsplus
# sh fails if not run by itself
parallel -u --timeout 15 --retries 2 --tag -j1 create_shell_user ::: sh
parallel -j10 --tag ssh {}@lo ssh {}@lo echo {} OK ::: $shells
# Racecondition: if multiple adds a group it will the same group ID
parallel --timeout 15 --retries 5 --tag -j1 create_shell_user ::: $shellsplus
ssh_a_to_b() {
ssh $1@lo ssh $2@lo echo OK ||
echo failed && false
}
export -f ssh_a_to_b
parallel -j8 --timeout 5 --tag ssh_a_to_b {} {} ::: $shellsplus
ssh_copy_id() {
from="$1"
@ -80,8 +88,10 @@ ssh_copy_id() {
}
export -f ssh_copy_id
parallel --bar -j10 --timeout 3 --retries 10 --tag ssh_copy_id {1}@lo {2}@lo ::: $shellsplus ::: $shellsplus
parallel -j10 --timeout 3 --retries 10 --tag ssh {1}@lo ssh {2}@lo echo OK ::: $shellsplus ::: $shellsplus
# copy id from any X to any Y
parallel -u --bar -j3 --timeout 3 --retries 10 --tag ssh_copy_id {1}@lo {2}@lo ::: $shellsplus ::: $shellsplus
# Test the copying went well
parallel -j3 --timeout 3 --retries 10 --tag ssh_a_to_b ::: $shellsplus ::: $shellsplus
# change paths to no path
(
@ -118,3 +128,7 @@ echo Add:
echo HostkeyAlgorithms +ssh-dss
echo to .ssh/config if you get
echo no matching host key type found. Their offer: ssh-dss
echo
echo Add to /etc/ssh/sshd_config
echo Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes256-cbc,aes192-cbc,aes128-cbc,3des-cbc
echo KexAlgorithms diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,curve25519-sha256@libssh.org,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1

View file

@ -32,7 +32,9 @@ echo '### -N and --noswap. Must give 0'
EOF
# force load > 10
while uptime | egrep -v 'age:.[1-9][0-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 perl -e 'while(1){}' 2>/dev/null &)
done
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 --joblog /tmp/jl-`basename $0` -L1
echo '### -H and --hard'

View file

@ -5,7 +5,9 @@ niceload "perl -e 'exit(3)'" ; echo $? eq 3
niceload "perl -e 'exit(0)'" ; echo $? eq 0
# 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 perl -e 'while(1){}' 2>/dev/null &)
done
echo '### Test -p'
perl -e '$|=1;while($t++<3){sleep(1);print "."}' &

View file

@ -1,7 +1,9 @@
#!/bin/bash
# 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 perl -e 'while(1){}' 2>/dev/null &)
done
int() {
perl -pe 's/(\d+\.\d*)/int($1)/e'

View file

@ -4,7 +4,9 @@ cp /bin/sleep /tmp/mysleep
killall -9 mysleep 2>/dev/null
# 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 perl -e 'while(1){}' 2>/dev/null &)
done
sleep 2 &
export PID1=$!

View file

@ -16,6 +16,9 @@ export SMALLDISK
sudo chmod 777 /mnt/ram
) >/dev/null 2>/dev/null
# Clean tmp
find /tmp{/*,}/*.{par,tms,tmx} 2>/dev/null -mmin -10 | parallel rm
stdsort() {
"$@" 2>&1 | sort;
}
@ -118,17 +121,6 @@ echo '### bug #44614: --pipepart --header off by one'
echo '### PARALLEL_TMUX not found'
PARALLEL_TMUX=not-existing parallel --tmux echo ::: 1
echo '**'
parallel -j4 --halt 2 ::: 'sleep 1' burnP6 false;
killall burnP6 && echo ERROR: burnP6 should already have been killed
parallel -j4 --halt -2 ::: 'sleep 1' burnP5 true;
killall burnP5 && echo ERROR: burnP5 should already have been killed
parallel --halt error echo ::: should not print
parallel --halt soon echo ::: should not print
parallel --halt now echo ::: should not print
echo '**'
echo '### bug #44995: parallel echo {#} ::: 1 2 ::: 1 2'
@ -689,20 +681,40 @@ par_link_files_as_only_arg() {
}
par_macron() {
macron=$(perl -e 'print "\257"')
parallel ::: "echo $macron"
parallel echo ::: "$macron"
parallel echo "$macron" ::: $macron
macron_a=$(perl -e 'print "\257\256"')
parallel ::: "echo $macron_a"
parallel echo ::: "$macron_a"
parallel echo "$macron_a" ::: $macron_a
a=$(perl -e 'print "\257<\257<\257>\257>"')
parallel ::: "echo \"$a\""
parallel echo ::: "$a"
parallel echo \"$a\" ::: $a
print_it() {
parallel ::: "echo $1"
parallel echo ::: "$1"
parallel echo "$1" ::: "$1"
parallel echo \""$1"\" ::: "$1"
parallel -q echo ::: "$1"
parallel -q echo "$1" ::: "$1"
parallel -q echo \""$1"\" ::: "$1"
}
print_it "$(perl -e 'print "\257"')"
print_it "$(perl -e 'print "\257\256"')"
print_it "$(perl -e 'print "\257<\257<\257>\257>"')"
}
par_basic_halt() {
cpuburn=$(tempfile)
cpuburn2=$(tempfile)
(echo '#!/usr/bin/perl'
echo "eval{setpriority(0,0,9)}; while(1){}") > $cpuburn
chmod 700 $cpuburn
cp -a $cpuburn $cpuburn2
parallel -j4 --halt 2 ::: 'sleep 1' $cpuburn false;
killall $(basename $cpuburn) 2>/dev/null &&
echo ERROR: cpuburn should already have been killed
parallel -j4 --halt -2 ::: 'sleep 1' $cpuburn2 true;
killall $(basename $cpuburn2) 2>/dev/null &&
echo ERROR: cpuburn2 should already have been killed
rm $cpuburn $cpuburn2
parallel --halt error echo ::: should not print
parallel --halt soon echo ::: should not print
parallel --halt now echo ::: should not print
}
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort |

View file

@ -4,6 +4,55 @@
# Each should be taking 10-30s and be possible to run in parallel
# I.e.: No race conditions, no logins
par__pipepart_spawn() {
echo '### bug #46214: Using --pipepart doesnt spawn multiple jobs in version 20150922'
seq 1000000 > /tmp/num1000000;
stdout nice parallel --pipepart --progress -a /tmp/num1000000 --block 10k -j0 true |
grep 1:local | perl -pe 's/\d\d\d/999/g'
}
par__pipe_tee() {
echo 'bug #45479: --pipe/--pipepart --tee'
echo '--pipe --tee'
random1G() {
< /dev/zero openssl enc -aes-128-ctr -K 1234 -iv 1234 2>/dev/null |
head -c 1G;
}
random1G | parallel --pipe --tee cat ::: {1..3} | LANG=C wc -c
}
par__pipepart_tee() {
echo 'bug #45479: --pipe/--pipepart --tee'
echo '--pipepart --tee'
random1G() {
< /dev/zero openssl enc -aes-128-ctr -K 1234 -iv 1234 2>/dev/null |
head -c 1G;
}
tmp=$(mktemp)
random1G >$tmp
parallel --pipepart --tee -a $tmp cat ::: {1..3} | LANG=C wc -c
rm $tmp
}
par__memleak() {
echo "### Test memory consumption stays (almost) the same for 30 and 300 jobs"
echo "should give 1 == true"
mem30=$( nice stdout time -f %M parallel -j2 true :::: <(perl -e '$a="x"x60000;for(1..30){print $a,"\n"}') );
mem300=$( nice stdout time -f %M parallel -j2 true :::: <(perl -e '$a="x"x60000;for(1..300){print $a,"\n"}') );
echo "Memory use should not depend very much on the total number of jobs run\n";
echo "Test if memory consumption(300 jobs) < memory consumption(30 jobs) * 110% ";
echo $(($mem300*100 < $mem30 * 110))
}
par_slow_total_jobs() {
echo 'bug #51006: Slow total_jobs() eats job'
(echo a; sleep 10; echo b; sleep 10; seq 2) |
parallel -k echo '{=total_jobs()=}'
}
par_interactive() {
echo '### Test -p --interactive'
cat >/tmp/parallel-script-for-expect <<_EOF
@ -36,7 +85,9 @@ expect "opt--interactive 3"
send "\n"
_EOF
echo
) | perl -ne '/\S/ and print'
) | perl -ne 's/\r//g;/\S/ and print' |
# Race will cause the order to change
sort
}
par_k() {
@ -44,14 +95,7 @@ par_k() {
ulimit -n 50
(echo "sleep 3; echo begin"; seq 1 30 |
parallel -kq echo "sleep 1; echo {}";
echo "echo end") | stdout parallel -k -j0
}
par_pipepart_spawn() {
echo '### bug #46214: Using --pipepart doesnt spawn multiple jobs in version 20150922'
seq 1000000 > /tmp/num1000000;
stdout parallel --pipepart --progress -a /tmp/num1000000 --block 10k -j0 true |
grep 1:local | perl -pe 's/\d\d\d/999/g'
echo "echo end") | stdout nice parallel -k -j0
}
par_halt_on_error() {
@ -107,17 +151,6 @@ par_k_linebuffer() {
parallel --line-buffer -k 'echo stdout top;sleep 1;echo stderr in the middle >&2; sleep 1;echo stdout' ::: end 2>&1
}
par_memleak() {
echo "### Test memory consumption stays (almost) the same for 30 and 300 jobs"
echo "should give 1 == true"
mem30=$( stdout time -f %M parallel -j2 true :::: <(perl -e '$a="x"x60000;for(1..30){print $a,"\n"}') );
mem300=$( stdout time -f %M parallel -j2 true :::: <(perl -e '$a="x"x60000;for(1..300){print $a,"\n"}') );
echo "Memory use should not depend very much on the total number of jobs run\n";
echo "Test if memory consumption(300 jobs) < memory consumption(30 jobs) * 110% ";
echo $(($mem300*100 < $mem30 * 110))
}
par_maxlinelen_m_I() {
echo "### Test max line length -m -I"
@ -146,20 +179,9 @@ par_compress_fail() {
seq 12 | parallel --compress -k seq {} 1000000 | md5sum
}
par_distribute_input_by_ability() {
echo "### bug #48290: round-robin does not distribute data based on business"
echo "### Distribute input to jobs that are ready"
echo "Job-slot n is 50% slower than n+1, so the order should be 1..7"
seq 20000000 |
parallel --tagstring {#} -j7 --block 300k --round-robin --pipe \
'pv -qL{=$_=$job->seq()**3+9=}0000 |wc -c' |
sort -nk2 | field 1
}
par_round_robin_blocks() {
echo "bug #49664: --round-robin does not complete"
seq 20000000 | parallel --block 10M --round-robin --pipe wc -c | wc -l
seq 20000000 | parallel -j8 --block 10M --round-robin --pipe wc -c | wc -l
}
par_results_csv() {
@ -202,31 +224,6 @@ par_tmux_fg() {
stdout parallel --tmux --fg sleep ::: 3 | perl -pe 's/.tmp\S+/tmp/'
}
par_pipe_tee() {
echo 'bug #45479: --pipe/--pipepart --tee'
echo '--pipe --tee'
random1G() {
< /dev/zero openssl enc -aes-128-ctr -K 1234 -iv 1234 2>/dev/null |
head -c 1G;
}
random1G | parallel --pipe --tee cat ::: {1..3} | LANG=C wc -c
}
par_pipepart_tee() {
echo 'bug #45479: --pipe/--pipepart --tee'
echo '--pipepart --tee'
random1G() {
< /dev/zero openssl enc -aes-128-ctr -K 1234 -iv 1234 2>/dev/null |
head -c 1G;
}
tmp=$(mktemp)
random1G >$tmp
parallel --pipepart --tee -a $tmp cat ::: {1..3} | LANG=C wc -c
rm $tmp
}
par_plus_dyn_repl() {
echo "Dynamic replacement strings defined by --plus"
@ -307,12 +304,6 @@ par_plus_dyn_repl() {
parallel --plus echo '{-2,,A}' ::: "wrong" ::: "$myvar" ::: "wrong"
}
par_slow_total_jobs() {
echo 'bug #51006: Slow total_jobs() eats job'
(echo a; sleep 7; echo b; sleep 7; seq 2) |
parallel -k echo '{=total_jobs()=}'
}
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort |
parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1'

View file

@ -232,15 +232,6 @@ line2"' 'echo "command2"'
echo "${var[0]}"
}
par_sqlworker_hostname() {
echo 'bug #50901: --sqlworker should use hostname in the joblog instead of :'
parallel --sqlmaster :my/hostname echo ::: 1 2 3
parallel -k --sqlworker :my/hostname
sql :my 'select host from hostname;'
}
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort |
parallel -j6 --tag -k --joblog +/tmp/jl-`basename $0` '{} 2>&1'

View file

@ -60,12 +60,17 @@ par_linebuffer_matters_compress_tag() {
# forcing the compress tool to spit out compressed blocks
head -c 10000000 /dev/urandom > $randomfile
parallel -j0 --compress --tag --delay 1 "shuf $randomfile; sleep 1; shuf $randomfile; true" ::: {0..9} |
perl -ne '/^(\S+)\t/ and print "$1\n"' | uniq > $nolbfile &
parallel -j0 --compress --tag --delay 1 "shuf $randomfile; sleep 1; shuf $randomfile; true" ::: {0..9} |
perl -ne '/^(\S+)\t/ and print "$1\n"' | uniq > $controlfile &
parallel -j0 --line-buffer --compress --tag --delay 1 "shuf $randomfile; sleep 1; shuf $randomfile; true" ::: {0..9} |
perl -ne '/^(\S+)\t/ and print "$1\n"' | uniq > $lbfile &
testfunc() {
linebuffer="$1"
# Sleep 2 sec to give time to linebuffer-print the first part
parallel -j0 $linebuffer --compress --tag \
"shuf $randomfile; sleep 2; shuf $randomfile; true" ::: {0..10} |
perl -ne '/^(\S+)\t/ and print "$1\n"' | uniq | sort
}
testfunc > $nolbfile &
testfunc > $controlfile &
testfunc --linebuffer > $lbfile &
wait
nolb="$(cat $nolbfile)"

View file

@ -118,5 +118,14 @@ par_dryrun_timeout_ungroup() {
seq 1000 | stdout parallel --dry-run --timeout 100 -u --jobs 10 echo | wc
}
par_sqlworker_hostname() {
echo 'bug #50901: --sqlworker should use hostname in the joblog instead of :'
parallel --sqlmaster :my/hostname echo ::: 1 2 3
parallel -k --sqlworker :my/hostname
hostname=`hostname`
sql :my 'select host from hostname;' |
perl -pe "s/$hostname/<hostname>/g"
}
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | parallel -j6 --tag -k '{} 2>&1'

View file

@ -1,5 +1,47 @@
#!/bin/bash
par_hostgroup() {
echo '### --hostgroup force ncpu'
parallel --delay 0.1 --hgrp -S @g1/1/parallel@lo -S @g2/3/lo whoami\;sleep 0.4{} ::: {1..8} | sort
echo '### --hostgroup two group arg'
parallel -k --sshdelay 0.1 --hgrp -S @g1/1/parallel@lo -S @g2/3/lo whoami\;sleep 0.3{} ::: {1..8}@g1+g2 | sort
echo '### --hostgroup one group arg'
parallel --delay 0.2 --hgrp -S @g1/1/parallel@lo -S @g2/3/lo whoami\;sleep 0.4{} ::: {1..8}@g2
echo '### --hostgroup multiple group arg + unused group'
parallel --delay 0.2 --hgrp -S @g1/1/parallel@lo -S @g1/3/lo -S @g3/100/tcsh@lo whoami\;sleep 0.8{} ::: {1..8}@g1+g2 | sort
echo '### --hostgroup two groups @'
parallel -k --hgrp -S @g1/parallel@lo -S @g2/lo --tag whoami\;echo ::: parallel@g1 tange@g2
echo '### --hostgroup'
parallel -k --hostgroup -S @grp1/lo echo ::: no_group explicit_group@grp1 implicit_group@lo
echo '### --hostgroup --sshlogin with @'
parallel -k --hostgroups -S parallel@lo echo ::: no_group implicit_group@parallel@lo
echo '### --hostgroup -S @group'
parallel -S @g1/ -S @g1/1/tcsh@lo -S @g1/1/localhost -S @g2/1/parallel@lo whoami\;true ::: {1..6} | sort
echo '### --hostgroup -S @group1 -Sgrp2'
parallel -S @g1/ -S @g2 -S @g1/1/tcsh@lo -S @g1/1/localhost -S @g2/1/parallel@lo whoami\;true ::: {1..6} | sort
echo '### --hostgroup -S @group1+grp2'
parallel -S @g1+g2 -S @g1/1/tcsh@lo -S @g1/1/localhost -S @g2/1/parallel@lo whoami\;true ::: {1..6} | sort
}
par_distribute_input_by_ability() {
echo "### bug #48290: round-robin does not distribute data based on business"
echo "### Distribute input to jobs that are ready"
echo "Job-slot n is 50% slower than n+1, so the order should be 1..7"
seq 20000000 |
parallel --tagstring {#} -j7 --block 300k --round-robin --pipe \
'pv -qL{=$_=$job->seq()**3+9=}0000 |wc -c' |
sort -nk2 | field 1
}
par_print_before_halt_on_error() {
echo '### What is printed before the jobs are killed'
mytest() {
@ -41,4 +83,5 @@ par_testhalt() {
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort |
parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1'
# parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1'
parallel --joblog /tmp/jl-`basename $0` -j1 --tag -k '{} 2>&1'

View file

@ -9,7 +9,8 @@ export DEBUG=false
p_showsqlresult() {
SERVERURL=$1
TABLE=$2
sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;"
# No hostname as it can differ
sql $SERVERURL "select Command,V1,V2,Stdout,Stderr from $TABLE order by seq;"
}
p_wrapper() {
@ -112,18 +113,17 @@ par_shuf() {
touch $T1
}
par_sqlandworker_lo() {
p_template -S lo
}
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
parallel -k --joblog - --sqlworker $DBURL
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

View file

@ -8,7 +8,7 @@ unset run_test
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | stdout parallel -vj300% -k --joblog /tmp/jl-`basename $0` -L1
echo '### Test --load remote'
ssh parallel@lo 'seq 10 | parallel --nice 19 --timeout 15 -j0 -N0 burnP6' &
ssh parallel@lo 'seq 10 | parallel --nice 19 --timeout 15 -j0 -qN0 perl -e while\(1\)\{\ \}' &
sleep 1;
stdout /usr/bin/time -f %e parallel -S parallel@lo --load 10 sleep ::: 1 | perl -ne '$_ > 10 and print "OK\n"'

View file

@ -1,37 +1,8 @@
#!/bin/bash
# SSH only allowed to localhost/lo
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj100% --retries 3 -k --joblog /tmp/jl-`basename $0` -L1
echo '### --hostgroup force ncpu'
parallel --delay 0.1 --hgrp -S @g1/1/parallel@lo -S @g2/3/lo whoami\;sleep 0.4{} ::: {1..8} | sort
echo '### --hostgroup two group arg'
parallel -k --sshdelay 0.1 --hgrp -S @g1/1/parallel@lo -S @g2/3/lo whoami\;sleep 0.3{} ::: {1..8}@g1+g2 | sort
echo '### --hostgroup one group arg'
parallel --delay 0.2 --hgrp -S @g1/1/parallel@lo -S @g2/3/lo whoami\;sleep 0.4{} ::: {1..8}@g2
echo '### --hostgroup multiple group arg + unused group'
parallel --delay 0.2 --hgrp -S @g1/1/parallel@lo -S @g1/3/lo -S @g3/100/tcsh@lo whoami\;sleep 0.8{} ::: {1..8}@g1+g2 | sort
echo '### --hostgroup two groups @'
parallel -k --hgrp -S @g1/parallel@lo -S @g2/lo --tag whoami\;echo ::: parallel@g1 tange@g2
echo '### --hostgroup'
parallel -k --hostgroup -S @grp1/lo echo ::: no_group explicit_group@grp1 implicit_group@lo
echo '### --hostgroup --sshlogin with @'
parallel -k --hostgroups -S parallel@lo echo ::: no_group implicit_group@parallel@lo
echo '### --hostgroup -S @group'
parallel -S @g1/ -S @g1/1/tcsh@lo -S @g1/1/localhost -S @g2/1/parallel@lo whoami\;true ::: {1..6} | sort
echo '### --hostgroup -S @group1 -Sgrp2'
parallel -S @g1/ -S @g2 -S @g1/1/tcsh@lo -S @g1/1/localhost -S @g2/1/parallel@lo whoami\;true ::: {1..6} | sort
echo '### --hostgroup -S @group1+grp2'
parallel -S @g1+g2 -S @g1/1/tcsh@lo -S @g1/1/localhost -S @g2/1/parallel@lo whoami\;true ::: {1..6} | sort
cat <<'EOF' | parallel -vj100% --retries 3 -k --joblog /tmp/jl-`basename $0` -L1
echo '### trailing space in sshlogin'
echo 'sshlogin trailing space' | parallel --sshlogin "ssh -l parallel localhost " echo
@ -89,21 +60,23 @@ echo '### bug #49404: "Max jobs to run" does not equal the number of jobs specif
EOF
par_trc_with_space() {
SERVER1=parallel-server1
echo '### Test --trc with space added in filename'
echo original > '/tmp/parallel space file'
echo '/tmp/parallel space file' | stdout parallel --trc "{} more space" -S parallel@$SERVER1 cat {} ">{}\\ more\\ space"
cat '/tmp/parallel space file more space'
rm '/tmp/parallel space file' '/tmp/parallel space file more space'
cd
mkdir -p tmp
echo original > 'tmp/parallel space file'
echo 'tmp/parallel space file' | stdout parallel --trc "{} more space" -S parallel@lo cat {} ">{}\\ more\\ space"
cat 'tmp/parallel space file more space'
rm 'tmp/parallel space file' 'tmp/parallel space file more space'
}
par_trc_with_special_chars() {
SERVER1=parallel-server1
echo '### Test --trc with >|< added in filename'
echo original > '/tmp/parallel space file2'
echo '/tmp/parallel space file2' | stdout parallel --trc "{} >|<" -S parallel@$SERVER1 cat {} ">{}\\ \\>\\|\\<"
cat '/tmp/parallel space file2 >|<'
rm '/tmp/parallel space file2' '/tmp/parallel space file2 >|<'
cd
mkdir -p tmp
echo original > 'tmp/parallel space file2'
echo 'tmp/parallel space file2' | stdout parallel --trc "{} >|<" -S parallel@lo cat {} ">{}\\ \\>\\|\\<"
cat 'tmp/parallel space file2 >|<'
rm 'tmp/parallel space file2' 'tmp/parallel space file2 >|<'
}
par_return_with_fixedstring() {

View file

@ -286,7 +286,7 @@ par_fish_man() {
env_parallel ::: true false true false
echo exit value $status should be 2
env_parallel --no-such-option >/dev/null
env_parallel --no-such-option 2>&1 >/dev/null
echo exit value $status should be 255
_EOF
)
@ -632,7 +632,8 @@ par_bash_funky() {
. `which env_parallel.bash`;
myvar="myvar works"
funky=$(perl -e "print pack \"c*\", 1..255")
funky_single_line=$(perl -e "print pack \"c*\", 13..126,128..255")
funky_multi_line=$(perl -e "print pack \"c*\", 1..12,127")
myarray=("" array_val2 3 "" 5 " space 6 ")
declare -A assocarr
assocarr[a]=assoc_val_a
@ -643,14 +644,16 @@ par_bash_funky() {
echo "$myvar"
echo "${myarray[5]}"
echo ${assocarr[a]}
echo Funky-"$funky"-funky
echo Funkyline-"$funky_single_line"-funkyline
echo Funkymultiline-"$funky_multi_line"-funkymultiline
}
env_parallel alias_echo ::: alias_works
env_parallel func_echo ::: function_works
env_parallel -S lo alias_echo ::: alias_works_over_ssh
env_parallel -S lo func_echo ::: function_works_over_ssh
echo
echo "$funky" | parallel --shellquote
echo "$funky_single_line" | parallel --shellquote
echo "$funky_multi_line" | parallel --shellquote
_EOF
)
# Order is often different. Dunno why. So sort
@ -864,6 +867,7 @@ par_bash_env_parallel_fifo() {
myscript=$(cat <<'_EOF'
echo 'bug #50435: Remote fifo broke in 20150522'
# Due to $PARALLEL_TMP being transferred
. `which env_parallel.bash`
OK=OK
echo data from stdin | env_parallel --pipe -S lo --fifo 'cat {} && echo $OK'
echo data from stdin | env_parallel --pipe -S lo --cat 'cat {} && echo $OK'

View file

@ -7,7 +7,7 @@ par_path_remote_bash() {
rm -rf /tmp/parallel
cp /usr/local/bin/parallel /tmp
cat <<'_EOS' | stdout ssh nopathbash@lo -T | grep -Ev 'packages can be updated|System restart required|Welcome to'
cat <<'_EOS' | stdout ssh nopathbash@lo -T | grep -Ev 'packages can be updated|System restart required|Welcome to|https://|Ubuntu|http://' | uniq
echo BASH Path before: $PATH with no parallel
parallel echo ::: 1
# Race condition stderr/stdout
@ -28,7 +28,7 @@ par_path_remote_csh() {
rm -rf /tmp/parallel
cp /usr/local/bin/parallel /tmp
cat <<'_EOS' | stdout ssh nopathcsh@lo -T | grep -Ev 'packages can be updated|System restart required|Welcome to'
cat <<'_EOS' | stdout ssh nopathcsh@lo -T | grep -Ev 'packages can be updated|System restart required|Welcome to|https://|Ubuntu|http://' | uniq
echo CSH Path before: $PATH with no parallel
which parallel >& /dev/stdout
echo '^^^^^^^^ Not found is OK'
@ -42,6 +42,8 @@ par_path_remote_csh() {
endif
# --filter to see if $PATH with parallel is transferred
env_parallel --filter --env A,PATH -Slo echo '$PATH' ::: OK
# Sleep needed to avoid stderr/stdout mixing
sleep 1
echo Right now it seems csh does not respect $PATH if set from Perl
echo Done
_EOS

View file

@ -13,7 +13,7 @@ stdsort() {
}
export -f stdsort
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj200 -k --joblog /tmp/jl-`basename $0` -L1
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj100 -k --joblog /tmp/jl-`basename $0` -L1
echo '### -0 -n3 echo < files0.xi'
stdout xargs -0 -n3 echo < files0.xi
stdout parallel -k -0 -n3 echo < files0.xi
@ -228,7 +228,8 @@ stdout xargs -iARG echo ARG is xARGx < files.xi
stdout parallel -k -iARG echo ARG is xARGx < files.xi
echo '### -i echo from \{\} to x{}y < items.xi'
stdout xargs -i echo from \{\} to x{}y < items.xi
stdout parallel -k -i echo from \{\} to x{}y < items.xi
# GNU Parallel will see 'echo' as argument to '-i' if not given {}
stdout parallel -k -i {} echo from \{\} to x{}y < items.xi
echo '### -i -s26 echo from \{\} to x{}y < items.xi'
stdsort xargs -i -s26 echo from \{\} to x{}y < items.xi
stdsort parallel -k -i -s26 echo from \{\} to x{}y < items.xi

View file

@ -1,5 +1,6 @@
#!/bin/bash
par_space() {
echo '### Test --env - https://savannah.gnu.org/bugs/?37351'
export TWOSPACES=' 2 spaces '
export THREESPACES=" > My brother's 12\" records < "
@ -20,35 +21,75 @@ stdout parallel --env TWOSPACES,THREESPACES echo 'a"$TWOSPACES"b' 'a"$THREESPACE
stdout parallel -S localhost --env TWOSPACES,THREESPACES echo 'a"$TWOSPACES"b' 'a"$THREESPACES"b' ::: 3
stdout parallel -S csh@localhost --env TWOSPACES,THREESPACES echo 'a"$TWOSPACES"b' 'a"$THREESPACES"b' ::: 3
stdout parallel -S tcsh@localhost --env TWOSPACES,THREESPACES echo 'a"$TWOSPACES"b' 'a"$THREESPACES"b' ::: 3
}
par_space_quote() {
export MIN=" \'\""
echo a"$MIN"b 4
stdout parallel --env MIN echo 'a"$MIN"b' ::: 4
stdout parallel -S localhost --env MIN echo 'a"$MIN"b' ::: 4
stdout parallel -S csh@localhost --env MIN echo 'a"$MIN"b' ::: 4
stdout parallel -S tcsh@localhost --env MIN echo 'a"$MIN"b' ::: 4
}
par_special_char() {
export SPC="'"' * ? >o <i*? ][\!#¤%=( ) | }'
echo a"$SPC"b 5
stdout parallel --env SPC echo 'a"$SPC"b' ::: 5
stdout parallel -S localhost --env SPC echo 'a"$SPC"b' ::: 5
stdout parallel -S csh@localhost --env SPC echo 'a"$SPC"b' ::: 5
stdout parallel -S tcsh@localhost --env SPC echo 'a"$SPC"b' ::: 5
LANG=C stdout parallel --env SPC echo 'a"$SPC"b' ::: 5
LANG=C stdout parallel -S localhost --env SPC echo 'a"$SPC"b' ::: 5
LANG=C stdout parallel -S csh@localhost --env SPC echo 'a"$SPC"b' ::: 5
LANG=C stdout parallel -S tcsh@localhost --env SPC echo 'a"$SPC"b' ::: 5
}
test_chr_on_sshlogin() {
# test_chr_on_sshlogin 10,92 2/:,2/lo
# test_chr_on_sshlogin 10,92 2/tcsh@lo,2/csh@lo
chr="$1"
sshlogin="$2"
onall="$3"
perl -e 'for('$chr') { printf "%c%c %c%d\0",$_,$_,$_,$_ }' |
stdout parallel -j4 -k -I // --arg-sep _ -0 V=// V2=V2=// LANG=C parallel -k -j1 $onall -S $sshlogin --env V,V2,LANG echo \''"{}$V$V2"'\' ::: {#} {#} {#} {#} |
sort |
uniq -c |
grep -v ' 4 '|
grep -v xauth |
grep -v X11
}
export -f test_chr_on_sshlogin
par_env_newline_backslash_bash() {
echo '### Test --env for \n and \\ - single and double (bash only) - no output is good'
perl -e 'for(10,92) { printf "%c%c %c%d\0",$_,$_,$_,$_ }' | stdout parallel --nice 19 -j4 -k -I // --arg-sep _ -0 V=// V2=V2=// parallel -k -j1 -S 2/:,2/lo --env V,V2 echo \''"{}$V$V2"'\' ::: {#} {#} {#} {#} | sort | uniq -c | grep -v ' 4 '|grep -v xauth |grep -v X11
test_chr_on_sshlogin 10,92 2/:,2/lo ''
}
par_env_newline_backslash_csh() {
echo '### Test --env for \n and \\ - single and double (*csh only) - no output is good but csh fails'
perl -e 'for(10,92) { printf "%c%c %c%d\0",$_,$_,$_,$_ }' | stdout parallel --nice 19 -j4 -k -I // --arg-sep _ -0 V=// V2=V2=// parallel -k -j1 -S 2/tcsh@lo,2/csh@lo --env V,V2 echo \''"{}$V$V2"'\' ::: {#} {#} {#} {#} | sort | uniq -c | grep -v ' 4 '|grep -v xauth |grep -v X11
test_chr_on_sshlogin 10,92 2/tcsh@lo,2/csh@lo ''
}
par_env_newline_backslash_onall_bash() {
echo '### Test --env for \n and \\ - single and double --onall (bash only) - no output is good'
perl -e 'for(10,92) { printf "%c%c %c%d\0",$_,$_,$_,$_ }' | stdout parallel --nice 19 -j4 -k -I // --arg-sep _ -0 V=// V2=V2=// parallel -k -j1 -S :,lo --onall --env V,V2 echo \''"{}$V$V2"'\' ::: {#} | sort | uniq -c | grep -v ' 4 '|grep -v xauth |grep -v X11
test_chr_on_sshlogin 10,92 :,lo --onall
}
par_env_newline_backslash_onall_csh() {
echo '### Test --env for \n and \\ - single and double --onall (*csh only) - no output is good but csh fails'
perl -e 'for(10,92) { printf "%c%c %c%d\0",$_,$_,$_,$_ }' | stdout parallel --nice 19 -j4 -k -I // --arg-sep _ -0 V=// V2=V2=// parallel -k -j1 -S 1/tcsh@lo,1/csh@lo --onall --env V,V2 echo \''"{}$V$V2"'\' ::: {#} | sort | uniq -c | grep -v ' 2 '|grep -v xauth |grep -v X11
test_chr_on_sshlogin 10,92 2/tcsh@lo,2/csh@lo --onall
}
par_env_160() {
echo '### Test --env for \160 - which kills csh - single and double - no output is good'
perl -e 'for(160) { printf "%c%c %c%d\0",$_,$_,$_,$_ }' | stdout parallel --nice 19 -j4 -k -I // --arg-sep _ -0 V=// V2=V2=// parallel -k -j1 -S :,1/lo,1/tcsh@lo --env V,V2 echo \''"{}$V$V2"'\' ::: {#} {#} {#} | uniq -c | grep -v ' 3 '|grep -v xauth |grep -v X11
test_chr_on_sshlogin 160 :,1/lo,1/tcsh@lo |
grep -v ' 3 '
}
par_env_160_onall() {
echo '### Test --env for \160 - which kills csh - single and double --onall - no output is good'
perl -e 'for(160) { printf "%c%c %c%d\0",$_,$_,$_,$_ }' | stdout parallel --nice 19 -j4 -k -I // --arg-sep _ -0 V=// V2=V2=// parallel -k -j1 -S :,1/lo,1/tcsh@lo --onall --env V,V2 echo \''"{}$V$V2"'\' ::: {#} | uniq -c | grep -v ' 3 '|grep -v xauth |grep -v X11
test_chr_on_sshlogin 160 :,1/lo,1/tcsh@lo --onall |
grep -v ' 3 '
}
export -f $(compgen -A function | grep par_)
#compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1'
compgen -A function | grep par_ | sort |
parallel --joblog /tmp/jl-`basename $0` --retries 3 -j2 --tag -k '{} 2>&1'

View file

@ -1,15 +1,20 @@
#!/bin/bash
cpuburn=$(tempfile)
(echo '#!/usr/bin/perl'
echo "eval{setpriority(0,0,9)}; while(1){}") > $cpuburn
chmod 700 $cpuburn
forceload () {
# Force load
LOAD=$1
# Start 10 times as many burnP6
seq 0 0.1 $1 | parallel -j0 timeout 20 burnP6 2>/dev/null &
# Start 10 times as many cpuburn
seq 0 0.1 $1 | parallel -j0 timeout 20 $cpuburn 2>/dev/null &
PID=$!
# Give GNU Parallel 1 second to startup
sleep 1
perl -e 'do{$a=`uptime`} while($a=~/average: *(\S+)/ and $1 < '$LOAD')'
# Load is now > $CPUS
# Load is now > $LOAD
}
# Force load avg > number of cpu cores
@ -27,15 +32,16 @@ echo '### Test slow arguments generation - https://savannah.gnu.org/bugs/?32834'
seq 1 3 | parallel -j1 "sleep 2; echo {}" | parallel -kj2 echo
EOF
# Make sure we got all the burnP6 killed
killall -9 burnP6 2>/dev/null
# Make sure we got all the cpuburn killed
killall $(basename $cpuburn) 2>/dev/null
echo '### Test too slow spawning'
# Let the commands below run during high load
seq 1000 | timeout 20 parallel -j400% -N0 burnP6 2>/dev/null &
seq 1000 | timeout 20 parallel -j400% -N0 $cpuburn 2>/dev/null &
PID=$!
seq 1 1000 | stdout nice nice parallel --halt 1 -uj0 -N0 kill $PID |
perl -pe '/parallel: Warning: Starting \d+ processes took/ and do {close STDIN; `kill '$PID';killall -9 burnP6`; print "OK\n"; exit }';
perl -pe '/parallel: Warning: Starting \d+ processes took/ and do {close STDIN; `kill '$PID';killall '$(basename $cpuburn)'`; print "OK\n"; exit }';
# Make sure we got all the burnP6 killed
killall -9 burnP6 2>/dev/null
# Make sure we got all the cpuburn killed
killall $(basename $cpuburn) 2>/dev/null
rm $cpuburn

View file

@ -3,19 +3,28 @@
echo 'bug #46120: Suspend should suspend (at least local) children'
echo 'it should burn 1.9 CPU seconds, but no more than that'
echo 'The 5 second sleep will make it be killed by timeout when it fgs'
stdout bash -i -c 'stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 burnP6 ::: 1 | grep -q CPUTIME=1 &
stdout bash -i -c 'stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" ::: 1 | grep -q CPUTIME=1 &
sleep 1.9;
kill -TSTP -$!;
sleep 5;
fg;
echo Zero=OK $?' | grep -v '\[1\]'
echo Zero=OK $?' | grep -v '\[1\]' | grep -v 'SHA256'
stdout bash -i -c 'echo 1 | stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 burnP6 | grep -q CPUTIME=1 &
stdout bash -i -c 'echo 1 | stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" | grep -q CPUTIME=1 &
sleep 1.9;
kill -TSTP -$!;
sleep 5;
fg;
echo Zero=OK $?' | grep -v '\[1\]'
echo Zero=OK $?' | grep -v '\[1\]' | grep -v 'SHA256'
echo Control case: Burn for 2.9 seconds
stdout bash -i -c 'stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" ::: 1 | grep -q CPUTIME=1 &
sleep 2.9;
kill -TSTP -$!;
sleep 5;
fg;
echo 1=OK $?' | grep -v '\[1\]' | grep -v 'SHA256'
cat <<'EOF' | sed -e 's/;$/; /;' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo '### -L -n with pipe'

View file

@ -23,39 +23,39 @@ export -f par_tmux
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj3 --timeout 60 --retries 2 -k --joblog /tmp/jl-`basename $0` -L1
echo '### tmux1.9'
seq 000 100 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 100 200 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 200 300 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 300 400 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 400 500 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 500 600 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 600 700 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 700 800 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 800 900 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 900 1000 | PARALLEL_TMUX=tmux1.9 par_tmux
seq 1000 1006 | PARALLEL_TMUX=tmux1.9 par_tmux
echo '### tmux1.9 fails'
echo 1007 | PARALLEL_TMUX=tmux1.9 par_tmux
echo 1008 | PARALLEL_TMUX=tmux1.9 par_tmux
echo 1009 | PARALLEL_TMUX=tmux1.9 par_tmux
echo '### tmux-1.9'
seq 000 100 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 100 200 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 200 300 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 300 400 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 400 500 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 500 600 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 600 700 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 700 800 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 800 900 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 900 1000 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1000 1006 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo '### tmux-1.9 fails'
echo 1007 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo 1008 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo 1009 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo '### tmux1.8'
seq 1 50 | PARALLEL_TMUX=tmux1.8 par_tmux
seq 51 100 | PARALLEL_TMUX=tmux1.8 par_tmux
seq 101 113 | PARALLEL_TMUX=tmux1.8 par_tmux
echo '### tmux1.8 fails'
echo 114 | PARALLEL_TMUX=tmux1.8 par_tmux
echo 115 | PARALLEL_TMUX=tmux1.8 par_tmux
echo 116 | PARALLEL_TMUX=tmux1.8 par_tmux
echo '### tmux-1.8'
seq 1 50 | PARALLEL_TMUX=tmux-1.8 par_tmux
seq 51 100 | PARALLEL_TMUX=tmux-1.8 par_tmux
seq 101 113 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo '### tmux-1.8 fails'
echo 114 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo 115 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo 116 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo '### tmux1.8 0..255 ascii'
echo '### tmux-1.8 0..255 ascii'
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } $_-110..$_),"\n" } 0..255' |
PARALLEL_TMUX=tmux1.8 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
echo '### tmux1.9 0..255 ascii'
echo '### tmux-1.9 0..255 ascii'
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } 0..$_),"\n" } 0..255' |
PARALLEL_TMUX=tmux1.9 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
echo '### Test output ascii'
rm -f /tmp/paralocal7-ascii*;
@ -63,10 +63,10 @@ echo '### Test output ascii'
sort /tmp/paralocal7-ascii* | md5sum
echo '### Test critical lengths. Must not block'
seq 70 130 | PARALLEL_TMUX=tmux1.8 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
seq 70 130 | PARALLEL_TMUX=tmux1.9 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
seq 280 425 | PARALLEL_TMUX=tmux1.8 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
seq 280 425 | PARALLEL_TMUX=tmux1.9 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
seq 70 130 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
seq 70 130 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
seq 280 425 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
seq 280 425 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
EOF

View file

@ -8,7 +8,7 @@ echo '### Test --env all chars except \n,\92,\160 - single and double - no outpu
# This is fast
perl -e 'for(1..9,9,11..91,91,93..159,159,161..255) { printf "%c",$_ } printf "\0"' |
stdout parallel -k -I // --arg-sep _ -0 V=// V2=V2=// parallel -k -S 1/:,1/lo,1/tcsh@lo,1/csh@lo --onall --env V,V2 echo \''"{}$V$V2"'\' ::: {#} | uniq -c | grep -v ' 4 '|grep -v xauth |grep -v X11
stdout parallel -k -I // --arg-sep _ -0 V=// V2=V2=// LANG=C parallel -k -S 1/:,1/lo,1/tcsh@lo,1/csh@lo --onall --env V,V2,LANG echo \''"{}$V$V2"'\' ::: {#} | uniq -c | grep -v ' 4 '|grep -v xauth |grep -v X11
echo '### bug #37262: --slf + --filter-hosts fails'
parallel --nonall --filter-hosts --sshloginfile <(echo localhost) echo OK

View file

@ -152,22 +152,6 @@ echo '### PARALLEL_TMUX not found'
PARALLEL_TMUX=not-existing parallel --tmux echo ::: 1
parallel: Error: not-existing not found in $PATH.
echo '**'
**
parallel -j4 --halt 2 ::: 'sleep 1' burnP6 false; killall burnP6 && echo ERROR: burnP6 should already have been killed
parallel: This job failed:
false
burnP6: no process found
parallel -j4 --halt -2 ::: 'sleep 1' burnP5 true; killall burnP5 && echo ERROR: burnP5 should already have been killed
parallel: This job succeeded:
true
burnP5: no process found
parallel --halt error echo ::: should not print
parallel: Error: --halt must have 'never', 'soon', or 'now'.
parallel --halt soon echo ::: should not print
parallel: Error: --halt soon must be followed by ,success or ,fail.
parallel --halt now echo ::: should not print
parallel: Error: --halt now must be followed by ,success or ,fail.
echo '**'
**
echo '### bug #44995: parallel echo {#} ::: 1 2 ::: 1 2'
### bug #44995: parallel echo {#} ::: 1 2 ::: 1 2
@ -308,8 +292,8 @@ OK
~/privat/parallel/testsuite
OK
parallel --wd ... 'pwd; echo $OLDPWD; echo' ::: OK | perl -pe 's/\d+/0/g'
/mnt/0tb/home/tange/.parallel/tmp/aspire-0-0
/mnt/0tb/home/tange/privat/parallel/testsuite
~/.parallel/tmp/hk-0-0
~/privat/parallel/testsuite
OK
parallel --wd . 'pwd; echo $OLDPWD; echo' ::: OK
~/privat/parallel/testsuite
@ -1495,7 +1479,7 @@ echo '### bug #34422: parallel -X --eta crashes with div by zero'
seq 2 | stdout parallel -X --eta echo | grep -E -v 'ETA:.*AVG'
Computers / CPU cores / Max jobs to run
1:local / 8 / 2
1:local / 2 / 2
Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete
echo '**'
@ -1612,6 +1596,13 @@ par_append_joblog ### can you append to a joblog using +
par_append_joblog 1
par_append_joblog 1
par_append_joblog 3 /tmp/parallel_append_joblog
par_basic_halt parallel: This job failed:
par_basic_halt false
par_basic_halt parallel: This job succeeded:
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_empty bug #:
par_empty true
par_empty_line ### Test bug: empty line for | sh with -k
@ -1628,12 +1619,25 @@ par_link_files_as_only_arg 3 3 3
par_macron ¯
par_macron ¯
par_macron ¯ ¯
par_macron ¯ ¯
par_macron ¯
par_macron ¯® ¯
par_macron "¯®" ¯
par_macron ¯®
par_macron ¯®
par_macron ¯® ¯®
par_macron ¯® ¯®
par_macron ¯®
par_macron ¯®® ¯®
par_macron "¯®®" ¯®
par_macron /bin/bash: -c: line 0: syntax error near unexpected token `newline'
par_macron /bin/bash: -c: line 0: `echo ¯<¯<¯>¯>'
par_macron ¯<¯<¯>¯>
par_macron ¯<¯<¯>¯>
par_macron /bin/bash: ¯: No such file or directory
par_macron ¯<¯<¯>¯> ¯<¯<¯>¯>
par_macron ¯<¯<¯>¯>
par_macron ¯®<¯®<¯®>¯®> ¯<¯<¯>¯>
par_macron "¯®<¯®<¯®>¯®>" ¯<¯<¯>¯>
par_pipepart_block_bigger_2G ### Test that --pipepart can have blocks > 2GB
par_pipepart_block_bigger_2G 1 1 4
par_python_children ### bug #49970: Python child process dies if --env is used

View file

@ -1,16 +1,19 @@
par__memleak ### Test memory consumption stays (almost) the same for 30 and 300 jobs
par__memleak should give 1 == true
par__memleak Memory use should not depend very much on the total number of jobs run\n
par__memleak Test if memory consumption(300 jobs) < memory consumption(30 jobs) * 110%
par__memleak 1
par__pipe_tee bug #45479: --pipe/--pipepart --tee
par__pipe_tee --pipe --tee
par__pipe_tee 3221225472
par__pipepart_spawn ### bug #46214: Using --pipepart doesnt spawn multiple jobs in version 20150922
par__pipepart_spawn 1:local / 2 / 999
par__pipepart_tee bug #45479: --pipe/--pipepart --tee
par__pipepart_tee --pipepart --tee
par__pipepart_tee 3221225472
par_compress_fail ### bug #41609: --compress fails
par_compress_fail 24812dd0f24a26d08a780f988b9d5ad2 -
par_compress_fail 24812dd0f24a26d08a780f988b9d5ad2 -
par_distribute_input_by_ability ### bug #48290: round-robin does not distribute data based on business
par_distribute_input_by_ability ### Distribute input to jobs that are ready
par_distribute_input_by_ability Job-slot n is 50% slower than n+1, so the order should be 1..7
par_distribute_input_by_ability 1
par_distribute_input_by_ability 2
par_distribute_input_by_ability 3
par_distribute_input_by_ability 4
par_distribute_input_by_ability 5
par_distribute_input_by_ability 6
par_distribute_input_by_ability 7
par_first_print_halt_on_error_1 ### Test first dying print --halt-on-error 1
par_first_print_halt_on_error_1 0
par_first_print_halt_on_error_1 parallel: This job failed:
@ -258,24 +261,22 @@ 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_interactive ### Test -p --interactive
par_interactive spawn /tmp/parallel-script-for-expect
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 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 opt--interactive 1
par_interactive opt--interactive 3
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_k ### Test -k
par_k parallel: Warning: Only enough file handles to run 9 jobs in parallel.
par_k parallel: Warning: Running 'parallel -j0 -N 9 --pipe parallel -j0' or
par_k parallel: Warning: Only enough file handles to run 8 jobs in parallel.
par_k parallel: Warning: Running 'parallel -j0 -N 8 --pipe parallel -j0' or
par_k parallel: Warning: raising 'ulimit -n' or 'nofile' in /etc/security/limits.conf
par_k parallel: Warning: or /proc/sys/fs/file-max may help.
par_k parallel: Warning: No more file handles.
par_k parallel: Warning: Raising ulimit -n or /etc/security/limits.conf may help.
par_k begin
par_k 1
par_k 2
@ -487,19 +488,6 @@ par_maxlinelen_X_I Chars per line (817788/13): 62906
par_maxlinelen_m_I ### Test max line length -m -I
par_maxlinelen_m_I d10d5c84fc4716b21d90afa92cf44d73 -
par_maxlinelen_m_I Chars per line (697810/11): 63437
par_memleak ### Test memory consumption stays (almost) the same for 30 and 300 jobs
par_memleak should give 1 == true
par_memleak Memory use should not depend very much on the total number of jobs run\n
par_memleak Test if memory consumption(300 jobs) < memory consumption(30 jobs) * 110%
par_memleak 1
par_pipe_tee bug #45479: --pipe/--pipepart --tee
par_pipe_tee --pipe --tee
par_pipe_tee 3221225472
par_pipepart_spawn ### bug #46214: Using --pipepart doesnt spawn multiple jobs in version 20150922
par_pipepart_spawn 1:local / 8 / 999
par_pipepart_tee bug #45479: --pipe/--pipepart --tee
par_pipepart_tee --pipepart --tee
par_pipepart_tee 3221225472
par_plus_dyn_repl Dynamic replacement strings defined by --plus
par_plus_dyn_repl myval
par_plus_dyn_repl myval
@ -568,10 +556,10 @@ par_results_compress 0
par_results_compress 1
par_results_csv bug #: --results csv
par_results_csv --header : --tag --lb --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --tag --lb --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --lb --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --lb --files --compress 3,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --lb --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --lb --files --compress 1,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --lb --files --compress 2,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --lb --files --compress 3,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --lb --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --lb --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --tag --lb --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --lb --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
@ -596,10 +584,10 @@ par_results_csv --header : --tag --lb ",
par_results_csv --header : --tag --lb 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12
par_results_csv --header : --tag --lb ",
par_results_csv --header : --tag --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --tag --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --files --compress 3,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --files --compress 1,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --files --compress 2,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --files --compress 3,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --tag --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
@ -624,10 +612,10 @@ par_results_csv --header : --tag ",
par_results_csv --header : --tag 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12
par_results_csv --header : --tag ",
par_results_csv --header : --lb --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --lb --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --lb --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --lb --files --compress 3,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --lb --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --lb --files --compress 1,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --lb --files --compress 2,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --lb --files --compress 3,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --lb --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --lb --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --lb --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --lb --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
@ -652,10 +640,10 @@ par_results_csv --header : --lb ",
par_results_csv --header : --lb 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12
par_results_csv --header : --lb ",
par_results_csv --header : --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --files --compress 3,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --files --compress 1,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --files --compress 2,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --files --compress 3,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
@ -680,15 +668,15 @@ par_results_csv --header : ",
par_results_csv --header : 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12
par_results_csv --header : ",
par_results_csv --tag --lb --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --tag --lb --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 3,:,999.999,999.999,0,15,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 5,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 6,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 7,:,999.999,999.999,0,15,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 8,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 9,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 1,:,999.999,999.999,0,31,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 2,:,999.999,999.999,0,31,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 3,:,999.999,999.999,0,31,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 5,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 6,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 7,:,999.999,999.999,0,31,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 8,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 9,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --tag --lb --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
@ -738,15 +726,15 @@ par_results_csv --tag --lb ",
par_results_csv --tag --lb 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12
par_results_csv --tag --lb ",
par_results_csv --tag --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --tag --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 3,:,999.999,999.999,0,15,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 5,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 6,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 7,:,999.999,999.999,0,15,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 8,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 9,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 1,:,999.999,999.999,0,31,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 2,:,999.999,999.999,0,31,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 3,:,999.999,999.999,0,31,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 5,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 6,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 7,:,999.999,999.999,0,31,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 8,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 9,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --tag --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
@ -796,15 +784,15 @@ par_results_csv --tag ",
par_results_csv --tag 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12
par_results_csv --tag ",
par_results_csv --lb --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --lb --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 3,:,999.999,999.999,0,15,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 5,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 6,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 7,:,999.999,999.999,0,15,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 8,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 9,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 1,:,999.999,999.999,0,31,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 2,:,999.999,999.999,0,31,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 3,:,999.999,999.999,0,31,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 5,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 6,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 7,:,999.999,999.999,0,31,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 8,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 9,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --lb --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
@ -854,15 +842,15 @@ par_results_csv --lb ",
par_results_csv --lb 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12
par_results_csv --lb ",
par_results_csv --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 3,:,999.999,999.999,0,15,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 5,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 6,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 7,:,999.999,999.999,0,15,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 8,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 9,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 1,:,999.999,999.999,0,31,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 2,:,999.999,999.999,0,31,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 3,:,999.999,999.999,0,31,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 5,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 6,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 7,:,999.999,999.999,0,31,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 8,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 9,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile,

View file

@ -743,11 +743,3 @@ par_result_replace /tmp/par__49983-baz C
par_result_replace /tmp/par__49983-baz C/seq
par_result_replace /tmp/par__49983-baz C/stderr
par_result_replace /tmp/par__49983-baz C/stdout
par_sqlworker_hostname bug #50901: --sqlworker should use hostname in the joblog instead of :
par_sqlworker_hostname 1
par_sqlworker_hostname 2
par_sqlworker_hostname 3
par_sqlworker_hostname host
par_sqlworker_hostname aspire
par_sqlworker_hostname aspire
par_sqlworker_hostname aspire

View file

@ -1,4 +1,6 @@
par_linebuffer_matters_compress ### (--linebuffer) --compress should give different output
par_linebuffer_matters_compress environment: line 8: warning: command substitution: ignored null byte in input
par_linebuffer_matters_compress environment: line 11: warning: command substitution: ignored null byte in input
par_linebuffer_matters_compress OK: --linebuffer makes a difference
par_linebuffer_matters_compress_tag ### (--linebuffer) --compress --tag should give different output
par_linebuffer_matters_compress_tag OK: --linebuffer makes a difference

View file

@ -82,6 +82,14 @@ par_slow_args_generation ### Test slow arguments generation - https://savannah.g
par_slow_args_generation 1
par_slow_args_generation 2
par_slow_args_generation 3
par_sqlworker_hostname bug #50901: --sqlworker should use hostname in the joblog instead of :
par_sqlworker_hostname 1
par_sqlworker_hostname 2
par_sqlworker_hostname 3
par_sqlworker_hostname host
par_sqlworker_hostname <hostname>
par_sqlworker_hostname <hostname>
par_sqlworker_hostname <hostname>
par_wrong_slot_rpl_resume ### bug #47644: Wrong slot number replacement when resuming
par_wrong_slot_rpl_resume 1 0
par_wrong_slot_rpl_resume 2 1

View file

@ -1,3 +1,82 @@
par_distribute_input_by_ability ### bug #48290: round-robin does not distribute data based on business
par_distribute_input_by_ability ### Distribute input to jobs that are ready
par_distribute_input_by_ability Job-slot n is 50% slower than n+1, so the order should be 1..7
par_distribute_input_by_ability 1
par_distribute_input_by_ability 2
par_distribute_input_by_ability 3
par_distribute_input_by_ability 4
par_distribute_input_by_ability 5
par_distribute_input_by_ability 6
par_distribute_input_by_ability 7
par_hostgroup ### --hostgroup force ncpu
par_hostgroup parallel
par_hostgroup parallel
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup ### --hostgroup two group arg
par_hostgroup parallel
par_hostgroup parallel
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup ### --hostgroup one group arg
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup ### --hostgroup multiple group arg + unused group
par_hostgroup parallel
par_hostgroup parallel
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup ### --hostgroup two groups @
par_hostgroup parallel parallel
par_hostgroup parallel parallel
par_hostgroup tange tange
par_hostgroup tange tange
par_hostgroup ### --hostgroup
par_hostgroup no_group
par_hostgroup explicit_group
par_hostgroup implicit_group
par_hostgroup ### --hostgroup --sshlogin with @
par_hostgroup no_group
par_hostgroup implicit_group
par_hostgroup ### --hostgroup -S @group
par_hostgroup tange
par_hostgroup tange
par_hostgroup tange
par_hostgroup tcsh
par_hostgroup tcsh
par_hostgroup tcsh
par_hostgroup ### --hostgroup -S @group1 -Sgrp2
par_hostgroup parallel
par_hostgroup parallel
par_hostgroup tange
par_hostgroup tange
par_hostgroup tcsh
par_hostgroup tcsh
par_hostgroup ### --hostgroup -S @group1+grp2
par_hostgroup parallel
par_hostgroup parallel
par_hostgroup tange
par_hostgroup tange
par_hostgroup tcsh
par_hostgroup tcsh
par_print_before_halt_on_error ### What is printed before the jobs are killed
par_print_before_halt_on_error -2 exit code 0
par_print_before_halt_on_error -2 0.1 0.1

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
echo '### Test --load remote'
### Test --load remote
ssh parallel@lo 'seq 10 | parallel --nice 19 --timeout 15 -j0 -N0 burnP6' & sleep 1; stdout /usr/bin/time -f %e parallel -S parallel@lo --load 10 sleep ::: 1 | perl -ne '$_ > 10 and print "OK\n"'
ssh parallel@lo 'seq 10 | parallel --nice 19 --timeout 15 -j0 -qN0 perl -e while\(1\)\{\ \}' & sleep 1; stdout /usr/bin/time -f %e parallel -S parallel@lo --load 10 sleep ::: 1 | perl -ne '$_ > 10 and print "OK\n"'
OK
echo '**'
**

View file

@ -1,92 +1,3 @@
echo '### --hostgroup force ncpu'
### --hostgroup force ncpu
parallel --delay 0.1 --hgrp -S @g1/1/parallel@lo -S @g2/3/lo whoami\;sleep 0.4{} ::: {1..8} | sort
parallel
parallel
tange
tange
tange
tange
tange
tange
echo '### --hostgroup two group arg'
### --hostgroup two group arg
parallel -k --sshdelay 0.1 --hgrp -S @g1/1/parallel@lo -S @g2/3/lo whoami\;sleep 0.3{} ::: {1..8}@g1+g2 | sort
parallel
parallel
tange
tange
tange
tange
tange
tange
echo '### --hostgroup one group arg'
### --hostgroup one group arg
parallel --delay 0.2 --hgrp -S @g1/1/parallel@lo -S @g2/3/lo whoami\;sleep 0.4{} ::: {1..8}@g2
tange
tange
tange
tange
tange
tange
tange
tange
echo '### --hostgroup multiple group arg + unused group'
### --hostgroup multiple group arg + unused group
parallel --delay 0.2 --hgrp -S @g1/1/parallel@lo -S @g1/3/lo -S @g3/100/tcsh@lo whoami\;sleep 0.8{} ::: {1..8}@g1+g2 | sort
parallel
parallel
tange
tange
tange
tange
tange
tange
echo '### --hostgroup two groups @'
### --hostgroup two groups @
parallel -k --hgrp -S @g1/parallel@lo -S @g2/lo --tag whoami\;echo ::: parallel@g1 tange@g2
parallel parallel
parallel parallel
tange tange
tange tange
echo '### --hostgroup'
### --hostgroup
parallel -k --hostgroup -S @grp1/lo echo ::: no_group explicit_group@grp1 implicit_group@lo
no_group
explicit_group
implicit_group
echo '### --hostgroup --sshlogin with @'
### --hostgroup --sshlogin with @
parallel -k --hostgroups -S parallel@lo echo ::: no_group implicit_group@parallel@lo
no_group
implicit_group
echo '### --hostgroup -S @group'
### --hostgroup -S @group
parallel -S @g1/ -S @g1/1/tcsh@lo -S @g1/1/localhost -S @g2/1/parallel@lo whoami\;true ::: {1..6} | sort
tange
tange
tange
tcsh
tcsh
tcsh
echo '### --hostgroup -S @group1 -Sgrp2'
### --hostgroup -S @group1 -Sgrp2
parallel -S @g1/ -S @g2 -S @g1/1/tcsh@lo -S @g1/1/localhost -S @g2/1/parallel@lo whoami\;true ::: {1..6} | sort
parallel
parallel
tange
tange
tcsh
tcsh
echo '### --hostgroup -S @group1+grp2'
### --hostgroup -S @group1+grp2
parallel -S @g1+g2 -S @g1/1/tcsh@lo -S @g1/1/localhost -S @g2/1/parallel@lo whoami\;true ::: {1..6} | sort
parallel
parallel
tange
tange
tcsh
tcsh
echo '### trailing space in sshlogin'
### trailing space in sshlogin
echo 'sshlogin trailing space' | parallel --sshlogin "ssh -l parallel localhost " echo

View file

@ -34,7 +34,7 @@ Environment variables are:
stderr
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]
rsync error: error in rsync protocol data stream (code 12) at io.c(235) [sender=3.1.2]
/usr/lib/autossh/autossh: invalid option -- '-'
usage: autossh [-V] [-M monitor_port[:echo_port]] [-f] [SSH_OPTIONS]
@ -66,7 +66,7 @@ Environment variables are:
stderr
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.1]
rsync error: error in rsync protocol data stream (code 12) at io.c(235) [Receiver=3.1.2]
echo '### bug #46520: --basefile cleans up without --cleanup'
### bug #46520: --basefile cleans up without --cleanup
touch bug_46520; parallel -S parallel@lo --bf bug_46520 ls ::: bug_46520; ssh parallel@lo ls bug_46520; parallel -S parallel@lo --cleanup --bf bug_46520 ls ::: bug_46520; stdout ssh parallel@lo ls bug_46520 # should not exist

View file

@ -54,21 +54,21 @@ echo '### Test --onall -u'; parallel --onall -S parallel@lo,csh@lo -u '(echo {
3
echo '### Test --nonall'; parallel --nonall -k -S parallel@lo,csh@lo pwd | sort
### Test --nonall
/mnt/4tb/home/csh
/mnt/4tb/home/parallel
/home/csh
/home/parallel
echo '### Test --nonall -u - should be interleaved x y x y'; parallel --nonall -S parallel@lo,csh@lo -u 'pwd|grep -q csh && sleep 3; pwd;sleep 12;pwd;'
### Test --nonall -u - should be interleaved x y x y
/mnt/4tb/home/parallel
/mnt/4tb/home/csh
/mnt/4tb/home/parallel
/mnt/4tb/home/csh
/home/parallel
/home/csh
/home/parallel
/home/csh
echo '### Test read sshloginfile from STDIN'; echo parallel@lo,csh@lo | parallel -S - -k --nonall pwd; echo parallel@lo,csh@lo | parallel --sshloginfile - -k --onall pwd\; echo ::: foo
### Test read sshloginfile from STDIN
/mnt/4tb/home/csh
/mnt/4tb/home/parallel
/mnt/4tb/home/csh
/home/csh
/home/parallel
/home/csh
foo
/mnt/4tb/home/parallel
/home/parallel
foo
echo '**'
**
@ -102,10 +102,10 @@ echo '**'
**
echo '### Test --workdir .'; ssh parallel@lo mkdir -p mydir; mkdir -p $HOME/mydir; cd $HOME/mydir; parallel --workdir . -S parallel@lo ::: pwd
### Test --workdir .
/mnt/4tb/home/parallel/mydir
/home/parallel/mydir
echo '### Test --wd .'; ssh csh@lo mkdir -p mydir; mkdir -p $HOME/mydir; cd $HOME/mydir; parallel --workdir . -S csh@lo ::: pwd
### Test --wd .
/mnt/4tb/home/csh/mydir
/home/csh/mydir
echo '### Test --wd {}'; ssh csh@lo rm -rf wd1 wd2; mkdir -p $HOME/mydir; cd $HOME/mydir; parallel --workdir {} -S csh@lo touch ::: wd1 wd2; ssh csh@lo ls -d wd1 wd2
### Test --wd {}
wd1

View file

@ -79,28 +79,27 @@ par_bash_environment_too_big env_parallel: Error: env_parallel --record-env
par_bash_environment_too_big env_parallel: Error: And the use '--env _'
par_bash_environment_too_big env_parallel: Error: For details see: man env_parallel
par_bash_funky
par_bash_funky
par_bash_funky
par_bash_funky \\\\\\\\
par_bash_funky 
par_bash_funky 
par_bash_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
par_bash_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
par_bash_funky -funkymultiline
par_bash_funky -funkymultiline
par_bash_funky space 6
par_bash_funky space 6
par_bash_funky 3 arg alias_works
par_bash_funky 3 arg alias_works_over_ssh
par_bash_funky Funky-
par_bash_funky Funky-
par_bash_funky \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~€乗俓僜刓匼哱嘰圽塡奬媆孿峔嶾廫怽慭抃揬擻昞朶梊榎橽歕沑淺漒瀄焅燶<E78485><E787B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>猏玕琝璡甛痋癨盶瞈砛碶礬禱穃竆筡篭籠糪絓綷縗繺羂耚肻腬臷芢荺萛蒤蔦薥蘚蚛蝄蟎衆裓襖覾診誠謀譢豛賊赲踈躙輁轡運郳醆鈂鉢鋅錦鎈鏫鑌閈闬隲靄韁頫颸餦馶騖骪鬨鮘鯸鱘鳿鵟鶿鸤黒齖㘎<E9BD96>
par_bash_funky Funkyline-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>﹜ㄓ它夾帚型陋秣捲陷絮溢劃遞蝨螃謝藥齪ヌ圴佮迓玿旂衲欶趹欹詘棰葮摵蜠樉賥濋錎膼瀔嚦黀蘜蠲╭帉爎<E5B889>-funkyline
par_bash_funky Funkyline-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>﹜ㄓ它夾帚型陋秣捲陷絮溢劃遞蝨螃謝藥齪ヌ圴佮迓玿旂衲欶趹欹詘棰葮摵蜠樉賥濋錎膼瀔嚦黀蘜蠲╭帉爎<E5B889>-funkyline
par_bash_funky Funkymultiline-
par_bash_funky Funkymultiline-
par_bash_funky \ \ 
par_bash_funky \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䪤Ě声蹾胬𨜏㙡笋蕚𪀔髢𦰡脪𠗫𦖭䓀珢娫糭䨵鞸㘘𩄼疱髿癧α么功吒吭沔坼歿俞枯苒娉珮豹崤淚許廄琵跚愧稞鈾暝蓋墦穀閱璞餐縷擺黠孀髏躡ふж尐佢汻岤狖垥柦胐娖涂罡偅惝牾莍傜揊焮茻鄃幋滜綅赨塿槙箤踊嫹潿蔌醆嬞獦螏餤燡螰駹礒鎪瀙酀瀵騱酅贕鱋鱭𣘀园𧃸檝𠰺<E6AA9D>
par_bash_funky assoc_val_a
par_bash_funky assoc_val_a
par_bash_funky function_works
par_bash_funky function_works_over_ssh
par_bash_funky myvar works
par_bash_funky myvar works
par_bash_funky €亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
par_bash_funky €亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
par_bash_man ### bash
par_bash_man ### From man env_parallel
par_bash_man aliases work
@ -138,21 +137,21 @@ par_bash_underscore variables in aliases in and arrays in functions work
par_bash_underscore variables in aliases in and arrays in functions work
par_bash_underscore variables in aliases in and arrays in functions work
par_bash_underscore variables in aliases in and arrays in functions work
par_bash_underscore /bin/bash: line 55: not_copied_alias: command not found
par_bash_underscore /bin/bash: line 55: not_copied_func: command not found
par_bash_underscore /bin/bash: line 57: not_copied_alias: command not found
par_bash_underscore /bin/bash: line 57: not_copied_func: command not found
par_bash_underscore error=OK
par_bash_underscore error=OK
par_bash_underscore aliases in and arrays in functions work
par_bash_underscore aliases in and arrays in functions work
par_bash_underscore aliases in functions work
par_bash_underscore aliases in functions work
par_bash_underscore /bin/bash: line 49: myecho: command not found
par_bash_underscore environment: line 51: myecho: command not found
par_bash_underscore OK if no myecho ^^^^^^^^^^^^^^^^^^^^^^^^^
par_bash_underscore /bin/bash: line 49: myecho: command not found
par_bash_underscore environment: line 51: myecho: command not found
par_bash_underscore OK if no myecho ^^^^^^^^^^^^^^^^^^^^^^^^^
par_bash_underscore /bin/bash: line 48: myfunc: command not found
par_bash_underscore /bin/bash: line 50: myfunc: command not found
par_bash_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^^^^^^^^^
par_bash_underscore /bin/bash: line 48: myfunc: command not found
par_bash_underscore /bin/bash: line 50: myfunc: command not found
par_bash_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^^^^^^^^^
par_csh_env_parallel_fifo bug #50435: Remote fifo broke in 20150522
par_csh_env_parallel_fifo data from stdin
@ -541,7 +540,7 @@ par_tcsh_funky
par_tcsh_funky 3 arg alias_works
par_tcsh_funky 3 arg alias_works_over_ssh
par_tcsh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ-funky alias_var_works
par_tcsh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<EFBFBD><EFBFBD><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>-funky alias_var_works_over_ssh
par_tcsh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩-funky alias_var_works_over_ssh
par_tcsh_funky \\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_tcsh_funky func_echo: Command not found.
par_tcsh_funky func_echo: Command not found.

View file

@ -10,12 +10,6 @@ par_load_csh ### Gave Word too long.
par_load_csh a
par_path_remote_bash bug #47695: How to set $PATH on remote? Bash
par_path_remote_bash
par_path_remote_bash * Documentation: https://help.ubuntu.com
par_path_remote_bash * Management: https://landscape.canonical.com
par_path_remote_bash * Support: https://ubuntu.com/advantage
par_path_remote_bash
par_path_remote_bash 0 updates are security updates.
par_path_remote_bash
par_path_remote_bash BASH Path before: /bin:/usr/bin with no parallel
par_path_remote_bash -bash: line 2: parallel: command not found
par_path_remote_bash ^^^^^^^^ Not found is OK
@ -23,12 +17,6 @@ par_path_remote_bash /bin:/usr/bin:/tmp OK
par_path_remote_bash
par_path_remote_csh bug #47695: How to set $PATH on remote? csh
par_path_remote_csh
par_path_remote_csh * Documentation: https://help.ubuntu.com
par_path_remote_csh * Management: https://landscape.canonical.com
par_path_remote_csh * Support: https://ubuntu.com/advantage
par_path_remote_csh
par_path_remote_csh 0 updates are security updates.
par_path_remote_csh
par_path_remote_csh Warning: no access to tty (Bad file descriptor).
par_path_remote_csh Thus no job control in this shell.
par_path_remote_csh CSH Path before: /bin:/usr/bin with no parallel

View file

@ -35,7 +35,7 @@ If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
To silence this citation notice: run 'parallel --citation'.
10 files to edit
[?1049h[?1h=[?12;25h[?12l[?25h[?25l"file1" [New File]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25lE173: 9 more files to edit[?12l[?25h[?1l>[?1049lAcademic tradition requires you to cite works you base your article on.
[?1049h[?1h=[?12;25h[?12l[?25h[?25l"file1" [New File]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25lE173: 9 more files to edit[?12l[?25h[?1l>[?1049lAcademic tradition requires you to cite works you base your article on.
When using programs that use GNU Parallel to process data for publication
please cite:

View file

@ -1197,15 +1197,16 @@ from f f to xf f y
from r r to xr r y
from t t to xt t y
from v v to xv v y
stdout parallel -k -i echo from \{\} to x{}y < items.xi
from: can't read /var/mail/{}
from: can't read /var/mail/{}
from: can't read /var/mail/{}
from: can't read /var/mail/{}
from: can't read /var/mail/{}
from: can't read /var/mail/{}
from: can't read /var/mail/{}
from: can't read /var/mail/{}
# GNU Parallel will see 'echo' as argument to '-i' if not given {}
stdout parallel -k -i {} echo from \{\} to x{}y < items.xi
from to x y
from dumb to xdumby
from s s to x s s y
from f f to x f f y
from r r to x r r y
from t t to x t t y
from v v to x v v y
from to x y
echo '### -i -s26 echo from \{\} to x{}y < items.xi'
### -i -s26 echo from \{\} to x{}y < items.xi
stdsort xargs -i -s26 echo from \{\} to x{}y < items.xi

View file

@ -146,8 +146,8 @@ echo '### Test make .deb package'; cd ~/privat/parallel/packager/debian; std
To install the GNU Parallel Debian package, run:
echo '### Test of segfaulting issue'
### 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
This gave /home/tange/bin/stdout: line 3: 20374 Segmentation fault "$@" 2>&1
echo 'This gave ~/bin/stdout: line 3: 20374 Segmentation fault "$@" 2>&1'; echo 'before adding wait() before exit'; seq 1 300 | stdout parallel ./trysegfault
This gave ~/bin/stdout: line 3: 20374 Segmentation fault "$@" 2>&1
before adding wait() before exit
echo '### Test basic --arg-sep'
### Test basic --arg-sep

View file

@ -1,42 +1,45 @@
### Test --env - https://savannah.gnu.org/bugs/?37351
a 2 spaces b 1
a 2 spaces b 1
a 2 spaces b 1
a 2 spaces b 1
a 2 spaces b 1
a 2 spaces b a > My brother's 12" records < b 2
a 2 spaces b a > My brother's 12" records < b 2
a 2 spaces b a > My brother's 12" records < b 2
a 2 spaces b a > My brother's 12" records < b 2
a 2 spaces b a > My brother's 12" records < b 2
a 2 spaces b a > My brother's 12" records < b 3
a 2 spaces b a > My brother's 12" records < b 3
a 2 spaces b a > My brother's 12" records < b 3
a 2 spaces b a > My brother's 12" records < b 3
a 2 spaces b a > My brother's 12" records < b 3
a \'"b 4
a \'"b 4
a \'"b 4
a \'"b 4
a \'"b 4
a' * ? >o <i*? ][\!#¤%=( ) | }b 5
a' * ? >o <i*? ][\!#¤%=( ) | }b 5
a' * ? >o <i*? ][\!#¤%=( ) | }b 5
a' * ? >o <i*? ][\!#¤%=( ) | }b 5
a' * ? >o <i*? ][\!#¤%=( ) | }b 5
### Test --env for \n and \\ - single and double (bash only) - no output is good
8
8
### Test --env for \n and \\ - single and double (*csh only) - no output is good but csh fails
2 2\ \92V2=\ \92
2 2\\ \92V2=\\ \92
### Test --env for \n and \\ - single and double --onall (bash only) - no output is good
2 1
2 10
2 10V2=
2 2\\ \92V2=\\ \92
### Test --env for \n and \\ - single and double --onall (*csh only) - no output is good but csh fails
1 2\ \92V2=\ \92
1 2\\ \92V2=\\ \92
### Test --env for \160 - which kills csh - single and double - no output is good
### Test --env for \160 - which kills csh - single and double --onall - no output is good
par_env_160 ### Test --env for \160 - which kills csh - single and double - no output is good
par_env_160_onall ### Test --env for \160 - which kills csh - single and double --onall - no output is good
par_env_160_onall 12 1    160V2=    160
par_env_newline_backslash_bash ### Test --env for \n and \\ - single and double (bash only) - no output is good
par_env_newline_backslash_bash 8
par_env_newline_backslash_bash 8
par_env_newline_backslash_csh ### Test --env for \n and \\ - single and double (*csh only) - no output is good but csh fails
par_env_newline_backslash_csh 2 2\ \92V2=\ \92
par_env_newline_backslash_csh 2 2\\ \92V2=\\ \92
par_env_newline_backslash_csh 2 Unmatched ".
par_env_newline_backslash_csh 2 Unmatched '"'.
par_env_newline_backslash_onall_bash ### Test --env for \n and \\ - single and double --onall (bash only) - no output is good
par_env_newline_backslash_onall_bash 16
par_env_newline_backslash_onall_bash 16
par_env_newline_backslash_onall_bash 8 1
par_env_newline_backslash_onall_bash 8 10
par_env_newline_backslash_onall_bash 8 10V2=
par_env_newline_backslash_onall_bash 8 2\\ \92V2=\\ \92
par_env_newline_backslash_onall_csh ### Test --env for \n and \\ - single and double --onall (*csh only) - no output is good but csh fails
par_space ### Test --env - https://savannah.gnu.org/bugs/?37351
par_space a 2 spaces b 1
par_space a 2 spaces b 1
par_space a 2 spaces b 1
par_space a 2 spaces b 1
par_space a 2 spaces b 1
par_space a 2 spaces b a > My brother's 12" records < b 2
par_space a 2 spaces b a > My brother's 12" records < b 2
par_space a 2 spaces b a > My brother's 12" records < b 2
par_space a 2 spaces b a > My brother's 12" records < b 2
par_space a 2 spaces b a > My brother's 12" records < b 2
par_space a 2 spaces b a > My brother's 12" records < b 3
par_space a 2 spaces b a > My brother's 12" records < b 3
par_space a 2 spaces b a > My brother's 12" records < b 3
par_space a 2 spaces b a > My brother's 12" records < b 3
par_space a 2 spaces b a > My brother's 12" records < b 3
par_space_quote a \'"b 4
par_space_quote a \'"b 4
par_space_quote a \'"b 4
par_space_quote a \'"b 4
par_space_quote a \'"b 4
par_special_char a' * ? >o <i*? ][\!#¤%=( ) | }b 5
par_special_char a' * ? >o <i*? ][\!#¤%=( ) | }b 5
par_special_char a' * ? >o <i*? ][\!#¤%=( ) | }b 5
par_special_char a' * ? >o <i*? ][\!#¤%=( ) | }b 5
par_special_char a' * ? >o <i*? ][\!#¤%=( ) | }b 5

View file

@ -1,20 +1,16 @@
bug #46120: Suspend should suspend (at least local) children
it should burn 1.9 CPU seconds, but no more than that
The 5 second sleep will make it be killed by timeout when it fgs
1024 SHA256:SXgag2Z2L91JsrT5WjNBcARD1EpyCCj4JctVJ6Zpzm0 ~/.ssh/id_dsa (DSA)
8192 SHA256:lYn04AefJq/5r0e4FftceviJ7JVnq9NGKY3CW9XMpO8 ~/.ssh/id_rsa (RSA)
1024 SHA256:R8Dy6OsG3j646iO2KeSkCAmBiR5s2720ZYx695+0JHw ~/.ssh/id_rsa_1024 (RSA)
4096 SHA256:jUQ9ysfprs7UOckttjjVb+j3qikUmKWDEWC+eEJkbDQ ~/.ssh/id_rsa_openindiana (RSA)
stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 burnP6 ::: 1 | grep -q CPUTIME=1
stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" ::: 1 | grep --color=auto -q CPUTIME=1
Zero=OK 0
1024 SHA256:SXgag2Z2L91JsrT5WjNBcARD1EpyCCj4JctVJ6Zpzm0 ~/.ssh/id_dsa (DSA)
8192 SHA256:lYn04AefJq/5r0e4FftceviJ7JVnq9NGKY3CW9XMpO8 ~/.ssh/id_rsa (RSA)
1024 SHA256:R8Dy6OsG3j646iO2KeSkCAmBiR5s2720ZYx695+0JHw ~/.ssh/id_rsa_1024 (RSA)
4096 SHA256:jUQ9ysfprs7UOckttjjVb+j3qikUmKWDEWC+eEJkbDQ ~/.ssh/id_rsa_openindiana (RSA)
echo 1 | stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 burnP6 | grep -q CPUTIME=1
echo 1 | stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" | grep --color=auto -q CPUTIME=1
Zero=OK 0
Control case: Burn for 2.9 seconds
stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" ::: 1 | grep --color=auto -q CPUTIME=1
1=OK 1
echo '### -L -n with pipe'
### -L -n with pipe
seq 14 | parallel --pipe -k -L 3 -n 2 'cat;echo 6 Ln line record'

View file

@ -1,80 +1,80 @@
echo '### tmux1.9'
### tmux1.9
seq 000 100 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
echo '### tmux-1.9'
### tmux-1.9
seq 000 100 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 100 200 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 100 200 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 200 300 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 200 300 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 300 400 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 300 400 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 400 500 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 400 500 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 500 600 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 500 600 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 600 700 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 600 700 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 700 800 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 700 800 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 800 900 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 800 900 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 900 1000 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 900 1000 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1000 1006 | PARALLEL_TMUX=tmux1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 1000 1006 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
echo '### tmux1.9 fails'
### tmux1.9 fails
echo 1007 | PARALLEL_TMUX=tmux1.9 par_tmux
echo '### tmux-1.9 fails'
### tmux-1.9 fails
echo 1007 | PARALLEL_TMUX=tmux-1.9 par_tmux
parallel: Error: Command line too long (2023 >= 2023) at input 0: 1007
255
echo 1008 | PARALLEL_TMUX=tmux1.9 par_tmux
echo 1008 | PARALLEL_TMUX=tmux-1.9 par_tmux
parallel: Error: Command line too long (2025 >= 2023) at input 0: 1008
255
echo 1009 | PARALLEL_TMUX=tmux1.9 par_tmux
echo 1009 | PARALLEL_TMUX=tmux-1.9 par_tmux
parallel: Error: Command line too long (2027 >= 2023) at input 0: 1009
255
echo '### tmux1.8'
### tmux1.8
seq 1 50 | PARALLEL_TMUX=tmux1.8 par_tmux
See output with: tmux1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
echo '### tmux-1.8'
### tmux-1.8
seq 1 50 | PARALLEL_TMUX=tmux-1.8 par_tmux
See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 51 100 | PARALLEL_TMUX=tmux1.8 par_tmux
See output with: tmux1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 51 100 | PARALLEL_TMUX=tmux-1.8 par_tmux
See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 101 113 | PARALLEL_TMUX=tmux1.8 par_tmux
See output with: tmux1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 101 113 | PARALLEL_TMUX=tmux-1.8 par_tmux
See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
echo '### tmux1.8 fails'
### tmux1.8 fails
echo 114 | PARALLEL_TMUX=tmux1.8 par_tmux
echo '### tmux-1.8 fails'
### tmux-1.8 fails
echo 114 | PARALLEL_TMUX=tmux-1.8 par_tmux
parallel: Error: Command line too long (236 >= 236) at input 0: 114
255
echo 115 | PARALLEL_TMUX=tmux1.8 par_tmux
echo 115 | PARALLEL_TMUX=tmux-1.8 par_tmux
parallel: Error: Command line too long (238 >= 236) at input 0: 115
255
echo 116 | PARALLEL_TMUX=tmux1.8 par_tmux
echo 116 | PARALLEL_TMUX=tmux-1.8 par_tmux
parallel: Error: Command line too long (240 >= 236) at input 0: 116
255
echo '### tmux1.8 0..255 ascii'
### tmux1.8 0..255 ascii
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } $_-110..$_),"\n" } 0..255' | PARALLEL_TMUX=tmux1.8 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
See output with: tmux1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
echo '### tmux-1.8 0..255 ascii'
### tmux-1.8 0..255 ascii
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } $_-110..$_),"\n" } 0..255' | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
echo '### tmux1.9 0..255 ascii'
### tmux1.9 0..255 ascii
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } 0..$_),"\n" } 0..255' | PARALLEL_TMUX=tmux1.9 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
echo '### tmux-1.9 0..255 ascii'
### tmux-1.9 0..255 ascii
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } 0..$_),"\n" } 0..255' | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
echo '### Test output ascii'
### Test output ascii
@ -83,12 +83,12 @@ See output with: tmux -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
053c7e8e945ef7641fc63bc309ac069d -
echo '### Test critical lengths. Must not block'
### Test critical lengths. Must not block
seq 70 130 | PARALLEL_TMUX=tmux1.8 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
See output with: tmux1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 70 130 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
parallel: Error: Command line too long (236 >= 236) at input 0: 114
seq 70 130 | PARALLEL_TMUX=tmux1.9 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 280 425 | PARALLEL_TMUX=tmux1.8 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
seq 70 130 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 280 425 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
parallel: Error: Command line too long (288 >= 236) at input 0: 280
seq 280 425 | PARALLEL_TMUX=tmux1.9 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 280 425 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach

View file

@ -63,7 +63,7 @@ echo '### Test --number-of-cpus'; stdout $NICEPAR --number-of-cpus
1
echo '### Test --number-of-cores'; stdout $NICEPAR --number-of-cores
### Test --number-of-cores
8
2
echo '### Test --use-cpus-instead-of-cores'; (seq 1 8 | stdout parallel --use-cpus-instead-of-cores -j100% sleep) && echo CPUs done & (seq 1 8 | stdout parallel -j100% sleep) && echo cores done & echo 'Cores should complete first on machines with less than 8 physical CPUs'; wait
### Test --use-cpus-instead-of-cores
Cores should complete first on machines with less than 8 physical CPUs