Released as 20200822 ('Beirut')

This commit is contained in:
Ole Tange 2020-08-23 01:31:39 +02:00
parent 19cd8e015f
commit 5ea74055dd
32 changed files with 246 additions and 314 deletions

10
NEWS
View file

@ -1,3 +1,13 @@
20200822
New in this release:
* Max command line length is changed for MacOS - making this version
beta quality for MacOS.
* Bug fixes and man page updates.
20200722 20200722
New in this release: New in this release:

24
README
View file

@ -57,11 +57,11 @@ document.
Full installation of GNU Parallel is as simple as: Full installation of GNU Parallel is as simple as:
wget https://ftpmirror.gnu.org/parallel/parallel-20200722.tar.bz2 wget https://ftpmirror.gnu.org/parallel/parallel-20200822.tar.bz2
wget https://ftpmirror.gnu.org/parallel/parallel-20200722.tar.bz2.sig wget https://ftpmirror.gnu.org/parallel/parallel-20200822.tar.bz2.sig
gpg parallel-20200722.tar.bz2.sig gpg parallel-20200822.tar.bz2.sig
bzip2 -dc parallel-20200722.tar.bz2 | tar xvf - bzip2 -dc parallel-20200822.tar.bz2 | tar xvf -
cd parallel-20200722 cd parallel-20200822
./configure && make && sudo make install ./configure && make && sudo make install
@ -70,11 +70,11 @@ 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 https://ftpmirror.gnu.org/parallel/parallel-20200722.tar.bz2 wget https://ftpmirror.gnu.org/parallel/parallel-20200822.tar.bz2
wget https://ftpmirror.gnu.org/parallel/parallel-20200722.tar.bz2.sig wget https://ftpmirror.gnu.org/parallel/parallel-20200822.tar.bz2.sig
gpg parallel-20200722.tar.bz2.sig gpg parallel-20200822.tar.bz2.sig
bzip2 -dc parallel-20200722.tar.bz2 | tar xvf - bzip2 -dc parallel-20200822.tar.bz2 | tar xvf -
cd parallel-20200722 cd parallel-20200822
./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
@ -122,8 +122,8 @@ will love you for it.
When using programs that use GNU Parallel to process data for When using programs that use GNU Parallel to process data for
publication please cite: publication please cite:
Tange, O. (2020, July 22). GNU Parallel 20200722 ('Privacy Shield'). Tange, O. (2020, August 22). GNU Parallel 20200822 ('Beirut').
Zenodo. https://doi.org/10.5281/zenodo.3956817 Zenodo. https://doi.org/10.5281/zenodo.3996295
Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015,
2016, 2017, 2018, 2019, 2020 Ole Tange, http://ole.tange.dk and Free 2016, 2017, 2018, 2019, 2020 Ole Tange, http://ole.tange.dk and Free

