mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-21 21:47:54 +00:00
Allow $TMPDIR to contain spaces and newlines.
This commit is contained in:
parent
4307949091
commit
e6fe5fafcd
|
@ -278,6 +278,8 @@ New in this release:
|
|||
|
||||
News about GNU Parallel:
|
||||
|
||||
https://www.redhat.com/sysadmin/perl-scripts
|
||||
|
||||
<<>>
|
||||
|
||||
GNU Parallel - For people who live life in the parallel lane.
|
||||
|
|
81
src/parallel
81
src/parallel
|
@ -252,8 +252,8 @@ sub pipe_tee_setup() {
|
|||
# (rm fifo2; grep 2) < fifo2
|
||||
# (rm fifo3; grep 3) < fifo3
|
||||
# Remove the tmpfifo as soon as it is open
|
||||
@Global::cat_prepends = map { "(rm $_;" } @fifos;
|
||||
@Global::cat_appends = map { ") < $_" } @fifos;
|
||||
@Global::cat_prepends = map { "(rm $_;" } shell_quote(@fifos);
|
||||
@Global::cat_appends = map { ") < $_" } shell_quote(@fifos);
|
||||
}
|
||||
|
||||
|
||||
|
@ -578,7 +578,7 @@ sub pipe_shard_setup() {
|
|||
# The PERL_HASH_SEED must be the same for all sharders
|
||||
# so B::hash will return the same value for any given input
|
||||
$ENV{'PERL_HASH_SEED'} = $$;
|
||||
exec qw(parallel --block 100k -q --pipe -j), $njobs,
|
||||
exec qw(parallel -0 --block 100k -q --pipe -j), $njobs,
|
||||
qw(--roundrobin -u perl -e), $script, ($opt::colsep || ","),
|
||||
$col, $perlexpr, '{}', (map { (':::+', @{$_}) } @parcatfifos);
|
||||
}
|
||||
|
@ -591,7 +591,9 @@ sub pipe_shard_setup() {
|
|||
::error("'parcat' must be in path.");
|
||||
::wait_and_exit(255);
|
||||
}
|
||||
@Global::cat_prepends = map { "perl -e $parcat @$_ | " } @parcatfifos;
|
||||
@Global::cat_prepends =
|
||||
map { "perl -e $parcat ".
|
||||
join(" ",shell_quote(@$_))." | "} @parcatfifos;
|
||||
}
|
||||
|
||||
sub pipe_part_files(@) {
|
||||
|
@ -3301,7 +3303,7 @@ sub read_options() {
|
|||
} else {
|
||||
@options = shift @ARGV;
|
||||
}
|
||||
my $script = Q(Q(shift @ARGV));
|
||||
my $script = Q(Q(shift @ARGV)); # TODO - test if script = " "
|
||||
my @args = map{ Q($_) } @ARGV;
|
||||
# exec myself to split $ARGV[0] into separate fields
|
||||
exec "$0 --_pipe-means-argfiles @options @parser $script ".
|
||||
|
@ -5250,23 +5252,24 @@ sub onall($@) {
|
|||
my $joblog = tmp_joblog($opt::joblog);
|
||||
if($joblog) {
|
||||
push @joblogs, $joblog;
|
||||
$joblog = "--joblog $joblog";
|
||||
$joblog = "--joblog ".::Q($joblog);
|
||||
}
|
||||
my $quad = $opt::arg_file_sep || "::::";
|
||||
# If PARALLEL_ENV is set: Pass it on
|
||||
my $penv=$Global::parallel_env ?
|
||||
"PARALLEL_ENV=".Q($Global::parallel_env) :
|
||||
'';
|
||||
my $qsshlogin = Q($sshlogin->string());
|
||||
::debug("init", "$penv $0 $suboptions -j1 $joblog ",
|
||||
((defined $opt::tag) ?
|
||||
"--tagstring ".Q($sshlogin->string()) : ""),
|
||||
" -S ", Q($sshlogin->string())," ",
|
||||
join(" ",shell_quote(@command))," $quad @argfiles\n");
|
||||
((defined $opt::tag) ?
|
||||
"--tagstring ".$qsshlogin : ""),
|
||||
" -S $qsshlogin ",
|
||||
join(" ",shell_quote(@command,$quad,@argfiles)),"\n");
|
||||
print $parallel_fh "$penv $0 $suboptions -j1 $joblog ",
|
||||
((defined $opt::tag) ?
|
||||
"--tagstring ".Q($sshlogin->string()) : ""),
|
||||
" -S ", Q($sshlogin->string())," ",
|
||||
join(" ",shell_quote(@command))," $quad @argfiles\0";
|
||||
"--tagstring ".$qsshlogin : ""),
|
||||
" -S $qsshlogin ",
|
||||
join(" ",shell_quote(@command,$quad,@argfiles)),"\0";
|
||||
}
|
||||
close $parallel_fh;
|
||||
$Global::exitstatus = $? >> 8;
|
||||
|
@ -6015,10 +6018,11 @@ sub tmpname($) {
|
|||
my $name = shift;
|
||||
my($tmpname);
|
||||
if(not -w $ENV{'TMPDIR'}) {
|
||||
my $qtmp = ::Q($ENV{'TMPDIR'});
|
||||
if(not -e $ENV{'TMPDIR'}) {
|
||||
::error("Tmpdir '$ENV{'TMPDIR'}' does not exist.","Try 'mkdir $ENV{'TMPDIR'}'");
|
||||
::error("Tmpdir $qtmp does not exist.","Try: mkdir -p $qtmp");
|
||||
} else {
|
||||
::error("Tmpdir '$ENV{'TMPDIR'}' is not writable.","Try 'chmod +w $ENV{'TMPDIR'}'");
|
||||
::error("Tmpdir $qtmp is not writable.","Try: chmod +w $qtmp");
|
||||
}
|
||||
::wait_and_exit(255);
|
||||
}
|
||||
|
@ -7078,6 +7082,7 @@ sub sshcmd($) {
|
|||
# [sshpass -e] ssh -p port -l user
|
||||
if($self->{'password'}) { push @local, "sshpass -e"; }
|
||||
# [ssh] -p port -l user
|
||||
# TODO sshpass + space
|
||||
push @local, $self->{'sshcommand'};
|
||||
# [-p port] -l user
|
||||
if($self->{'port'}) { push @local, '-p',$self->{'port'}; }
|
||||
|
@ -7086,7 +7091,7 @@ sub sshcmd($) {
|
|||
if($opt::controlmaster) {
|
||||
# Use control_path to make ssh faster
|
||||
my $control_path = $self->control_path_dir()."/ssh-%r@%h:%p";
|
||||
push @local, "-S", $control_path;
|
||||
|
||||
if(not $self->{'control_path'}{$control_path}++) {
|
||||
# Master is not running for this control_path
|
||||
# Start it
|
||||
|
@ -7094,6 +7099,7 @@ sub sshcmd($) {
|
|||
if($pid) {
|
||||
$Global::sshmaster{$pid} ||= 1;
|
||||
} else {
|
||||
push @local, "-S", $control_path;
|
||||
$SIG{'TERM'} = undef;
|
||||
# Run a sleep that outputs data, so it will discover
|
||||
# if the ssh connection closes.
|
||||
|
@ -7107,6 +7113,7 @@ sub sshcmd($) {
|
|||
"perl", "-e", $sleep);
|
||||
}
|
||||
}
|
||||
push @local, "-S", ::Q($control_path);
|
||||
}
|
||||
|
||||
return "@local";
|
||||
|
@ -7454,7 +7461,9 @@ sub swap_activity($) {
|
|||
my $file = $self->{'swap_activity_file'};
|
||||
my ($dummy_fh, $tmpfile) = ::tmpfile(SUFFIX => ".swp");
|
||||
::debug("swap", "\n", $swap_activity, "\n");
|
||||
::qqx("($swap_activity > $tmpfile && mv $tmpfile $file || rm $tmpfile &)");
|
||||
my $qtmp = ::Q($tmpfile);
|
||||
my $qfile = ::Q($file);
|
||||
::qqx("($swap_activity > $qtmp && mv $qtmp $qfile || rm $qtmp &)");
|
||||
}
|
||||
return $self->{'swap_activity'};
|
||||
}
|
||||
|
@ -9376,7 +9385,8 @@ sub filter_through_compress($) {
|
|||
# it is known that output file is opened,
|
||||
# thus output file can then be removed by the decompressor.
|
||||
# empty_input_wrapper is needed for plzip
|
||||
my $wpid = open(my $fdw,"|-", "(echo > $comfile; ".
|
||||
my $qcom = ::Q($comfile);
|
||||
my $wpid = open(my $fdw,"|-", "(echo > $qcom; ".
|
||||
empty_input_wrapper($opt::compress_program).") >".
|
||||
::Q($self->fh($fdno,'name'))) || die $?;
|
||||
$self->set_fh($fdno,'w',$fdw);
|
||||
|
@ -9855,9 +9865,9 @@ sub wrapped($) {
|
|||
# Prepend 'cat > $PARALLEL_TMP;'
|
||||
# Append 'unlink $PARALLEL_TMP without affecting $?'
|
||||
$command =
|
||||
'cat > $PARALLEL_TMP;'.
|
||||
'cat > "$PARALLEL_TMP";'.
|
||||
$command.";". postpone_exit_and_cleanup().
|
||||
'$PARALLEL_TMP';
|
||||
'"$PARALLEL_TMP"';
|
||||
} elsif($opt::fifo) {
|
||||
# Prepend fifo-wrapper. In essence:
|
||||
# mkfifo {}
|
||||
|
@ -9867,7 +9877,7 @@ sub wrapped($) {
|
|||
# wait; rm {}
|
||||
# without affecting $?
|
||||
$command = fifo_wrap(). " ".
|
||||
$Global::shell. " ". ::Q($command). ' $PARALLEL_TMP'. ';';
|
||||
$Global::shell. " ". ::Q($command). ' "$PARALLEL_TMP"'. ';';
|
||||
}
|
||||
# Wrap with ssh + tranferring of files
|
||||
$command = $self->sshlogin_wrap($command);
|
||||
|
@ -10827,6 +10837,7 @@ sub interactive_start($) {
|
|||
|
||||
{
|
||||
my $tmuxsocket;
|
||||
my $qsocket;
|
||||
|
||||
sub tmux_wrap($) {
|
||||
# Wrap command with tmux for session pPID
|
||||
|
@ -10837,7 +10848,6 @@ sub interactive_start($) {
|
|||
# Temporary file name. Used for fifo to communicate exit val
|
||||
my $tmpfifo = ::tmpname("tmx");
|
||||
$self->add_rm($tmpfifo);
|
||||
|
||||
if(length($tmpfifo) >=100) {
|
||||
::error("tmux does not support sockets with path > 100.");
|
||||
::wait_and_exit(255);
|
||||
|
@ -10888,36 +10898,36 @@ sub interactive_start($) {
|
|||
$ENV{'PARALLEL_TMUX'} ||= "tmux";
|
||||
if(not $tmuxsocket) {
|
||||
$tmuxsocket = ::tmpname("tms");
|
||||
::debug("tmux", "Start: $ENV{'PARALLEL_TMUX'} -S $tmuxsocket attach");
|
||||
$qsocket = ::Q($tmuxsocket);
|
||||
::debug("tmux", "Start: $ENV{'PARALLEL_TMUX'} -S $qsocket attach");
|
||||
if($opt::fg) {
|
||||
if(not fork) {
|
||||
# Run tmux in the foreground
|
||||
# Wait for the socket to appear
|
||||
while (not -e $tmuxsocket) { }
|
||||
`$ENV{'PARALLEL_TMUX'} -S $tmuxsocket attach`;
|
||||
`$ENV{'PARALLEL_TMUX'} -S $qsocket attach`;
|
||||
exit;
|
||||
}
|
||||
}
|
||||
::status("See output with: $ENV{'PARALLEL_TMUX'} -S $tmuxsocket attach");
|
||||
::status("See output with: $ENV{'PARALLEL_TMUX'} -S $qsocket attach");
|
||||
}
|
||||
$tmux = "sh -c '".
|
||||
$tmux = "sh -c ".::Q(
|
||||
$ENV{'PARALLEL_TMUX'}.
|
||||
" -S $tmuxsocket new-session -s p$$ -d \"sleep .2\" >/dev/null 2>&1';" .
|
||||
" -S $qsocket new-session -s p$$ -d \"sleep .2\" >/dev/null 2>&1").";" .
|
||||
$ENV{'PARALLEL_TMUX'}.
|
||||
" -S $tmuxsocket new-window -t p$$ -n $title";
|
||||
" -S $qsocket new-window -t p$$ -n $title";
|
||||
|
||||
::debug("tmux", "title len:", $l_tit, " act ", $l_act, " max ",
|
||||
$Limits::Command::line_max_len, " tot ",
|
||||
$l_tot, "\n");
|
||||
|
||||
return "mkfifo $tmpfifo && $tmux ".
|
||||
return "mkfifo ".::Q($tmpfifo)." && $tmux ".
|
||||
# Run in tmux
|
||||
::Q
|
||||
(
|
||||
"(".$actual_command.');'.
|
||||
# The triple print is needed - otherwise the testsuite fails
|
||||
q[ perl -e 'while($t++<3){ print $ARGV[0],"\n" }' $?h/$status >> ].
|
||||
$tmpfifo."&".
|
||||
::Q($tmpfifo)."&".
|
||||
"echo $title; echo \007Job finished at: `date`;sleep 10"
|
||||
).
|
||||
# Run outside tmux
|
||||
|
@ -10925,7 +10935,7 @@ sub interactive_start($) {
|
|||
# If csh the first will be 0h, so use the second as exit value.
|
||||
# Otherwise just use the first value as exit value.
|
||||
q{; exec perl -e '$/="/";$_=<>;$c=<>;unlink $ARGV; }.
|
||||
q{/(\d+)h/ and exit($1);exit$c' }.$tmpfifo;
|
||||
q{/(\d+)h/ and exit($1);exit$c' }.::Q($tmpfifo);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12159,7 +12169,7 @@ sub slot($) {
|
|||
$Global::JobQueue->{'commandlinequeue'}->{'arg_queue'}->get();
|
||||
# $PARALLEL_TMP will point to a tempfile that will be used as {}
|
||||
$Global::JobQueue->{'commandlinequeue'}->{'arg_queue'}->
|
||||
unget([Arg->new('$PARALLEL_TMP')]);
|
||||
unget([Arg->new('"$PARALLEL_TMP"')]);
|
||||
}
|
||||
while (not $self->{'arg_queue'}->empty()) {
|
||||
$next_arg = $self->{'arg_queue'}->get();
|
||||
|
@ -13385,9 +13395,10 @@ sub tmux_length($) {
|
|||
my @out;
|
||||
for my $l (1, 2020, 16320, 30000, $len) {
|
||||
my $tmpfile = ::tmpname("tms");
|
||||
my $qtmp = ::Q($tmpfile);
|
||||
my $tmuxcmd = $ENV{'PARALLEL_TMUX'}.
|
||||
" -S $tmpfile new-session -d -n echo $l".
|
||||
("t"x$l). " && echo $l; rm -f $tmpfile";
|
||||
" -S $qtmp new-session -d -n echo $l".
|
||||
("t"x$l). " && echo $l; rm -f $qtmp";
|
||||
push @out, ::qqx($tmuxcmd);
|
||||
::rm($tmpfile);
|
||||
}
|
||||
|
|
|
@ -3790,6 +3790,72 @@ fails.
|
|||
https://github.com/aaronriekenberg/rust-parallel
|
||||
(Last checked: 2023-01)
|
||||
|
||||
|
||||
=head2 DIFFERENCES BETWEEN parallelium AND GNU Parallel
|
||||
|
||||
Summary (see legend above):
|
||||
|
||||
=over
|
||||
|
||||
=item - I2 - - - - -
|
||||
|
||||
=item M1 - - - - M6
|
||||
|
||||
=item O1 - O3 - - - - N/A - -
|
||||
|
||||
=item E1 - - E4 - - -
|
||||
|
||||
=item - - - - - - - - -
|
||||
|
||||
=item - -
|
||||
|
||||
=back
|
||||
|
||||
B<parallelium> merges standard output (stdout) and standard error
|
||||
(stderr). The maximal output of a command is 8192 bytes. Bigger output
|
||||
makes B<parallelium> go into an infinite loop.
|
||||
|
||||
In the input file for B<parallelium> you can define a tag, so that you
|
||||
can select to run only these commands. A bit like a target in a
|
||||
Makefile.
|
||||
|
||||
Progress is printed on standard output (stdout) prepended with '#'
|
||||
with similar information as GNU B<parallel>'s B<--bar>.
|
||||
|
||||
=head3 EXAMPLES
|
||||
|
||||
$ cat testjobs.txt
|
||||
#tag common sleeps classA
|
||||
(sleep 4.495;echo "job 000")
|
||||
:
|
||||
(sleep 2.587;echo "job 016")
|
||||
|
||||
#tag common sleeps classB
|
||||
(sleep 0.218;echo "job 017")
|
||||
:
|
||||
(sleep 2.269;echo "job 040")
|
||||
|
||||
#tag common sleeps classC
|
||||
(sleep 2.586;echo "job 041")
|
||||
:
|
||||
(sleep 1.626;echo "job 099")
|
||||
|
||||
#tag lasthalf, sleeps, classB
|
||||
(sleep 1.540;echo "job 100")
|
||||
:
|
||||
(sleep 2.001;echo "job 199")
|
||||
|
||||
1$ parallelium -f testjobs.txt -l logdir -t classB,classC
|
||||
|
||||
1$ cat testjobs.txt |
|
||||
parallel --plus --results logdir/testjobs.txt_{0#}.output \
|
||||
'{= if(/^#tag /) { @tag = split/,|\s+/ }
|
||||
(grep /^(classB|classC)$/, @tag) or skip =}'
|
||||
|
||||
https://github.com/beomagi/parallelium
|
||||
(Last checked: 2023-01)
|
||||
|
||||
|
||||
=head2 Todo
|
||||
|
||||
http://code.google.com/p/push/ (cannot compile)
|
||||
|
|
15
src/parsort
15
src/parsort
|
@ -159,12 +159,19 @@ sub sort_files {
|
|||
# The commands split at \n (or \0)
|
||||
# and there will be at least one for each CPU thread
|
||||
my @subopt = $opt::zero_terminated ? qw(--recend "\0") : ();
|
||||
# $uniq is needed because @files could contain \n
|
||||
my $uniq = join "", map { (0..9,"a".."z","A".."Z")[rand(62)] } (1..20);
|
||||
open(my $par,"-|",qw(parallel), @subopt,
|
||||
qw(--pipepart --block -1 --dryrun -vv sort),
|
||||
@Global::sortoptions, '::::', @files) || die;
|
||||
my @cmd = merge(<$par>);
|
||||
@Global::sortoptions, $uniq, '::::', @files) || die;
|
||||
# Generated commands:
|
||||
# <file perl-catter | (sort ... $uniq )
|
||||
# Use $uniq to split into commands
|
||||
# (We cannot use \n because 'file' may contain newline)
|
||||
my @cmd = map { "$_)\n" } split(/$uniq[)]\n/, join("",<$par>));
|
||||
debug(1,@cmd);
|
||||
close $par;
|
||||
debug(@cmd);
|
||||
@cmd = merge(@cmd);
|
||||
# The command uses <(...) so it is incompatible with /bin/sh
|
||||
open(my $bash,"|-","bash") || die;
|
||||
print $bash @cmd;
|
||||
|
@ -186,7 +193,7 @@ sub sort_stdin {
|
|||
if(fork) {
|
||||
} else {
|
||||
my @subopt = $opt::zero_terminated ? qw(--recend "\0") : ();
|
||||
exec(qw(parallel -j), $numthreads, @subopt,
|
||||
exec(qw(parallel -0 -j), $numthreads, @subopt,
|
||||
# 286k is the best mean value after testing 250..350
|
||||
qw(--block 286k --pipe --roundrobin cat > {} :::),@fifos);
|
||||
}
|
||||
|
|
57
src/sql
57
src/sql
|
@ -523,6 +523,27 @@ use Getopt::Long;
|
|||
use strict;
|
||||
use File::Temp qw/tempfile tempdir/;
|
||||
|
||||
sub shell_quote($) {
|
||||
# Quote for other shells (Bourne compatibles)
|
||||
# Inputs:
|
||||
# $string = string to be quoted
|
||||
# Returns:
|
||||
# $shell_quoted = string quoted as needed by the shell
|
||||
my $s = $_[0];
|
||||
if($s =~ /[^-_.+a-z0-9\/]/i) {
|
||||
$s =~ s/'/'"'"'/g; # "-quote single quotes
|
||||
$s = "'$s'"; # '-quote entire string
|
||||
$s =~ s/^''//; # Remove unneeded '' at ends
|
||||
$s =~ s/''$//; # (faster than s/^''|''$//g)
|
||||
return $s;
|
||||
} elsif ($s eq "") {
|
||||
return "''";
|
||||
} else {
|
||||
# No quoting needed
|
||||
return $s;
|
||||
}
|
||||
}
|
||||
|
||||
parse_options();
|
||||
|
||||
my $pass_through_options = (defined $::opt_p) ? join(" ",@{$::opt_p}) : "";
|
||||
|
@ -587,29 +608,11 @@ if($dburl{'query'}) {
|
|||
($fh,$queryfile) = tempfile(SUFFIX => ".sql");
|
||||
print $fh $dburl{'query'},"\n";
|
||||
close $fh;
|
||||
$batch_command = "(cat $queryfile;rm $queryfile; cat) | $batch_command";
|
||||
my $qfile = shell_quote($queryfile);
|
||||
$batch_command = "(cat $qfile;rm $qfile; cat) | $batch_command";
|
||||
}
|
||||
|
||||
sub shell_quote($) {
|
||||
# Quote for other shells (Bourne compatibles)
|
||||
# Inputs:
|
||||
# $string = string to be quoted
|
||||
# Returns:
|
||||
# $shell_quoted = string quoted as needed by the shell
|
||||
my $s = $_[0];
|
||||
if($s =~ /[^-_.+a-z0-9\/]/i) {
|
||||
$s =~ s/'/'"'"'/g; # "-quote single quotes
|
||||
$s = "'$s'"; # '-quote entire string
|
||||
$s =~ s/^''//; # Remove unneeded '' at ends
|
||||
$s =~ s/''$//; # (faster than s/^''|''$//g)
|
||||
return $s;
|
||||
} elsif ($s eq "") {
|
||||
return "''";
|
||||
} else {
|
||||
# No quoting needed
|
||||
return $s;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
do {
|
||||
if(@ARGV) {
|
||||
|
@ -776,11 +779,11 @@ sub mysql_commands {
|
|||
close $credential_fh;
|
||||
|
||||
# Prepend with a remover of the credential tempfile
|
||||
# -C: Compression if both ends support it
|
||||
my $qtmp = shell_quote($tmp);
|
||||
$batch_command =
|
||||
"((sleep 1; rm $tmp) & ".
|
||||
"mysql --defaults-extra-file=$tmp -C $pass_through_options ".
|
||||
"$no_headers $html $ssl $host $user $port $database)";
|
||||
"((sleep 1; rm $qtmp) & ".
|
||||
"mysql --defaults-extra-file=$qtmp $pass_through_options ".
|
||||
"$no_headers $html $ssl $host $user $port $database)";
|
||||
$interactive_command = $batch_command;
|
||||
return($batch_command,$interactive_command);
|
||||
}
|
||||
|
@ -1109,7 +1112,9 @@ sub get_alias {
|
|||
"$path/dburl.aliases", "$path/dburl.aliases.dist");
|
||||
for my $alias_file (@search) {
|
||||
if(-r $alias_file) {
|
||||
push @urlalias, `cat "$alias_file"`;
|
||||
open(my $fh, "<", $alias_file) || die;
|
||||
push @urlalias, <$fh>;
|
||||
close $fh;
|
||||
}
|
||||
}
|
||||
my ($alias_part,$rest) = $alias=~/(:\w*)(.*)/;
|
||||
|
|
|
@ -16,15 +16,27 @@ export TIMEOUT=$MAX_SEC_PER_TEST
|
|||
run_once() {
|
||||
script=$1
|
||||
base=`basename "$script" .sh`
|
||||
diff -Naur wanted-results/"$base" actual-results/"$base" >/dev/null ||
|
||||
bash "$script" | perl -pe 's:'$HOME':~:g' > actual-results/"$base"
|
||||
if diff -Naur wanted-results/"$base" actual-results/"$base" >/dev/null; then
|
||||
true skip
|
||||
else
|
||||
(
|
||||
testsuitedir=$(pwd)
|
||||
export testsuitedir
|
||||
cd "$TMPDIR"
|
||||
bash "$testsuitedir/$script" |
|
||||
perl -pe 's:'$HOME':~:g' > "$testsuitedir"/actual-results/"$base"
|
||||
)
|
||||
fi
|
||||
}
|
||||
export -f run_once
|
||||
|
||||
run_test() {
|
||||
script="$1"
|
||||
base=`basename "$script" .sh`
|
||||
export TMPDIR=/tmp/"$base"-tmpdir
|
||||
# Force spaces and < into TMPDIR - this will expose bugs
|
||||
export TMPDIR=/tmp/"$base-tmp"/'
|
||||
<'/tmp
|
||||
rm -rf "$TMPDIR"
|
||||
mkdir -p "$TMPDIR"
|
||||
# Clean before. May be owned by other users
|
||||
sudo rm -f /tmp/*.{tmx,pac,arg,all,log,swp,loa,ssh,df,pip,tmb,chr,tms,par} ||
|
||||
|
|
|
@ -49,6 +49,10 @@ start_centos3() {
|
|||
start_centos3
|
||||
|
||||
(
|
||||
pwd=$(pwd)
|
||||
# If not run in dir parallel/testsuite: set testsuitedir to path of testsuite
|
||||
testsuitedir=${testsuitedir:-$pwd}
|
||||
cd $testsuitedir
|
||||
# Copy binaries to server
|
||||
cd testsuite/vagrant/tange/centos3/ 2>/dev/null
|
||||
cd vagrant/tange/centos3/ 2>/dev/null
|
||||
|
|
|
@ -11,8 +11,13 @@ SSHLOGIN1=$SSHUSER1@$SERVER1
|
|||
echo $SSHUSER1@$SERVER1
|
||||
|
||||
ssh $SSHLOGIN1 touch .parallel/will-cite
|
||||
scp -q .*/src/{parallel,sem,sql,niceload,env_parallel*} $SSHLOGIN1:bin/
|
||||
|
||||
(
|
||||
pwd=$(pwd)
|
||||
# If not run in dir parallel/testsuite: set testsuitedir to path of testsuite
|
||||
testsuitedir=${testsuitedir:-$pwd}
|
||||
cd $testsuitedir
|
||||
scp -q "$testsuitedir"/../src/{parallel,sem,sql,niceload,env_parallel*} $SSHLOGIN1:bin/
|
||||
)
|
||||
. `which env_parallel.bash`
|
||||
env_parallel --session
|
||||
|
||||
|
|
|
@ -22,10 +22,10 @@ par_ll_long_followed_by_short() {
|
|||
|
||||
par_PARALLEL_HOME_not_exist() {
|
||||
echo '### bug #62311: --pipepart + ::: fail'
|
||||
tmp1=$(mktemp)
|
||||
rm $tmp1
|
||||
PARALLEL_HOME=$tmp1 parallel echo ::: OK
|
||||
rm -r $tmp1
|
||||
tmp1="$(mktemp)"
|
||||
rm "$tmp1"
|
||||
PARALLEL_HOME="$tmp1" parallel echo ::: OK
|
||||
rm -r "$tmp1"
|
||||
echo Should warn:
|
||||
PARALLEL_HOME=/does-not-exist parallel -k echo ::: should warn
|
||||
}
|
||||
|
@ -38,10 +38,10 @@ par_colour_failed() {
|
|||
|
||||
par_pipepart_triple_colon() {
|
||||
echo '### bug #62311: --pipepart + ::: fail'
|
||||
tmp1=$(mktemp)
|
||||
seq 3 >$tmp1
|
||||
parallel --pipepart -a $tmp1 wc ::: a
|
||||
rm $tmp1
|
||||
tmp1="$(mktemp)"
|
||||
seq 3 >"$tmp1"
|
||||
parallel --pipepart -a "$tmp1" wc ::: a
|
||||
rm "$tmp1"
|
||||
}
|
||||
|
||||
par_open-tty() {
|
||||
|
@ -137,11 +137,11 @@ EOF
|
|||
cat <<'EOF' > "$tmp2"
|
||||
2: Job:{#} Slot:{%} All:{} Arg[1]:{1} Arg[-1]:{-1} Perl({}+4):{=$_+=4=}
|
||||
EOF
|
||||
parallel --colsep , -j2 --cleanup --tmpl $tmp1=t1.{#} --tmpl $tmp2=t2.{%} \
|
||||
parallel --colsep , -j2 --cleanup --tmpl "$tmp1"=t1.{#} --tmpl "$tmp2"=t2.{%} \
|
||||
'sleep 0.{#}; cat t1.{#} t2.{%}' ::: 1,a 1,b 2,a 2,b
|
||||
echo should give no files
|
||||
ls t[12].*
|
||||
parallel -j2 --cleanup --tmpl $tmp1=t1.{#} --tmpl $tmp2=t2.{%} \
|
||||
parallel -j2 --cleanup --tmpl "$tmp1"=t1.{#} --tmpl "$tmp2"=t2.{%} \
|
||||
'sleep 0.{#}; cat t1.{#} t2.{%}' ::: 1 2 ::: a b
|
||||
echo should give no files
|
||||
ls t[12].*
|
||||
|
@ -150,12 +150,12 @@ EOF
|
|||
par_resume_k() {
|
||||
echo '### --resume -k'
|
||||
tmp=$(mktemp)
|
||||
parallel -k --resume --joblog $tmp echo job{}id\;exit {} ::: 0 1 2 3 0 5
|
||||
parallel -k --resume --joblog "$tmp" echo job{}id\;exit {} ::: 0 1 2 3 0 5
|
||||
echo try 2 = nothing
|
||||
parallel -k --resume --joblog $tmp echo job{}id\;exit {} ::: 0 1 2 3 0 5
|
||||
parallel -k --resume --joblog "$tmp" echo job{}id\;exit {} ::: 0 1 2 3 0 5
|
||||
echo two extra
|
||||
parallel -k --resume --joblog $tmp echo job{}id\;exit 0 ::: 0 1 2 3 0 5 6 7
|
||||
rm -f $tmp
|
||||
parallel -k --resume --joblog "$tmp" echo job{}id\;exit 0 ::: 0 1 2 3 0 5 6 7
|
||||
rm -f "$tmp"
|
||||
}
|
||||
|
||||
par_empty_string_quote() {
|
||||
|
@ -415,10 +415,10 @@ par_argfile() {
|
|||
echo '### Test -a and --arg-file: Read input from file instead of stdin'
|
||||
|
||||
tmp=$(mktemp)
|
||||
seq 1 10 >$tmp
|
||||
parallel -k -a $tmp echo
|
||||
parallel -k --arg-file $tmp echo
|
||||
rm $tmp
|
||||
seq 1 10 >"$tmp"
|
||||
parallel -k -a "$tmp" echo
|
||||
parallel -k --arg-file "$tmp" echo
|
||||
rm "$tmp"
|
||||
}
|
||||
|
||||
par_pipe_unneeded_procs() {
|
||||
|
@ -453,19 +453,19 @@ par_pipepart_roundrobin() {
|
|||
echo '### bug #45769: --round-robin --pipepart gives wrong results'
|
||||
|
||||
tmp=$(mktemp)
|
||||
seq 10000 >$tmp
|
||||
parallel -j2 --pipepart -a $tmp --block 14 --round-robin wc | wc -l
|
||||
rm $tmp
|
||||
seq 10000 >"$tmp"
|
||||
parallel -j2 --pipepart -a "$tmp" --block 14 --round-robin wc | wc -l
|
||||
rm "$tmp"
|
||||
}
|
||||
|
||||
par_pipepart_header() {
|
||||
echo '### bug #44614: --pipepart --header off by one'
|
||||
|
||||
tmp=$(mktemp)
|
||||
seq 10 >$tmp
|
||||
parallel --pipepart -a $tmp -k --block 5 'echo foo; cat'
|
||||
parallel --pipepart -a $tmp -k --block 2 --regexp --recend 3'\n' 'echo foo; cat'
|
||||
rm $tmp
|
||||
seq 10 >"$tmp"
|
||||
parallel --pipepart -a "$tmp" -k --block 5 'echo foo; cat'
|
||||
parallel --pipepart -a "$tmp" -k --block 2 --regexp --recend 3'\n' 'echo foo; cat'
|
||||
rm "$tmp"
|
||||
}
|
||||
|
||||
par_quote() {
|
||||
|
@ -492,9 +492,9 @@ par_read_from_stdin() {
|
|||
par_total_from_joblog() {
|
||||
echo 'bug #47086: [PATCH] Initialize total_completed from joblog'
|
||||
tmp=$(mktemp)
|
||||
parallel -j1 --joblog $tmp --halt now,fail=1 echo '{= $_=$Global::total_completed =};exit {}' ::: 0 0 0 1 0 0
|
||||
parallel -j1 --joblog $tmp --halt now,fail=1 --resume echo '{= $_=$Global::total_completed =};exit {}' ::: 0 0 0 1 0 0
|
||||
rm $tmp
|
||||
parallel -j1 --joblog "$tmp" --halt now,fail=1 echo '{= $_=$Global::total_completed =};exit {}' ::: 0 0 0 1 0 0
|
||||
parallel -j1 --joblog "$tmp" --halt now,fail=1 --resume echo '{= $_=$Global::total_completed =};exit {}' ::: 0 0 0 1 0 0
|
||||
rm "$tmp"
|
||||
}
|
||||
|
||||
par_xapply() {
|
||||
|
@ -626,10 +626,10 @@ par_empty_line() {
|
|||
par_append_joblog() {
|
||||
echo '### can you append to a joblog using +'
|
||||
tmp=$(mktemp)
|
||||
parallel --joblog $tmp echo ::: 1
|
||||
parallel --joblog +$tmp echo ::: 1
|
||||
wc -l < $tmp
|
||||
rm $tmp
|
||||
parallel --joblog "$tmp" echo ::: 1
|
||||
parallel --joblog +"$tmp" echo ::: 1
|
||||
wc -l < "$tmp"
|
||||
rm "$tmp"
|
||||
}
|
||||
|
||||
par_file_ending_in_newline() {
|
||||
|
@ -653,16 +653,16 @@ par_python_children() {
|
|||
par_pipepart_block_bigger_2G() {
|
||||
echo '### Test that --pipepart can have blocks > 2GB'
|
||||
tmp=$(mktemp)
|
||||
echo foo >$tmp
|
||||
parallel --pipepart -a $tmp --block 3G wc
|
||||
rm $tmp
|
||||
echo foo >"$tmp"
|
||||
parallel --pipepart -a "$tmp" --block 3G wc
|
||||
rm "$tmp"
|
||||
}
|
||||
|
||||
par_retries_replacement_string() {
|
||||
tmp=$(mktemp)
|
||||
parallel --retries {//} "echo {/} >>$tmp;exit {/}" ::: 1/11 2/22 3/33
|
||||
sort $tmp
|
||||
rm $tmp
|
||||
parallel --retries {//} "echo {/} >>'$tmp';exit {/}" ::: 1/11 2/22 3/33
|
||||
sort "$tmp"
|
||||
rm "$tmp"
|
||||
}
|
||||
|
||||
par_tee() {
|
||||
|
@ -693,17 +693,17 @@ par_basic_halt() {
|
|||
cpuburn=$(mktemp)
|
||||
cpuburn2=$(mktemp)
|
||||
(echo '#!/usr/bin/perl'
|
||||
echo "eval{setpriority(0,0,9)}; while(1){}") > $cpuburn
|
||||
chmod 700 $cpuburn
|
||||
cp -a $cpuburn $cpuburn2
|
||||
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 &&
|
||||
parallel -0 -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 &&
|
||||
parallel -0 -j4 --halt -2 ::: 'sleep 1' "'$cpuburn2'" true;
|
||||
killall $(basename "$cpuburn2") 2>/dev/null &&
|
||||
echo ERROR: cpuburn2 should already have been killed
|
||||
rm $cpuburn $cpuburn2
|
||||
rm "$cpuburn" "$cpuburn2"
|
||||
|
||||
parallel --halt error echo ::: should not print
|
||||
parallel --halt soon echo ::: should not print
|
||||
|
@ -722,12 +722,12 @@ par_wd_3dot_local() {
|
|||
echo 'bug #45993: --wd ... should also work when run locally'
|
||||
|
||||
(
|
||||
parallel --wd /bi 'pwd; echo $OLDPWD; echo' ::: fail
|
||||
parallel --wd /bin 'pwd; echo $OLDPWD; echo' ::: OK
|
||||
parallel --wd / 'pwd; echo $OLDPWD; echo' ::: OK
|
||||
parallel --wd /tmp 'pwd; echo $OLDPWD; echo' ::: OK
|
||||
parallel --wd ... 'pwd; echo $OLDPWD; echo' ::: OK
|
||||
parallel --wd . 'pwd; echo $OLDPWD; echo' ::: OK
|
||||
parallel --wd /bi 'pwd; echo "$OLDPWD"; echo' ::: fail
|
||||
parallel --wd /bin 'pwd; echo "$OLDPWD"; echo' ::: OK
|
||||
parallel --wd / 'pwd; echo "$OLDPWD"; echo' ::: OK
|
||||
parallel --wd /tmp 'pwd; echo "$OLDPWD"; echo' ::: OK
|
||||
parallel --wd ... 'pwd; echo "$OLDPWD"; echo' ::: OK
|
||||
parallel --wd . 'pwd; echo "$OLDPWD"; echo' ::: OK
|
||||
) |
|
||||
perl -pe 's:/mnt/4tb::; s:/home/tange:~:;' |
|
||||
perl -pe 's:parallel./:parallel/:;' |
|
||||
|
@ -747,21 +747,24 @@ par_X_eta_div_zero() {
|
|||
|
||||
par_parcat_args_stdin() {
|
||||
echo 'bug #51690: parcat: read args from stdin'
|
||||
# parcat reads files line by line
|
||||
# so this does not work if TMPDIR contains \n
|
||||
TMPDIR='/tmp/Y/ </i'
|
||||
mkdir -p "$TMPDIR"
|
||||
tmp1=$(mktemp)
|
||||
tmp2=$(mktemp)
|
||||
echo OK1 > $tmp1
|
||||
echo OK2 > $tmp2
|
||||
(echo $tmp1
|
||||
echo $tmp2) | parcat | sort
|
||||
rm $tmp1 $tmp2
|
||||
echo OK1 > "$tmp1"
|
||||
echo OK2 > "$tmp2"
|
||||
(echo "$tmp1"; echo "$tmp2") | parcat | sort
|
||||
rm "$tmp1" "$tmp2"
|
||||
}
|
||||
|
||||
par_parcat_rm() {
|
||||
echo 'bug #51691: parcat --rm remove fifo when opened'
|
||||
tmp1=$(mktemp)
|
||||
echo OK1 > $tmp1
|
||||
parcat --rm $tmp1
|
||||
rm $tmp1 2>/dev/null || echo OK file removed
|
||||
echo OK1 > "$tmp1"
|
||||
parcat --rm "$tmp1"
|
||||
rm "$tmp1" 2>/dev/null || echo OK file removed
|
||||
}
|
||||
|
||||
par_linebuffer_files() {
|
||||
|
@ -795,10 +798,10 @@ par_blocking_redir() {
|
|||
par_pipepart_recend_recstart() {
|
||||
echo 'bug #52343: --recend/--recstart does wrong thing with --pipepart'
|
||||
tmp1=$(mktemp)
|
||||
seq 10 > $tmp1
|
||||
parallel -k --pipepart -a $tmp1 --recend '\n' --recstart '6' --block 1 'echo a; cat'
|
||||
parallel -k --pipe < $tmp1 --recend '\n' --recstart '6' --block 1 'echo a; cat'
|
||||
rm $tmp1 2>/dev/null
|
||||
seq 10 > "$tmp1"
|
||||
parallel -k --pipepart -a "$tmp1" --recend '\n' --recstart '6' --block 1 'echo a; cat'
|
||||
parallel -k --pipe < "$tmp1" --recend '\n' --recstart '6' --block 1 'echo a; cat'
|
||||
rm "$tmp1" 2>/dev/null
|
||||
}
|
||||
|
||||
par_pipe_tag_v() {
|
||||
|
@ -812,11 +815,11 @@ par_pipe_tag_v() {
|
|||
par_dryrun_append_joblog() {
|
||||
echo '--dry-run should not append to joblog'
|
||||
tmp=$(mktemp)
|
||||
parallel -k --jl $tmp echo ::: 1 2 3
|
||||
parallel --dryrun -k --jl +$tmp echo ::: 1 2 3 4
|
||||
parallel -k --jl "$tmp" echo ::: 1 2 3
|
||||
parallel --dryrun -k --jl +"$tmp" echo ::: 1 2 3 4
|
||||
# Job 4 should not show up: 3 lines + header = 4
|
||||
wc -l < $tmp
|
||||
rm $tmp
|
||||
wc -l < "$tmp"
|
||||
rm "$tmp"
|
||||
}
|
||||
|
||||
par_0_no_newline() {
|
||||
|
@ -869,7 +872,7 @@ par_results() {
|
|||
tmp=$(mktemp)
|
||||
parallel -k --results "$tmp"-dir echo ::: a b c
|
||||
cat "$tmp"-dir/*/*/stdout
|
||||
rm -r $tmp "$tmp"-dir
|
||||
rm -r "$tmp" "$tmp"-dir
|
||||
}
|
||||
|
||||
par_results_json() {
|
||||
|
@ -877,7 +880,7 @@ par_results_json() {
|
|||
tmp=$(mktemp -d)
|
||||
parallel -k --results "$tmp"/foo.json seq ::: 2 3 ::: 4 5
|
||||
cat "$tmp"/foo.json | perl -pe 's/\d+\.\d{3}/9.999/g'
|
||||
rm -r $tmp
|
||||
rm -r "$tmp"
|
||||
parallel -k --results -.json seq ::: 2 3 ::: 4 5 |
|
||||
perl -pe 's/\d+\.\d{3}/9.999/g'
|
||||
}
|
||||
|
@ -908,15 +911,15 @@ par_PARALLEL_ENV() {
|
|||
PARALLEL_ENV="v='OK as variable'" parallel {} '$v' ::: echo
|
||||
PARALLEL_ENV=$(mktemp)
|
||||
echo '### PARALLEL_ENV as file'
|
||||
echo "v='OK as file'" > $PARALLEL_ENV
|
||||
echo "v='OK as file'" > "$PARALLEL_ENV"
|
||||
PARALLEL_ENV="$PARALLEL_ENV" parallel {} '$v' ::: echo
|
||||
echo '### PARALLEL_ENV as fifo'
|
||||
rm $PARALLEL_ENV
|
||||
mkfifo $PARALLEL_ENV
|
||||
rm "$PARALLEL_ENV"
|
||||
mkfifo "$PARALLEL_ENV"
|
||||
# () needed to avoid [1]+ Done
|
||||
(echo "v='OK as fifo'" > $PARALLEL_ENV &) 2>/dev/null
|
||||
(echo "v='OK as fifo'" > "$PARALLEL_ENV" &) 2>/dev/null
|
||||
PARALLEL_ENV="$PARALLEL_ENV" parallel {} '$v' ::: echo
|
||||
rm $PARALLEL_ENV
|
||||
rm "$PARALLEL_ENV"
|
||||
}
|
||||
|
||||
par_pipe_recend() {
|
||||
|
@ -1050,7 +1053,7 @@ par_profile() {
|
|||
parallel -J ./testprofile_local echo ::: local
|
||||
rm testprofile_local
|
||||
echo --tag > testprofile_abs
|
||||
parallel -J `pwd`/testprofile_abs echo ::: abs
|
||||
parallel -J "`pwd`"/testprofile_abs echo ::: abs
|
||||
rm testprofile_abs
|
||||
echo --tag > ~/.parallel/testprofile_config
|
||||
parallel -J testprofile_config echo ::: config
|
||||
|
|
|
@ -51,31 +51,32 @@ par_load_from_PARALLEL() {
|
|||
}
|
||||
|
||||
par_quote_special_results() {
|
||||
echo "### Test --results on file systems with limited UTF8 support"
|
||||
doit() {
|
||||
mkfs=$1
|
||||
img=$(mktemp /dev/shm/par-test-loop-XXXX.img)
|
||||
dir=$(mktemp -d /tmp/par-test-loop-XXXX)
|
||||
dd if=/dev/zero bs=1000k count=150 > $img
|
||||
dd if=/dev/zero bs=1000k count=150 > "$img"
|
||||
# Use the mkfs.$filesystem
|
||||
$mkfs $img
|
||||
sudo mount $img $dir -oloop,uid=`id -u` 2>/dev/null ||
|
||||
sudo mount $img $dir -oloop
|
||||
cd $dir
|
||||
$mkfs "$img"
|
||||
sudo mount "$img" "$dir" -oloop,uid=`id -u` 2>/dev/null ||
|
||||
sudo mount "$img" "$dir" -oloop
|
||||
cd "$dir"
|
||||
sudo chown `id -u` .
|
||||
df $dir
|
||||
df "$dir"
|
||||
printf "%s\0" '' +m . +_ .. +__ ,. ,.. + ++ / +z |
|
||||
parallel -0 --results a echo
|
||||
find a | sort
|
||||
(cd a/1 && find . -type d | sort | fmt -2000)
|
||||
seq 128 | perl -ne 'printf "%c\0",$_' |
|
||||
parallel -0 --results b128 echo
|
||||
find b128 | sort
|
||||
(cd b128/1 && find . -type d | sort | fmt -2000)
|
||||
seq 128 255 | perl -ne 'printf "%c\0",$_' |
|
||||
parallel -0 --results b255 echo
|
||||
find b255 | sort
|
||||
(cd b255/1 && find . -type d | sort | fmt -2000)
|
||||
cd
|
||||
sudo umount $dir
|
||||
rm -r $dir/
|
||||
rm $img
|
||||
sudo umount "$dir"
|
||||
rmdir "$dir"/
|
||||
rm "$img"
|
||||
}
|
||||
export -f doit
|
||||
stdout parallel -k --tag --plus doit ::: \
|
||||
|
@ -83,7 +84,7 @@ par_quote_special_results() {
|
|||
"mkfs.reiserfs -fq" "mkfs.ntfs -F" "mkfs.xfs -f" mkfs.minix \
|
||||
mkfs.fat mkfs.vfat mkfs.msdos mkfs.f2fs |
|
||||
perl -pe 's:(/dev/loop|par-test-loop)\S+:$1:g;s/ +/ /g' |
|
||||
G -v MB/s -v UUID -v Binutils
|
||||
G --v MB/s GB/s UUID Binutils
|
||||
# Skip:
|
||||
# mkfs.bfs - ro
|
||||
# mkfs.cramfs - ro
|
||||
|
@ -297,12 +298,13 @@ par_failing_compressor() {
|
|||
,,, files --files -k \
|
||||
,,, comp 'cat;true' 'cat;false' \
|
||||
,,, decomp 'cat;true' 'cat;false' |
|
||||
perl -pe 's:/par......par:/tmpfile:'
|
||||
perl -pe 's:/.*par......par:/tmpfile:'
|
||||
}
|
||||
|
||||
par_fifo_under_csh() {
|
||||
echo '### Test --fifo under csh'
|
||||
|
||||
# csh does not seem to work with TMPDIR containing \n
|
||||
TMPDIR=/tmp
|
||||
csh -c "seq 3000000 | parallel -k --pipe --fifo 'sleep .{#};cat {}|wc -c ; false; echo \$status; false'"
|
||||
echo exit $?
|
||||
}
|
||||
|
@ -531,28 +533,17 @@ par_sem_2jobs() {
|
|||
echo done
|
||||
}
|
||||
|
||||
par_semaphore() {
|
||||
echo '### Test if parallel invoked as sem will run parallel --semaphore'
|
||||
sem --id as_sem -u -j2 'echo job1a 1; sleep 3; echo job1b 3'
|
||||
sleep 0.5
|
||||
sem --id as_sem -u -j2 'echo job2a 2; sleep 3; echo job2b 5'
|
||||
sleep 0.5
|
||||
sem --id as_sem -u -j2 'echo job3a 4; sleep 3; echo job3b 6'
|
||||
sem --id as_sem --wait
|
||||
echo done
|
||||
}
|
||||
|
||||
par_line_buffer() {
|
||||
echo "### --line-buffer"
|
||||
tmp1=$(mktemp)
|
||||
tmp2=$(mktemp)
|
||||
|
||||
seq 10 | parallel -j20 --line-buffer 'seq {} 10 | pv -qL 10' > $tmp1
|
||||
seq 10 | parallel -j20 'seq {} 10 | pv -qL 10' > $tmp2
|
||||
cat $tmp1 | wc
|
||||
diff $tmp1 $tmp2 >/dev/null
|
||||
seq 10 | parallel -j20 --line-buffer 'seq {} 10 | pv -qL 10' > "$tmp1"
|
||||
seq 10 | parallel -j20 'seq {} 10 | pv -qL 10' > "$tmp2"
|
||||
cat "$tmp1" | wc
|
||||
diff "$tmp1" "$tmp2" >/dev/null
|
||||
echo These must diff: $?
|
||||
rm $tmp1 $tmp2
|
||||
rm "$tmp1" "$tmp2"
|
||||
}
|
||||
|
||||
par_pipe_line_buffer() {
|
||||
|
@ -568,17 +559,19 @@ par_pipe_line_buffer() {
|
|||
}
|
||||
|
||||
export PARALLEL="-N10 -L1 --pipe -j20 --tagstring {#}"
|
||||
seq 200| parallel --line-buffer pv -qL 10 > $tmp1 2> >(nowarn)
|
||||
seq 200| parallel pv -qL 10 > $tmp2 2> >(nowarn)
|
||||
cat $tmp1 | wc
|
||||
diff $tmp1 $tmp2 >/dev/null
|
||||
seq 200| parallel --line-buffer pv -qL 10 > "$tmp1" 2> >(nowarn)
|
||||
seq 200| parallel pv -qL 10 > "$tmp2" 2> >(nowarn)
|
||||
cat "$tmp1" | wc
|
||||
diff "$tmp1" "$tmp2" >/dev/null
|
||||
echo These must diff: $?
|
||||
rm $tmp1 $tmp2
|
||||
rm "$tmp1" "$tmp2"
|
||||
}
|
||||
|
||||
par_pipe_line_buffer_compress() {
|
||||
echo "### --pipe --line-buffer --compress"
|
||||
seq 200| parallel -N10 -L1 --pipe -j20 --line-buffer --compress --tagstring {#} pv -qL 10 | wc
|
||||
seq 200 |
|
||||
parallel -N10 -L1 --pipe -j20 --line-buffer --compress --tagstring {#} pv -qL 10 |
|
||||
wc
|
||||
}
|
||||
|
||||
par__pipepart_spawn() {
|
||||
|
@ -610,9 +603,9 @@ par__pipepart_tee() {
|
|||
head -c 100M;
|
||||
}
|
||||
tmp=$(mktemp)
|
||||
random100M >$tmp
|
||||
random100M >"$tmp"
|
||||
parallel --pipepart --tee -a $tmp cat ::: {1..3} | LC_ALL=C wc -c
|
||||
rm $tmp
|
||||
rm "$tmp"
|
||||
}
|
||||
|
||||
par_k() {
|
||||
|
@ -671,7 +664,7 @@ par_results_csv() {
|
|||
export -f doit
|
||||
parallel -k --tag doit ::: '--header :' '' \
|
||||
::: --tag '' ::: --files '' ::: --compress '' |
|
||||
perl -pe 's:/par......par:/tmpfile:g;s/\d+\.\d+/999.999/g'
|
||||
perl -pe 's:/.*par......par:/tmpfile:g;s/\d+\.\d+/999.999/g'
|
||||
}
|
||||
|
||||
par_kill_children_timeout() {
|
||||
|
@ -694,7 +687,7 @@ par_kill_children_timeout() {
|
|||
|
||||
par_tmux_fg() {
|
||||
echo 'bug #50107: --tmux --fg should also write how to access it'
|
||||
stdout parallel --tmux --fg sleep ::: 3 | perl -pe 's/.tmp\S+/tmp/'
|
||||
stdout parallel --tmux --fg sleep ::: 3 | perl -pe 's:/tmp.*tms.....:tmpfile:'
|
||||
}
|
||||
|
||||
|
||||
|
@ -769,6 +762,6 @@ compgen -A function | grep par_ | LC_ALL=C sort |
|
|||
parallel --timeout 1000% -j10 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1' |
|
||||
perl -pe 's/,31,0/,15,0/' |
|
||||
# Replace $PWD with . even if given as ~/...
|
||||
perl -pe 's:~:'$HOME':g' |
|
||||
perl -pe 's:'$PWD':.:g' |
|
||||
perl -pe 's:'$HOME':~:g'
|
||||
perl -pe 's:~:'"$HOME"':g' |
|
||||
perl -pe 's:'"$PWD"':.:g' |
|
||||
perl -pe 's:'"$HOME"':~:g'
|
||||
|
|
|
@ -102,7 +102,7 @@ par_compute_command_len() {
|
|||
}
|
||||
|
||||
par_skip_first_line() {
|
||||
tmp=$(mktemp)
|
||||
tmp="$(mktemp)"
|
||||
(echo `seq 10000`;echo MyHeader; seq 10) |
|
||||
parallel -k --skip-first-line --pipe --block 10 --header '1' cat
|
||||
(echo `seq 10000`;echo MyHeader; seq 10) > "$tmp"
|
||||
|
@ -152,21 +152,21 @@ par_uninstalled_sshpass() {
|
|||
}
|
||||
|
||||
par_results_compress() {
|
||||
tmpdir=$(mktemp)
|
||||
tmpdir="$(mktemp)"
|
||||
rm -r "$tmpdir"
|
||||
parallel --results $tmpdir --compress echo ::: 1
|
||||
parallel --results "$tmpdir" --compress echo ::: 1
|
||||
cat "$tmpdir"/*/*/stdout | pzstd -qdc
|
||||
|
||||
rm -r "$tmpdir"
|
||||
parallel --results $tmpdir echo ::: 1
|
||||
parallel --results "$tmpdir" echo ::: 1
|
||||
cat "$tmpdir"/*/*/stdout
|
||||
|
||||
rm -r "$tmpdir"
|
||||
parallel --results $tmpdir --compress echo ::: ' ' /
|
||||
parallel --results "$tmpdir" --compress echo ::: ' ' /
|
||||
cat "$tmpdir"/*/*/stdout | pzstd -qdc
|
||||
|
||||
rm -r "$tmpdir"
|
||||
parallel --results $tmpdir echo ::: ' ' /
|
||||
parallel --results "$tmpdir" echo ::: ' ' /
|
||||
cat "$tmpdir"/*/*/stdout
|
||||
|
||||
rm -r "$tmpdir"
|
||||
|
@ -197,11 +197,15 @@ par_open_files_blocks() {
|
|||
|
||||
par_pipe_unneeded_procs() {
|
||||
echo 'bug #34241: --pipe should not spawn unneeded processes - part 2'
|
||||
tmp="$(mktemp -d)"
|
||||
cd "$tmp"
|
||||
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
|
||||
cd ..
|
||||
rm -r "$tmp"
|
||||
}
|
||||
|
||||
par_interactive() {
|
||||
|
@ -1065,11 +1069,11 @@ par_pipepart_block() {
|
|||
}
|
||||
|
||||
par_block_negative_prefix() {
|
||||
tmp=`mktemp`
|
||||
seq 100000 > $tmp
|
||||
tmp="$(mktemp)"
|
||||
seq 100000 > "$tmp"
|
||||
echo '### This should generate 10*2 jobs'
|
||||
parallel -j2 -a $tmp --pipepart --block -0.01k -k md5sum | wc
|
||||
rm $tmp
|
||||
parallel -j2 -a "$tmp" --pipepart --block -0.01k -k md5sum | wc
|
||||
rm "$tmp"
|
||||
}
|
||||
|
||||
par_sql_colsep() {
|
||||
|
|
|
@ -307,12 +307,12 @@ par_groupby_pipepart() {
|
|||
generator="$1"
|
||||
colsep="$2"
|
||||
groupby="$3"
|
||||
tmp=`mktemp`
|
||||
tmp=$(mktemp)
|
||||
|
||||
echo "### test $generator | --colsep $colsep --groupby $groupby"
|
||||
$generator > $tmp
|
||||
$generator > "$tmp"
|
||||
parallel --header 1 --pipepart -k \
|
||||
-a $tmp --colsep "$colsep" --groupby "$groupby" 'echo NewRec; wc'
|
||||
-a "$tmp" --colsep "$colsep" --groupby "$groupby" 'echo NewRec; wc'
|
||||
}
|
||||
export -f tester
|
||||
parallel --tag -k tester \
|
||||
|
@ -348,7 +348,7 @@ par_memory_leak() {
|
|||
export -f a_run
|
||||
echo "### Test for memory leaks"
|
||||
echo "Of 300 runs of 1 job at least one should be bigger than a 3000 job run"
|
||||
. `which env_parallel.bash`
|
||||
. $(which env_parallel.bash)
|
||||
parset small_max,big ::: 'seq 300 | parallel a_run 1 | jq -s max' 'a_run 3000'
|
||||
if [ $small_max -lt $big ] ; then
|
||||
echo "Bad: Memleak likely."
|
||||
|
@ -571,4 +571,4 @@ par_test_ipv6_format() {
|
|||
export -f $(compgen -A function | grep par_)
|
||||
compgen -A function | grep par_ | sort |
|
||||
# parallel --delay 0.3 --timeout 1000% -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'
|
||||
parallel --delay 0.3 --timeout 1000% -j6 --lb --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'
|
||||
parallel --delay 0.3 --timeout 3000% -j6 --lb --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'
|
||||
|
|
|
@ -22,9 +22,9 @@ par_retries_0() {
|
|||
echo '--retries 0 = inf'
|
||||
echo this wraps at 256 and should retry until it wraps
|
||||
tmp=$(mktemp)
|
||||
parallel --retries 0 -u 'printf {} >> '$tmp';a=`stat -c %s '$tmp'`; echo -n " $a"; exit $a' ::: a
|
||||
parallel --retries 0 -u 'printf {} >> '"'$tmp'"';a=`stat -c %s '"'$tmp'"'`; echo -n " $a"; exit $a' ::: a
|
||||
echo
|
||||
rm -f $tmp
|
||||
rm -f "$tmp"
|
||||
}
|
||||
|
||||
par_prefix_for_L_n_N_s() {
|
||||
|
@ -135,7 +135,10 @@ EOF
|
|||
}
|
||||
export -f run gp oct pl py r rb sh
|
||||
|
||||
parallel --tag -k run ::: gp oct pl py r rb sh
|
||||
parallel --tag -k run ::: gp oct pl py rb sh
|
||||
# R fails if TMPDIR contains space
|
||||
TMPDIR=/tmp
|
||||
parallel --tag -k run ::: r
|
||||
}
|
||||
|
||||
par_pipe_regexp() {
|
||||
|
@ -300,8 +303,8 @@ par_tee_with_premature_close() {
|
|||
correct="$(seq 1000000 | parallel -k --tee --pipe ::: wc head tail 'sleep 1')"
|
||||
echo "$correct"
|
||||
echo 'tee without --output-error=warn-nopipe support'
|
||||
tmpdir=$(mktemp)
|
||||
cat > tmp/tee <<-EOF
|
||||
tmpdir=$(mktemp -d)
|
||||
cat > "$tmpdir"/tee <<-EOF
|
||||
#!/usr/bin/perl
|
||||
|
||||
if(grep /output-error=warn-nopipe/, @ARGV) {
|
||||
|
@ -309,8 +312,8 @@ par_tee_with_premature_close() {
|
|||
}
|
||||
exec "/usr/bin/tee", @ARGV;
|
||||
EOF
|
||||
chmod +x tmp/tee
|
||||
PATH=tmp:$PATH
|
||||
chmod +x "$tmpdir"/tee
|
||||
PATH="$tmpdir":$PATH
|
||||
# This gives incomplete output due to:
|
||||
# * tee not supporting --output-error=warn-nopipe
|
||||
# * sleep closes stdin before EOF
|
||||
|
@ -321,6 +324,8 @@ par_tee_with_premature_close() {
|
|||
else
|
||||
echo OK
|
||||
fi
|
||||
rm "$tmpdir"/tee
|
||||
rmdir "$tmpdir"
|
||||
}
|
||||
|
||||
par_tee_too_many_args() {
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
setup() {
|
||||
tmp=$(mktemp)
|
||||
perl -pe 's/\n/\n\0/' >$tmp <<EOF
|
||||
perl -pe 's/\n/\n\0/' >"$tmp" <<EOF
|
||||
chr1 1 Sample 1
|
||||
chr1 11 Sample 1
|
||||
chr1 111 Sample 1
|
||||
|
@ -67,10 +67,10 @@ EOF
|
|||
|
||||
parsort_test() {
|
||||
echo "### parsort $@"
|
||||
parsort "$@" $tmp | md5sum
|
||||
sort "$@" $tmp | md5sum
|
||||
parsort "$@" < $tmp | md5sum
|
||||
sort "$@" < $tmp | md5sum
|
||||
parsort "$@" "$tmp" | md5sum
|
||||
sort "$@" "$tmp" | md5sum
|
||||
parsort "$@" < "$tmp" | md5sum
|
||||
sort "$@" < "$tmp" | md5sum
|
||||
}
|
||||
export -f parsort_test
|
||||
|
||||
|
|
|
@ -22,9 +22,9 @@ par_parcat_mixing() {
|
|||
echo 'parcat output should mix: a b a b'
|
||||
mktempfifo() {
|
||||
tmp=$(mktemp)
|
||||
rm $tmp
|
||||
mkfifo $tmp
|
||||
echo $tmp
|
||||
rm "$tmp"
|
||||
mkfifo "$tmp"
|
||||
echo "$tmp"
|
||||
}
|
||||
slow_output() {
|
||||
string=$1
|
||||
|
@ -34,10 +34,10 @@ par_parcat_mixing() {
|
|||
}
|
||||
tmp1=$(mktempfifo)
|
||||
tmp2=$(mktempfifo)
|
||||
slow_output a > $tmp1 &
|
||||
slow_output a > "$tmp1" &
|
||||
sleep 1
|
||||
slow_output b > $tmp2 &
|
||||
parcat $tmp1 $tmp2 | tr -s ab
|
||||
slow_output b > "$tmp2" &
|
||||
parcat "$tmp1" "$tmp2" | tr -s ab
|
||||
}
|
||||
|
||||
par_tmux_termination() {
|
||||
|
|
|
@ -6,6 +6,17 @@
|
|||
|
||||
# These fail regularly
|
||||
|
||||
par_semaphore() {
|
||||
echo '### Test if parallel invoked as sem will run parallel --semaphore'
|
||||
sem --id as_sem -u -j2 'echo job1a 1; sleep 3; echo job1b 3'
|
||||
sleep 0.5
|
||||
sem --id as_sem -u -j2 'echo job2a 2; sleep 3; echo job2b 5'
|
||||
sleep 0.5
|
||||
sem --id as_sem -u -j2 'echo job3a 4; sleep 3; echo job3b 6'
|
||||
sem --id as_sem --wait
|
||||
echo done
|
||||
}
|
||||
|
||||
ctrlz_should_suspend_children() {
|
||||
echo 'bug #46120: Suspend should suspend (at least local) children'
|
||||
echo 'it should burn 1.9 CPU seconds, but no more than that'
|
||||
|
@ -52,7 +63,7 @@ par_sql_CSV() {
|
|||
|
||||
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
|
||||
parallel --delay 0.1 --hgrp -S @g1/1/parallel@lo -S @g2/3/lo whoami\;sleep 0.4{} ::: {1..8} | sort -u
|
||||
|
||||
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
|
||||
|
@ -61,7 +72,7 @@ par_hostgroup() {
|
|||
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
|
||||
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 -u
|
||||
|
||||
echo '### --hostgroup two groups @'
|
||||
parallel -k --hgrp -S @g1/parallel@lo -S @g2/lo --tag whoami\;echo ::: parallel@g1 tange@g2
|
||||
|
@ -73,7 +84,7 @@ par_hostgroup() {
|
|||
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
|
||||
parallel -S @g1/ -S @g1/1/tcsh@lo -S @g1/1/localhost -S @g2/1/parallel@lo whoami\;true ::: {1..6} | sort -u
|
||||
|
||||
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
|
||||
|
@ -155,15 +166,15 @@ par_kill_hup() {
|
|||
par_resume_failed_k() {
|
||||
echo '### bug #38299: --resume-failed -k'
|
||||
tmp=$(mktemp)
|
||||
parallel -k --resume-failed --joblog $tmp echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
|
||||
parallel -k --resume-failed --joblog "$tmp" echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
|
||||
echo try 2. Gives failing - not 0
|
||||
parallel -k --resume-failed --joblog $tmp echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
|
||||
parallel -k --resume-failed --joblog "$tmp" echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
|
||||
echo with exit 0
|
||||
parallel -k --resume-failed --joblog $tmp echo job{#} val {}\;exit 0 ::: 0 1 2 3 0 1
|
||||
parallel -k --resume-failed --joblog "$tmp" echo job{#} val {}\;exit 0 ::: 0 1 2 3 0 1
|
||||
sleep 0.5
|
||||
echo try 2 again. Gives empty
|
||||
parallel -k --resume-failed --joblog $tmp echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
|
||||
rm $tmp
|
||||
parallel -k --resume-failed --joblog "$tmp" echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
|
||||
rm "$tmp"
|
||||
}
|
||||
|
||||
par_testhalt() {
|
||||
|
|
|
@ -28,8 +28,8 @@ p_wrapper() {
|
|||
echo Exit=$?
|
||||
wait
|
||||
echo Exit=$?
|
||||
$DEBUG && sort -u $T1 $T2;
|
||||
rm $T1 $T2
|
||||
$DEBUG && sort -u "$T1" "$T2";
|
||||
rm "$T1" "$T2"
|
||||
p_showsqlresult $SERVERURL $TABLE
|
||||
$DEBUG || sql $SERVERURL "drop table $TABLE;" >/dev/null 2>/dev/null
|
||||
}
|
||||
|
@ -38,9 +38,9 @@ p_template() {
|
|||
(
|
||||
# Make sure all jobs are inserted before starting a worker
|
||||
sleep 10;
|
||||
parallel --sqlworker $DBURL "$@" sleep .3\;echo >$T1
|
||||
parallel --sqlworker $DBURL "$@" sleep .3\;echo >"$T1"
|
||||
) &
|
||||
parallel --sqlandworker $DBURL "$@" sleep .3\;echo ::: {1..5} ::: {a..e} >$T2;
|
||||
parallel --sqlandworker $DBURL "$@" sleep .3\;echo ::: {1..5} ::: {a..e} >"$T2";
|
||||
}
|
||||
|
||||
par_sqlandworker() {
|
||||
|
@ -68,35 +68,35 @@ par_sqlandworker_total_jobs() {
|
|||
}
|
||||
|
||||
par_append_different_cmd() {
|
||||
parallel --sqlmaster $DBURL sleep .3\;echo ::: {1..5} ::: {a..e} >$T2;
|
||||
parallel --sqlmaster +$DBURL sleep .3\;echo {2}-{1} ::: {11..15} ::: {A..E} >>$T2;
|
||||
parallel --sqlworker $DBURL >$T1
|
||||
parallel --sqlmaster "$DBURL" sleep .3\;echo ::: {1..5} ::: {a..e} >"$T2";
|
||||
parallel --sqlmaster +"$DBURL" sleep .3\;echo {2}-{1} ::: {11..15} ::: {A..E} >>"$T2";
|
||||
parallel --sqlworker "$DBURL" >"$T1"
|
||||
}
|
||||
|
||||
par_shuf() {
|
||||
MD5=$(echo $SERVERURL | md5sum | perl -pe 's/(...).*/$1/')
|
||||
T=/tmp/parallel-bug49791-$MD5
|
||||
[ -e $T ] && rm -rf $T
|
||||
export PARALLEL="--shuf --result $T"
|
||||
MD5=$(echo "$SERVERURL" | md5sum | perl -pe 's/(...).*/$1/')
|
||||
T=/tmp/parallel-bug49791-" <$MD5"
|
||||
[ -e "$T" ] && rm -rf "$T"
|
||||
export PARALLEL="--shuf --result '$T'"
|
||||
parallel --sqlandworker $DBURL sleep .3\;echo \
|
||||
::: {1..5} ::: {a..e} >$T2;
|
||||
parallel --sqlworker $DBURL >$T2 &
|
||||
parallel --sqlworker $DBURL >$T2 &
|
||||
parallel --sqlworker $DBURL >$T2 &
|
||||
parallel --sqlworker $DBURL >$T2 &
|
||||
::: {1..5} ::: {a..e} >"$T2";
|
||||
parallel --sqlworker $DBURL >"$T2" &
|
||||
parallel --sqlworker $DBURL >"$T2" &
|
||||
parallel --sqlworker $DBURL >"$T2" &
|
||||
parallel --sqlworker $DBURL >"$T2" &
|
||||
unset PARALLEL
|
||||
wait;
|
||||
# Did it compute correctly?
|
||||
cat $T/1/*/*/*/stdout
|
||||
cat "$T"/1/*/*/*/stdout
|
||||
# Did it shuffle
|
||||
SHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;")
|
||||
export PARALLEL="--result $T"
|
||||
parallel --sqlandworker $DBURL sleep .3\;echo \
|
||||
::: {1..5} ::: {a..e} >$T2;
|
||||
parallel --sqlworker $DBURL >$T2 &
|
||||
parallel --sqlworker $DBURL >$T2 &
|
||||
parallel --sqlworker $DBURL >$T2 &
|
||||
parallel --sqlworker $DBURL >$T2 &
|
||||
SHUF=$(sql "$SERVERURL" "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;")
|
||||
export PARALLEL="--result '$T'"
|
||||
parallel --sqlandworker "$DBURL" sleep .3\;echo \
|
||||
::: {1..5} ::: {a..e} >"$T2";
|
||||
parallel --sqlworker "$DBURL" >"$T2" &
|
||||
parallel --sqlworker "$DBURL" >"$T2" &
|
||||
parallel --sqlworker "$DBURL" >"$T2" &
|
||||
parallel --sqlworker "$DBURL" >"$T2" &
|
||||
unset PARALLEL
|
||||
wait;
|
||||
NOSHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;")
|
||||
|
@ -104,8 +104,8 @@ par_shuf() {
|
|||
if [ $DIFFSIZE -gt 2500 ]; then
|
||||
echo OK: Diff bigger than 2500 char
|
||||
fi
|
||||
[ -e $T ] && rm -rf $T
|
||||
touch $T1
|
||||
[ -e "$T" ] && rm -rf "$T"
|
||||
touch "$T1"
|
||||
}
|
||||
|
||||
par_sql_joblog() {
|
||||
|
@ -115,10 +115,10 @@ par_sql_joblog() {
|
|||
perl -pe 's/\d+\.\d+/999.999/g' | sort -n &
|
||||
sleep 0.5
|
||||
T=$(mktemp)
|
||||
parallel -k --joblog - --sqlworker $DBURL > $T
|
||||
parallel -k --joblog - --sqlworker $DBURL > "$T"
|
||||
wait
|
||||
# Needed because of race condition
|
||||
cat $T; rm $T
|
||||
cat "$T"; rm "$T"
|
||||
echo '### --sqlandworker'
|
||||
parallel -k --joblog - --sqlandworker $DBURL sleep .3\;echo ::: {1..5} ::: {a..e} |
|
||||
perl -pe 's/\d+\.\d+/999.999/g' | sort -n
|
||||
|
|
|
@ -38,8 +38,8 @@ p_wrapper() {
|
|||
wait
|
||||
echo Exit=$?
|
||||
# For debugging show the tempfiles
|
||||
$DEBUG && sort -u $T1 $T2;
|
||||
rm $T1 $T2
|
||||
$DEBUG && sort -u "$T1" "$T2";
|
||||
rm "$T1" "$T2"
|
||||
p_showsqlresult $SERVERURL $TABLE
|
||||
# Drop the table if not debugging
|
||||
$DEBUG || sql $SERVERURL "drop table $TABLE;" >/dev/null 2>/dev/null
|
||||
|
@ -50,9 +50,9 @@ p_template() {
|
|||
(
|
||||
# Make sure there is work to be done
|
||||
sleep 6;
|
||||
parallel --sqlworker $DBURL "$@" sleep .3\;echo >$T1
|
||||
parallel --sqlworker $DBURL "$@" sleep .3\;echo >"$T1"
|
||||
) &
|
||||
parallel --sqlandworker $DBURL "$@" sleep .3\;echo ::: {1..5} ::: {a..e} >$T2;
|
||||
parallel --sqlandworker $DBURL "$@" sleep .3\;echo ::: {1..5} ::: {a..e} >"$T2";
|
||||
}
|
||||
|
||||
par_sqlandworker() {
|
||||
|
@ -92,9 +92,9 @@ par_sqlandworker_total_jobs() {
|
|||
}
|
||||
|
||||
par_append() {
|
||||
parallel --sqlmaster $DBURL sleep .3\;echo ::: {1..5} ::: {a..e} >$T2;
|
||||
parallel --sqlmaster +$DBURL sleep .3\;echo ::: {11..15} ::: {A..E} >>$T2;
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >$T1
|
||||
parallel --sqlmaster $DBURL sleep .3\;echo ::: {1..5} ::: {a..e} >"$T2";
|
||||
parallel --sqlmaster +$DBURL sleep .3\;echo ::: {11..15} ::: {A..E} >>"$T2";
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >"$T1"
|
||||
}
|
||||
|
||||
par_shuf() {
|
||||
|
@ -103,11 +103,11 @@ par_shuf() {
|
|||
[ -e $T ] && rm -rf $T
|
||||
export PARALLEL="--shuf --result $T"
|
||||
parallel --sqlandworker $DBURL sleep .3\;echo \
|
||||
::: {1..5} ::: {a..e} >$T2;
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
|
||||
::: {1..5} ::: {a..e} >"$T2";
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >"$T2" &
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >"$T2" &
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >"$T2" &
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >"$T2" &
|
||||
unset PARALLEL
|
||||
wait;
|
||||
# Did it compute correctly?
|
||||
|
@ -116,11 +116,11 @@ par_shuf() {
|
|||
SHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;")
|
||||
export PARALLEL="--result $T"
|
||||
parallel --sqlandworker $DBURL sleep .3\;echo \
|
||||
::: {1..5} ::: {a..e} >$T2;
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
|
||||
::: {1..5} ::: {a..e} >"$T2";
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >"$T2" &
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >"$T2" &
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >"$T2" &
|
||||
parallel --sqlworker $DBURL sleep .3\;echo >"$T2" &
|
||||
unset PARALLEL
|
||||
wait;
|
||||
NOSHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;")
|
||||
|
@ -129,7 +129,7 @@ par_shuf() {
|
|||
echo OK: Diff bigger than 2500 char
|
||||
fi
|
||||
[ -e $T ] && rm -rf $T
|
||||
touch $T1
|
||||
touch "$T1"
|
||||
}
|
||||
|
||||
par_empty() {
|
||||
|
|
|
@ -28,8 +28,8 @@ par_few_duplicate_run() {
|
|||
wait
|
||||
) | wc -l)
|
||||
sql "$1" "drop table $TABLE;"
|
||||
if [ $lines -gt 105 ] ; then
|
||||
echo Error: $lines are more than 5% duplicates
|
||||
if [ $lines -gt 110 ] ; then
|
||||
echo Error: $lines are more than 10% duplicates
|
||||
else
|
||||
echo OK
|
||||
fi
|
||||
|
|
|
@ -60,6 +60,8 @@ par_pipe_unneeded_spawn() {
|
|||
|
||||
par_files_nonall() {
|
||||
echo '### bug #40002: --files and --nonall seem not to work together:'
|
||||
# --files does not work with TMPDIR containing \n
|
||||
TMPDIR=/tmp
|
||||
parallel --files --nonall -S localhost true | tee >(parallel rm) | wc -l
|
||||
}
|
||||
|
||||
|
|
|
@ -109,9 +109,9 @@ par_bigvar_rc() {
|
|||
par_tmux_different_shells() {
|
||||
echo '### Test tmux works on different shells'
|
||||
(stdout parallel -Scsh@lo,tcsh@lo,parallel@lo,zsh@lo --tmux echo ::: 1 2 3 4; echo $?) |
|
||||
grep -v 'See output';
|
||||
grep -v 'attach';
|
||||
(stdout parallel -Scsh@lo,tcsh@lo,parallel@lo,zsh@lo --tmux false ::: 1 2 3 4; echo $?) |
|
||||
grep -v 'See output';
|
||||
grep -v 'attach';
|
||||
|
||||
export PARTMUX='parallel -Scsh@lo,tcsh@lo,parallel@lo,zsh@lo --tmux ';
|
||||
stdout ssh zsh@lo "$PARTMUX" 'true ::: 1 2 3 4; echo $status' | grep -v 'See output';
|
||||
|
@ -128,16 +128,16 @@ par_tmux_different_shells() {
|
|||
par_tmux_length() {
|
||||
echo '### works'
|
||||
stdout parallel -Sparallel@lo --tmux echo ::: \\\\\\\"\\\\\\\"\\\;\@ |
|
||||
perl -pe 's:/tmp/\S+::'
|
||||
perl -pe 's:/tmp/.*tms.....::'
|
||||
stdout parallel -Sparallel@lo --tmux echo ::: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
|
||||
perl -pe 's:/tmp/\S+::'
|
||||
perl -pe 's:/tmp/.*tms.....::'
|
||||
|
||||
echo '### These blocked due to length'
|
||||
stdout parallel -Slo --tmux echo ::: \\\\\\\"\\\\\\\"\\\;\@ | grep -v 'See output'
|
||||
stdout parallel -Scsh@lo --tmux echo ::: \\\\\\\"\\\\\\\"\\\;\@ | grep -v 'See output'
|
||||
stdout parallel -Stcsh@lo --tmux echo ::: \\\\\\\"\\\\\\\"\\\;\@ | grep -v 'See output'
|
||||
stdout parallel -Szsh@lo --tmux echo ::: \\\\\\\"\\\\\\\"\\\;\@ | grep -v 'See output'
|
||||
stdout parallel -Scsh@lo --tmux echo ::: 111111111111111111111111111111111111111111111111111111111 | grep -v 'See output'
|
||||
stdout parallel -Slo --tmux echo ::: \\\\\\\"\\\\\\\"\\\;\@ | grep -v 'attach'
|
||||
stdout parallel -Scsh@lo --tmux echo ::: \\\\\\\"\\\\\\\"\\\;\@ | grep -v 'attach'
|
||||
stdout parallel -Stcsh@lo --tmux echo ::: \\\\\\\"\\\\\\\"\\\;\@ | grep -v 'attach'
|
||||
stdout parallel -Szsh@lo --tmux echo ::: \\\\\\\"\\\\\\\"\\\;\@ | grep -v 'attach'
|
||||
stdout parallel -Scsh@lo --tmux echo ::: 111111111111111111111111111111111111111111111111111111111 | grep -v 'attach'
|
||||
}
|
||||
|
||||
par_transfer_return_multiple_inputs() {
|
||||
|
|
|
@ -1,11 +1,29 @@
|
|||
#!/bin/bash
|
||||
|
||||
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
|
||||
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# SSH only allowed to localhost/lo
|
||||
|
||||
|
||||
par_ssh_cmd_with_newline() {
|
||||
echo '### Check --ssh with \n works'
|
||||
ssh=$(mktemp)
|
||||
cp -a /usr/bin/ssh "$ssh"
|
||||
parallel --ssh "'$ssh'" -S sh@lo ::: id
|
||||
}
|
||||
|
||||
par_controlmaster() {
|
||||
echo '### Check -M works if TMPDIR contains space'
|
||||
(
|
||||
seq 1 3 | parallel -j10 --retries 3 -k -M -S sh@lo echo
|
||||
seq 1 3 | parallel -j10 --retries 3 -k -M -S sh@lo echo
|
||||
)
|
||||
echo Part2
|
||||
parallel -j1 -k -M -S sh@lo echo ::: OK
|
||||
}
|
||||
|
||||
par_autossh() {
|
||||
echo '### --ssh autossh'
|
||||
(
|
||||
|
|
|
@ -5,6 +5,12 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
echo '### Test with old perl libs'
|
||||
|
||||
pwd=$(pwd)
|
||||
# If not run in dir parallel/testsuite: set testsuitedir to path of testsuite
|
||||
testsuitedir=${testsuitedir:-$pwd}
|
||||
cd "$testsuitedir"
|
||||
|
||||
# Old libraries are put into input-files/perllib
|
||||
PERL5LIB=input-files/perllib:../input-files/perllib; export PERL5LIB
|
||||
|
||||
|
|
|
@ -4,30 +4,34 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
pwd=$(pwd)
|
||||
# If not run in dir parallel/testsuite: set testsuitedir to path of testsuite
|
||||
testsuitedir=${testsuitedir:-$pwd}
|
||||
rm -rf tmp 2>/dev/null
|
||||
cd input-files
|
||||
tar xjf random_dirs_no_newline.tar.bz2
|
||||
cd ..
|
||||
cp -a input-files/random_dirs_no_newline tmp
|
||||
(
|
||||
cd "$testsuitedir"/input-files
|
||||
tar xjf random_dirs_no_newline.tar.bz2
|
||||
)
|
||||
cp -a "$testsuitedir"/input-files/random_dirs_no_newline tmp
|
||||
cd tmp
|
||||
|
||||
echo '### Tests if special dir names causes problems'
|
||||
ls | parallel -v touch -- {}/abc-{}-{} 2>&1 | perl -e 'print sort (<>)' | md5sum
|
||||
echo -n 'There are '
|
||||
echo -n 'There are '
|
||||
find . -type d -print0 | perl -0 -ne '$a++;END{print $a}'
|
||||
echo -n ' dirs with '
|
||||
find . -type f -print0 | perl -0 -ne '$a++;END{print $a}'
|
||||
echo ' files'
|
||||
echo 'Removing files'
|
||||
ls | parallel -v rm -- {}/abc-{}-{} 2>&1 | perl -e 'print sort (<>)' | md5sum
|
||||
echo -n 'There are '
|
||||
echo -n 'There are '
|
||||
find . -type d -print0 | perl -0 -ne '$a++;END{print $a}'
|
||||
echo -n ' dirs with '
|
||||
find . -type f -print0 | perl -0 -ne '$a++;END{print $a}'
|
||||
echo ' files'
|
||||
echo 'Removing dirs'
|
||||
ls | parallel -v rmdir -- {} 2>&1 | perl -e 'print sort (<>)' | md5sum
|
||||
echo -n 'There are '
|
||||
echo -n 'There are '
|
||||
find . -type d -print0 | perl -0 -ne '$a++;END{print $a}'
|
||||
echo -n ' dirs with '
|
||||
find . -type f -print0 | perl -0 -ne '$a++;END{print $a}'
|
||||
|
|
|
@ -7,8 +7,10 @@
|
|||
TMP=/run/shm/parallel_local105
|
||||
rm -rf $TMP 2>/dev/null
|
||||
mkdir -p $TMP
|
||||
tar -C $TMP -xf input-files/random_dirs_with_newline.tar.bz2
|
||||
|
||||
pwd=$(pwd)
|
||||
# If not run in dir parallel/testsuite: set testsuitedir to path of testsuite
|
||||
testsuitedir=${testsuitedir:-$pwd}
|
||||
tar -C $TMP -xf "$testsuitedir"/input-files/random_dirs_with_newline.tar.bz2
|
||||
cd $TMP/random_dirs_with_newline
|
||||
|
||||
# tests if special dir names causes problems
|
||||
|
|
|
@ -6,7 +6,11 @@
|
|||
|
||||
echo '### Tests from xargs'
|
||||
|
||||
rsync -Ha --delete input-files/xargs-inputs/ tmp/
|
||||
pwd=$(pwd)
|
||||
# If not run in dir parallel/testsuite: set testsuitedir to path of testsuite
|
||||
testsuitedir=${testsuitedir:-$pwd}
|
||||
|
||||
rsync -Ha --delete "$testsuitedir"/input-files/xargs-inputs/ tmp/
|
||||
cd tmp
|
||||
|
||||
PARALLEL=-j8
|
||||
|
|
|
@ -6,10 +6,12 @@
|
|||
|
||||
TMP=/run/shm/parallel_$$
|
||||
|
||||
pwd=`pwd`
|
||||
pwd=$(pwd)
|
||||
# If not run in dir parallel/testsuite: set testsuitedir to path of testsuite
|
||||
testsuitedir=${testsuitedir:-$pwd}
|
||||
mkdir -p $TMP
|
||||
cd $TMP/
|
||||
tar xjf "$pwd"/input-files/testdir.tar.bz2
|
||||
tar xjf "$testsuitedir"/input-files/testdir.tar.bz2
|
||||
|
||||
echo echo test of cat pipe sh | parallel -j 50 2>&1
|
||||
find . -name '*.jpg' | parallel -j +0 convert -geometry 120 {} {//}/thumb_{/}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
mkdir -p tmp
|
||||
cd tmp
|
||||
|
||||
median() { perl -e '@a=sort {$a<=>$b} <>;print $a[$#a/2]';}
|
||||
|
|
|
@ -6,14 +6,15 @@
|
|||
|
||||
cpuburn=$(mktemp)
|
||||
(echo '#!/usr/bin/perl'
|
||||
echo "eval{setpriority(0,0,9)}; while(1){}") > $cpuburn
|
||||
chmod 700 $cpuburn
|
||||
echo "eval{setpriority(0,0,9)}; while(1){}") > "$cpuburn"
|
||||
chmod 700 "$cpuburn"
|
||||
basename=$(basename "$cpuburn")
|
||||
|
||||
forceload () {
|
||||
# Force load
|
||||
LOAD=$1
|
||||
# Start 10 times as many cpuburn
|
||||
seq 0 0.1 $1 | parallel -j0 timeout 20 $cpuburn 2>/dev/null &
|
||||
seq 0 0.1 $1 | parallel -j0 timeout 20 "'$cpuburn'" 2>/dev/null &
|
||||
PID=$!
|
||||
# Give GNU Parallel 1 second to startup
|
||||
sleep 1
|
||||
|
@ -37,15 +38,15 @@ echo '### Test slow arguments generation - https://savannah.gnu.org/bugs/?32834'
|
|||
EOF
|
||||
|
||||
# Make sure we got all the cpuburn killed
|
||||
killall $(basename $cpuburn) 2>/dev/null
|
||||
killall "$basename" 2>/dev/null
|
||||
|
||||
echo '### Test too slow spawning'
|
||||
# Let the commands below run during high load
|
||||
seq 1000 | timeout 20 parallel -j400% -N0 $cpuburn 2>/dev/null &
|
||||
seq 1000 | timeout 20 parallel -j400% -N0 "'$cpuburn'" 2>/dev/null &
|
||||
PID=$!
|
||||
seq 1 1000 | stdout nice nice parallel --halt 1 -uj0 -N0 kill $PID |
|
||||
perl -pe '/parallel: Warning: Starting \d+ processes took/ and do {close STDIN; `kill '$PID';killall '$(basename $cpuburn)'`; print "OK\n"; exit }';
|
||||
perl -pe '/parallel: Warning: Starting \d+ processes took/ and do {close STDIN; `kill '$PID';killall "$basename"`; print "OK\n"; exit }';
|
||||
|
||||
# Make sure we got all the cpuburn killed
|
||||
killall $(basename $cpuburn) 2>/dev/null
|
||||
rm $cpuburn
|
||||
killall "$basename" 2>/dev/null
|
||||
rm "$cpuburn"
|
||||
|
|
|
@ -52,8 +52,8 @@ echo '### bug #42041: Implement $PARALLEL_JOBSLOT'
|
|||
|
||||
echo '### bug #42363: --pipepart and --fifo/--cat does not work'
|
||||
seq 100 > /tmp/bug42363;
|
||||
parallel --pipepart --block 31 -a /tmp/bug42363 -k --fifo wc | perl -pe 's:(/tmp\S+par).....:${1}XXXXX:';
|
||||
parallel --pipepart --block 31 -a /tmp/bug42363 -k --cat wc | perl -pe 's:(/tmp\S+par).....:${1}XXXXX:';
|
||||
parallel --pipepart --block 31 -a /tmp/bug42363 -k --fifo wc | perl -pe 's:(/tmp.*par).....:${1}XXXXX:';
|
||||
parallel --pipepart --block 31 -a /tmp/bug42363 -k --cat wc | perl -pe 's:(/tmp.*par).....:${1}XXXXX:';
|
||||
rm /tmp/bug42363
|
||||
|
||||
echo '### bug #42055: --pipepart -a bigfile should not require sequential reading of bigfile'
|
||||
|
|
|
@ -103,17 +103,17 @@ echo '### Race condition bug - 2 - would block';
|
|||
seq 1 100 | nice parallel -j100 --block 1 --recend "" --pipe cat >/dev/null
|
||||
|
||||
echo '### Test --block size=1';
|
||||
seq 1 10| parallel --block 1 --files --recend "" --pipe sort -n | parallel -Xj1 sort -nm {} ";"rm {}
|
||||
seq 1 10| TMPDIR=/tmp parallel --block 1 --files --recend "" --pipe sort -n | parallel -Xj1 sort -nm {} ";"rm {}
|
||||
|
||||
echo '### Test --block size=1M -j10 --files - more jobs than data';
|
||||
sort -n < /tmp/blocktest | md5sum;
|
||||
cat /tmp/blocktest | parallel --files --recend "\n" -j10 --pipe sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
|
||||
cat /tmp/blocktest | TMPDIR=/tmp parallel --files --recend "\n" -j10 --pipe sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
|
||||
|
||||
echo '### Test --block size=1M -j1 - more data than cpu';
|
||||
cat /tmp/blocktest | parallel --files --recend "\n" -j1 --pipe sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
|
||||
cat /tmp/blocktest | TMPDIR=/tmp parallel --files --recend "\n" -j1 --pipe sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
|
||||
|
||||
echo '### Test --block size=1M -j1 - more data than cpu';
|
||||
cat /tmp/blocktest | parallel --files --recend "\n" -j2 --pipe sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
|
||||
cat /tmp/blocktest | TMPDIR=/tmp parallel --files --recend "\n" -j2 --pipe sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
|
||||
|
||||
echo '### Test --pipe default settings';
|
||||
cat /tmp/blocktest | parallel --pipe sort | sort -n | md5sum
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
par_tmux_filter() {
|
||||
# /tmp/parallel-local7/tmsOU2Ig
|
||||
perl -pe 's:(/tmp\S+/tms).....:$1XXXXX:;s/ p\d+/pID/;'
|
||||
perl -pe 's:(/tmp.*/tms).....:$1XXXXX:;s/ p\d+/pID/;'
|
||||
}
|
||||
export -f par_tmux_filter
|
||||
|
||||
|
|
|
@ -50,8 +50,9 @@ echo '### Test --spreadstdin - this failed during devel';
|
|||
echo '### Test --spreadstdin -k';
|
||||
nice seq 1 1000000 | $NICEPAR -k --recend "\n" -j10 --spreadstdin gzip -9 | zcat | md5sum
|
||||
|
||||
# --files requires TMPDIR does not contain \n
|
||||
echo '### Test --spreadstdin --files';
|
||||
nice seq 1 1000000 | shuf | $NICEPAR --files --recend "\n" -j10 --spreadstdin sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
|
||||
nice seq 1 1000000 | shuf | TMPDIR=/tmp $NICEPAR --files --recend "\n" -j10 --spreadstdin sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
|
||||
|
||||
echo '### Test --tag ::: a ::: b';
|
||||
stdout $NICEPAR -k --tag -j1 echo stderr-{.} ">&2;" echo stdout-{} ::: a ::: b
|
||||
|
|
|
@ -51,6 +51,7 @@ par_filter_hosts_no_ssh_nxserver() {
|
|||
par_controlmaster_is_faster() {
|
||||
echo '### bug #41964: --controlmaster not seems to reuse OpenSSH connections to the same host'
|
||||
echo '-M should finish first - eventhough there are 2x jobs'
|
||||
export SSHLOGIN1=sh@lo
|
||||
(parallel -S $SSHLOGIN1 true ::: {1..20};
|
||||
echo No --controlmaster - finish last) &
|
||||
(parallel -M -S $SSHLOGIN1 true ::: {1..40};
|
||||
|
|
|
@ -3,21 +3,24 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
find {$TMPDIR,/var/tmp,/tmp}/{fif,tms,par[^a]}* -mmin -10 2>/dev/null | parallel rm
|
||||
cd testsuite 2>/dev/null
|
||||
rm -rf tmp
|
||||
mkdir tmp
|
||||
cd tmp
|
||||
cleanup() {
|
||||
find {"$TMPDIR",/var/tmp,/tmp}/{fif,tms,par[^a]}* -mmin -10 -print0 2>/dev/null |
|
||||
parallel -0 rm 2>/dev/null
|
||||
}
|
||||
|
||||
cleanup
|
||||
touch ~/.parallel/will-cite
|
||||
echo '### test parallel_tutorial'
|
||||
rm -f /tmp/runs
|
||||
|
||||
srcdir=$(pwd | perl -pe 's=$ENV{HOME}==')
|
||||
pwd=$(pwd)
|
||||
# If not run in dir parallel/testsuite: set testsuitedir to path of testsuite
|
||||
testsuitedir=${testsuitedir:-$pwd}
|
||||
srcdir=$(echo "$testsuitedir" | perl -pe 's=$ENV{HOME}==')
|
||||
|
||||
export SERVER1=parallel@lo
|
||||
export SERVER2=csh@lo
|
||||
export PARALLEL=-k
|
||||
perl -ne '$/="\n\n"; /^Output/../^[^O]\S/ and next; /^ / and print;' ../../src/parallel_tutorial.pod |
|
||||
perl -ne '$/="\n\n"; /^Output/../^[^O]\S/ and next; /^ / and print;' "$testsuitedir"/../src/parallel_tutorial.pod |
|
||||
egrep -v 'curl|tty|parallel_tutorial|interactive|example.(com|net)|shellquote|works' |
|
||||
perl -pe 's/username@//;s/user@//;
|
||||
s/zenity/zenity --timeout=15/;
|
||||
|
@ -101,9 +104,14 @@ perl -ne '$/="\n\n"; /^Output/../^[^O]\S/ and next; /^ / and print;' ../../src/
|
|||
s/doi.*=.*//;
|
||||
s/url.*= .*doi.org.*//;
|
||||
s/.Feel free to use .nocite.*//;
|
||||
# tmpdir and files
|
||||
s:/tmp/parallel-tutorial-tmpdir/par-job-\S+:script:g;
|
||||
s:/tmp/par-job-\S+:script:g;
|
||||
s:par......par:tempfile:g;
|
||||
s:^tempfile\n::g;
|
||||
' | uniq
|
||||
# 3+3 .par files (from --files), 1 .tms-file from tmux attach
|
||||
find {$TMPDIR,/var/tmp,/tmp}/{fif,tms,par[^a]}* -mmin -10 2>/dev/null | wc -l
|
||||
find {$TMPDIR,/var/tmp,/tmp}/{fif,tms,par[^a]}* -mmin -10 2>/dev/null | parallel rm
|
||||
|
||||
echo "### 3+3 .par files (from --files), 1 .tms-file from tmux attach"
|
||||
find {"$TMPDIR",/var/tmp}/{fif,tms,par[^a]}* -mmin -10 -type f -print0 2>/dev/null |
|
||||
parallel -0 grep . | sort
|
||||
cleanup
|
||||
|
|
|
@ -7,6 +7,10 @@
|
|||
start_centos3() {
|
||||
stdout ping -w 1 -c 1 centos3 >/dev/null || (
|
||||
# Vagrant does not set the IP addr
|
||||
pwd=$(pwd)
|
||||
# If not run in dir parallel/testsuite: set testsuitedir to path of testsuite
|
||||
testsuitedir=${testsuitedir:-$pwd}
|
||||
cd "$testsuitedir"
|
||||
cd testsuite/vagrant/tange/centos3/ 2>/dev/null
|
||||
cd vagrant/tange/centos3/ 2>/dev/null
|
||||
cd ../vagrant/tange/centos3/ 2>/dev/null
|
||||
|
@ -55,6 +59,10 @@ compgen -A function | grep par_ | LC_ALL=C sort |
|
|||
perl -pe 's:/usr/bin:/bin:g;'
|
||||
|
||||
(
|
||||
pwd=$(pwd)
|
||||
# If not run in dir parallel/testsuite: set testsuitedir to path of testsuite
|
||||
testsuitedir=${testsuitedir:-$pwd}
|
||||
cd "$testsuitedir"
|
||||
cd vagrant/tange/centos3/
|
||||
stdout vagrant suspend |
|
||||
grep -v '==> default: Saving VM state' |
|
||||
|
|
|
@ -9,12 +9,12 @@ par_stdin() {
|
|||
seq 10 | parallel --semaphore --id stdin wc
|
||||
seq 10 | parallel --semaphore --id stdin --fg wc
|
||||
tmp=$(mktemp)
|
||||
seq 10 > $tmp
|
||||
parallel -a $tmp --semaphore --id stdin wc
|
||||
parallel -a $tmp --semaphore --id stdin --fg wc
|
||||
seq 10 > "$tmp"
|
||||
parallel -a "$tmp" --semaphore --id stdin wc
|
||||
parallel -a "$tmp" --semaphore --id stdin --fg wc
|
||||
parallel --semaphore --id stdin --wait
|
||||
# Should fail: More files are not supported
|
||||
parallel -a $tmp -a $tmp --semaphore --id stdin --fg wc
|
||||
parallel -a "$tmp" -a "$tmp" --semaphore --id stdin --fg wc
|
||||
}
|
||||
|
||||
par_mutex() {
|
||||
|
|
|
@ -64,16 +64,18 @@ echo "### Test sql:sql::alias"
|
|||
sql sql:sql::sqlunittest "SELECT 'Yes it works' as 'Test sql:sql::alias';"
|
||||
|
||||
echo "### Test --noheaders --no-headers -n"
|
||||
sql -n :sqlunittest 'select * from unittest order by id' \
|
||||
| parallel -k --colsep '\t' echo {2} {1}
|
||||
sql --noheaders :sqlunittest 'select * from unittest order by id' \
|
||||
| parallel -k --colsep '\t' echo {2} {1}
|
||||
sql --no-headers :sqlunittest 'select * from unittest order by id' \
|
||||
| parallel -k --colsep '\t' echo {2} {1}
|
||||
sql -n :sqlunittest 'select * from unittest order by id' |
|
||||
parallel -k --colsep '\t' echo {2} {1}
|
||||
sql --noheaders :sqlunittest 'select * from unittest order by id' |
|
||||
parallel -k --colsep '\t' echo {2} {1}
|
||||
sql --no-headers :sqlunittest 'select * from unittest order by id' |
|
||||
parallel -k --colsep '\t' echo {2} {1}
|
||||
|
||||
echo "### Test --sep -s";
|
||||
sql --no-headers -s : pg:/// 'select 1,2' | parallel --colsep ':' echo {2} {1}
|
||||
sql --no-headers --sep : pg:/// 'select 1,2' | parallel --colsep ':' echo {2} {1}
|
||||
sql --no-headers -s : pg:/// 'select 1,2' |
|
||||
parallel --colsep ':' echo {2} {1}
|
||||
sql --no-headers --sep : pg:/// 'select 1,2' |
|
||||
parallel --colsep ':' echo {2} {1}
|
||||
|
||||
echo "### Test --passthrough -p";
|
||||
sql -p -H :sqlunittest 'select * from unittest'
|
||||
|
@ -101,7 +103,7 @@ sql --table-size :sqlunittest | wc -l
|
|||
|
||||
echo "### Test --debug"
|
||||
sql --debug :sqlunittest "SELECT 'Yes it does' as 'Test if --debug works';" |
|
||||
perl -pe 's:/tmp/sql01-tmpdir/...........sql:tmpfile:g'
|
||||
perl -pe 's:/tmp/...........sql:tmpfile:g'
|
||||
|
||||
echo "### Test --version -V"
|
||||
sql --version | wc
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
par_sqlite() {
|
||||
tmp=$(mktemp -d)
|
||||
cd $tmp
|
||||
cd "$tmp"
|
||||
echo '### Test of sqlite'
|
||||
for CMDSQL in sqlite sqlite3 ; do
|
||||
echo "Current command: $CMDSQL"
|
||||
|
|
|
@ -10,7 +10,11 @@ SSHLOGIN1=$SSHUSER1@$SERVER1
|
|||
|
||||
mkdir -p tmp
|
||||
cd tmp
|
||||
tar xjf ../input-files/testdir.tar.bz2
|
||||
pwd=$(pwd)
|
||||
# If not run in dir parallel/testsuite: set testsuitedir to path of testsuite
|
||||
testsuitedir=${testsuitedir:-$pwd}
|
||||
|
||||
tar xjf "$testsuitedir"/input-files/testdir.tar.bz2
|
||||
#rsync -Ha --delete input-files/testdir/ tmp/
|
||||
#cd tmp
|
||||
|
||||
|
|
|
@ -319,7 +319,7 @@ par_l0_is_l1 ### Because of --tollef -l, then -l0 == -l1, sorry
|
|||
par_l0_is_l1 l0 1
|
||||
par_l0_is_l1 l0 2
|
||||
par_linebuffer_files ### bug #48658: --linebuffer --files
|
||||
par_linebuffer_files 10
|
||||
par_linebuffer_files 20
|
||||
par_link_files_as_only_arg bug #50685: single ::::+ does not work
|
||||
par_link_files_as_only_arg 1 1 1
|
||||
par_link_files_as_only_arg 2 2 2
|
||||
|
@ -692,7 +692,8 @@ par_pipe_tag_v foo cat
|
|||
par_pipe_tag_v foo 1
|
||||
par_pipe_tag_v foo 2
|
||||
par_pipe_tag_v foo 3
|
||||
par_pipe_tag_v foo /tmp/tmpfile.par
|
||||
par_pipe_tag_v foo /tmp/parallel-local-0.3s-tmp/
|
||||
par_pipe_tag_v </tmp/tmpfile.par
|
||||
par_pipe_to_func ### bug #45998: --pipe to function broken
|
||||
par_pipe_to_func 1
|
||||
par_pipe_to_func pipefunc OK
|
||||
|
@ -1355,19 +1356,25 @@ par_version 11
|
|||
par_wd_3dot_local bug #45993: --wd ... should also work when run locally
|
||||
par_wd_3dot_local parallel: Error: Cannot change into non-executable dir /bi: No such file or directory
|
||||
par_wd_3dot_local /bin
|
||||
par_wd_3dot_local ~/privat/parallel/testsuite
|
||||
par_wd_3dot_local /tmp/parallel-local-0.0s-tmp/
|
||||
par_wd_3dot_local </tmp
|
||||
par_wd_3dot_local OK
|
||||
par_wd_3dot_local /
|
||||
par_wd_3dot_local ~/privat/parallel/testsuite
|
||||
par_wd_3dot_local /tmp/parallel-local-0.0s-tmp/
|
||||
par_wd_3dot_local </tmp
|
||||
par_wd_3dot_local OK
|
||||
par_wd_3dot_local /tmp
|
||||
par_wd_3dot_local ~/privat/parallel/testsuite
|
||||
par_wd_3dot_local /tmp/parallel-local-0.0s-tmp/
|
||||
par_wd_3dot_local </tmp
|
||||
par_wd_3dot_local OK
|
||||
par_wd_3dot_local ~/.parallel/tmp/hostname-0-0
|
||||
par_wd_3dot_local ~/privat/parallel/testsuite
|
||||
par_wd_3dot_local /tmp/parallel-local-0.0s-tmp/
|
||||
par_wd_3dot_local </tmp
|
||||
par_wd_3dot_local OK
|
||||
par_wd_3dot_local ~/privat/parallel/testsuite
|
||||
par_wd_3dot_local ~/privat/parallel/testsuite
|
||||
par_wd_3dot_local /tmp/parallel-local-0.0s-tmp/
|
||||
par_wd_3dot_local </tmp
|
||||
par_wd_3dot_local /tmp/parallel-local-0.0s-tmp/
|
||||
par_wd_3dot_local </tmp
|
||||
par_wd_3dot_local OK
|
||||
par_wd_dotdotdot ### parallel --wd ... should clean up
|
||||
par_wd_dotdotdot 1 == 1
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -126,13 +126,18 @@ par_eof_on_command_line_input_source foo
|
|||
par_file_rpl ### file as replacement string
|
||||
par_file_rpl contest1
|
||||
par_file_rpl contest2
|
||||
par_file_rpl File name /tmp/parallel-local-1s-tmpdir/tmp.XXXXXX
|
||||
par_file_rpl File name /tmp/parallel-local-1s-tmp/
|
||||
par_file_rpl </tmp/tmp.XXXXXX
|
||||
par_file_rpl contest1
|
||||
par_file_rpl contest2
|
||||
par_file_rpl File name /parallel-local-1s-tmpdir/tmp.XXXXXX/parallel-local-1s-tmpdir/tmp.XXXXXX
|
||||
par_file_rpl File name /parallel-local-1s-tmp/
|
||||
par_file_rpl </tmp/tmp.XXXXXX/parallel-local-1s-tmp/
|
||||
par_file_rpl </parallel-local-1s-tmp/
|
||||
par_file_rpl </tmp/tmp.XXXXXX/tmp.XXXXXX
|
||||
par_file_rpl contest1
|
||||
par_file_rpl contest2
|
||||
par_file_rpl File name /tmp/parallel-local-1s-tmpdir/tmp.XXXXXX
|
||||
par_file_rpl File name /tmp/parallel-local-1s-tmp/
|
||||
par_file_rpl </tmp/tmp.XXXXXX
|
||||
par_file_rpl 1
|
||||
par_file_rpl 1
|
||||
par_file_rpl 2
|
||||
|
@ -487,7 +492,8 @@ par_profiles_with_space ### bug #42902: profiles containing arguments with space
|
|||
par_profiles_with_space /bin/bash=/bin/bash
|
||||
par_profiles_with_space echo '/bin/bash=/bin/bash'
|
||||
par_profiles_with_space /bin/bash=/bin/bash
|
||||
par_profiles_with_space With script in $PARALLEL /bin/bash=~/privat/parallel/testsuite
|
||||
par_profiles_with_space With script in $PARALLEL /bin/bash=/tmp/parallel-local-1s-tmp/
|
||||
par_profiles_with_space </tmp
|
||||
par_pxz_complains bug #44250: pxz complains File format not recognized but decompresses anyway
|
||||
par_pxz_complains ls: cannot access '/OK-if-missing-file': No such file or directory
|
||||
par_pxz_complains can not seek in input: Illegal seek
|
||||
|
|
|
@ -646,15 +646,15 @@ par_shebang pl C
|
|||
par_shebang py A
|
||||
par_shebang py B
|
||||
par_shebang py C
|
||||
par_shebang r [1] "A"
|
||||
par_shebang r [1] "B"
|
||||
par_shebang r [1] "C"
|
||||
par_shebang rb ["A"]
|
||||
par_shebang rb ["B"]
|
||||
par_shebang rb ["C"]
|
||||
par_shebang sh A
|
||||
par_shebang sh B
|
||||
par_shebang sh C
|
||||
par_shebang r [1] "A"
|
||||
par_shebang r [1] "B"
|
||||
par_shebang r [1] "C"
|
||||
par_show_limits ### Test --show-limits
|
||||
par_show_limits Maximal size of command: 130xxx
|
||||
par_show_limits Maximal usable size of command: 63xxx
|
||||
|
|
|
@ -96,4 +96,5 @@ par_print_before_halt_on_error 2 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR
|
|||
par_sem_dir ### bug #58985: sem stall if .parallel/semaphores is chmod 0
|
||||
par_sem_dir parallel: Error: Semaphoredir must be writable: '~/.parallel/semaphores'
|
||||
par_tmux_termination ### --tmux test - check termination
|
||||
par_tmux_termination See output with: tmux -S /tmp/parallel-local-race01-tmpdir/tmsXXXXX attach
|
||||
par_tmux_termination See output with: tmux -S '/tmp/parallel-local-race01-tmp/
|
||||
par_tmux_termination </tmp/tmsXXXXX' attach
|
||||
|
|
|
@ -43,12 +43,6 @@ par_continuous_output 1
|
|||
par_continuous_output 1
|
||||
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
|
||||
|
@ -70,12 +64,6 @@ 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
|
||||
|
@ -91,10 +79,6 @@ 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
|
||||
|
@ -163,6 +147,14 @@ par_retries_bug_from_2010 4
|
|||
par_retries_bug_from_2010 4
|
||||
par_retries_bug_from_2010 4
|
||||
par_retries_bug_from_2010 2
|
||||
par_semaphore ### Test if parallel invoked as sem will run parallel --semaphore
|
||||
par_semaphore job1a 1
|
||||
par_semaphore job2a 2
|
||||
par_semaphore job1b 3
|
||||
par_semaphore job3a 4
|
||||
par_semaphore job2b 5
|
||||
par_semaphore job3b 6
|
||||
par_semaphore done
|
||||
par_sql_CSV ### CSV write to the right place
|
||||
par_sql_CSV ran OK
|
||||
par_sql_CSV ok
|
||||
|
|
|
@ -332,31 +332,31 @@ par_shuf $MYSQL OK: Diff bigger than 2500 char
|
|||
par_shuf $MYSQL Exit=0
|
||||
par_shuf $MYSQL Exit=0
|
||||
par_shuf $MYSQL Command V1 V2 Stdout Stderr
|
||||
par_shuf $MYSQL sleep .3;echo 1 a 1 a /tmp/parallel-bug49791-c20/1/1/2/a/stdout /tmp/parallel-bug49791-c20/1/1/2/a/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 1 b 1 b /tmp/parallel-bug49791-c20/1/1/2/b/stdout /tmp/parallel-bug49791-c20/1/1/2/b/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 1 c 1 c /tmp/parallel-bug49791-c20/1/1/2/c/stdout /tmp/parallel-bug49791-c20/1/1/2/c/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 1 d 1 d /tmp/parallel-bug49791-c20/1/1/2/d/stdout /tmp/parallel-bug49791-c20/1/1/2/d/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 1 e 1 e /tmp/parallel-bug49791-c20/1/1/2/e/stdout /tmp/parallel-bug49791-c20/1/1/2/e/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 2 a 2 a /tmp/parallel-bug49791-c20/1/2/2/a/stdout /tmp/parallel-bug49791-c20/1/2/2/a/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 2 b 2 b /tmp/parallel-bug49791-c20/1/2/2/b/stdout /tmp/parallel-bug49791-c20/1/2/2/b/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 2 c 2 c /tmp/parallel-bug49791-c20/1/2/2/c/stdout /tmp/parallel-bug49791-c20/1/2/2/c/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 2 d 2 d /tmp/parallel-bug49791-c20/1/2/2/d/stdout /tmp/parallel-bug49791-c20/1/2/2/d/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 2 e 2 e /tmp/parallel-bug49791-c20/1/2/2/e/stdout /tmp/parallel-bug49791-c20/1/2/2/e/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 3 a 3 a /tmp/parallel-bug49791-c20/1/3/2/a/stdout /tmp/parallel-bug49791-c20/1/3/2/a/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 3 b 3 b /tmp/parallel-bug49791-c20/1/3/2/b/stdout /tmp/parallel-bug49791-c20/1/3/2/b/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 3 c 3 c /tmp/parallel-bug49791-c20/1/3/2/c/stdout /tmp/parallel-bug49791-c20/1/3/2/c/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 3 d 3 d /tmp/parallel-bug49791-c20/1/3/2/d/stdout /tmp/parallel-bug49791-c20/1/3/2/d/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 3 e 3 e /tmp/parallel-bug49791-c20/1/3/2/e/stdout /tmp/parallel-bug49791-c20/1/3/2/e/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 4 a 4 a /tmp/parallel-bug49791-c20/1/4/2/a/stdout /tmp/parallel-bug49791-c20/1/4/2/a/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 4 b 4 b /tmp/parallel-bug49791-c20/1/4/2/b/stdout /tmp/parallel-bug49791-c20/1/4/2/b/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 4 c 4 c /tmp/parallel-bug49791-c20/1/4/2/c/stdout /tmp/parallel-bug49791-c20/1/4/2/c/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 4 d 4 d /tmp/parallel-bug49791-c20/1/4/2/d/stdout /tmp/parallel-bug49791-c20/1/4/2/d/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 4 e 4 e /tmp/parallel-bug49791-c20/1/4/2/e/stdout /tmp/parallel-bug49791-c20/1/4/2/e/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 5 a 5 a /tmp/parallel-bug49791-c20/1/5/2/a/stdout /tmp/parallel-bug49791-c20/1/5/2/a/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 5 b 5 b /tmp/parallel-bug49791-c20/1/5/2/b/stdout /tmp/parallel-bug49791-c20/1/5/2/b/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 5 c 5 c /tmp/parallel-bug49791-c20/1/5/2/c/stdout /tmp/parallel-bug49791-c20/1/5/2/c/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 5 d 5 d /tmp/parallel-bug49791-c20/1/5/2/d/stdout /tmp/parallel-bug49791-c20/1/5/2/d/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 5 e 5 e /tmp/parallel-bug49791-c20/1/5/2/e/stdout /tmp/parallel-bug49791-c20/1/5/2/e/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 1 a 1 a /tmp/parallel-bug49791- <c20/1/1/2/a/stdout /tmp/parallel-bug49791- <c20/1/1/2/a/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 1 b 1 b /tmp/parallel-bug49791- <c20/1/1/2/b/stdout /tmp/parallel-bug49791- <c20/1/1/2/b/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 1 c 1 c /tmp/parallel-bug49791- <c20/1/1/2/c/stdout /tmp/parallel-bug49791- <c20/1/1/2/c/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 1 d 1 d /tmp/parallel-bug49791- <c20/1/1/2/d/stdout /tmp/parallel-bug49791- <c20/1/1/2/d/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 1 e 1 e /tmp/parallel-bug49791- <c20/1/1/2/e/stdout /tmp/parallel-bug49791- <c20/1/1/2/e/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 2 a 2 a /tmp/parallel-bug49791- <c20/1/2/2/a/stdout /tmp/parallel-bug49791- <c20/1/2/2/a/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 2 b 2 b /tmp/parallel-bug49791- <c20/1/2/2/b/stdout /tmp/parallel-bug49791- <c20/1/2/2/b/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 2 c 2 c /tmp/parallel-bug49791- <c20/1/2/2/c/stdout /tmp/parallel-bug49791- <c20/1/2/2/c/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 2 d 2 d /tmp/parallel-bug49791- <c20/1/2/2/d/stdout /tmp/parallel-bug49791- <c20/1/2/2/d/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 2 e 2 e /tmp/parallel-bug49791- <c20/1/2/2/e/stdout /tmp/parallel-bug49791- <c20/1/2/2/e/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 3 a 3 a /tmp/parallel-bug49791- <c20/1/3/2/a/stdout /tmp/parallel-bug49791- <c20/1/3/2/a/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 3 b 3 b /tmp/parallel-bug49791- <c20/1/3/2/b/stdout /tmp/parallel-bug49791- <c20/1/3/2/b/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 3 c 3 c /tmp/parallel-bug49791- <c20/1/3/2/c/stdout /tmp/parallel-bug49791- <c20/1/3/2/c/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 3 d 3 d /tmp/parallel-bug49791- <c20/1/3/2/d/stdout /tmp/parallel-bug49791- <c20/1/3/2/d/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 3 e 3 e /tmp/parallel-bug49791- <c20/1/3/2/e/stdout /tmp/parallel-bug49791- <c20/1/3/2/e/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 4 a 4 a /tmp/parallel-bug49791- <c20/1/4/2/a/stdout /tmp/parallel-bug49791- <c20/1/4/2/a/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 4 b 4 b /tmp/parallel-bug49791- <c20/1/4/2/b/stdout /tmp/parallel-bug49791- <c20/1/4/2/b/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 4 c 4 c /tmp/parallel-bug49791- <c20/1/4/2/c/stdout /tmp/parallel-bug49791- <c20/1/4/2/c/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 4 d 4 d /tmp/parallel-bug49791- <c20/1/4/2/d/stdout /tmp/parallel-bug49791- <c20/1/4/2/d/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 4 e 4 e /tmp/parallel-bug49791- <c20/1/4/2/e/stdout /tmp/parallel-bug49791- <c20/1/4/2/e/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 5 a 5 a /tmp/parallel-bug49791- <c20/1/5/2/a/stdout /tmp/parallel-bug49791- <c20/1/5/2/a/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 5 b 5 b /tmp/parallel-bug49791- <c20/1/5/2/b/stdout /tmp/parallel-bug49791- <c20/1/5/2/b/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 5 c 5 c /tmp/parallel-bug49791- <c20/1/5/2/c/stdout /tmp/parallel-bug49791- <c20/1/5/2/c/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 5 d 5 d /tmp/parallel-bug49791- <c20/1/5/2/d/stdout /tmp/parallel-bug49791- <c20/1/5/2/d/stderr
|
||||
par_shuf $MYSQL sleep .3;echo 5 e 5 e /tmp/parallel-bug49791- <c20/1/5/2/e/stdout /tmp/parallel-bug49791- <c20/1/5/2/e/stderr
|
||||
par_shuf $PG p_wrapper par_shuf '$PG'
|
||||
par_shuf $PG 1 a
|
||||
par_shuf $PG 1 b
|
||||
|
@ -386,33 +386,33 @@ par_shuf $PG 5 e
|
|||
par_shuf $PG OK: Diff bigger than 2500 char
|
||||
par_shuf $PG Exit=0
|
||||
par_shuf $PG Exit=0
|
||||
par_shuf $PG command | v1 | v2 | stdout | stderr
|
||||
par_shuf $PG -------------------+----+----+-------------------------------------------+-------------------------------------------
|
||||
par_shuf $PG sleep .3;echo 1 a | 1 | a | /tmp/parallel-bug49791-792/1/1/2/a/stdout | /tmp/parallel-bug49791-792/1/1/2/a/stderr
|
||||
par_shuf $PG sleep .3;echo 1 b | 1 | b | /tmp/parallel-bug49791-792/1/1/2/b/stdout | /tmp/parallel-bug49791-792/1/1/2/b/stderr
|
||||
par_shuf $PG sleep .3;echo 1 c | 1 | c | /tmp/parallel-bug49791-792/1/1/2/c/stdout | /tmp/parallel-bug49791-792/1/1/2/c/stderr
|
||||
par_shuf $PG sleep .3;echo 1 d | 1 | d | /tmp/parallel-bug49791-792/1/1/2/d/stdout | /tmp/parallel-bug49791-792/1/1/2/d/stderr
|
||||
par_shuf $PG sleep .3;echo 1 e | 1 | e | /tmp/parallel-bug49791-792/1/1/2/e/stdout | /tmp/parallel-bug49791-792/1/1/2/e/stderr
|
||||
par_shuf $PG sleep .3;echo 2 a | 2 | a | /tmp/parallel-bug49791-792/1/2/2/a/stdout | /tmp/parallel-bug49791-792/1/2/2/a/stderr
|
||||
par_shuf $PG sleep .3;echo 2 b | 2 | b | /tmp/parallel-bug49791-792/1/2/2/b/stdout | /tmp/parallel-bug49791-792/1/2/2/b/stderr
|
||||
par_shuf $PG sleep .3;echo 2 c | 2 | c | /tmp/parallel-bug49791-792/1/2/2/c/stdout | /tmp/parallel-bug49791-792/1/2/2/c/stderr
|
||||
par_shuf $PG sleep .3;echo 2 d | 2 | d | /tmp/parallel-bug49791-792/1/2/2/d/stdout | /tmp/parallel-bug49791-792/1/2/2/d/stderr
|
||||
par_shuf $PG sleep .3;echo 2 e | 2 | e | /tmp/parallel-bug49791-792/1/2/2/e/stdout | /tmp/parallel-bug49791-792/1/2/2/e/stderr
|
||||
par_shuf $PG sleep .3;echo 3 a | 3 | a | /tmp/parallel-bug49791-792/1/3/2/a/stdout | /tmp/parallel-bug49791-792/1/3/2/a/stderr
|
||||
par_shuf $PG sleep .3;echo 3 b | 3 | b | /tmp/parallel-bug49791-792/1/3/2/b/stdout | /tmp/parallel-bug49791-792/1/3/2/b/stderr
|
||||
par_shuf $PG sleep .3;echo 3 c | 3 | c | /tmp/parallel-bug49791-792/1/3/2/c/stdout | /tmp/parallel-bug49791-792/1/3/2/c/stderr
|
||||
par_shuf $PG sleep .3;echo 3 d | 3 | d | /tmp/parallel-bug49791-792/1/3/2/d/stdout | /tmp/parallel-bug49791-792/1/3/2/d/stderr
|
||||
par_shuf $PG sleep .3;echo 3 e | 3 | e | /tmp/parallel-bug49791-792/1/3/2/e/stdout | /tmp/parallel-bug49791-792/1/3/2/e/stderr
|
||||
par_shuf $PG sleep .3;echo 4 a | 4 | a | /tmp/parallel-bug49791-792/1/4/2/a/stdout | /tmp/parallel-bug49791-792/1/4/2/a/stderr
|
||||
par_shuf $PG sleep .3;echo 4 b | 4 | b | /tmp/parallel-bug49791-792/1/4/2/b/stdout | /tmp/parallel-bug49791-792/1/4/2/b/stderr
|
||||
par_shuf $PG sleep .3;echo 4 c | 4 | c | /tmp/parallel-bug49791-792/1/4/2/c/stdout | /tmp/parallel-bug49791-792/1/4/2/c/stderr
|
||||
par_shuf $PG sleep .3;echo 4 d | 4 | d | /tmp/parallel-bug49791-792/1/4/2/d/stdout | /tmp/parallel-bug49791-792/1/4/2/d/stderr
|
||||
par_shuf $PG sleep .3;echo 4 e | 4 | e | /tmp/parallel-bug49791-792/1/4/2/e/stdout | /tmp/parallel-bug49791-792/1/4/2/e/stderr
|
||||
par_shuf $PG sleep .3;echo 5 a | 5 | a | /tmp/parallel-bug49791-792/1/5/2/a/stdout | /tmp/parallel-bug49791-792/1/5/2/a/stderr
|
||||
par_shuf $PG sleep .3;echo 5 b | 5 | b | /tmp/parallel-bug49791-792/1/5/2/b/stdout | /tmp/parallel-bug49791-792/1/5/2/b/stderr
|
||||
par_shuf $PG sleep .3;echo 5 c | 5 | c | /tmp/parallel-bug49791-792/1/5/2/c/stdout | /tmp/parallel-bug49791-792/1/5/2/c/stderr
|
||||
par_shuf $PG sleep .3;echo 5 d | 5 | d | /tmp/parallel-bug49791-792/1/5/2/d/stdout | /tmp/parallel-bug49791-792/1/5/2/d/stderr
|
||||
par_shuf $PG sleep .3;echo 5 e | 5 | e | /tmp/parallel-bug49791-792/1/5/2/e/stdout | /tmp/parallel-bug49791-792/1/5/2/e/stderr
|
||||
par_shuf $PG command | v1 | v2 | stdout | stderr
|
||||
par_shuf $PG -------------------+----+----+----------------------------------------------+----------------------------------------------
|
||||
par_shuf $PG sleep .3;echo 1 a | 1 | a | /tmp/parallel-bug49791- <792/1/1/2/a/stdout | /tmp/parallel-bug49791- <792/1/1/2/a/stderr
|
||||
par_shuf $PG sleep .3;echo 1 b | 1 | b | /tmp/parallel-bug49791- <792/1/1/2/b/stdout | /tmp/parallel-bug49791- <792/1/1/2/b/stderr
|
||||
par_shuf $PG sleep .3;echo 1 c | 1 | c | /tmp/parallel-bug49791- <792/1/1/2/c/stdout | /tmp/parallel-bug49791- <792/1/1/2/c/stderr
|
||||
par_shuf $PG sleep .3;echo 1 d | 1 | d | /tmp/parallel-bug49791- <792/1/1/2/d/stdout | /tmp/parallel-bug49791- <792/1/1/2/d/stderr
|
||||
par_shuf $PG sleep .3;echo 1 e | 1 | e | /tmp/parallel-bug49791- <792/1/1/2/e/stdout | /tmp/parallel-bug49791- <792/1/1/2/e/stderr
|
||||
par_shuf $PG sleep .3;echo 2 a | 2 | a | /tmp/parallel-bug49791- <792/1/2/2/a/stdout | /tmp/parallel-bug49791- <792/1/2/2/a/stderr
|
||||
par_shuf $PG sleep .3;echo 2 b | 2 | b | /tmp/parallel-bug49791- <792/1/2/2/b/stdout | /tmp/parallel-bug49791- <792/1/2/2/b/stderr
|
||||
par_shuf $PG sleep .3;echo 2 c | 2 | c | /tmp/parallel-bug49791- <792/1/2/2/c/stdout | /tmp/parallel-bug49791- <792/1/2/2/c/stderr
|
||||
par_shuf $PG sleep .3;echo 2 d | 2 | d | /tmp/parallel-bug49791- <792/1/2/2/d/stdout | /tmp/parallel-bug49791- <792/1/2/2/d/stderr
|
||||
par_shuf $PG sleep .3;echo 2 e | 2 | e | /tmp/parallel-bug49791- <792/1/2/2/e/stdout | /tmp/parallel-bug49791- <792/1/2/2/e/stderr
|
||||
par_shuf $PG sleep .3;echo 3 a | 3 | a | /tmp/parallel-bug49791- <792/1/3/2/a/stdout | /tmp/parallel-bug49791- <792/1/3/2/a/stderr
|
||||
par_shuf $PG sleep .3;echo 3 b | 3 | b | /tmp/parallel-bug49791- <792/1/3/2/b/stdout | /tmp/parallel-bug49791- <792/1/3/2/b/stderr
|
||||
par_shuf $PG sleep .3;echo 3 c | 3 | c | /tmp/parallel-bug49791- <792/1/3/2/c/stdout | /tmp/parallel-bug49791- <792/1/3/2/c/stderr
|
||||
par_shuf $PG sleep .3;echo 3 d | 3 | d | /tmp/parallel-bug49791- <792/1/3/2/d/stdout | /tmp/parallel-bug49791- <792/1/3/2/d/stderr
|
||||
par_shuf $PG sleep .3;echo 3 e | 3 | e | /tmp/parallel-bug49791- <792/1/3/2/e/stdout | /tmp/parallel-bug49791- <792/1/3/2/e/stderr
|
||||
par_shuf $PG sleep .3;echo 4 a | 4 | a | /tmp/parallel-bug49791- <792/1/4/2/a/stdout | /tmp/parallel-bug49791- <792/1/4/2/a/stderr
|
||||
par_shuf $PG sleep .3;echo 4 b | 4 | b | /tmp/parallel-bug49791- <792/1/4/2/b/stdout | /tmp/parallel-bug49791- <792/1/4/2/b/stderr
|
||||
par_shuf $PG sleep .3;echo 4 c | 4 | c | /tmp/parallel-bug49791- <792/1/4/2/c/stdout | /tmp/parallel-bug49791- <792/1/4/2/c/stderr
|
||||
par_shuf $PG sleep .3;echo 4 d | 4 | d | /tmp/parallel-bug49791- <792/1/4/2/d/stdout | /tmp/parallel-bug49791- <792/1/4/2/d/stderr
|
||||
par_shuf $PG sleep .3;echo 4 e | 4 | e | /tmp/parallel-bug49791- <792/1/4/2/e/stdout | /tmp/parallel-bug49791- <792/1/4/2/e/stderr
|
||||
par_shuf $PG sleep .3;echo 5 a | 5 | a | /tmp/parallel-bug49791- <792/1/5/2/a/stdout | /tmp/parallel-bug49791- <792/1/5/2/a/stderr
|
||||
par_shuf $PG sleep .3;echo 5 b | 5 | b | /tmp/parallel-bug49791- <792/1/5/2/b/stdout | /tmp/parallel-bug49791- <792/1/5/2/b/stderr
|
||||
par_shuf $PG sleep .3;echo 5 c | 5 | c | /tmp/parallel-bug49791- <792/1/5/2/c/stdout | /tmp/parallel-bug49791- <792/1/5/2/c/stderr
|
||||
par_shuf $PG sleep .3;echo 5 d | 5 | d | /tmp/parallel-bug49791- <792/1/5/2/d/stdout | /tmp/parallel-bug49791- <792/1/5/2/d/stderr
|
||||
par_shuf $PG sleep .3;echo 5 e | 5 | e | /tmp/parallel-bug49791- <792/1/5/2/e/stdout | /tmp/parallel-bug49791- <792/1/5/2/e/stderr
|
||||
par_shuf $PG (25 rows)
|
||||
par_shuf $PG
|
||||
par_shuf $SQLITE p_wrapper par_shuf '$SQLITE'
|
||||
|
@ -445,31 +445,31 @@ par_shuf $SQLITE OK: Diff bigger than 2500 char
|
|||
par_shuf $SQLITE Exit=0
|
||||
par_shuf $SQLITE Exit=0
|
||||
par_shuf $SQLITE Command|V1|V2|Stdout|Stderr
|
||||
par_shuf $SQLITE sleep .3;echo 1 a|1|a|/tmp/parallel-bug49791-932/1/1/2/a/stdout|/tmp/parallel-bug49791-932/1/1/2/a/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 1 b|1|b|/tmp/parallel-bug49791-932/1/1/2/b/stdout|/tmp/parallel-bug49791-932/1/1/2/b/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 1 c|1|c|/tmp/parallel-bug49791-932/1/1/2/c/stdout|/tmp/parallel-bug49791-932/1/1/2/c/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 1 d|1|d|/tmp/parallel-bug49791-932/1/1/2/d/stdout|/tmp/parallel-bug49791-932/1/1/2/d/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 1 e|1|e|/tmp/parallel-bug49791-932/1/1/2/e/stdout|/tmp/parallel-bug49791-932/1/1/2/e/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 2 a|2|a|/tmp/parallel-bug49791-932/1/2/2/a/stdout|/tmp/parallel-bug49791-932/1/2/2/a/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 2 b|2|b|/tmp/parallel-bug49791-932/1/2/2/b/stdout|/tmp/parallel-bug49791-932/1/2/2/b/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 2 c|2|c|/tmp/parallel-bug49791-932/1/2/2/c/stdout|/tmp/parallel-bug49791-932/1/2/2/c/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 2 d|2|d|/tmp/parallel-bug49791-932/1/2/2/d/stdout|/tmp/parallel-bug49791-932/1/2/2/d/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 2 e|2|e|/tmp/parallel-bug49791-932/1/2/2/e/stdout|/tmp/parallel-bug49791-932/1/2/2/e/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 3 a|3|a|/tmp/parallel-bug49791-932/1/3/2/a/stdout|/tmp/parallel-bug49791-932/1/3/2/a/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 3 b|3|b|/tmp/parallel-bug49791-932/1/3/2/b/stdout|/tmp/parallel-bug49791-932/1/3/2/b/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 3 c|3|c|/tmp/parallel-bug49791-932/1/3/2/c/stdout|/tmp/parallel-bug49791-932/1/3/2/c/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 3 d|3|d|/tmp/parallel-bug49791-932/1/3/2/d/stdout|/tmp/parallel-bug49791-932/1/3/2/d/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 3 e|3|e|/tmp/parallel-bug49791-932/1/3/2/e/stdout|/tmp/parallel-bug49791-932/1/3/2/e/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 4 a|4|a|/tmp/parallel-bug49791-932/1/4/2/a/stdout|/tmp/parallel-bug49791-932/1/4/2/a/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 4 b|4|b|/tmp/parallel-bug49791-932/1/4/2/b/stdout|/tmp/parallel-bug49791-932/1/4/2/b/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 4 c|4|c|/tmp/parallel-bug49791-932/1/4/2/c/stdout|/tmp/parallel-bug49791-932/1/4/2/c/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 4 d|4|d|/tmp/parallel-bug49791-932/1/4/2/d/stdout|/tmp/parallel-bug49791-932/1/4/2/d/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 4 e|4|e|/tmp/parallel-bug49791-932/1/4/2/e/stdout|/tmp/parallel-bug49791-932/1/4/2/e/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 5 a|5|a|/tmp/parallel-bug49791-932/1/5/2/a/stdout|/tmp/parallel-bug49791-932/1/5/2/a/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 5 b|5|b|/tmp/parallel-bug49791-932/1/5/2/b/stdout|/tmp/parallel-bug49791-932/1/5/2/b/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 5 c|5|c|/tmp/parallel-bug49791-932/1/5/2/c/stdout|/tmp/parallel-bug49791-932/1/5/2/c/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 5 d|5|d|/tmp/parallel-bug49791-932/1/5/2/d/stdout|/tmp/parallel-bug49791-932/1/5/2/d/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 5 e|5|e|/tmp/parallel-bug49791-932/1/5/2/e/stdout|/tmp/parallel-bug49791-932/1/5/2/e/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 1 a|1|a|/tmp/parallel-bug49791- <932/1/1/2/a/stdout|/tmp/parallel-bug49791- <932/1/1/2/a/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 1 b|1|b|/tmp/parallel-bug49791- <932/1/1/2/b/stdout|/tmp/parallel-bug49791- <932/1/1/2/b/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 1 c|1|c|/tmp/parallel-bug49791- <932/1/1/2/c/stdout|/tmp/parallel-bug49791- <932/1/1/2/c/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 1 d|1|d|/tmp/parallel-bug49791- <932/1/1/2/d/stdout|/tmp/parallel-bug49791- <932/1/1/2/d/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 1 e|1|e|/tmp/parallel-bug49791- <932/1/1/2/e/stdout|/tmp/parallel-bug49791- <932/1/1/2/e/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 2 a|2|a|/tmp/parallel-bug49791- <932/1/2/2/a/stdout|/tmp/parallel-bug49791- <932/1/2/2/a/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 2 b|2|b|/tmp/parallel-bug49791- <932/1/2/2/b/stdout|/tmp/parallel-bug49791- <932/1/2/2/b/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 2 c|2|c|/tmp/parallel-bug49791- <932/1/2/2/c/stdout|/tmp/parallel-bug49791- <932/1/2/2/c/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 2 d|2|d|/tmp/parallel-bug49791- <932/1/2/2/d/stdout|/tmp/parallel-bug49791- <932/1/2/2/d/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 2 e|2|e|/tmp/parallel-bug49791- <932/1/2/2/e/stdout|/tmp/parallel-bug49791- <932/1/2/2/e/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 3 a|3|a|/tmp/parallel-bug49791- <932/1/3/2/a/stdout|/tmp/parallel-bug49791- <932/1/3/2/a/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 3 b|3|b|/tmp/parallel-bug49791- <932/1/3/2/b/stdout|/tmp/parallel-bug49791- <932/1/3/2/b/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 3 c|3|c|/tmp/parallel-bug49791- <932/1/3/2/c/stdout|/tmp/parallel-bug49791- <932/1/3/2/c/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 3 d|3|d|/tmp/parallel-bug49791- <932/1/3/2/d/stdout|/tmp/parallel-bug49791- <932/1/3/2/d/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 3 e|3|e|/tmp/parallel-bug49791- <932/1/3/2/e/stdout|/tmp/parallel-bug49791- <932/1/3/2/e/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 4 a|4|a|/tmp/parallel-bug49791- <932/1/4/2/a/stdout|/tmp/parallel-bug49791- <932/1/4/2/a/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 4 b|4|b|/tmp/parallel-bug49791- <932/1/4/2/b/stdout|/tmp/parallel-bug49791- <932/1/4/2/b/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 4 c|4|c|/tmp/parallel-bug49791- <932/1/4/2/c/stdout|/tmp/parallel-bug49791- <932/1/4/2/c/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 4 d|4|d|/tmp/parallel-bug49791- <932/1/4/2/d/stdout|/tmp/parallel-bug49791- <932/1/4/2/d/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 4 e|4|e|/tmp/parallel-bug49791- <932/1/4/2/e/stdout|/tmp/parallel-bug49791- <932/1/4/2/e/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 5 a|5|a|/tmp/parallel-bug49791- <932/1/5/2/a/stdout|/tmp/parallel-bug49791- <932/1/5/2/a/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 5 b|5|b|/tmp/parallel-bug49791- <932/1/5/2/b/stdout|/tmp/parallel-bug49791- <932/1/5/2/b/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 5 c|5|c|/tmp/parallel-bug49791- <932/1/5/2/c/stdout|/tmp/parallel-bug49791- <932/1/5/2/c/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 5 d|5|d|/tmp/parallel-bug49791- <932/1/5/2/d/stdout|/tmp/parallel-bug49791- <932/1/5/2/d/stderr
|
||||
par_shuf $SQLITE sleep .3;echo 5 e|5|e|/tmp/parallel-bug49791- <932/1/5/2/e/stdout|/tmp/parallel-bug49791- <932/1/5/2/e/stderr
|
||||
par_sql_joblog $MYSQL p_wrapper par_sql_joblog '$MYSQL'
|
||||
par_sql_joblog $MYSQL ### should only give a single --joblog heading
|
||||
par_sql_joblog $MYSQL ### --sqlmaster/--sqlworker
|
||||
|
|
|
@ -62,7 +62,9 @@ par_sshloginfile parallel
|
|||
par_sshloginfile parallel
|
||||
par_sshloginfile parallel
|
||||
par_tmux_different_shells ### Test tmux works on different shells
|
||||
par_tmux_different_shells See output with: tmux -S '/tmp/parallel-local-ssh4-tmp/
|
||||
par_tmux_different_shells 0
|
||||
par_tmux_different_shells See output with: tmux -S '/tmp/parallel-local-ssh4-tmp/
|
||||
par_tmux_different_shells 4
|
||||
par_tmux_different_shells 0
|
||||
par_tmux_different_shells 4
|
||||
|
@ -74,9 +76,16 @@ par_tmux_different_shells # command is currently too long for csh. Maybe it can
|
|||
par_tmux_different_shells 0
|
||||
par_tmux_different_shells 4
|
||||
par_tmux_length ### works
|
||||
par_tmux_length See output with: tmux -S attach
|
||||
par_tmux_length See output with: tmux -S attach
|
||||
par_tmux_length See output with: tmux -S '/tmp/parallel-local-ssh4-tmp/
|
||||
par_tmux_length <' attach
|
||||
par_tmux_length See output with: tmux -S '/tmp/parallel-local-ssh4-tmp/
|
||||
par_tmux_length <' attach
|
||||
par_tmux_length ### These blocked due to length
|
||||
par_tmux_length See output with: tmux -S '/tmp/parallel-local-ssh4-tmp/
|
||||
par_tmux_length See output with: tmux -S '/tmp/parallel-local-ssh4-tmp/
|
||||
par_tmux_length See output with: tmux -S '/tmp/parallel-local-ssh4-tmp/
|
||||
par_tmux_length See output with: tmux -S '/tmp/parallel-local-ssh4-tmp/
|
||||
par_tmux_length See output with: tmux -S '/tmp/parallel-local-ssh4-tmp/
|
||||
par_transfer_return_multiple_inputs ### bug #43746: --transfer and --return of multiple inputs {1} and {2}
|
||||
par_transfer_return_multiple_inputs ### and:
|
||||
par_transfer_return_multiple_inputs ### bug #44371: --trc with csh complains
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
par_ssh_cmd_with_newline ### Check --ssh with \n works
|
||||
par_ssh_cmd_with_newline uid=1003(sh) gid=1003(sh) groups=1003(sh)
|
||||
par_pipe_retries ### bug #45025: --pipe --retries does not reschedule on other host
|
||||
par_pipe_retries parallel: Warning: Could not figure out number of cpus on a.a (). Using 1.
|
||||
par_pipe_retries 165668 165668 1048571
|
||||
|
@ -18,6 +20,15 @@ par_env_parallel_onall Myfunc works
|
|||
par_controlmaster_eats bug #36707: --controlmaster eats jobs
|
||||
par_controlmaster_eats OK1
|
||||
par_controlmaster_eats OK2
|
||||
par_controlmaster ### Check -M works if TMPDIR contains space
|
||||
par_controlmaster 1
|
||||
par_controlmaster 2
|
||||
par_controlmaster 3
|
||||
par_controlmaster 1
|
||||
par_controlmaster 2
|
||||
par_controlmaster 3
|
||||
par_controlmaster Part2
|
||||
par_controlmaster OK
|
||||
par_command_len_shellquote ### test quoting will not cause a crash if too long
|
||||
par_command_len_shellquote -Slo -j10 " 1 1 1 1 4
|
||||
par_command_len_shellquote -Slo -j10 " 1 2 1 1 10
|
||||
|
|
|
@ -45,25 +45,25 @@ echo '### bug #42041: Implement $PARALLEL_JOBSLOT'
|
|||
2
|
||||
echo '### bug #42363: --pipepart and --fifo/--cat does not work'
|
||||
### bug #42363: --pipepart and --fifo/--cat does not work
|
||||
seq 100 > /tmp/bug42363; parallel --pipepart --block 31 -a /tmp/bug42363 -k --fifo wc | perl -pe 's:(/tmp\S+par).....:${1}XXXXX:'; parallel --pipepart --block 31 -a /tmp/bug42363 -k --cat wc | perl -pe 's:(/tmp\S+par).....:${1}XXXXX:'; rm /tmp/bug42363
|
||||
14 14 33 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
9 9 28 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
14 14 33 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
9 9 28 /tmp/parallel-local22-tmpdir/parXXXXX
|
||||
seq 100 > /tmp/bug42363; parallel --pipepart --block 31 -a /tmp/bug42363 -k --fifo wc | perl -pe 's:(/tmp.*par).....:${1}XXXXX:'; parallel --pipepart --block 31 -a /tmp/bug42363 -k --cat wc | perl -pe 's:(/tmp.*par).....:${1}XXXXX:'; rm /tmp/bug42363
|
||||
14 14 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
9 9 28 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
14 14 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
9 9 28 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
|
||||
echo '### bug #42055: --pipepart -a bigfile should not require sequential reading of bigfile'
|
||||
### bug #42055: --pipepart -a bigfile should not require sequential reading of bigfile
|
||||
parallel --pipepart -a /etc/passwd -L 1 should not be run
|
||||
|
|
|
@ -254,7 +254,7 @@ echo '### Race condition bug - 1 - would block'; seq 1 80 | nice parallel -j0
|
|||
### Race condition bug - 1 - would block
|
||||
echo '### Race condition bug - 2 - would block'; seq 1 100 | nice parallel -j100 --block 1 --recend "" --pipe cat >/dev/null
|
||||
### Race condition bug - 2 - would block
|
||||
echo '### Test --block size=1'; seq 1 10| parallel --block 1 --files --recend "" --pipe sort -n | parallel -Xj1 sort -nm {} ";"rm {}
|
||||
echo '### Test --block size=1'; seq 1 10| TMPDIR=/tmp parallel --block 1 --files --recend "" --pipe sort -n | parallel -Xj1 sort -nm {} ";"rm {}
|
||||
### Test --block size=1
|
||||
|
||||
|
||||
|
@ -277,14 +277,14 @@ echo '### Test --block size=1'; seq 1 10| parallel --block 1 --files --recend
|
|||
7
|
||||
8
|
||||
9
|
||||
echo '### Test --block size=1M -j10 --files - more jobs than data'; sort -n < /tmp/blocktest | md5sum; cat /tmp/blocktest | parallel --files --recend "\n" -j10 --pipe sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
|
||||
echo '### Test --block size=1M -j10 --files - more jobs than data'; sort -n < /tmp/blocktest | md5sum; cat /tmp/blocktest | TMPDIR=/tmp parallel --files --recend "\n" -j10 --pipe sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
|
||||
### Test --block size=1M -j10 --files - more jobs than data
|
||||
8a7095c1c23bfadc311fe6b16d950582 -
|
||||
8a7095c1c23bfadc311fe6b16d950582 -
|
||||
echo '### Test --block size=1M -j1 - more data than cpu'; cat /tmp/blocktest | parallel --files --recend "\n" -j1 --pipe sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
|
||||
echo '### Test --block size=1M -j1 - more data than cpu'; cat /tmp/blocktest | TMPDIR=/tmp parallel --files --recend "\n" -j1 --pipe sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
|
||||
### Test --block size=1M -j1 - more data than cpu
|
||||
8a7095c1c23bfadc311fe6b16d950582 -
|
||||
echo '### Test --block size=1M -j1 - more data than cpu'; cat /tmp/blocktest | parallel --files --recend "\n" -j2 --pipe sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
|
||||
echo '### Test --block size=1M -j1 - more data than cpu'; cat /tmp/blocktest | TMPDIR=/tmp parallel --files --recend "\n" -j2 --pipe sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
|
||||
### Test --block size=1M -j1 - more data than cpu
|
||||
8a7095c1c23bfadc311fe6b16d950582 -
|
||||
echo '### Test --pipe default settings'; cat /tmp/blocktest | parallel --pipe sort | sort -n | md5sum
|
||||
|
|
|
@ -1,13 +1,16 @@
|
|||
echo '### tmux-1.9'
|
||||
### tmux-1.9
|
||||
seq 510 512 | PARALLEL_TMUX=tmux-1.9 par_tmux
|
||||
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
|
||||
See output with: tmux-1.9 -S '/tmp/parallel-local7-tmp/
|
||||
</tmp/tmsXXXXX' attach
|
||||
0
|
||||
seq 0000 10 510 | PARALLEL_TMUX=tmux-1.9 par_tmux
|
||||
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
|
||||
See output with: tmux-1.9 -S '/tmp/parallel-local7-tmp/
|
||||
</tmp/tmsXXXXX' attach
|
||||
0
|
||||
echo '### tmux-1.9 fails' seq 512 10 2000 | PARALLEL_TMUX=tmux-1.9 par_tmux
|
||||
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
|
||||
See output with: tmux-1.9 -S '/tmp/parallel-local7-tmp/
|
||||
</tmp/tmsXXXXX' attach
|
||||
0
|
||||
seq 2001 10 3000 | PARALLEL_TMUX=tmux-1.9 par_tmux
|
||||
parallel: Error: Command line too long (2012 >= 523) at input 0: 2001
|
||||
|
@ -62,19 +65,22 @@ parallel: Error: Command line too long (6 >= -1264) at input 0: 0
|
|||
echo '### tmux-1.9 0..255 ascii'
|
||||
### tmux-1.9 0..255 ascii
|
||||
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } 0..$_),"\n" } 0..255' | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux --timeout 5 echo | par_tmux_filter; echo $?
|
||||
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
|
||||
See output with: tmux-1.9 -S '/tmp/parallel-local7-tmp/
|
||||
</tmp/tmsXXXXX' attach
|
||||
0
|
||||
echo '### Test output ascii'
|
||||
### Test output ascii
|
||||
rm -f /tmp/paralocal7-ascii*; perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } $_-10..$_),"\n" } 1..255' | stdout parallel --tmux echo {}'>>/tmp/paralocal7-ascii{%}' | par_tmux_filter; sort /tmp/paralocal7-ascii* | md5sum
|
||||
See output with: tmux -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
|
||||
See output with: tmux -S '/tmp/parallel-local7-tmp/
|
||||
</tmp/tmsXXXXX' attach
|
||||
053c7e8e945ef7641fc63bc309ac069d -
|
||||
echo '### Test critical lengths. Must not block'
|
||||
### Test critical lengths. Must not block
|
||||
seq 140 260 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
|
||||
parallel: Error: Command line too long (150 >= -1264) at input 0: 140
|
||||
seq 140 260 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
|
||||
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
|
||||
See output with: tmux-1.9 -S '/tmp/parallel-local7-tmp/
|
||||
</tmp/tmsXXXXX' attach
|
||||
seq 560 850 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
|
||||
parallel: Error: Command line too long (568 >= -1264) at input 0: 560
|
||||
seq 560 850 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
|
||||
|
|
|
@ -61,7 +61,8 @@ echo '### Test --spreadstdin - this failed during devel'; nice seq 1 1000000 |
|
|||
echo '### Test --spreadstdin -k'; nice seq 1 1000000 | $NICEPAR -k --recend "\n" -j10 --spreadstdin gzip -9 | zcat | md5sum
|
||||
### Test --spreadstdin -k
|
||||
8a7095c1c23bfadc311fe6b16d950582 -
|
||||
echo '### Test --spreadstdin --files'; nice seq 1 1000000 | shuf | $NICEPAR --files --recend "\n" -j10 --spreadstdin sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
|
||||
# --files requires TMPDIR does not contain \n
|
||||
echo '### Test --spreadstdin --files'; nice seq 1 1000000 | shuf | TMPDIR=/tmp $NICEPAR --files --recend "\n" -j10 --spreadstdin sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
|
||||
### Test --spreadstdin --files
|
||||
8a7095c1c23bfadc311fe6b16d950582 -
|
||||
echo '### Test --tag ::: a ::: b'; stdout $NICEPAR -k --tag -j1 echo stderr-{.} ">&2;" echo stdout-{} ::: a ::: b
|
||||
|
|
|
@ -150,7 +150,8 @@ num30000
|
|||
num8
|
||||
tsv-file.tsv
|
||||
foo
|
||||
~
|
||||
/tmp/parallel-tutorial-tmp/
|
||||
</tmp
|
||||
my_func() {
|
||||
echo in my_func $1
|
||||
}
|
||||
|
@ -439,9 +440,14 @@ echo C
|
|||
1-middle
|
||||
1-end
|
||||
parallel --files echo ::: A B C
|
||||
/tmp/parallel-tutorial-tmpdir/parXXXXX.par
|
||||
/tmp/parallel-tutorial-tmp/
|
||||
</tmp/tempfile
|
||||
/tmp/parallel-tutorial-tmp/
|
||||
</tmp/tempfile
|
||||
/tmp/parallel-tutorial-tmp/
|
||||
</tmp/tempfile
|
||||
parallel --tmpdir /var/tmp --files echo ::: A B C
|
||||
/var/tmp/parXXXXX.par
|
||||
/var/tmp/tempfile
|
||||
parallel --results outdir echo ::: A B C
|
||||
outdir/1/A/seq
|
||||
outdir/1/A/stderr
|
||||
|
@ -509,7 +515,8 @@ parallel: Warning: or increasing /proc/sys/fs/file-max
|
|||
parallel --shuf echo ::: 1 2 3 ::: a b c ::: A B C
|
||||
123 abc ABC
|
||||
seq 10 20 | parallel --tmux 'echo start {}; sleep {}; echo done {}'
|
||||
See output with: tmux -S /tmp/parallel-tutorial-tmpdir/tmsXXXXX attach
|
||||
See output with: tmux -S '/tmp/parallel-tutorial-tmp/
|
||||
</tmp/tmsXXXXX' attach
|
||||
tmux -S /tmp/tmsXXXXX attach
|
||||
no sessions
|
||||
parallel --delay 2.5 echo Starting {}\;date ::: 1 2 3
|
||||
|
@ -701,6 +708,8 @@ foo
|
|||
parallel --workdir . -S $SERVER1 pwd ::: ""
|
||||
parallel --workdir ... -S $SERVER1 pwd ::: ""
|
||||
/home/parallel
|
||||
/tmp/parallel-tutorial-tmp/
|
||||
</tmp
|
||||
/home/parallel/.TMPWORKDIR
|
||||
parallel -S $SERVER1 --sshdelay 0.2 echo ::: 1 2 3
|
||||
9
|
||||
|
@ -787,6 +796,7 @@ BASH_FUNC_run_test%%
|
|||
_
|
||||
mysqlrootpass
|
||||
oracle_password
|
||||
testsuitedir
|
||||
withpassword
|
||||
# The function is only copied if using Bash
|
||||
my_func2() {
|
||||
|
@ -1315,7 +1325,7 @@ This helps funding further development; AND IT WON'T COST YOU A CENT.
|
|||
If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
|
||||
More about funding GNU Parallel and the citation notice:
|
||||
https://lists.gnu.org/archive/html/parallel/2013-11/msg00006.html
|
||||
https://www.gnu.org/software/parallel/parallel_design.html#citation-notice
|
||||
https://www.gnu.org/software/tempfileallel_design.html#citation-notice
|
||||
https:BASE64-notice-faq.txt
|
||||
If you send a copy of your published article to tange@gnu.org, it will be
|
||||
mentioned in the release notes of next version of GNU Parallel.
|
||||
|
@ -1330,4 +1340,10 @@ mentioned in the release notes of next version of GNU Parallel.
|
|||
echo A
|
||||
echo B
|
||||
echo C
|
||||
9
|
||||
### 3+3 .par files (from --files), 1 .tms-file from tmux attach
|
||||
A
|
||||
A
|
||||
B
|
||||
B
|
||||
C
|
||||
C
|
||||
|
|
|
@ -47,7 +47,9 @@ def 3
|
|||
### Test --debug
|
||||
dburl mysql://tange:tange@localhost:3306/tange
|
||||
databasedriver mysql user tange password tange host localhost port 3306 database tange query
|
||||
[ | ((sleep 1; rm tmpfile) & mysql --defaults-extra-file=tmpfile -C --host=localhost --user=tange --port=3306 tange)]
|
||||
[ | ((sleep 1; rm '/tmp/sql01-tmp/
|
||||
<tmpfile') & mysql --defaults-extra-file='/tmp/sql01-tmp/
|
||||
<tmpfile' --host=localhost --user=tange --port=3306 tange)]
|
||||
Test if --debug works
|
||||
Yes it does
|
||||
### Test --version -V
|
||||
|
|
|
@ -3,7 +3,7 @@ par_influx empty input
|
|||
par_influx empty input
|
||||
par_influx empty input
|
||||
par_influx dbsize is not implemented for influx
|
||||
par_influx Field separator not implemented for influx at /usr/local/bin/sql line 889.
|
||||
par_influx Field separator not implemented for influx at /usr/local/bin/sql line 892.
|
||||
par_influx name: databases
|
||||
par_influx name
|
||||
par_influx ----
|
||||
|
|
Loading…
Reference in a new issue