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: Full installation of GNU Parallel is as simple as:
wget http://ftpmirror.gnu.org/parallel/parallel-20170522.tar.bz2 wget http://ftpmirror.gnu.org/parallel/parallel-20170622.tar.bz2
bzip2 -dc parallel-20170522.tar.bz2 | tar xvf - bzip2 -dc parallel-20170622.tar.bz2 | tar xvf -
cd parallel-20170522 cd parallel-20170622
./configure && make && sudo make install ./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 If you are not root you can add ~/bin to your path and install in
~/bin and ~/share: ~/bin and ~/share:
wget http://ftpmirror.gnu.org/parallel/parallel-20170522.tar.bz2 wget http://ftpmirror.gnu.org/parallel/parallel-20170622.tar.bz2
bzip2 -dc parallel-20170522.tar.bz2 | tar xvf - bzip2 -dc parallel-20170622.tar.bz2 | tar xvf -
cd parallel-20170522 cd parallel-20170622
./configure --prefix=$HOME && make && make install ./configure --prefix=$HOME && make && make install
Or if your system lacks 'make' you can simply copy src/parallel 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]) AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([ AC_CONFIG_FILES([

View file

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

View file

@ -1376,7 +1376,7 @@ sub check_invalid_option_combinations {
sub init_globals { sub init_globals {
# Defaults: # Defaults:
$Global::version = 20170523; $Global::version = 20170622;
$Global::progname = 'parallel'; $Global::progname = 'parallel';
$Global::infinity = 2**31; $Global::infinity = 2**31;
$Global::debug = 0; $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 # 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 # 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); gzip pxz lzma bzip2 xz clzip);
for my $p (@prg) { for my $p (@prg) {
if(which($p)) { 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: ¯). 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 Input line. This replacement string will be replaced by a full line
read from the input source. The input source is normally stdin 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. replacement string; then the string is not quoted.
=item B<{.}> =item B<{.}> (alpha testing)
Input line without extension. This replacement string will be replaced Input line without extension. This replacement string will be replaced
by the input with the extension removed. If the input line contains 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<{}>. To understand replacement strings see B<{}>.
=item B<{/}> =item B<{/}> (alpha testing)
Basename of input line. This replacement string will be replaced by Basename of input line. This replacement string will be replaced by
the input with the directory part removed. the input with the directory part removed.
@ -139,7 +139,7 @@ B<--basenamereplace>.
To understand replacement strings see B<{}>. To understand replacement strings see B<{}>.
=item B<{//}> =item B<{//}> (alpha testing)
Dirname of input line. This replacement string will be replaced by the Dirname of input line. This replacement string will be replaced by the
dir of the input line. See B<dirname>(1). dir of the input line. See B<dirname>(1).
@ -150,7 +150,7 @@ B<--dirnamereplace>.
To understand replacement strings see B<{}>. To understand replacement strings see B<{}>.
=item B<{/.}> =item B<{/.}> (alpha testing)
Basename of input line without extension. This replacement string will Basename of input line without extension. This replacement string will
be replaced by the input with the directory and extension part be replaced by the input with the directory and extension part
@ -162,7 +162,7 @@ B<--basenameextensionreplace>.
To understand replacement strings see B<{}>. To understand replacement strings see B<{}>.
=item B<{#}> =item B<{#}> (alpha testing)
Sequence number of the job to run. This replacement string will be 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 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<{}>. 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 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 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<{}>. 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 Argument from input source I<n> or the I<n>'th argument. This
positional replacement string will be replaced by the input from input 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<{}>. 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 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<{.}>. 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<}>. 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. 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<{/}>. 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<}>. 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. 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<{//}>. 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<}>. 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 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 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<}>. 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 Replace with calculated I<perl expression>. B<$_> will contain the
same as B<{}>. After evaluating I<perl expression> B<$_> will be used same as B<{}>. After evaluating I<perl expression> B<$_> will be used
@ -294,7 +294,7 @@ Example:
See also: B<--rpl> B<--parens> 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 equivalent to B<{=perl expression=}>. To understand
positional replacement strings see B<{>I<n>B<}>. 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<::::+>. 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 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 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>). called with B<--sshlogin>).
=item B<--plus> =item B<--plus> (alpha testing)
Activate additional replacement strings: {+/} {+.} {+..} {+...} {..} Activate additional replacement strings: {+/} {+.} {+..} {+...} {..}
{...} {/..} {/...} {##}. The idea being that '{+foo}' matches the opposite of {...} {/..} {/...} {##}. 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. 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 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 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: Compare the output of:
parallel wget --limit-rate=100k \ 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 \ 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 \ 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 =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); exit ($err);
sub parse_options { sub parse_options {
$Global::version = 20170523; $Global::version = 20170622;
$Global::progname = 'sql'; $Global::progname = 'sql';
# This must be done first as this may exec myself # This must be done first as this may exec myself

View file

@ -44,7 +44,7 @@ prereqlocal: installparallel
echo | pv -qL 10 || (echo pv is required for testsuite; /bin/false) 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) 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) 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 timeout || (echo timeout is required for testsuite; /bin/false)
which autossh || (echo autossh 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) which lsh || (echo lsh is required for testsuite; /bin/false)

View file

@ -2,28 +2,29 @@
mysqlrootpass=${mysqlrootpass:-b+Ydjq4ejT4E} mysqlrootpass=${mysqlrootpass:-b+Ydjq4ejT4E}
# To configure zsh # After first run, set this:
echo Configure zsh and exit # export INSTALL=echo
zsh INSTALL=${INSTALL:-"sudo aptitude -y install"}
INSTALL="echo sudo aptitude -y install"
# The testsuite depends on this: # The testsuite depends on this:
test_pkgs="imagemagick expect autossh sshpass jq libpod-simple-perl pod2pdf gawk"
$INSTALL imagemagick expect autossh sshpass jq libpod-simple-perl pod2pdf test_pkgs="$test_pkgs lua5.2 clisp php7.0-cli nodejs-legacy mono-csharp-shell"
$INSTALL lua5.2 clisp php7.0-cli nodejs-legacy mono-csharp-shell
# DEBIAN package # DEBIAN package
$INSTALL dpkg-dev build-essential debhelper packaging_pkgs="dpkg-dev build-essential debhelper"
# SHEBANG TOOLS # SHEBANG TOOLS
$INSTALL gnuplot octave ruby r-base-core shebang_pkgs="gnuplot octave ruby r-base-core"
# SQL TOOLS # 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 # 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 # DATABASES
$INSTALL postgresql mysql-server sqlite
echo '# Create PostgreSQL' echo '# Create PostgreSQL'
sudo su - postgres -c 'createdb '`whoami` sudo su - postgres -c 'createdb '`whoami`
sudo su - postgres -c 'createuser '`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';" sql mysql://root:"$mysqlrootpass"@/mysql "CREATE DATABASE `whoami`;CREATE USER '`whoami`'@'localhost' IDENTIFIED BY '`whoami`'; GRANT ALL ON `whoami`.* TO '`whoami`'@'localhost';"
# SHELLS # SHELLS
$INSTALL ash csh dash fdclone fish fizsh ksh mksh pdksh posh rc rush sash tcsh yash zsh touch ~/.zshrc
SSHPASS=`goodpasswd` SSHPASS=`goodpasswd`
export SSHPASS export SSHPASS
#shells="bash sh csh ash tcsh zsh ksh fish fizsh mksh pdksh posh rc sash yash nopathbash nopathcsh" #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 && sudo adduser --disabled-password --gecos "$shell for parallel,,," $shell &&
echo "$shell:$SSHPASS" | sudo chpasswd && echo "$shell:$SSHPASS" | sudo chpasswd &&
sshpass -e ssh-copy-id $shell@lo && 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 lo >> .ssh/known_hosts' &&
ssh $shell@lo 'ssh-keyscan -t rsa server >> .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 Do chsh -s $(which $shell || which ${shell#"nopath"}) $shell &&
(echo $shell | grep parallel || (echo $shell | grep parallel ||
sudo chsh -s $(which $shell || which ${shell#"nopath"}) $shell) && 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' && 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/authorized_keys' &&
ssh $shell@lo cat .ssh/id_rsa.pub | ssh parallel@lo 'cat >> .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 env_parallel --install &&
ssh $shell@lo 'mkdir .parallel; touch .parallel/will-cite' && ssh $shell@lo 'mkdir .parallel; touch .parallel/will-cite' &&
echo OK Created $shell && echo OK Created $shell &&
echo >&2 &&
echo OK Created $shell >&2 &&
echo echo
} }
export -f create_shell_user export -f create_shell_user
. `which env_parallel.bash` . `which env_parallel.bash`
shellsplus="parallel $shells" shellsplus="parallel $shells"
parallel -u --timeout 15 --retries 2 --tag -j1 create_shell_user ::: $shellsplus # Racecondition: if multiple adds a group it will the same group ID
# sh fails if not run by itself parallel --timeout 15 --retries 5 --tag -j1 create_shell_user ::: $shellsplus
parallel -u --timeout 15 --retries 2 --tag -j1 create_shell_user ::: sh
parallel -j10 --tag ssh {}@lo ssh {}@lo echo {} OK ::: $shells 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() { ssh_copy_id() {
from="$1" from="$1"
@ -80,8 +88,10 @@ ssh_copy_id() {
} }
export -f 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 # copy id from any X to any Y
parallel -j10 --timeout 3 --retries 10 --tag ssh {1}@lo ssh {2}@lo echo OK ::: $shellsplus ::: $shellsplus 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 # change paths to no path
( (
@ -118,3 +128,7 @@ echo Add:
echo HostkeyAlgorithms +ssh-dss echo HostkeyAlgorithms +ssh-dss
echo to .ssh/config if you get echo to .ssh/config if you get
echo no matching host key type found. Their offer: ssh-dss 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 EOF
# force load > 10 # 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 cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 --joblog /tmp/jl-`basename $0` -L1
echo '### -H and --hard' 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 niceload "perl -e 'exit(0)'" ; echo $? eq 0
# force load > 10 # force load > 10
while uptime | grep -v age:.[1-9][0-9].[0-9][0-9] >/dev/null ; do (timeout 5 nice burnP6 2>/dev/null &) done while uptime | grep -v age:.[1-9][0-9].[0-9][0-9] >/dev/null ; do
(timeout 5 nice perl -e 'while(1){}' 2>/dev/null &)
done
echo '### Test -p' echo '### Test -p'
perl -e '$|=1;while($t++<3){sleep(1);print "."}' & perl -e '$|=1;while($t++<3){sleep(1);print "."}' &

View file

@ -1,7 +1,9 @@
#!/bin/bash #!/bin/bash
# force load > 10 # force load > 10
while uptime | grep -v age:.[1-9]\\+[0-9].[0-9][0-9] >/dev/null ; do (timeout 5 nice burnP6 2>/dev/null &) done while uptime | grep -v age:.[1-9]\\+[0-9].[0-9][0-9] >/dev/null ; do
(timeout 5 nice perl -e 'while(1){}' 2>/dev/null &)
done
int() { int() {
perl -pe 's/(\d+\.\d*)/int($1)/e' 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 killall -9 mysleep 2>/dev/null
# force load > 10 # force load > 10
while uptime | grep -v age:.[1-9][0-9].[0-9][0-9] >/dev/null ; do (timeout 5 nice burnP6 2>/dev/null &) done while uptime | grep -v age:.[1-9][0-9].[0-9][0-9] >/dev/null ; do
(timeout 5 nice perl -e 'while(1){}' 2>/dev/null &)
done
sleep 2 & sleep 2 &
export PID1=$! export PID1=$!

View file

@ -16,6 +16,9 @@ export SMALLDISK
sudo chmod 777 /mnt/ram sudo chmod 777 /mnt/ram
) >/dev/null 2>/dev/null ) >/dev/null 2>/dev/null
# Clean tmp
find /tmp{/*,}/*.{par,tms,tmx} 2>/dev/null -mmin -10 | parallel rm
stdsort() { stdsort() {
"$@" 2>&1 | sort; "$@" 2>&1 | sort;
} }
@ -118,17 +121,6 @@ echo '### bug #44614: --pipepart --header off by one'
echo '### PARALLEL_TMUX not found' echo '### PARALLEL_TMUX not found'
PARALLEL_TMUX=not-existing parallel --tmux echo ::: 1 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 '**'
echo '### bug #44995: parallel echo {#} ::: 1 2 ::: 1 2' echo '### bug #44995: parallel echo {#} ::: 1 2 ::: 1 2'
@ -689,20 +681,40 @@ par_link_files_as_only_arg() {
} }
par_macron() { par_macron() {
macron=$(perl -e 'print "\257"') print_it() {
parallel ::: "echo $macron" parallel ::: "echo $1"
parallel echo ::: "$macron" parallel echo ::: "$1"
parallel echo "$macron" ::: $macron parallel echo "$1" ::: "$1"
macron_a=$(perl -e 'print "\257\256"') parallel echo \""$1"\" ::: "$1"
parallel ::: "echo $macron_a" parallel -q echo ::: "$1"
parallel echo ::: "$macron_a" parallel -q echo "$1" ::: "$1"
parallel echo "$macron_a" ::: $macron_a parallel -q echo \""$1"\" ::: "$1"
a=$(perl -e 'print "\257<\257<\257>\257>"') }
parallel ::: "echo \"$a\"" print_it "$(perl -e 'print "\257"')"
parallel echo ::: "$a" print_it "$(perl -e 'print "\257\256"')"
parallel echo \"$a\" ::: $a 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_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | 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 # Each should be taking 10-30s and be possible to run in parallel
# I.e.: No race conditions, no logins # I.e.: No race conditions, no logins
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() { par_interactive() {
echo '### Test -p --interactive' echo '### Test -p --interactive'
cat >/tmp/parallel-script-for-expect <<_EOF cat >/tmp/parallel-script-for-expect <<_EOF
@ -36,7 +85,9 @@ expect "opt--interactive 3"
send "\n" send "\n"
_EOF _EOF
echo echo
) | perl -ne '/\S/ and print' ) | perl -ne 's/\r//g;/\S/ and print' |
# Race will cause the order to change
sort
} }
par_k() { par_k() {
@ -44,14 +95,7 @@ par_k() {
ulimit -n 50 ulimit -n 50
(echo "sleep 3; echo begin"; seq 1 30 | (echo "sleep 3; echo begin"; seq 1 30 |
parallel -kq echo "sleep 1; echo {}"; parallel -kq echo "sleep 1; echo {}";
echo "echo end") | stdout parallel -k -j0 echo "echo end") | stdout nice 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'
} }
par_halt_on_error() { 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 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() { par_maxlinelen_m_I() {
echo "### Test max line length -m -I" echo "### Test max line length -m -I"
@ -146,20 +179,9 @@ par_compress_fail() {
seq 12 | parallel --compress -k seq {} 1000000 | md5sum 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() { par_round_robin_blocks() {
echo "bug #49664: --round-robin does not complete" echo "bug #49664: --round-robin does not complete"
seq 20000000 | parallel -j8 --block 10M --round-robin --pipe wc -c | wc -l
seq 20000000 | parallel --block 10M --round-robin --pipe wc -c | wc -l
} }
par_results_csv() { par_results_csv() {
@ -202,31 +224,6 @@ par_tmux_fg() {
stdout parallel --tmux --fg sleep ::: 3 | perl -pe 's/.tmp\S+/tmp/' 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() { par_plus_dyn_repl() {
echo "Dynamic replacement strings defined by --plus" echo "Dynamic replacement strings defined by --plus"
@ -307,12 +304,6 @@ par_plus_dyn_repl() {
parallel --plus echo '{-2,,A}' ::: "wrong" ::: "$myvar" ::: "wrong" 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_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | 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'

View file

@ -232,15 +232,6 @@ line2"' 'echo "command2"'
echo "${var[0]}" 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_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | compgen -A function | grep par_ | sort |
parallel -j6 --tag -k --joblog +/tmp/jl-`basename $0` '{} 2>&1' 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 # forcing the compress tool to spit out compressed blocks
head -c 10000000 /dev/urandom > $randomfile head -c 10000000 /dev/urandom > $randomfile
parallel -j0 --compress --tag --delay 1 "shuf $randomfile; sleep 1; shuf $randomfile; true" ::: {0..9} | testfunc() {
perl -ne '/^(\S+)\t/ and print "$1\n"' | uniq > $nolbfile & linebuffer="$1"
parallel -j0 --compress --tag --delay 1 "shuf $randomfile; sleep 1; shuf $randomfile; true" ::: {0..9} | # Sleep 2 sec to give time to linebuffer-print the first part
perl -ne '/^(\S+)\t/ and print "$1\n"' | uniq > $controlfile & parallel -j0 $linebuffer --compress --tag \
parallel -j0 --line-buffer --compress --tag --delay 1 "shuf $randomfile; sleep 1; shuf $randomfile; true" ::: {0..9} | "shuf $randomfile; sleep 2; shuf $randomfile; true" ::: {0..10} |
perl -ne '/^(\S+)\t/ and print "$1\n"' | uniq > $lbfile & perl -ne '/^(\S+)\t/ and print "$1\n"' | uniq | sort
}
testfunc > $nolbfile &
testfunc > $controlfile &
testfunc --linebuffer > $lbfile &
wait wait
nolb="$(cat $nolbfile)" 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 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_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | parallel -j6 --tag -k '{} 2>&1' compgen -A function | grep par_ | sort | parallel -j6 --tag -k '{} 2>&1'

View file

@ -1,5 +1,47 @@
#!/bin/bash #!/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() { par_print_before_halt_on_error() {
echo '### What is printed before the jobs are killed' echo '### What is printed before the jobs are killed'
mytest() { mytest() {
@ -41,4 +83,5 @@ par_testhalt() {
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | 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() { p_showsqlresult() {
SERVERURL=$1 SERVERURL=$1
TABLE=$2 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() { p_wrapper() {
@ -112,18 +113,17 @@ par_shuf() {
touch $T1 touch $T1
} }
par_sqlandworker_lo() {
p_template -S lo
}
par_sql_joblog() { par_sql_joblog() {
echo '### should only give a single --joblog heading' echo '### should only give a single --joblog heading'
echo '### --sqlmaster/--sqlworker' echo '### --sqlmaster/--sqlworker'
parallel -k --joblog - --sqlmaster $DBURL --wait sleep .3\;echo ::: {1..5} ::: {a..e} | parallel -k --joblog - --sqlmaster $DBURL --wait sleep .3\;echo ::: {1..5} ::: {a..e} |
perl -pe 's/\d+\.\d+/999.999/g' | sort -n & perl -pe 's/\d+\.\d+/999.999/g' | sort -n &
sleep 0.5 sleep 0.5
parallel -k --joblog - --sqlworker $DBURL T=$(tempfile)
parallel -k --joblog - --sqlworker $DBURL > $T
wait wait
# Needed because of race condition
cat $T; rm $T
echo '### --sqlandworker' echo '### --sqlandworker'
parallel -k --joblog - --sqlandworker $DBURL sleep .3\;echo ::: {1..5} ::: {a..e} | parallel -k --joblog - --sqlandworker $DBURL sleep .3\;echo ::: {1..5} ::: {a..e} |
perl -pe 's/\d+\.\d+/999.999/g' | sort -n 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 cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | stdout parallel -vj300% -k --joblog /tmp/jl-`basename $0` -L1
echo '### Test --load remote' 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; sleep 1;
stdout /usr/bin/time -f %e parallel -S parallel@lo --load 10 sleep ::: 1 | perl -ne '$_ > 10 and print "OK\n"' 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 #!/bin/bash
# SSH only allowed to localhost/lo # SSH only allowed to localhost/lo
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj100% --retries 3 -k --joblog /tmp/jl-`basename $0` -L1 cat <<'EOF' | 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
echo '### trailing space in sshlogin' echo '### trailing space in sshlogin'
echo 'sshlogin trailing space' | parallel --sshlogin "ssh -l parallel localhost " echo 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 EOF
par_trc_with_space() { par_trc_with_space() {
SERVER1=parallel-server1
echo '### Test --trc with space added in filename' echo '### Test --trc with space added in filename'
echo original > '/tmp/parallel space file' cd
echo '/tmp/parallel space file' | stdout parallel --trc "{} more space" -S parallel@$SERVER1 cat {} ">{}\\ more\\ space" mkdir -p tmp
cat '/tmp/parallel space file more space' echo original > 'tmp/parallel space file'
rm '/tmp/parallel space file' '/tmp/parallel space file more space' 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() { par_trc_with_special_chars() {
SERVER1=parallel-server1
echo '### Test --trc with >|< added in filename' echo '### Test --trc with >|< added in filename'
echo original > '/tmp/parallel space file2' cd
echo '/tmp/parallel space file2' | stdout parallel --trc "{} >|<" -S parallel@$SERVER1 cat {} ">{}\\ \\>\\|\\<" mkdir -p tmp
cat '/tmp/parallel space file2 >|<' echo original > 'tmp/parallel space file2'
rm '/tmp/parallel space file2' '/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() { par_return_with_fixedstring() {

View file

@ -286,7 +286,7 @@ par_fish_man() {
env_parallel ::: true false true false env_parallel ::: true false true false
echo exit value $status should be 2 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 echo exit value $status should be 255
_EOF _EOF
) )
@ -632,7 +632,8 @@ par_bash_funky() {
. `which env_parallel.bash`; . `which env_parallel.bash`;
myvar="myvar works" 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 ") myarray=("" array_val2 3 "" 5 " space 6 ")
declare -A assocarr declare -A assocarr
assocarr[a]=assoc_val_a assocarr[a]=assoc_val_a
@ -643,14 +644,16 @@ par_bash_funky() {
echo "$myvar" echo "$myvar"
echo "${myarray[5]}" echo "${myarray[5]}"
echo ${assocarr[a]} 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 alias_echo ::: alias_works
env_parallel func_echo ::: function_works env_parallel func_echo ::: function_works
env_parallel -S lo alias_echo ::: alias_works_over_ssh env_parallel -S lo alias_echo ::: alias_works_over_ssh
env_parallel -S lo func_echo ::: function_works_over_ssh env_parallel -S lo func_echo ::: function_works_over_ssh
echo echo
echo "$funky" | parallel --shellquote echo "$funky_single_line" | parallel --shellquote
echo "$funky_multi_line" | parallel --shellquote
_EOF _EOF
) )
# Order is often different. Dunno why. So sort # Order is often different. Dunno why. So sort
@ -864,6 +867,7 @@ par_bash_env_parallel_fifo() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
echo 'bug #50435: Remote fifo broke in 20150522' echo 'bug #50435: Remote fifo broke in 20150522'
# Due to $PARALLEL_TMP being transferred # Due to $PARALLEL_TMP being transferred
. `which env_parallel.bash`
OK=OK OK=OK
echo data from stdin | env_parallel --pipe -S lo --fifo 'cat {} && echo $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' 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 rm -rf /tmp/parallel
cp /usr/local/bin/parallel /tmp 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 echo BASH Path before: $PATH with no parallel
parallel echo ::: 1 parallel echo ::: 1
# Race condition stderr/stdout # Race condition stderr/stdout
@ -28,7 +28,7 @@ par_path_remote_csh() {
rm -rf /tmp/parallel rm -rf /tmp/parallel
cp /usr/local/bin/parallel /tmp 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 echo CSH Path before: $PATH with no parallel
which parallel >& /dev/stdout which parallel >& /dev/stdout
echo '^^^^^^^^ Not found is OK' echo '^^^^^^^^ Not found is OK'
@ -42,6 +42,8 @@ par_path_remote_csh() {
endif endif
# --filter to see if $PATH with parallel is transferred # --filter to see if $PATH with parallel is transferred
env_parallel --filter --env A,PATH -Slo echo '$PATH' ::: OK 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 Right now it seems csh does not respect $PATH if set from Perl
echo Done echo Done
_EOS _EOS

View file

@ -13,7 +13,7 @@ stdsort() {
} }
export -f 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' echo '### -0 -n3 echo < files0.xi'
stdout xargs -0 -n3 echo < files0.xi stdout xargs -0 -n3 echo < files0.xi
stdout parallel -k -0 -n3 echo < files0.xi stdout parallel -k -0 -n3 echo < files0.xi
@ -228,7 +228,8 @@ stdout xargs -iARG echo ARG is xARGx < files.xi
stdout parallel -k -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' echo '### -i echo from \{\} to x{}y < items.xi'
stdout xargs -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' echo '### -i -s26 echo from \{\} to x{}y < items.xi'
stdsort xargs -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 stdsort parallel -k -i -s26 echo from \{\} to x{}y < items.xi

View file

@ -1,54 +1,95 @@
#!/bin/bash #!/bin/bash
echo '### Test --env - https://savannah.gnu.org/bugs/?37351' par_space() {
export TWOSPACES=' 2 spaces ' echo '### Test --env - https://savannah.gnu.org/bugs/?37351'
export THREESPACES=" > My brother's 12\" records < " export TWOSPACES=' 2 spaces '
echo a"$TWOSPACES"b 1 export THREESPACES=" > My brother's 12\" records < "
stdout parallel --env TWOSPACES echo 'a"$TWOSPACES"b' ::: 1 echo a"$TWOSPACES"b 1
stdout parallel -S localhost --env TWOSPACES echo 'a"$TWOSPACES"b' ::: 1 stdout parallel --env TWOSPACES echo 'a"$TWOSPACES"b' ::: 1
stdout parallel -S csh@localhost --env TWOSPACES echo 'a"$TWOSPACES"b' ::: 1 stdout parallel -S localhost --env TWOSPACES echo 'a"$TWOSPACES"b' ::: 1
stdout parallel -S tcsh@localhost --env TWOSPACES echo 'a"$TWOSPACES"b' ::: 1 stdout parallel -S csh@localhost --env TWOSPACES echo 'a"$TWOSPACES"b' ::: 1
stdout parallel -S tcsh@localhost --env TWOSPACES echo 'a"$TWOSPACES"b' ::: 1
echo a"$TWOSPACES"b a"$THREESPACES"b 2 echo a"$TWOSPACES"b a"$THREESPACES"b 2
stdout parallel --env TWOSPACES --env THREESPACES echo 'a"$TWOSPACES"b' 'a"$THREESPACES"b' ::: 2 stdout parallel --env TWOSPACES --env THREESPACES echo 'a"$TWOSPACES"b' 'a"$THREESPACES"b' ::: 2
stdout parallel -S localhost --env TWOSPACES --env THREESPACES echo 'a"$TWOSPACES"b' 'a"$THREESPACES"b' ::: 2 stdout parallel -S localhost --env TWOSPACES --env THREESPACES echo 'a"$TWOSPACES"b' 'a"$THREESPACES"b' ::: 2
stdout parallel -S csh@localhost --env TWOSPACES --env THREESPACES echo 'a"$TWOSPACES"b' 'a"$THREESPACES"b' ::: 2 stdout parallel -S csh@localhost --env TWOSPACES --env THREESPACES echo 'a"$TWOSPACES"b' 'a"$THREESPACES"b' ::: 2
stdout parallel -S tcsh@localhost --env TWOSPACES --env THREESPACES echo 'a"$TWOSPACES"b' 'a"$THREESPACES"b' ::: 2 stdout parallel -S tcsh@localhost --env TWOSPACES --env THREESPACES echo 'a"$TWOSPACES"b' 'a"$THREESPACES"b' ::: 2
echo a"$TWOSPACES"b a"$THREESPACES"b 3 echo a"$TWOSPACES"b a"$THREESPACES"b 3
stdout parallel --env TWOSPACES,THREESPACES echo 'a"$TWOSPACES"b' 'a"$THREESPACES"b' ::: 3 stdout parallel --env TWOSPACES,THREESPACES echo 'a"$TWOSPACES"b' 'a"$THREESPACES"b' ::: 3
stdout parallel -S localhost --env TWOSPACES,THREESPACES echo 'a"$TWOSPACES"b' 'a"$THREESPACES"b' ::: 3 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 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 stdout parallel -S tcsh@localhost --env TWOSPACES,THREESPACES echo 'a"$TWOSPACES"b' 'a"$THREESPACES"b' ::: 3
}
export MIN=" \'\"" par_space_quote() {
echo a"$MIN"b 4 export MIN=" \'\""
stdout parallel --env MIN echo 'a"$MIN"b' ::: 4 echo a"$MIN"b 4
stdout parallel -S localhost --env MIN echo 'a"$MIN"b' ::: 4 stdout parallel --env MIN echo 'a"$MIN"b' ::: 4
stdout parallel -S csh@localhost --env MIN echo 'a"$MIN"b' ::: 4 stdout parallel -S localhost --env MIN echo 'a"$MIN"b' ::: 4
stdout parallel -S tcsh@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
}
export SPC="'"' * ? >o <i*? ][\!#¤%=( ) | }' par_special_char() {
echo a"$SPC"b 5 export SPC="'"' * ? >o <i*? ][\!#¤%=( ) | }'
stdout parallel --env SPC echo 'a"$SPC"b' ::: 5 echo a"$SPC"b 5
stdout parallel -S localhost --env SPC echo 'a"$SPC"b' ::: 5 LANG=C stdout parallel --env SPC echo 'a"$SPC"b' ::: 5
stdout parallel -S csh@localhost --env SPC echo 'a"$SPC"b' ::: 5 LANG=C stdout parallel -S localhost --env SPC echo 'a"$SPC"b' ::: 5
stdout parallel -S tcsh@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
}
echo '### Test --env for \n and \\ - single and double (bash only) - no output is good' test_chr_on_sshlogin() {
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
# 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
echo '### Test --env for \n and \\ - single and double (*csh only) - no output is good but csh fails' par_env_newline_backslash_bash() {
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 echo '### Test --env for \n and \\ - single and double (bash only) - no output is good'
test_chr_on_sshlogin 10,92 2/:,2/lo ''
}
echo '### Test --env for \n and \\ - single and double --onall (bash only) - no output is good' par_env_newline_backslash_csh() {
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 echo '### Test --env for \n and \\ - single and double (*csh only) - no output is good but csh fails'
test_chr_on_sshlogin 10,92 2/tcsh@lo,2/csh@lo ''
}
echo '### Test --env for \n and \\ - single and double --onall (*csh only) - no output is good but csh fails' par_env_newline_backslash_onall_bash() {
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 echo '### Test --env for \n and \\ - single and double --onall (bash only) - no output is good'
test_chr_on_sshlogin 10,92 :,lo --onall
}
echo '### Test --env for \160 - which kills csh - single and double - no output is good' par_env_newline_backslash_onall_csh() {
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 echo '### Test --env for \n and \\ - single and double --onall (*csh only) - no output is good but csh fails'
test_chr_on_sshlogin 10,92 2/tcsh@lo,2/csh@lo --onall
}
echo '### Test --env for \160 - which kills csh - single and double --onall - no output is good' par_env_160() {
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 echo '### Test --env for \160 - which kills csh - single and double - no output is good'
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'
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 #!/bin/bash
cpuburn=$(tempfile)
(echo '#!/usr/bin/perl'
echo "eval{setpriority(0,0,9)}; while(1){}") > $cpuburn
chmod 700 $cpuburn
forceload () { forceload () {
# Force load # Force load
LOAD=$1 LOAD=$1
# Start 10 times as many burnP6 # Start 10 times as many cpuburn
seq 0 0.1 $1 | parallel -j0 timeout 20 burnP6 2>/dev/null & seq 0 0.1 $1 | parallel -j0 timeout 20 $cpuburn 2>/dev/null &
PID=$! PID=$!
# Give GNU Parallel 1 second to startup # Give GNU Parallel 1 second to startup
sleep 1 sleep 1
perl -e 'do{$a=`uptime`} while($a=~/average: *(\S+)/ and $1 < '$LOAD')' 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 # 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 seq 1 3 | parallel -j1 "sleep 2; echo {}" | parallel -kj2 echo
EOF EOF
# Make sure we got all the burnP6 killed # Make sure we got all the cpuburn killed
killall -9 burnP6 2>/dev/null killall $(basename $cpuburn) 2>/dev/null
echo '### Test too slow spawning' echo '### Test too slow spawning'
# Let the commands below run during high load # 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=$! PID=$!
seq 1 1000 | stdout nice nice parallel --halt 1 -uj0 -N0 kill $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 # Make sure we got all the cpuburn killed
killall -9 burnP6 2>/dev/null 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 'bug #46120: Suspend should suspend (at least local) children'
echo 'it should burn 1.9 CPU seconds, but no more than that' 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' 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; sleep 1.9;
kill -TSTP -$!; kill -TSTP -$!;
sleep 5; sleep 5;
fg; 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; sleep 1.9;
kill -TSTP -$!; kill -TSTP -$!;
sleep 5; sleep 5;
fg; 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 cat <<'EOF' | sed -e 's/;$/; /;' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1
echo '### -L -n with pipe' 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 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' echo '### tmux-1.9'
seq 000 100 | PARALLEL_TMUX=tmux1.9 par_tmux seq 000 100 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 100 200 | PARALLEL_TMUX=tmux1.9 par_tmux seq 100 200 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 200 300 | PARALLEL_TMUX=tmux1.9 par_tmux seq 200 300 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 300 400 | PARALLEL_TMUX=tmux1.9 par_tmux seq 300 400 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 400 500 | PARALLEL_TMUX=tmux1.9 par_tmux seq 400 500 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 500 600 | PARALLEL_TMUX=tmux1.9 par_tmux seq 500 600 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 600 700 | PARALLEL_TMUX=tmux1.9 par_tmux seq 600 700 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 700 800 | PARALLEL_TMUX=tmux1.9 par_tmux seq 700 800 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 800 900 | PARALLEL_TMUX=tmux1.9 par_tmux seq 800 900 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 900 1000 | PARALLEL_TMUX=tmux1.9 par_tmux seq 900 1000 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1000 1006 | PARALLEL_TMUX=tmux1.9 par_tmux seq 1000 1006 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo '### tmux1.9 fails' echo '### tmux-1.9 fails'
echo 1007 | PARALLEL_TMUX=tmux1.9 par_tmux echo 1007 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo 1008 | PARALLEL_TMUX=tmux1.9 par_tmux echo 1008 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo 1009 | PARALLEL_TMUX=tmux1.9 par_tmux echo 1009 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo '### tmux1.8' echo '### tmux-1.8'
seq 1 50 | PARALLEL_TMUX=tmux1.8 par_tmux seq 1 50 | PARALLEL_TMUX=tmux-1.8 par_tmux
seq 51 100 | PARALLEL_TMUX=tmux1.8 par_tmux seq 51 100 | PARALLEL_TMUX=tmux-1.8 par_tmux
seq 101 113 | PARALLEL_TMUX=tmux1.8 par_tmux seq 101 113 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo '### tmux1.8 fails' echo '### tmux-1.8 fails'
echo 114 | PARALLEL_TMUX=tmux1.8 par_tmux echo 114 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo 115 | PARALLEL_TMUX=tmux1.8 par_tmux echo 115 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo 116 | PARALLEL_TMUX=tmux1.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' | 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' | 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' echo '### Test output ascii'
rm -f /tmp/paralocal7-ascii*; rm -f /tmp/paralocal7-ascii*;
@ -63,10 +63,10 @@ echo '### Test output ascii'
sort /tmp/paralocal7-ascii* | md5sum sort /tmp/paralocal7-ascii* | md5sum
echo '### Test critical lengths. Must not block' 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=tmux-1.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 70 130 | PARALLEL_TMUX=tmux-1.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=tmux-1.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 280 425 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
EOF EOF

View file

@ -8,7 +8,7 @@ echo '### Test --env all chars except \n,\92,\160 - single and double - no outpu
# This is fast # This is fast
perl -e 'for(1..9,9,11..91,91,93..159,159,161..255) { printf "%c",$_ } printf "\0"' | 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' echo '### bug #37262: --slf + --filter-hosts fails'
parallel --nonall --filter-hosts --sshloginfile <(echo localhost) echo OK 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_TMUX=not-existing parallel --tmux echo ::: 1
parallel: Error: not-existing not found in $PATH. parallel: Error: not-existing not found in $PATH.
echo '**' 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' echo '### bug #44995: parallel echo {#} ::: 1 2 ::: 1 2'
### bug #44995: parallel echo {#} ::: 1 2 ::: 1 2 ### bug #44995: parallel echo {#} ::: 1 2 ::: 1 2
@ -308,8 +292,8 @@ OK
~/privat/parallel/testsuite ~/privat/parallel/testsuite
OK OK
parallel --wd ... 'pwd; echo $OLDPWD; echo' ::: OK | perl -pe 's/\d+/0/g' parallel --wd ... 'pwd; echo $OLDPWD; echo' ::: OK | perl -pe 's/\d+/0/g'
/mnt/0tb/home/tange/.parallel/tmp/aspire-0-0 ~/.parallel/tmp/hk-0-0
/mnt/0tb/home/tange/privat/parallel/testsuite ~/privat/parallel/testsuite
OK OK
parallel --wd . 'pwd; echo $OLDPWD; echo' ::: OK parallel --wd . 'pwd; echo $OLDPWD; echo' ::: OK
~/privat/parallel/testsuite ~/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' seq 2 | stdout parallel -X --eta echo | grep -E -v 'ETA:.*AVG'
Computers / CPU cores / Max jobs to run 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 Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete
echo '**' 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 1 par_append_joblog 1
par_append_joblog 3 /tmp/parallel_append_joblog 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 bug #:
par_empty true par_empty true
par_empty_line ### Test bug: empty line for | sh with -k 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 ¯® ¯® 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 ¯<¯<¯>¯> par_macron /bin/bash: ¯: No such file or directory
par_macron ¯<¯<¯>¯> ¯<¯<¯>¯> 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 ### Test that --pipepart can have blocks > 2GB
par_pipepart_block_bigger_2G 1 1 4 par_pipepart_block_bigger_2G 1 1 4
par_python_children ### bug #49970: Python child process dies if --env is used 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 ### bug #41609: --compress fails
par_compress_fail 24812dd0f24a26d08a780f988b9d5ad2 - par_compress_fail 24812dd0f24a26d08a780f988b9d5ad2 -
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 ### Test first dying print --halt-on-error 1
par_first_print_halt_on_error_1 0 par_first_print_halt_on_error_1 0
par_first_print_halt_on_error_1 parallel: This job failed: 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 parallel: This job failed:
par_halt_on_error 2 false false sleep 1;false par_halt_on_error 2 false false sleep 1;false
par_interactive ### Test -p --interactive par_interactive ### Test -p --interactive
par_interactive spawn /tmp/parallel-script-for-expect par_interactive opt--interactive 1
par_interactive sleep 0.1; echo opt-p 1 ?...y par_interactive opt--interactive 3
par_interactive sleep 0.1; echo opt-p 2 ?...n
par_interactive sleep 0.1; echo opt-p 3 ?...y
par_interactive opt-p 1 par_interactive opt-p 1
par_interactive opt-p 3 par_interactive opt-p 3
par_interactive sleep 0.1; echo opt--interactive 1 ?...y 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 2 ?...n
par_interactive sleep 0.1; echo opt--interactive 3 ?...y par_interactive sleep 0.1; echo opt--interactive 3 ?...y
par_interactive opt--interactive 1 par_interactive sleep 0.1; echo opt-p 1 ?...y
par_interactive opt--interactive 3 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 ### Test -k
par_k parallel: Warning: Only enough file handles to run 9 jobs in parallel. par_k parallel: Warning: Only enough file handles to run 8 jobs in parallel.
par_k parallel: Warning: Running 'parallel -j0 -N 9 --pipe parallel -j0' or 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: 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: 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 begin
par_k 1 par_k 1
par_k 2 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 ### Test max line length -m -I
par_maxlinelen_m_I d10d5c84fc4716b21d90afa92cf44d73 - par_maxlinelen_m_I d10d5c84fc4716b21d90afa92cf44d73 -
par_maxlinelen_m_I Chars per line (697810/11): 63437 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 Dynamic replacement strings defined by --plus
par_plus_dyn_repl myval par_plus_dyn_repl myval
par_plus_dyn_repl myval par_plus_dyn_repl myval
@ -568,10 +556,10 @@ par_results_compress 0
par_results_compress 1 par_results_compress 1
par_results_csv bug #: --results csv 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 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 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,15,0,0,"echo 22 12",22,12,"22 12 /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,15,0,0,"echo 23 11",23,11,"23 11 /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,15,0,0,"echo 23 12",23,12,"23 12 /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 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 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", 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 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 --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 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 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,15,0,0,"echo 22 12",22,12,"22 12 /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,15,0,0,"echo 23 11",23,11,"23 11 /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,15,0,0,"echo 23 12",23,12,"23 12 /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 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 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", 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 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 : --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 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 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,15,0,0,"echo 22 12",22,12,/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,15,0,0,"echo 23 11",23,11,/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,15,0,0,"echo 23 12",23,12,/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 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 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, 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 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 : --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 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 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,15,0,0,"echo 22 12",22,12,/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,15,0,0,"echo 23 11",23,11,/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,15,0,0,"echo 23 12",23,12,/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 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 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, 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 : 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12
par_results_csv --header : ", 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 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 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,15,0,0,"echo H2 11",H2,11,"H2 11 /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,15,0,0,"echo H2 12",H2,12,"H2 12 /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,15,0,0,"echo 22 H1",22,H1,"22 H1 /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,15,0,0,"echo 22 11",22,11,"22 11 /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,15,0,0,"echo 22 12",22,12,"22 12 /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,15,0,0,"echo 23 H1",23,H1,"23 H1 /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,15,0,0,"echo 23 11",23,11,"23 11 /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,15,0,0,"echo 23 12",23,12,"23 12 /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 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 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", 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 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 --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 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 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,15,0,0,"echo H2 11",H2,11,"H2 11 /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,15,0,0,"echo H2 12",H2,12,"H2 12 /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,15,0,0,"echo 22 H1",22,H1,"22 H1 /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,15,0,0,"echo 22 11",22,11,"22 11 /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,15,0,0,"echo 22 12",22,12,"22 12 /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,15,0,0,"echo 23 H1",23,H1,"23 H1 /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,15,0,0,"echo 23 11",23,11,"23 11 /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,15,0,0,"echo 23 12",23,12,"23 12 /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 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 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", 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 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 --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 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 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,15,0,0,"echo H2 11",H2,11,/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,15,0,0,"echo H2 12",H2,12,/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,15,0,0,"echo 22 H1",22,H1,/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,15,0,0,"echo 22 11",22,11,/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,15,0,0,"echo 22 12",22,12,/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,15,0,0,"echo 23 H1",23,H1,/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,15,0,0,"echo 23 11",23,11,/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,15,0,0,"echo 23 12",23,12,/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 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 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, 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 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12
par_results_csv --lb ", 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 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 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,15,0,0,"echo H2 11",H2,11,/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,15,0,0,"echo H2 12",H2,12,/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,15,0,0,"echo 22 H1",22,H1,/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,15,0,0,"echo 22 11",22,11,/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,15,0,0,"echo 22 12",22,12,/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,15,0,0,"echo 23 H1",23,H1,/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,15,0,0,"echo 23 11",23,11,/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,15,0,0,"echo 23 12",23,12,/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 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 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, 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/seq
par_result_replace /tmp/par__49983-baz C/stderr par_result_replace /tmp/par__49983-baz C/stderr
par_result_replace /tmp/par__49983-baz C/stdout 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 ### (--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 OK: --linebuffer makes a difference
par_linebuffer_matters_compress_tag ### (--linebuffer) --compress --tag should give different output par_linebuffer_matters_compress_tag ### (--linebuffer) --compress --tag should give different output
par_linebuffer_matters_compress_tag OK: --linebuffer makes a difference 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 1
par_slow_args_generation 2 par_slow_args_generation 2
par_slow_args_generation 3 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 ### bug #47644: Wrong slot number replacement when resuming
par_wrong_slot_rpl_resume 1 0 par_wrong_slot_rpl_resume 1 0
par_wrong_slot_rpl_resume 2 1 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 ### 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 exit code 0
par_print_before_halt_on_error -2 0.1 0.1 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' echo '### Test --load remote'
### 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 OK
echo '**' 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' echo '### trailing space in sshlogin'
### trailing space in sshlogin ### trailing space in sshlogin
echo 'sshlogin trailing space' | parallel --sshlogin "ssh -l parallel localhost " echo echo 'sshlogin trailing space' | parallel --sshlogin "ssh -l parallel localhost " echo

View file

@ -34,7 +34,7 @@ Environment variables are:
stderr stderr
rsync: connection unexpectedly closed (0 bytes received so far) [sender] 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 -- '-' /usr/lib/autossh/autossh: invalid option -- '-'
usage: autossh [-V] [-M monitor_port[:echo_port]] [-f] [SSH_OPTIONS] usage: autossh [-V] [-M monitor_port[:echo_port]] [-f] [SSH_OPTIONS]
@ -66,7 +66,7 @@ Environment variables are:
stderr stderr
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] 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' echo '### bug #46520: --basefile cleans up without --cleanup'
### 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 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 3
echo '### Test --nonall'; parallel --nonall -k -S parallel@lo,csh@lo pwd | sort echo '### Test --nonall'; parallel --nonall -k -S parallel@lo,csh@lo pwd | sort
### Test --nonall ### Test --nonall
/mnt/4tb/home/csh /home/csh
/mnt/4tb/home/parallel /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;' 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 ### Test --nonall -u - should be interleaved x y x y
/mnt/4tb/home/parallel /home/parallel
/mnt/4tb/home/csh /home/csh
/mnt/4tb/home/parallel /home/parallel
/mnt/4tb/home/csh /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 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 ### Test read sshloginfile from STDIN
/mnt/4tb/home/csh /home/csh
/mnt/4tb/home/parallel /home/parallel
/mnt/4tb/home/csh /home/csh
foo foo
/mnt/4tb/home/parallel /home/parallel
foo foo
echo '**' 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 echo '### Test --workdir .'; ssh parallel@lo mkdir -p mydir; mkdir -p $HOME/mydir; cd $HOME/mydir; parallel --workdir . -S parallel@lo ::: pwd
### Test --workdir . ### 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 echo '### Test --wd .'; ssh csh@lo mkdir -p mydir; mkdir -p $HOME/mydir; cd $HOME/mydir; parallel --workdir . -S csh@lo ::: pwd
### Test --wd . ### 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 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 {} ### Test --wd {}
wd1 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: And the use '--env _'
par_bash_environment_too_big env_parallel: Error: For details see: man env_parallel 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  par_bash_funky 
par_bash_funky  par_bash_funky 
par_bash_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ par_bash_funky -funkymultiline
par_bash_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ par_bash_funky -funkymultiline
par_bash_funky space 6 par_bash_funky space 6
par_bash_funky space 6 par_bash_funky space 6
par_bash_funky 3 arg alias_works par_bash_funky 3 arg alias_works
par_bash_funky 3 arg alias_works_over_ssh par_bash_funky 3 arg alias_works_over_ssh
par_bash_funky Funky- 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 Funky- 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 \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~€乗俓僜刓匼哱嘰圽塡奬媆孿峔嶾廫怽慭抃揬擻昞朶梊榎橽歕沑淺漒瀄焅燶<E78485><E787B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>猏玕琝璡甛痋癨盶瞈砛碶礬禱穃竆筡篭籠糪絓綷縗繺羂耚肻腬臷芢荺萛蒤蔦薥蘚蚛蝄蟎衆裓襖覾診誠謀譢豛賊赲踈躙輁轡運郳醆鈂鉢鋅錦鎈鏫鑌閈闬隲靄韁頫颸餦馶騖骪鬨鮘鯸鱘鳿鵟鶿鸤黒齖㘎<E9BD96> 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 assoc_val_a par_bash_funky assoc_val_a
par_bash_funky function_works par_bash_funky function_works
par_bash_funky function_works_over_ssh par_bash_funky function_works_over_ssh
par_bash_funky myvar works par_bash_funky myvar works
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 ### bash
par_bash_man ### From man env_parallel par_bash_man ### From man env_parallel
par_bash_man aliases work 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 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 57: 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_func: command not found
par_bash_underscore error=OK par_bash_underscore error=OK
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 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 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 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 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 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_bash_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^^^^^^^^^
par_csh_env_parallel_fifo bug #50435: Remote fifo broke in 20150522 par_csh_env_parallel_fifo bug #50435: Remote fifo broke in 20150522
par_csh_env_parallel_fifo data from stdin 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
par_tcsh_funky 3 arg alias_works_over_ssh 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{|}~<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 \\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_tcsh_funky func_echo: Command not found. par_tcsh_funky func_echo: Command not found.
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_load_csh a
par_path_remote_bash bug #47695: How to set $PATH on remote? Bash par_path_remote_bash bug #47695: How to set $PATH on remote? Bash
par_path_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 Path before: /bin:/usr/bin with no parallel
par_path_remote_bash -bash: line 2: parallel: command not found par_path_remote_bash -bash: line 2: parallel: command not found
par_path_remote_bash ^^^^^^^^ Not found is OK 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_bash
par_path_remote_csh bug #47695: How to set $PATH on remote? csh par_path_remote_csh bug #47695: How to set $PATH on remote? csh
par_path_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 Warning: no access to tty (Bad file descriptor).
par_path_remote_csh Thus no job control in this shell. par_path_remote_csh Thus no job control in this shell.
par_path_remote_csh CSH Path before: /bin:/usr/bin with no parallel 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'. To silence this citation notice: run 'parallel --citation'.
10 files to edit 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 When using programs that use GNU Parallel to process data for publication
please cite: please cite:

View file

@ -1197,15 +1197,16 @@ from f f to xf f y
from r r to xr r y from r r to xr r y
from t t to xt t y from t t to xt t y
from v v to xv v y from v v to xv v y
stdout parallel -k -i echo from \{\} to x{}y < items.xi # GNU Parallel will see 'echo' as argument to '-i' if not given {}
from: can't read /var/mail/{} stdout parallel -k -i {} echo from \{\} to x{}y < items.xi
from: can't read /var/mail/{} from to x y
from: can't read /var/mail/{} from dumb to xdumby
from: can't read /var/mail/{} from s s to x s s y
from: can't read /var/mail/{} from f f to x f f y
from: can't read /var/mail/{} from r r to x r r y
from: can't read /var/mail/{} from t t to x t t y
from: can't read /var/mail/{} from v v to x v v y
from to x y
echo '### -i -s26 echo from \{\} to x{}y < items.xi' echo '### -i -s26 echo from \{\} to x{}y < items.xi'
### -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 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: To install the GNU Parallel Debian package, run:
echo '### Test of segfaulting issue' echo '### Test of segfaulting issue'
### 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 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 /home/tange/bin/stdout: line 3: 20374 Segmentation fault "$@" 2>&1 This gave ~/bin/stdout: line 3: 20374 Segmentation fault "$@" 2>&1
before adding wait() before exit before adding wait() before exit
echo '### Test basic --arg-sep' echo '### Test basic --arg-sep'
### Test basic --arg-sep ### Test basic --arg-sep

View file

@ -1,42 +1,45 @@
### Test --env - https://savannah.gnu.org/bugs/?37351 par_env_160 ### Test --env for \160 - which kills csh - single and double - no output is good
a 2 spaces b 1 par_env_160_onall ### Test --env for \160 - which kills csh - single and double --onall - no output is good
a 2 spaces b 1 par_env_160_onall 12 1    160V2=    160
a 2 spaces b 1 par_env_newline_backslash_bash ### Test --env for \n and \\ - single and double (bash only) - no output is good
a 2 spaces b 1 par_env_newline_backslash_bash 8
a 2 spaces b 1 par_env_newline_backslash_bash 8
a 2 spaces b a > My brother's 12" records < b 2 par_env_newline_backslash_csh ### Test --env for \n and \\ - single and double (*csh only) - no output is good but csh fails
a 2 spaces b a > My brother's 12" records < b 2 par_env_newline_backslash_csh 2 2\ \92V2=\ \92
a 2 spaces b a > My brother's 12" records < b 2 par_env_newline_backslash_csh 2 2\\ \92V2=\\ \92
a 2 spaces b a > My brother's 12" records < b 2 par_env_newline_backslash_csh 2 Unmatched ".
a 2 spaces b a > My brother's 12" records < b 2 par_env_newline_backslash_csh 2 Unmatched '"'.
a 2 spaces b a > My brother's 12" records < b 3 par_env_newline_backslash_onall_bash ### Test --env for \n and \\ - single and double --onall (bash only) - no output is good
a 2 spaces b a > My brother's 12" records < b 3 par_env_newline_backslash_onall_bash 16
a 2 spaces b a > My brother's 12" records < b 3 par_env_newline_backslash_onall_bash 16
a 2 spaces b a > My brother's 12" records < b 3 par_env_newline_backslash_onall_bash 8 1
a 2 spaces b a > My brother's 12" records < b 3 par_env_newline_backslash_onall_bash 8 10
a \'"b 4 par_env_newline_backslash_onall_bash 8 10V2=
a \'"b 4 par_env_newline_backslash_onall_bash 8 2\\ \92V2=\\ \92
a \'"b 4 par_env_newline_backslash_onall_csh ### Test --env for \n and \\ - single and double --onall (*csh only) - no output is good but csh fails
a \'"b 4 par_space ### Test --env - https://savannah.gnu.org/bugs/?37351
a \'"b 4 par_space a 2 spaces b 1
a' * ? >o <i*? ][\!#¤%=( ) | }b 5 par_space a 2 spaces b 1
a' * ? >o <i*? ][\!#¤%=( ) | }b 5 par_space a 2 spaces b 1
a' * ? >o <i*? ][\!#¤%=( ) | }b 5 par_space a 2 spaces b 1
a' * ? >o <i*? ][\!#¤%=( ) | }b 5 par_space a 2 spaces b 1
a' * ? >o <i*? ][\!#¤%=( ) | }b 5 par_space a 2 spaces b a > My brother's 12" records < b 2
### Test --env for \n and \\ - single and double (bash only) - no output is good par_space a 2 spaces b a > My brother's 12" records < b 2
8 par_space a 2 spaces b a > My brother's 12" records < b 2
8 par_space a 2 spaces b a > My brother's 12" records < b 2
### Test --env for \n and \\ - single and double (*csh only) - no output is good but csh fails par_space a 2 spaces b a > My brother's 12" records < b 2
2 2\ \92V2=\ \92 par_space a 2 spaces b a > My brother's 12" records < b 3
2 2\\ \92V2=\\ \92 par_space a 2 spaces b a > My brother's 12" records < b 3
### Test --env for \n and \\ - single and double --onall (bash only) - no output is good par_space a 2 spaces b a > My brother's 12" records < b 3
2 1 par_space a 2 spaces b a > My brother's 12" records < b 3
2 10 par_space a 2 spaces b a > My brother's 12" records < b 3
2 10V2= par_space_quote a \'"b 4
2 2\\ \92V2=\\ \92 par_space_quote a \'"b 4
### Test --env for \n and \\ - single and double --onall (*csh only) - no output is good but csh fails par_space_quote a \'"b 4
1 2\ \92V2=\ \92 par_space_quote a \'"b 4
1 2\\ \92V2=\\ \92 par_space_quote a \'"b 4
### Test --env for \160 - which kills csh - single and double - no output is good par_special_char a' * ? >o <i*? ][\!#¤%=( ) | }b 5
### Test --env for \160 - which kills csh - single and double --onall - no output is good 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 bug #46120: Suspend should suspend (at least local) children
it should burn 1.9 CPU seconds, but no more than that 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 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 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 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' echo '### -L -n with pipe'
### -L -n with pipe ### -L -n with pipe
seq 14 | parallel --pipe -k -L 3 -n 2 'cat;echo 6 Ln line record' seq 14 | parallel --pipe -k -L 3 -n 2 'cat;echo 6 Ln line record'

View file

@ -1,80 +1,80 @@
echo '### tmux1.9' echo '### tmux-1.9'
### tmux1.9 ### tmux-1.9
seq 000 100 | PARALLEL_TMUX=tmux1.9 par_tmux seq 000 100 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
seq 100 200 | PARALLEL_TMUX=tmux1.9 par_tmux seq 100 200 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
seq 200 300 | PARALLEL_TMUX=tmux1.9 par_tmux seq 200 300 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
seq 300 400 | PARALLEL_TMUX=tmux1.9 par_tmux seq 300 400 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
seq 400 500 | PARALLEL_TMUX=tmux1.9 par_tmux seq 400 500 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
seq 500 600 | PARALLEL_TMUX=tmux1.9 par_tmux seq 500 600 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
seq 600 700 | PARALLEL_TMUX=tmux1.9 par_tmux seq 600 700 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
seq 700 800 | PARALLEL_TMUX=tmux1.9 par_tmux seq 700 800 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
seq 800 900 | PARALLEL_TMUX=tmux1.9 par_tmux seq 800 900 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
seq 900 1000 | PARALLEL_TMUX=tmux1.9 par_tmux seq 900 1000 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
seq 1000 1006 | PARALLEL_TMUX=tmux1.9 par_tmux seq 1000 1006 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
echo '### tmux1.9 fails' echo '### tmux-1.9 fails'
### tmux1.9 fails ### tmux-1.9 fails
echo 1007 | PARALLEL_TMUX=tmux1.9 par_tmux echo 1007 | PARALLEL_TMUX=tmux-1.9 par_tmux
parallel: Error: Command line too long (2023 >= 2023) at input 0: 1007 parallel: Error: Command line too long (2023 >= 2023) at input 0: 1007
255 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 parallel: Error: Command line too long (2025 >= 2023) at input 0: 1008
255 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 parallel: Error: Command line too long (2027 >= 2023) at input 0: 1009
255 255
echo '### tmux1.8' echo '### tmux-1.8'
### tmux1.8 ### tmux-1.8
seq 1 50 | PARALLEL_TMUX=tmux1.8 par_tmux seq 1 50 | PARALLEL_TMUX=tmux-1.8 par_tmux
See output with: tmux1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
seq 51 100 | PARALLEL_TMUX=tmux1.8 par_tmux seq 51 100 | PARALLEL_TMUX=tmux-1.8 par_tmux
See output with: tmux1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
seq 101 113 | PARALLEL_TMUX=tmux1.8 par_tmux seq 101 113 | PARALLEL_TMUX=tmux-1.8 par_tmux
See output with: tmux1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
echo '### tmux1.8 fails' echo '### tmux-1.8 fails'
### tmux1.8 fails ### tmux-1.8 fails
echo 114 | PARALLEL_TMUX=tmux1.8 par_tmux echo 114 | PARALLEL_TMUX=tmux-1.8 par_tmux
parallel: Error: Command line too long (236 >= 236) at input 0: 114 parallel: Error: Command line too long (236 >= 236) at input 0: 114
255 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 parallel: Error: Command line too long (238 >= 236) at input 0: 115
255 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 parallel: Error: Command line too long (240 >= 236) at input 0: 116
255 255
echo '### tmux1.8 0..255 ascii' echo '### tmux-1.8 0..255 ascii'
### tmux1.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=tmux1.8 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $? 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: tmux1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
echo '### tmux1.9 0..255 ascii' echo '### tmux-1.9 0..255 ascii'
### tmux1.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=tmux1.9 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $? 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: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
echo '### Test output ascii' echo '### Test output ascii'
### Test output ascii ### Test output ascii
@ -83,12 +83,12 @@ See output with: tmux -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
053c7e8e945ef7641fc63bc309ac069d - 053c7e8e945ef7641fc63bc309ac069d -
echo '### Test critical lengths. Must not block' echo '### Test critical lengths. Must not block'
### 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 seq 70 130 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
See output with: tmux1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach 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 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 seq 70 130 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.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 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 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 seq 280 425 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
See output with: tmux1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach 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 1
echo '### Test --number-of-cores'; stdout $NICEPAR --number-of-cores echo '### Test --number-of-cores'; stdout $NICEPAR --number-of-cores
### Test --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 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 ### Test --use-cpus-instead-of-cores
Cores should complete first on machines with less than 8 physical CPUs Cores should complete first on machines with less than 8 physical CPUs