20
configure vendored
View file

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for parallel 20200722. # Generated by GNU Autoconf 2.69 for parallel 20200822.
# #
# Report bugs to <bug-parallel@gnu.org>. # Report bugs to <bug-parallel@gnu.org>.
# #
@ -579,8 +579,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='parallel' PACKAGE_NAME='parallel'
PACKAGE_TARNAME='parallel' PACKAGE_TARNAME='parallel'
PACKAGE_VERSION='20200722' PACKAGE_VERSION='20200822'
PACKAGE_STRING='parallel 20200722' PACKAGE_STRING='parallel 20200822'
PACKAGE_BUGREPORT='bug-parallel@gnu.org' PACKAGE_BUGREPORT='bug-parallel@gnu.org'
PACKAGE_URL='' PACKAGE_URL=''
@ -1214,7 +1214,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures parallel 20200722 to adapt to many kinds of systems. \`configure' configures parallel 20200822 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1281,7 +1281,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of parallel 20200722:";; short | recursive ) echo "Configuration of parallel 20200822:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1357,7 +1357,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
parallel configure 20200722 parallel configure 20200822
generated by GNU Autoconf 2.69 generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc. Copyright (C) 2012 Free Software Foundation, Inc.
@ -1374,7 +1374,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by parallel $as_me 20200722, which was It was created by parallel $as_me 20200822, which was
generated by GNU Autoconf 2.69. Invocation command line was generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@ $ $0 $@
@ -2237,7 +2237,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='parallel' PACKAGE='parallel'
VERSION='20200722' VERSION='20200822'
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
@ -2880,7 +2880,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by parallel $as_me 20200722, which was This file was extended by parallel $as_me 20200822, which was
generated by GNU Autoconf 2.69. Invocation command line was generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -2942,7 +2942,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\ ac_cs_version="\\
parallel config.status 20200722 parallel config.status 20200822
configured by $0, generated by GNU Autoconf 2.69, configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"

View file

@ -1,4 +1,4 @@
AC_INIT([parallel], [20200722], [bug-parallel@gnu.org]) AC_INIT([parallel], [20200822], [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

@ -189,7 +189,7 @@ from:tange@gnu.org
to:parallel@gnu.org, bug-parallel@gnu.org to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm> stable-bcc: Jesse Alama <jessealama@fastmail.fm>
Subject: GNU Parallel 20200822 ('Beirut/Juan Carlos') released <<[stable]>> Subject: GNU Parallel 20200822 ('Beirut') released <<[stable]>>
GNU Parallel 20200822 ('') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/ GNU Parallel 20200822 ('') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
@ -207,22 +207,6 @@ New in this release:
News about GNU Parallel: News about GNU Parallel:
* Tips for Running Jobs on your VM https://support.ehelp.edu.au/support/solutions/articles/6000089713-tips-for-running-jobs-on-your-vm#parallel
* Introduction to GNU Parallel: Parallelizing Massive Individual Tasks https://www.youtube.com/watch?v=QSFLTEyCKvo
* Slides for same http://www.hpc.lsu.edu/training/weekly-materials/2020-Spring/GNUParallel_Spring_2020.pdf
* Linux-Fu: Parallel Universe https://hackaday.com/2020/06/29/linux-fu-parallel-universe/
* Resumable batch jobs with gnu parallel https://igor.io/parallel/
* Introducing Parallel into Shell https://www.petelawson.com/post/parallel-in-shell/
* AV1 encoding parallelization with GNU Parallel https://www.reddit.com/r/AV1/comments/fjvqp9/av1_encoding_parallelization_with_gnu_parallel/
* Beschleunigte Befehlsbearbeitung mit GNU Parallel https://www.linux-community.de/ausgaben/linuxuser/2013/06/beschleunigte-befehlsbearbeitung-mit-gnu-parallel/
Get the book: GNU Parallel 2018 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html Get the book: GNU Parallel 2018 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html

View file

@ -1,7 +1,7 @@
<directory name="parallel" rev="289" vrev="2" srcmd5="f2fd10de667323622518e3653fe1a05b"> <directory name="parallel" rev="290" vrev="1" srcmd5="a85169cae00a0e4ea737a0dcc7610790">
<entry name="PKGBUILD" md5="e6ac64e8d3065f4be850b3568268b42b" size="936" mtime="1595494017" /> <entry name="PKGBUILD" md5="3568bb74a45413f6c3280ab141f01c2b" size="936" mtime="1598138648" />
<entry name="parallel-20200722.tar.bz2" md5="09c6b0ad719f1beae5622d2e56a1f831" size="2102288" mtime="1595494018" /> <entry name="parallel-20200822.tar.bz2" md5="e3ce6ff94d5ba94218f3ab58dd81c0b6" size="2102282" mtime="1598138648" />
<entry name="parallel.spec" md5="e2eb4d93448e26b8ebefb7973d998d14" size="4876" mtime="1595451728" /> <entry name="parallel.spec" md5="77efee1567858f2f53f6d4c7b243e2f0" size="4876" mtime="1598138649" />
<entry name="parallel_20200722.dsc" md5="85208bd8f159a9e475dc21a3adaa082c" size="556" mtime="1595451729" /> <entry name="parallel_20200822.dsc" md5="a81b6e0c9bb5bc165f2da177f401804f" size="556" mtime="1598138649" />
<entry name="parallel_20200722.tar.gz" md5="2a965430557424f6778592bbd1660fd5" size="2294662" mtime="1595451729" /> <entry name="parallel_20200822.tar.gz" md5="a2de27efd1fa57afecd4aeb4a3959661" size="2295089" mtime="1598138649" />
</directory> </directory>

View file

@ -1,7 +1,7 @@
Summary: Shell tool for executing jobs in parallel Summary: Shell tool for executing jobs in parallel
Name: parallel Name: parallel
Version: 20200722 Version: 20200822
Release: 1.3 Release: 1.3
License: GPL-3.0-or-later License: GPL-3.0-or-later
Group: Productivity/File utilities Group: Productivity/File utilities

View file

@ -23,7 +23,7 @@
use strict; use strict;
use Getopt::Long; use Getopt::Long;
$Global::progname="niceload"; $Global::progname="niceload";
$Global::version = 20200723; $Global::version = 20200822;
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

@ -2160,7 +2160,7 @@ sub check_invalid_option_combinations() {
sub init_globals() { sub init_globals() {
# Defaults: # Defaults:
$Global::version = 20200820; $Global::version = 20200822;
$Global::progname = 'parallel'; $Global::progname = 'parallel';
$::name = "GNU Parallel"; $::name = "GNU Parallel";
$Global::infinity = 2**31; $Global::infinity = 2**31;
@ -4919,8 +4919,8 @@ sub usage() {
"If you use programs that use GNU Parallel to process data for an article in a", "If you use programs that use GNU Parallel to process data for an article in a",
"scientific publication, please cite:", "scientific publication, please cite:",
"", "",
" Tange, O. (2020, June 22). GNU Parallel 20200622 ('Floyd').", " Tange, O. (2020, August 22). GNU Parallel 20200822 ('Beirut').",
" Zenodo. https://doi.org/10.5281/zenodo.3903853", " Zenodo. https://doi.org/10.5281/zenodo.3996295",
"", "",
# Before changing this line, please read # Before changing this line, please read
# https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice # https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice
@ -4950,8 +4950,8 @@ sub citation_notice() {
"If you use programs that use GNU Parallel to process data for an article in a", "If you use programs that use GNU Parallel to process data for an article in a",
"scientific publication, please cite:", "scientific publication, please cite:",
"", "",
" Tange, O. (2020, June 22). GNU Parallel 20200622 ('Floyd').", " Tange, O. (2020, August 22). GNU Parallel 20200822 ('Beirut').",
" Zenodo. https://doi.org/10.5281/zenodo.3903853", " Zenodo. https://doi.org/10.5281/zenodo.3996295",
"", "",
# Before changing this line, please read # Before changing this line, please read
# https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice and # https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice and
@ -5064,20 +5064,20 @@ sub citation() {
"If you use programs that use GNU Parallel to process data for an article in a", "If you use programs that use GNU Parallel to process data for an article in a",
"scientific publication, please cite:", "scientific publication, please cite:",
"", "",
"\@software{tange_2020_3903853,", "\@software{tange_2020_3996295,",
" author = {Tange, Ole},", " author = {Tange, Ole},",
" title = {GNU Parallel 20200622 ('Floyd')},", " title = {GNU Parallel 20200822 ('Beirut')},",
" month = Jun,", " month = Aug,",
" year = 2020,", " year = 2020,",
" note = {{GNU Parallel is a general parallelizer to run", " note = {{GNU Parallel is a general parallelizer to run",
" multiple serial command line programs in parallel", " multiple serial command line programs in parallel",
" without changing them.}},", " without changing them.}},",
" publisher = {Zenodo},", " publisher = {Zenodo},",
" doi = {10.5281/zenodo.3903853},", " doi = {10.5281/zenodo.3996295},",
" url = {https://doi.org/10.5281/zenodo.3903853}", " url = {https://doi.org/10.5281/zenodo.3996295}",
"}", "}",
"", "",
"(Feel free to use \\nocite{tange_2020_3903853})", "(Feel free to use \\nocite{tange_2020_3996295})",
"", "",
# Before changing this line, please read # Before changing this line, please read
# https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice and # https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice and
@ -10503,7 +10503,6 @@ sub slot($) {
my $max_len = $Global::minimal_command_line_length my $max_len = $Global::minimal_command_line_length
|| Limits::Command::max_length(); || Limits::Command::max_length();
if($^O eq "darwin") { if($^O eq "darwin") {
# env $((260932 - $single - $envc - $envl * 4 + 1064 ))
# Darwin's limit is affected by: # Darwin's limit is affected by:
# * number of environment names (variables+functions) # * number of environment names (variables+functions)
# * size of environment # * size of environment
@ -10518,9 +10517,10 @@ sub slot($) {
my $envc = (keys %ENV); my $envc = (keys %ENV);
my $envn = length join"",(keys %ENV); my $envn = length join"",(keys %ENV);
my $envv = length join"",(values %ENV); my $envv = length join"",(values %ENV);
$darwin_max_len = 3+($max_len - $envn - $envv) / 5 - $envc*2; $darwin_max_len = 3+($max_len - $envn - $envv)/5 - $envc*2;
::debug("init", ::debug("init",
"length: $darwin_max_len 3+($max_len - $envn - $envv) / 5 - $envc*2"); "length: $darwin_max_len ".
"3+($max_len - $envn - $envv)/5 - $envc*2");
} }
$max_len = $darwin_max_len; $max_len = $darwin_max_len;
} }

View file

@ -2349,7 +2349,7 @@ when called with B<--shebang>).
Use B<--sqlmaster> instead. Use B<--sqlmaster> instead.
=item B<--sqlmaster> I<DBURL> (beta testing) =item B<--sqlmaster> I<DBURL>
Submit jobs via SQL server. I<DBURL> must point to a table, which will Submit jobs via SQL server. I<DBURL> must point to a table, which will
contain the same information as B<--joblog>, the values from the input contain the same information as B<--joblog>, the values from the input
@ -2391,12 +2391,12 @@ It can also be an alias from ~/.sql/aliases:
:myalias mysql:///mydb/paralleljobs :myalias mysql:///mydb/paralleljobs
=item B<--sqlandworker> I<DBURL> (beta testing) =item B<--sqlandworker> I<DBURL>
Shorthand for: B<--sqlmaster> I<DBURL> B<--sqlworker> I<DBURL>. Shorthand for: B<--sqlmaster> I<DBURL> B<--sqlworker> I<DBURL>.
=item B<--sqlworker> I<DBURL> (beta testing) =item B<--sqlworker> I<DBURL>
Execute jobs via SQL server. Read the input sources variables from the Execute jobs via SQL server. Read the input sources variables from the
table pointed to by I<DBURL>. The I<command> on the command line table pointed to by I<DBURL>. The I<command> on the command line

View file

@ -574,7 +574,7 @@ $Global::Initfile && unlink $Global::Initfile;
exit ($err); exit ($err);
sub parse_options { sub parse_options {
$Global::version = 20200723; $Global::version = 20200822;
$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

@ -4,6 +4,22 @@
# Each should be taking 3-10s and be possible to run in parallel # Each should be taking 3-10s and be possible to run in parallel
# I.e.: No race conditions, no logins # I.e.: No race conditions, no logins
par_eta() {
echo '### Test of --eta'
seq 1 10 | stdout parallel --eta "sleep 1; echo {}" | wc -l
echo '### Test of --eta with no jobs'
stdout parallel --eta "sleep 1; echo {}" < /dev/null
}
par_progress() {
echo '### Test of --progress'
seq 1 10 | stdout parallel --progress "sleep 1; echo {}" | wc -l
echo '### Test of --progress with no jobs'
stdout parallel --progress "sleep 1; echo {}" < /dev/null
}
par_tee_with_premature_close() { par_tee_with_premature_close() {
echo '--tee --pipe should send all data to all commands' echo '--tee --pipe should send all data to all commands'
echo 'even if a command closes stdin before reading everything' echo 'even if a command closes stdin before reading everything'

View file

@ -141,6 +141,12 @@ par_sshlogin_replacement() {
parallel -S '5//usr/bin/ssh '$SSHLOGIN1 --plus echo {sshlogin} {} {host} ::: and parallel -S '5//usr/bin/ssh '$SSHLOGIN1 --plus echo {sshlogin} {} {host} ::: and
} }
par_timeout_onall() {
echo '### --timeout --onall on remote machines: 2*slept 1, 2 jobs failed'
parallel -j0 --timeout 6 --onall -S localhost,$SSHLOGIN1 'sleep {}; echo slept {}' ::: 1 8 9
echo jobs failed: $?
}
export -f $(compgen -A function | grep par_) 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 --delay $D -j$P --tag -k '{} 2>&1'
compgen -A function | grep par_ | sort | compgen -A function | grep par_ | sort |

View file

@ -121,6 +121,12 @@ par_retries_4() {
retries 4 48 49 retries 4 48 49
} }
par_csh_environment_variables_set() {
echo '### Check $PARALLEL_PID $PARALLEL_SEQ are set in csh'
parallel -S csh@localhost 'echo $PARALLEL_PID $PARALLEL_SEQ {}| wc -w' ::: a
}
export -f $(compgen -A function | grep par_) 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 --delay $D -j$P --tag -k '{} 2>&1'
compgen -A function | grep par_ | LC_ALL=C sort | compgen -A function | grep par_ | LC_ALL=C sort |

View file

@ -44,17 +44,6 @@ echo '### test --workdir . in $HOME'
echo '### TODO: test --filter-hosts proxied through the one host' echo '### TODO: test --filter-hosts proxied through the one host'
echo '### bug #43358: shellshock breaks exporting functions using --env'
echo shellshock-hardened to shellshock-hardened;
funky() { echo Function $1; };
export -f funky;
parallel --env funky -S parallel@localhost funky ::: shellshock-hardened
echo '2bug #43358: shellshock breaks exporting functions using --env'
echo shellshock-hardened to non-shellshock-hardened;
funky() { echo Function $1; };
export -f funky;
parallel --env funky -S centos3.tange.dk funky ::: non-shellshock-hardened
EOF EOF
rm /tmp/myssh1 /tmp/myssh2 /tmp/myssh1-run /tmp/myssh2-run rm /tmp/myssh1 /tmp/myssh2 /tmp/myssh1-run /tmp/myssh2-run

View file

@ -1,26 +1,37 @@
#!/bin/bash #!/bin/bash
echo "### These tests requires VirtualBox running with the following images" par_warning_on_centos3() {
echo `whoami`"@redhat9" echo "### bug #37589: Red Hat 9 (Shrike) perl v5.8.0 built for i386-linux-thread-multi error"
echo `whoami`"@centos3" testone() {
echo `whoami`"@centos5" sshlogin="$1"
echo `whoami`"@freebsd7" program="$2"
basename="$3"
scp "$program" "$sshlogin":/tmp/"$basename"
stdout ssh "$sshlogin" perl /tmp/"$basename" echo \
::: Old_must_fail_New_must_be_OK
}
export -f testone
parallel --tag -k testone {1} {2} {2/} \
::: vagrant@centos3 vagrant@rhel8 \
::: /usr/local/bin/parallel-20120822 `which parallel`
}
VBoxManage startvm CentOS3-root:centos3 >/dev/null 2>&1 par_shellshock() {
VBoxManage startvm CentOS5-root:centos5 >/dev/null 2>&1 # Bash on centos3 is non-shellshock-hardened
VBoxManage startvm RedHat9-root:redhat9 >/dev/null 2>&1 echo '### bug #43358: shellshock breaks exporting functions using --env'
VBoxManage startvm FreeBSD71 >/dev/null 2>&1 echo shellshock-hardened to shellshock-hardened
ping -c 1 centos3.tange.dk >/dev/null 2>&1 funky() { echo Function $1; }
ping -c 1 centos5.tange.dk >/dev/null 2>&1 export -f funky
ping -c 1 redhat9.tange.dk >/dev/null 2>&1 parallel --env funky -S parallel@localhost funky ::: shellshock-hardened
ping -c 1 freebsd7.tange.dk >/dev/null 2>&1
echo "### bug #37589: Red Hat 9 (Shrike) perl v5.8.0 built for i386-linux-thread-multi error" echo '2bug #43358: shellshock breaks exporting functions using --env'
rm -rf /tmp/parallel echo shellshock-hardened to non-shellshock-hardened
cp `which parallel` /tmp/parallel funky() { echo Function $1; }
stdout parallel -kj10 --argsep == --basefile /tmp/parallel --tag --nonall -S redhat9.tange.dk,centos3.tange.dk,centos5.tange.dk,freebsd7.tange.dk /tmp/parallel --no-notice echo ::: OK_if_no_perl_warnings | sort export -f funky
parallel --env funky -S centos3 funky ::: non-shellshock-hardened
}
#VBoxManage controlvm CentOS3-root:centos3 savestate export -f $(compgen -A function | grep par_)
VBoxManage controlvm CentOS5-root:centos5 savestate compgen -A function | grep par_ | LC_ALL=C sort |
#VBoxManage controlvm RedHat9-root:redhat9 savestate parallel --timeout 1000% -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1' |
VBoxManage controlvm FreeBSD71 savestate perl -pe 's:/usr/bin:/bin:g;'

View file

@ -8,18 +8,4 @@ SSHLOGIN1=$SSHUSER1@$SERVER1
SSHLOGIN2=$SSHUSER2@$SERVER2 SSHLOGIN2=$SSHUSER2@$SERVER2
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj10 -k --joblog /tmp/jl-`basename $0` -L1 -r cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj10 -k --joblog /tmp/jl-`basename $0` -L1 -r
echo '### Test of --eta'
seq 1 10 | stdout parallel --eta "sleep 1; echo {}" | wc -l
echo '### Test of --eta with no jobs'
stdout parallel --eta "sleep 1; echo {}" < /dev/null
echo '### Test of --progress'
seq 1 10 | stdout parallel --progress "sleep 1; echo {}" | wc -l
echo '### Test of --progress with no jobs'
stdout parallel --progress "sleep 1; echo {}" < /dev/null
echo '### --timeout --onall on remote machines: 2*slept 1, 2 jobs failed'
parallel -j0 --timeout 6 --onall -S localhost,$SSHLOGIN1 'sleep {}; echo slept {}' ::: 1 8 9 ; echo jobs failed: $?
EOF EOF

View file

@ -33,6 +33,7 @@ export -f destroy_one
server_list() { server_list() {
grep -v '#' <<SSHOK grep -v '#' <<SSHOK
#generic/arch.98 #generic/arch.98
tange/centos3.3
hfm4/centos4.4 hfm4/centos4.4
hfm4/centos5.5 hfm4/centos5.5
#generic/centos6.6 #generic/centos6.6

View file

@ -488,10 +488,10 @@ par_long_line_remote ### Deal with long command lines on remote servers
par_long_line_remote 2 6 30006 par_long_line_remote 2 6 30006
par_long_line_remote 3 50 250050 par_long_line_remote 3 50 250050
par_maxlinelen_X_I ### Test max line length -X -I par_maxlinelen_X_I ### Test max line length -X -I
par_maxlinelen_X_I 201ecb8ca789cecf39ee914a6d75611b - par_maxlinelen_X_I 88ab30e1d8b7459fddf88986ff282950 -
par_maxlinelen_X_I Chars per line (817788/7): 116826 par_maxlinelen_X_I Chars per line (817788/7): 116826
par_maxlinelen_m_I ### Test max line length -m -I par_maxlinelen_m_I ### Test max line length -m -I
par_maxlinelen_m_I c78bd0799bc23d8946732f8b3ae3c94e - par_maxlinelen_m_I 51736abdee4738369ce04b354d40c887 -
par_maxlinelen_m_I Chars per line (697800/6): 116300 par_maxlinelen_m_I Chars per line (697800/6): 116300
par_nice Check that --nice works par_nice Check that --nice works
par_nice load_10 par_nice load_10

View file

@ -92,6 +92,13 @@ par_do_not_export_PARALLEL_ENV Should give 60k and not overflow
par_do_not_export_PARALLEL_ENV 1 1 60001 par_do_not_export_PARALLEL_ENV 1 1 60001
par_dryrun_timeout_ungroup bug #51039: --dry-run --timeout 1.4m -u breaks par_dryrun_timeout_ungroup bug #51039: --dry-run --timeout 1.4m -u breaks
par_dryrun_timeout_ungroup 1000 2000 8893 par_dryrun_timeout_ungroup 1000 2000 8893
par_eta ### Test of --eta
par_eta 16
par_eta ### Test of --eta with no jobs
par_eta
par_eta Computers / CPU cores / Max jobs to run
par_eta 1:local / 8 / 1
par_eta par_eta ETA: 0s Left: 0 AVG: 0.00s 0
par_exitval_signal ### Test --joblog with exitval and Test --joblog with signal -- timing dependent par_exitval_signal ### Test --joblog with exitval and Test --joblog with signal -- timing dependent
par_exitval_signal exitval=128+6 OK par_exitval_signal exitval=128+6 OK
par_exitval_signal signal OK par_exitval_signal signal OK
@ -226,6 +233,13 @@ par_pipepart_block 17-20
par_pipepart_block 18-20 par_pipepart_block 18-20
par_pipepart_block 19-20 par_pipepart_block 19-20
par_pipepart_block 20-20 par_pipepart_block 20-20
par_progress ### Test of --progress
par_progress 16
par_progress ### Test of --progress with no jobs
par_progress
par_progress Computers / CPU cores / Max jobs to run
par_progress 1:local / 8 / 1
par_progress par_progress 0
par_resume_k ### --resume -k par_resume_k ### --resume -k
par_resume_k job0id par_resume_k job0id
par_resume_k job1id par_resume_k job1id

View file

@ -1,8 +1,9 @@
make[1]: Entering directory '~/privat/parallel/testsuite' make[1]: Entering directory '~/privat/parallel/testsuite'
# || true - because this should not fail if the VM is not running parallel 'cd vagrant/generic/{} && vagrant suspend' ::: centos8 freebsd11 freebsd12 rhel8
VBoxManage controlvm CentOS3-root:centos3 savestate || true ==> default: Saving VM state and suspending execution...
VBoxManage controlvm RedHat9-root:redhat9 savestate || true ==> default: Saving VM state and suspending execution...
VBoxManage controlvm OracleXE savestate || true ==> default: Saving VM state and suspending execution...
==> default: Saving VM state and suspending execution...
make[1]: Leaving directory '~/privat/parallel/testsuite' make[1]: Leaving directory '~/privat/parallel/testsuite'
par_2gb_record_reading ### Trouble reading a record > 2 GB for certain versions of Perl (substr($a,0,2G+1)="fails") par_2gb_record_reading ### Trouble reading a record > 2 GB for certain versions of Perl (substr($a,0,2G+1)="fails")
par_2gb_record_reading ### perl -e $buf=("x"x(2**31))."x"; substr($buf,0,2**31+1)=""; print length $buf par_2gb_record_reading ### perl -e $buf=("x"x(2**31))."x"; substr($buf,0,2**31+1)=""; print length $buf
@ -35,13 +36,49 @@ par_2gb_records_N parallel: Warning: A record was longer than 1690000003. Increa
par_2gb_records_N 8000000008 par_2gb_records_N 8000000008
par_2gb_records_N 1000000000 par_2gb_records_N 1000000000
make[1]: Entering directory '~/privat/parallel/testsuite' make[1]: Entering directory '~/privat/parallel/testsuite'
# Make sure we can reach the virtual machines parallel 'cd vagrant/generic/{} && vagrant up' ::: centos8 freebsd11 freebsd12 rhel8
#sudo ifconfig wlp13s0:0 192.168.1.72 || sudo ifconfig wlan0:0 192.168.1.72 Bringing machine 'default' up with 'virtualbox' provider...
sudo ifconfig enp14s0:0 192.168.1.72 || sudo ifconfig eth0:0 192.168.1.72 ==> default: Checking if box 'generic/rhel8' version '3.0.12' is up to date...
# If they are already running: Don't fail ==> default: Resuming suspended VM...
VBoxManage startvm CentOS3-root:centos3\ Clone2 || VBoxManage controlvm CentOS3-root:centos3\ Clone2 resume || true ==> default: Booting VM...
VBoxManage startvm RedHat9-root:redhat9 || VBoxManage controlvm RedHat9-root:redhat9 resume || true ==> default: Waiting for machine to boot. This may take a few minutes...
Waiting for VM "RedHat9-root:redhat9" to power on... default: SSH address: 127.0.0.1:2203
VM "RedHat9-root:redhat9" has been successfully started. default: SSH username: vagrant
parallel 'ping {} | read' ::: redhat9.tange.dk centos3.tange.dk default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'generic/freebsd12' version '3.0.12' is up to date...
==> default: Resuming suspended VM...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2205
default: SSH username: vagrant
default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'generic/centos8' version '3.0.12' is up to date...
==> default: Resuming suspended VM...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2204
default: SSH username: vagrant
default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'generic/freebsd11' version '3.0.12' is up to date...
==> default: Resuming suspended VM...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2206
default: SSH username: vagrant
default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.
make[1]: Leaving directory '~/privat/parallel/testsuite' make[1]: Leaving directory '~/privat/parallel/testsuite'

View file

@ -88,6 +88,18 @@ par_test_pipe_onall parallel@lo 3
par_test_pipe_onall parallel@lo 1 par_test_pipe_onall parallel@lo 1
par_test_pipe_onall parallel@lo 2 par_test_pipe_onall parallel@lo 2
par_test_pipe_onall parallel@lo 3 par_test_pipe_onall parallel@lo 3
par_timeout_onall ### --timeout --onall on remote machines: 2*slept 1, 2 jobs failed
par_timeout_onall slept 1
par_timeout_onall parallel: Warning: This job was killed because it timed out:
par_timeout_onall parallel: Warning: sleep 8; echo slept 8
par_timeout_onall parallel: Warning: This job was killed because it timed out:
par_timeout_onall parallel: Warning: sleep 9; echo slept 9
par_timeout_onall slept 1
par_timeout_onall parallel: Warning: This job was killed because it timed out:
par_timeout_onall parallel: Warning: sleep 8; echo slept 8
par_timeout_onall parallel: Warning: This job was killed because it timed out:
par_timeout_onall parallel: Warning: sleep 9; echo slept 9
par_timeout_onall jobs failed: 2
par_wd_braces ### Test --wd {} par_wd_braces ### Test --wd {}
par_wd_braces wd1 par_wd_braces wd1
par_wd_braces wd2 par_wd_braces wd2

View file

@ -2,6 +2,8 @@ par_bar_m ### test --bar -m
par_bar_m 0 par_bar_m 0
par_bar_m 50 par_bar_m 50
par_bar_m 100 par_bar_m 100
par_csh_environment_variables_set ### Check $PARALLEL_PID $PARALLEL_SEQ are set in csh
par_csh_environment_variables_set 3
par_keep_order ### Test --keep-order par_keep_order ### Test --keep-order
par_keep_order job0 par_keep_order job0
par_keep_order job1 par_keep_order job1
@ -32,3 +34,5 @@ par_retries_2 ### Test of --retries - it should run 25 jobs in total
par_retries_2 OK par_retries_2 OK
par_retries_4 ### Test of --retries - it should run 49 jobs in total par_retries_4 ### Test of --retries - it should run 49 jobs in total
par_retries_4 OK par_retries_4 OK
par_transfer_special_char_names ### Test --return of weirdly named file
par_transfer_special_char_names aa<${#}" b

View file

@ -304,6 +304,8 @@ parallel: Warning: Only enough file handles to run 2 jobs in parallel.
parallel: Warning: Running 'parallel -j0 -N 2 --pipe parallel -j0' or parallel: Warning: Running 'parallel -j0 -N 2 --pipe parallel -j0' or
parallel: Warning: raising 'ulimit -n' or 'nofile' in /etc/security/limits.conf parallel: Warning: raising 'ulimit -n' or 'nofile' in /etc/security/limits.conf
parallel: Warning: or /proc/sys/fs/file-max may help. parallel: Warning: or /proc/sys/fs/file-max may help.
parallel: Warning: No more file handles.
parallel: Warning: Raising ulimit -n or /etc/security/limits.conf may help.
echo 'bug #34241: --pipe should not spawn unneeded processes - part 2' echo 'bug #34241: --pipe should not spawn unneeded processes - part 2'
bug #34241: --pipe should not spawn unneeded processes - part 2 bug #34241: --pipe should not spawn unneeded processes - part 2
seq 500 | parallel --tmpdir . -j10 --pipe --block 1k --files wc >/dev/null; ls *.par | wc -l; rm *.par; seq 500 | parallel --tmpdir . -j10 --pipe --block 1k --files --dry-run wc >/dev/null; echo No .par should exist; stdout ls *.par seq 500 | parallel --tmpdir . -j10 --pipe --block 1k --files wc >/dev/null; ls *.par | wc -l; rm *.par; seq 500 | parallel --tmpdir . -j10 --pipe --block 1k --files --dry-run wc >/dev/null; echo No .par should exist; stdout ls *.par

View file

@ -1,16 +1,16 @@
echo '### Test of xargs -m command lines > 130k'; seq 1 60000 | parallel -m -j1 echo a{}b{}c | tee >(wc >/tmp/awc$$) >(sort | md5sum) >/tmp/a$$; wait; CHAR=$(cat /tmp/a$$ | wc -c); LINES=$(cat /tmp/a$$ | wc -l); echo "Chars per line:" $(echo "$CHAR/$LINES" | bc); cat /tmp/awc$$; rm /tmp/a$$ /tmp/awc$$ echo '### Test of xargs -m command lines > 130k'; seq 1 60000 | parallel -m -j1 echo a{}b{}c | tee >(wc >/tmp/awc$$) >(sort | md5sum) >/tmp/a$$; wait; CHAR=$(cat /tmp/a$$ | wc -c); LINES=$(cat /tmp/a$$ | wc -l); echo "Chars per line:" $(echo "$CHAR/$LINES" | bc); cat /tmp/awc$$; rm /tmp/a$$ /tmp/awc$$
### Test of xargs -m command lines > 130k ### Test of xargs -m command lines > 130k
c78bd0799bc23d8946732f8b3ae3c94e - 51736abdee4738369ce04b354d40c887 -
Chars per line: 116300 Chars per line: 116300
6 119994 697800 6 119994 697800
echo '### Test of xargs -X command lines > 130k'; seq 1 60000 | parallel -X -j1 echo a{}b{}c | tee >(wc >/tmp/bwc$$) >(sort | (sleep 1; md5sum)) >/tmp/b$$; wait; CHAR=$(cat /tmp/b$$ | wc -c); LINES=$(cat /tmp/b$$ | wc -l); echo "Chars per line:" $(echo "$CHAR/$LINES" | bc); cat /tmp/bwc$$; rm /tmp/b$$ /tmp/bwc$$ echo '### Test of xargs -X command lines > 130k'; seq 1 60000 | parallel -X -j1 echo a{}b{}c | tee >(wc >/tmp/bwc$$) >(sort | (sleep 1; md5sum)) >/tmp/b$$; wait; CHAR=$(cat /tmp/b$$ | wc -c); LINES=$(cat /tmp/b$$ | wc -l); echo "Chars per line:" $(echo "$CHAR/$LINES" | bc); cat /tmp/bwc$$; rm /tmp/b$$ /tmp/bwc$$
### Test of xargs -X command lines > 130k ### Test of xargs -X command lines > 130k
201ecb8ca789cecf39ee914a6d75611b - 88ab30e1d8b7459fddf88986ff282950 -
Chars per line: 116826 Chars per line: 116826
7 60000 817788 7 60000 817788
echo '### Test of xargs -m command lines > 130k'; seq 1 60000 | parallel -k -j1 -m echo | md5sum echo '### Test of xargs -m command lines > 130k'; seq 1 60000 | parallel -k -j1 -m echo | md5sum
### Test of xargs -m command lines > 130k ### Test of xargs -m command lines > 130k
590091fd85dcb98f91c5e89cdddf21ef - e606ff4068f4b48582d3305d39f93caf -
echo '### This causes problems if we kill child processes'; # 2>/dev/null to avoid parallel: Warning: Starting 45 processes took > 2 sec. echo '### This causes problems if we kill child processes'; # 2>/dev/null to avoid parallel: Warning: Starting 45 processes took > 2 sec.
### This causes problems if we kill child processes ### This causes problems if we kill child processes
seq 2 40 | parallel -j 0 seq 1 10 2>/dev/null | sort | md5sum seq 2 40 | parallel -j 0 seq 1 10 2>/dev/null | sort | md5sum

View file

@ -73,8 +73,8 @@ please cite as described in 'parallel --citation'.
echo '### bug #39787: --xargs broken' echo '### bug #39787: --xargs broken'
### bug #39787: --xargs broken ### bug #39787: --xargs broken
nice perl -e 'for(1..30000){print "$_\n"}' | $NICEPAR --xargs -k echo | perl -ne 'print length $_,"\n"' nice perl -e 'for(1..30000){print "$_\n"}' | $NICEPAR --xargs -k echo | perl -ne 'print length $_,"\n"'
131052 131058
37842 37836
echo '### --delay should grow by 3 sec per arg' echo '### --delay should grow by 3 sec per arg'
### --delay should grow by 3 sec per arg ### --delay should grow by 3 sec per arg
stdout /usr/bin/time -f %e parallel --delay 3 true ::: 1 2 | perl -ne '$_ >= 3 and $_ <= 8 and print "OK\n"' stdout /usr/bin/time -f %e parallel --delay 3 true ::: 1 2 | perl -ne '$_ >= 3 and $_ <= 8 and print "OK\n"'

View file

@ -1,120 +1,16 @@
par_big_func 1 2168 52032 par_big_func 1 2124 50976
par_big_func 1 2168 52032 par_big_func 1 1212 29028
par_big_func 1 2168 52032 par_big_func_name 1 1324 31776
par_big_func 1 2168 52032 par_big_func_name 1 1176 28224
par_big_func 1 2168 52032 par_big_var_func_name 1 1324 31776
par_big_func 1 2168 52032 par_big_var_func_name 1 344 8228
par_big_func 1 2168 52032 par_many_args 1 16420 32840
par_big_func 1 2168 52032 par_many_args 1 3580 7160
par_big_func 1 2168 52032 par_many_func 1 1168 28032
par_big_func 1 2168 52032 par_many_func 1 500 11972
par_big_func 1 156 3684 par_many_var 1 1368 32832
par_big_func_name 1 2168 52032 par_many_var 1 300 7172
par_big_func_name 1 2168 52032 par_many_var_big_func 1 1176 28224
par_big_func_name 1 2168 52032 par_many_var_big_func 1 492 11780
par_big_func_name 1 2168 52032 par_many_var_func 1 1768 42432
par_big_func_name 1 2168 52032 par_many_var_func 1 1568 37572
par_big_func_name 1 2168 52032
par_big_func_name 1 2168 52032
par_big_func_name 1 2168 52032
par_big_func_name 1 2168 52032
par_big_func_name 1 2168 52032
par_big_func_name 1 156 3684
par_big_var_func_name 1 2168 52032
par_big_var_func_name 1 2168 52032
par_big_var_func_name 1 2168 52032
par_big_var_func_name 1 2168 52032
par_big_var_func_name 1 2168 52032
par_big_var_func_name 1 2168 52032
par_big_var_func_name 1 2168 52032
par_big_var_func_name 1 2168 52032
par_big_var_func_name 1 2168 52032
par_big_var_func_name 1 2168 52032
par_big_var_func_name 1 156 3684
par_many_args 1 16156 32312
par_many_args 1 16156 32312
par_many_args 1 16156 32312
par_many_args 1 16156 32312
par_many_args 1 16156 32312
par_many_args 1 16156 32312
par_many_args 1 16156 32312
par_many_args 1 16156 32312
par_many_args 1 16156 32312
par_many_args 1 16156 32312
par_many_args 1 16156 32312
par_many_args 1 16156 32312
par_many_args 1 16156 32312
par_many_args 1 16156 32312
par_many_args 1 16156 32312
par_many_args 1 16156 32312
par_many_args 1 3504 7008
par_many_func 1 1260 30240
par_many_func 1 1260 30240
par_many_func 1 1260 30240
par_many_func 1 1260 30240
par_many_func 1 1260 30240
par_many_func 1 1260 30240
par_many_func 1 1260 30240
par_many_func 1 1260 30240
par_many_func 1 1260 30240
par_many_func 1 1260 30240
par_many_func 1 1260 30240
par_many_func 1 1260 30240
par_many_func 1 1260 30240
par_many_func 1 1260 30240
par_many_func 1 1260 30240
par_many_func 1 1260 30240
par_many_func 1 1260 30240
par_many_func 1 416 9924
par_many_var 1 1344 32256
par_many_var 1 1344 32256
par_many_var 1 1344 32256
par_many_var 1 1344 32256
par_many_var 1 1344 32256
par_many_var 1 1344 32256
par_many_var 1 1344 32256
par_many_var 1 1344 32256
par_many_var 1 1344 32256
par_many_var 1 1344 32256
par_many_var 1 1344 32256
par_many_var 1 1344 32256
par_many_var 1 1344 32256
par_many_var 1 1344 32256
par_many_var 1 1344 32256
par_many_var 1 1344 32256
par_many_var 1 332 7908
par_many_var_big_func 1 1304 31296
par_many_var_big_func 1 1304 31296
par_many_var_big_func 1 1304 31296
par_many_var_big_func 1 1304 31296
par_many_var_big_func 1 1304 31296
par_many_var_big_func 1 1304 31296
par_many_var_big_func 1 1304 31296
par_many_var_big_func 1 1304 31296
par_many_var_big_func 1 1304 31296
par_many_var_big_func 1 1304 31296
par_many_var_big_func 1 1304 31296
par_many_var_big_func 1 1304 31296
par_many_var_big_func 1 1304 31296
par_many_var_big_func 1 1304 31296
par_many_var_big_func 1 1304 31296
par_many_var_big_func 1 1304 31296
par_many_var_big_func 1 972 23268
par_many_var_func 1 1260 30240
par_many_var_func 1 1260 30240
par_many_var_func 1 1260 30240
par_many_var_func 1 1260 30240
par_many_var_func 1 1260 30240
par_many_var_func 1 1260 30240
par_many_var_func 1 1260 30240
par_many_var_func 1 1260 30240
par_many_var_func 1 1260 30240
par_many_var_func 1 1260 30240
par_many_var_func 1 1260 30240
par_many_var_func 1 1260 30240
par_many_var_func 1 1260 30240
par_many_var_func 1 1260 30240
par_many_var_func 1 1260 30240
par_many_var_func 1 1260 30240
par_many_var_func 1 1260 30240
par_many_var_func 1 416 9924

View file

@ -109,6 +109,9 @@ vagrant@parallel-server3
echo '### test --filter-hosts with server w/o ssh, non-existing server' echo '### test --filter-hosts with server w/o ssh, non-existing server'
### test --filter-hosts with server w/o ssh, non-existing server ### test --filter-hosts with server w/o ssh, non-existing server
parallel -S 192.168.1.197,8.8.8.8,vagrant@parallel-server1,vagrant@parallel-server2,vagrant@parallel-server3 --filter-hosts --nonall -k --tag echo parallel -S 192.168.1.197,8.8.8.8,vagrant@parallel-server1,vagrant@parallel-server2,vagrant@parallel-server3 --filter-hosts --nonall -k --tag echo
vagrant@parallel-server1
vagrant@parallel-server2
vagrant@parallel-server3
echo '### bug #41964: --controlmaster not seems to reuse OpenSSH connections to the same host' echo '### bug #41964: --controlmaster not seems to reuse OpenSSH connections to the same host'
### bug #41964: --controlmaster not seems to reuse OpenSSH connections to the same host ### bug #41964: --controlmaster not seems to reuse OpenSSH connections to the same host
(parallel -S vagrant@parallel-server1 true ::: {1..20}; echo No --controlmaster - finish last) & (parallel -M -S vagrant@parallel-server1 true ::: {1..20}; echo With --controlmaster - finish first) & wait (parallel -S vagrant@parallel-server1 true ::: {1..20}; echo No --controlmaster - finish last) & (parallel -M -S vagrant@parallel-server1 true ::: {1..20}; echo With --controlmaster - finish first) & wait
@ -124,13 +127,3 @@ echo '### test --workdir . in $HOME'
OK OK
echo '### TODO: test --filter-hosts proxied through the one host' echo '### TODO: test --filter-hosts proxied through the one host'
### TODO: test --filter-hosts proxied through the one host ### TODO: test --filter-hosts proxied through the one host
echo '### bug #43358: shellshock breaks exporting functions using --env'
### bug #43358: shellshock breaks exporting functions using --env
echo shellshock-hardened to shellshock-hardened; funky() { echo Function $1; }; export -f funky; parallel --env funky -S parallel@localhost funky ::: shellshock-hardened
shellshock-hardened to shellshock-hardened
Function shellshock-hardened
echo '2bug #43358: shellshock breaks exporting functions using --env'
2bug #43358: shellshock breaks exporting functions using --env
echo shellshock-hardened to non-shellshock-hardened; funky() { echo Function $1; }; export -f funky; parallel --env funky -S centos3.tange.dk funky ::: non-shellshock-hardened
shellshock-hardened to non-shellshock-hardened
Function non-shellshock-hardened

View file

@ -1425,4 +1425,4 @@ C
echo A echo A
echo B echo B
echo C echo C
8 7

View file

@ -1,10 +1,16 @@
### These tests requires VirtualBox running with the following images par_shellshock ### bug #43358: shellshock breaks exporting functions using --env
tange@redhat9 par_shellshock shellshock-hardened to shellshock-hardened
tange@centos3 par_shellshock Function shellshock-hardened
tange@centos5 par_shellshock 2bug #43358: shellshock breaks exporting functions using --env
tange@freebsd7 par_shellshock shellshock-hardened to non-shellshock-hardened
### bug #37589: Red Hat 9 (Shrike) perl v5.8.0 built for i386-linux-thread-multi error par_shellshock parallel: Warning: Could not figure out number of cpus on centos3 (). Using 1.
centos3.tange.dk OK_if_no_perl_warnings par_shellshock Function non-shellshock-hardened
centos5.tange.dk OK_if_no_perl_warnings par_warning_on_centos3 ### bug #37589: Red Hat 9 (Shrike) perl v5.8.0 built for i386-linux-thread-multi error
freebsd7.tange.dk OK_if_no_perl_warnings par_warning_on_centos3 vagrant@centos3 /usr/local/bin/parallel-20120822 Bareword found where operator expected at /tmp/parallel-20120822 line 1249, near "$Global::original_stderr init_progress"
redhat9.tange.dk OK_if_no_perl_warnings par_warning_on_centos3 vagrant@centos3 /usr/local/bin/parallel-20120822 (Missing operator before init_progress?)
par_warning_on_centos3 vagrant@centos3 /usr/local/bin/parallel-20120822 Bareword found where operator expected at /tmp/parallel-20120822 line 1294, near "$Global::original_stderr init_progress"
par_warning_on_centos3 vagrant@centos3 /usr/local/bin/parallel-20120822 (Missing operator before init_progress?)
par_warning_on_centos3 vagrant@centos3 /usr/local/bin/parallel-20120822 Old_must_fail_New_must_be_OK
par_warning_on_centos3 vagrant@centos3 /usr/local/bin/parallel Old_must_fail_New_must_be_OK
par_warning_on_centos3 vagrant@rhel8 /usr/local/bin/parallel-20120822 Old_must_fail_New_must_be_OK
par_warning_on_centos3 vagrant@rhel8 /usr/local/bin/parallel Old_must_fail_New_must_be_OK

View file

@ -1,28 +0,0 @@
echo '### Test of --eta'
### Test of --eta
seq 1 10 | stdout parallel --eta "sleep 1; echo {}" | wc -l
16
echo '### Test of --eta with no jobs'
### Test of --eta with no jobs
stdout parallel --eta "sleep 1; echo {}" < /dev/null
Computers / CPU cores / Max jobs to run
1:local / 8 / 1
ETA: 0s Left: 0 AVG: 0.00s 0
echo '### Test of --progress'
### Test of --progress
seq 1 10 | stdout parallel --progress "sleep 1; echo {}" | wc -l
16
echo '### Test of --progress with no jobs'
### Test of --progress with no jobs
stdout parallel --progress "sleep 1; echo {}" < /dev/null
Computers / CPU cores / Max jobs to run
1:local / 8 / 1
0
echo '### --timeout --onall on remote machines: 2*slept 1, 2 jobs failed'
### --timeout --onall on remote machines: 2*slept 1, 2 jobs failed
parallel -j0 --timeout 6 --onall -S localhost,$SSHLOGIN1 'sleep {}; echo slept {}' ::: 1 8 9 ; echo jobs failed: $?
slept 1
slept 1
jobs failed: 2

View file

@ -1,13 +0,0 @@
echo '### Test --return of weirdly named file'
### Test --return of weirdly named file
stdout parallel --return {} -vv -S parallel\@parallel-server1 echo '>'{} ::: 'aa<${#}" b' | perl -pe 's/\S*parallel-server\S*/one-server/;s:[a-z+=/\\0-9]{500,}:base64:i;'; rm 'aa<${#}" b'
ssh -l parallel one-server -- exec 'perl -e '"'"'$ENV{"PARALLEL_PID"}="XXXXX";$ENV{"PARALLEL_SEQ"}="1";$ENV{"PARALLEL_SSHLOGIN"}="parallel\@parallel-server1";$ENV{"PARALLEL_SSHHOST"}="parallel-server1";$ENV{"PARALLEL_JOBSLOT"}="1";$bashfunc = "";@ARGV="echo >'"'"'"'"'"'"'"'"'aa<\${#}\" b'"'"'"'"'"'"'"'"'";$shell="$ENV{SHELL}";$tmpdir="/tmp/test61-tmpdir";$nice=0;do{$ENV{PARALLEL_TMP}=$tmpdir."/par".join"",map{(0..9,"a".."z","A".."Z")[rand(62)]}(1..5);}while(-e$ENV{PARALLEL_TMP});$SIG{CHLD}=sub{$done=1;};$pid=fork;unless($pid){eval{setpgrp};eval{setpriority(0,0,$nice)};exec$shell,"-c",($bashfunc."@ARGV");die"exec:$!\n";}do{$s=$s<1?0.001+$s*1.03:$s;select(undef,undef,undef,$s);}until($done||getppid==1);kill(SIGHUP,-${pid})unless$done;wait;exit($?&127?128+($?&127):1+$?>>8)'"'";_EXIT_status=$?; mkdir -p ./. && rsync --protocol 30 --rsync-path='cd ././.; rsync' -rlDzR -e'ssh -l parallel' parallel-server1:"'"'./aa<${#}" b'"'" ./.;exit $_EXIT_status;
echo '### Test if remote login shell is csh'
### Test if remote login shell is csh
stdout parallel -k -vv -S csh@localhost 'echo $PARALLEL_PID $PARALLEL_SEQ {}| wc -w' ::: a b c | perl -pe 's/\S*parallel-server\S*/one-server/;s:[a-z+=/\\0-9]{500,}:base64:i;'
ssh -l csh localhost -- exec 'perl -e '"'"'$ENV{"PARALLEL_PID"}="XXXXX";$ENV{"PARALLEL_SEQ"}="1";$ENV{"PARALLEL_SSHLOGIN"}="csh\@localhost";$ENV{"PARALLEL_SSHHOST"}="localhost";$ENV{"PARALLEL_JOBSLOT"}="1";$bashfunc = "";@ARGV="echo \$PARALLEL_PID \$PARALLEL_SEQ a| wc -w";$shell="$ENV{SHELL}";$tmpdir="/tmp/test61-tmpdir";$nice=0;do{$ENV{PARALLEL_TMP}=$tmpdir."/par".join"",map{(0..9,"a".."z","A".."Z")[rand(62)]}(1..5);}while(-e$ENV{PARALLEL_TMP});$SIG{CHLD}=sub{$done=1;};$pid=fork;unless($pid){eval{setpgrp};eval{setpriority(0,0,$nice)};exec$shell,"-c",($bashfunc."@ARGV");die"exec:$!\n";}do{$s=$s<1?0.001+$s*1.03:$s;select(undef,undef,undef,$s);}until($done||getppid==1);kill(SIGHUP,-${pid})unless$done;wait;exit($?&127?128+($?&127):1+$?>>8)'"'";
3
ssh -l csh localhost -- exec 'perl -e '"'"'$ENV{"PARALLEL_PID"}="XXXXX";$ENV{"PARALLEL_SEQ"}="2";$ENV{"PARALLEL_SSHLOGIN"}="csh\@localhost";$ENV{"PARALLEL_SSHHOST"}="localhost";$ENV{"PARALLEL_JOBSLOT"}="2";$bashfunc = "";@ARGV="echo \$PARALLEL_PID \$PARALLEL_SEQ b| wc -w";$shell="$ENV{SHELL}";$tmpdir="/tmp/test61-tmpdir";$nice=0;do{$ENV{PARALLEL_TMP}=$tmpdir."/par".join"",map{(0..9,"a".."z","A".."Z")[rand(62)]}(1..5);}while(-e$ENV{PARALLEL_TMP});$SIG{CHLD}=sub{$done=1;};$pid=fork;unless($pid){eval{setpgrp};eval{setpriority(0,0,$nice)};exec$shell,"-c",($bashfunc."@ARGV");die"exec:$!\n";}do{$s=$s<1?0.001+$s*1.03:$s;select(undef,undef,undef,$s);}until($done||getppid==1);kill(SIGHUP,-${pid})unless$done;wait;exit($?&127?128+($?&127):1+$?>>8)'"'";
3
ssh -l csh localhost -- exec 'perl -e '"'"'$ENV{"PARALLEL_PID"}="XXXXX";$ENV{"PARALLEL_SEQ"}="3";$ENV{"PARALLEL_SSHLOGIN"}="csh\@localhost";$ENV{"PARALLEL_SSHHOST"}="localhost";$ENV{"PARALLEL_JOBSLOT"}="3";$bashfunc = "";@ARGV="echo \$PARALLEL_PID \$PARALLEL_SEQ c| wc -w";$shell="$ENV{SHELL}";$tmpdir="/tmp/test61-tmpdir";$nice=0;do{$ENV{PARALLEL_TMP}=$tmpdir."/par".join"",map{(0..9,"a".."z","A".."Z")[rand(62)]}(1..5);}while(-e$ENV{PARALLEL_TMP});$SIG{CHLD}=sub{$done=1;};$pid=fork;unless($pid){eval{setpgrp};eval{setpriority(0,0,$nice)};exec$shell,"-c",($bashfunc."@ARGV");die"exec:$!\n";}do{$s=$s<1?0.001+$s*1.03:$s;select(undef,undef,undef,$s);}until($done||getppid==1);kill(SIGHUP,-${pid})unless$done;wait;exit($?&127?128+($?&127):1+$?>>8)'"'";
3