parallel: --line-buffer speedup.

parallel: Max command line length relaxed due to bzip2'ing before transfer.
This commit is contained in:
Ole Tange 2017-08-20 01:15:28 +02:00
parent 67c4377715
commit 3eef90da33
22 changed files with 745 additions and 1260 deletions

View file

@ -198,41 +198,50 @@ to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm> stable-bcc: Jesse Alama <jessealama@fastmail.fm>
Subject: GNU Parallel 20170822 ('<<>>') released <<[stable]>> Subject: GNU Parallel 20170822 ('La Rambla') released <<[stable]>>
GNU Parallel 20170822 ('<<>>') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/ GNU Parallel 20170822 ('La Rambla') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
<<No new functionality was introduced so this is a good candidate for a stable release.>> <<No new functionality was introduced so this is a good candidate for a stable release.>>
Haiku of the month: Haiku of the month:
<<>> --line-buffer
touches files on disk no more
faster than before
-- Ole Tange
New in this release: New in this release:
* Vote for GNU Parallel's community ads on * --line-buffer no longer uses tempfiles. This is faster and makes it possible for a single process to output more data than there is free disk space.
http://meta.unix.stackexchange.com/a/4356/2972
http://meta.askubuntu.com/a/16750/22307 * Vote for GNU Parallel's community ads on http://meta.unix.stackexchange.com/a/4356/2972 http://meta.askubuntu.com/a/16750/22307 http://meta.serverfault.com/a/9040/45704
http://meta.serverfault.com/a/9040/45704
* GNU Parallel was cited in: https://springerplus.springeropen.com/articles/10.1186/s40064-016-2022-y * GNU Parallel was cited in: https://springerplus.springeropen.com/articles/10.1186/s40064-016-2022-y
https://dzone.com/articles/running-bash-commands-in-parallel-1 * Edit images with GNU Parallel and ImageMagick https://fedoramagazine.org/edit-images-parallel-imagemagick/
* https://medium.com/@nornagon/today-i-learned-gnu-parallel-plate-tectonics-9fcf24045e63 * Running Bash Commands in Parallel https://dzone.com/articles/running-bash-commands-in-parallel-1
* https://www.upf.edu/web/sct-sit/gnu-parallel-tutorial * Today I Learned: GNU parallel, plate tectonics https://medium.com/@nornagon/today-i-learned-gnu-parallel-plate-tectonics-9fcf24045e63
* GNU Parallel Tutorial https://www.upf.edu/web/sct-sit/gnu-parallel-tutorial
http://blogs.fluidinfo.com/terry/2017/08/05/do-stuff-on-things-in-parallel/ * Validating half a million TIFF files http://www.dpoc.ac.uk/2017/08/17/validating-half-a-million-tiff-files-part-two/
http://ino.pm/outreach/presentations/2014/03/genomics-wranglers/index.html#/5 * Blender and GNU Parallel https://www.blendernation.com/2017/08/16/blender-gnu-parallel/
http://www.ettemalab.org/using-for-loop-vs-gnu-parallel-for-blast/
https://medium.com/@nornagon/today-i-learned-gnu-parallel-plate-tectonics-9fcf24045e63 * Quick Introduction to GNU Parallel https://github.com/LangilleLab/microbiome_helper/wiki/Quick-Introduction-to-GNU-Parallel
https://gxnotes.com/article/175866.html * A simple distributed animation render example using GNU Parallel https://gitlab.com/skororu/scripts
* Do stuff on things, in parallel http://blogs.fluidinfo.com/terry/2017/08/05/do-stuff-on-things-in-parallel/
* Bash And GNU Parallel NGS Bidniz http://ino.pm/outreach/presentations/2014/03/genomics-wranglers/index.html
* Using for loop vs Gnu parallel for BLAST http://www.ettemalab.org/using-for-loop-vs-gnu-parallel-for-blast/
* 并行rsync https://gxnotes.com/article/175866.html
<<Citation not OK: BAMClipper: removing primers from alignments to minimize false-negative mutations in amplicon next-generation sequencing https://www.nature.com/articles/s41598-017-01703-6>> <<Citation not OK: BAMClipper: removing primers from alignments to minimize false-negative mutations in amplicon next-generation sequencing https://www.nature.com/articles/s41598-017-01703-6>>

View file

@ -3202,12 +3202,8 @@ sub parse_sshlogin {
$Global::host{$sshlogin_string}->set_max_jobs_running(undef); $Global::host{$sshlogin_string}->set_max_jobs_running(undef);
next; next;
} }
if($sshlogin_string eq ":") {
$sshlogin->set_maxlength(Limits::Command::max_length()); $sshlogin->set_maxlength(Limits::Command::max_length());
} else {
# If all chars needs to be quoted, every other character will be \
$sshlogin->set_maxlength(int(Limits::Command::max_length()/2));
}
$Global::minimal_command_line_length = $Global::minimal_command_line_length =
::min($Global::minimal_command_line_length, $sshlogin->maxlength()); ::min($Global::minimal_command_line_length, $sshlogin->maxlength());
$Global::host{$sshlogin_string} = $sshlogin; $Global::host{$sshlogin_string} = $sshlogin;
@ -4673,22 +4669,28 @@ sub reap_usleep {
if($opt::memfree) { if($opt::memfree) {
kill_youngster_if_not_enough_mem(); kill_youngster_if_not_enough_mem();
} }
if($ms > 0.002) {
# When a child dies, wake up from sleep (or select(,,,)) # When a child dies, wake up from sleep (or select(,,,))
$SIG{CHLD} = sub { kill "ALRM", $$ }; $SIG{CHLD} = sub { kill "ALRM", $$ };
usleep($ms); usleep($ms);
# --compress needs $SIG{CHLD} unset # --compress needs $SIG{CHLD} unset
$SIG{CHLD} = 'DEFAULT'; $SIG{CHLD} = 'DEFAULT';
}
exit_if_disk_full(); exit_if_disk_full();
if($opt::linebuffer) { if($opt::linebuffer) {
my $something_printed = 0;
if($opt::keeporder) { if($opt::keeporder) {
for my $job (values %Global::running) { for my $job (values %Global::running) {
$job->print_earlier_jobs(); $something_printed += $job->print_earlier_jobs();
} }
} else { } else {
for my $job (values %Global::running) { for my $job (values %Global::running) {
$job->print(); $something_printed += $job->print();
} }
} }
if($something_printed) {
$ms = $ms/2+0.001;
}
} }
# Sleep exponentially longer (1.1^n) if a job did not finish, # Sleep exponentially longer (1.1^n) if a job did not finish,
# though at most 1000 ms. # though at most 1000 ms.
@ -6652,6 +6654,7 @@ sub new {
'virgin' => 1, 'virgin' => 1,
# Output used for SQL and CSV-output # Output used for SQL and CSV-output
'output' => { 1 => [], 2 => [] }, 'output' => { 1 => [], 2 => [] },
'halfline' => [],
}, ref($class) || $class; }, ref($class) || $class;
} }
@ -6769,7 +6772,25 @@ sub openoutputfiles {
my $self = shift; my $self = shift;
my ($outfhw, $errfhw, $outname, $errname); my ($outfhw, $errfhw, $outname, $errname);
if($opt::results and not $Global::csv) { if($opt::linebuffer and not
($opt::keeporder or $opt::files or $opt::results or
$opt::compress or $opt::compress_program or
$opt::decompress_program)) {
# Do not save to files: Use non-blocking pipe
my ($outfhr, $errfhr);
pipe($outfhr, $outfhw) || die;
pipe($errfhr, $errfhw) || die;
$self->set_fh(1,'w',$outfhw);
$self->set_fh(2,'w',$errfhw);
$self->set_fh(1,'r',$outfhr);
$self->set_fh(2,'r',$errfhr);
# Make it possible to read non-blocking from the pipe
for my $fdno (1,2) {
::set_fh_non_blocking($self->fh($fdno,'r'));
}
# Return immediately because we do not need setting filenames
return;
} elsif($opt::results and not $Global::csv) {
my $out = $self->{'commandline'}->results_out(); my $out = $self->{'commandline'}->results_out();
my $seqname; my $seqname;
if($out eq $opt::results or $out =~ m:/$:) { if($out eq $opt::results or $out =~ m:/$:) {
@ -6849,6 +6870,7 @@ sub openoutputfiles {
if($opt::linebuffer) { if($opt::linebuffer) {
# Make it possible to read non-blocking from # Make it possible to read non-blocking from
# the buffer files # the buffer files
# Used for --linebuffer with -k, --files, --res, --compress*
for my $fdno (1,2) { for my $fdno (1,2) {
::set_fh_non_blocking($self->fh($fdno,'r')); ::set_fh_non_blocking($self->fh($fdno,'r'));
} }
@ -8370,12 +8392,13 @@ sub should_be_retried {
my $job = shift; my $job = shift;
$print_later{$job->seq()} = $job; $print_later{$job->seq()} = $job;
$job_seq_to_print ||= 1; $job_seq_to_print ||= 1;
my $returnsize = 0;
::debug("run", "Looking for: $job_seq_to_print ", ::debug("run", "Looking for: $job_seq_to_print ",
"This: ", $job->seq(), "\n"); "This: ", $job->seq(), "\n");
for(;vec($Global::job_already_run,$job_seq_to_print,1); for(;vec($Global::job_already_run,$job_seq_to_print,1);
$job_seq_to_print++) {} $job_seq_to_print++) {}
while(my $j = $print_later{$job_seq_to_print}) { while(my $j = $print_later{$job_seq_to_print}) {
$j->print(); $returnsize += $j->print();
if($j->endtime()) { if($j->endtime()) {
# Job finished - look at the next # Job finished - look at the next
delete $print_later{$job_seq_to_print}; delete $print_later{$job_seq_to_print};
@ -8386,6 +8409,7 @@ sub should_be_retried {
last; last;
} }
} }
return $returnsize;
} }
} }
@ -8437,6 +8461,7 @@ sub print {
flush STDOUT; flush STDOUT;
} }
} }
my $returnsize = $self->returnsize();
for my $fdno (sort { $a <=> $b } keys %Global::fd) { for my $fdno (sort { $a <=> $b } keys %Global::fd) {
# Sort by file descriptor numerically: 1,2,3,..,9,10,11 # Sort by file descriptor numerically: 1,2,3,..,9,10,11
$fdno == 0 and next; $fdno == 0 and next;
@ -8476,6 +8501,7 @@ sub print {
$self->print_csv(); $self->print_csv();
} }
} }
return $returnsize - $self->returnsize();
} }
{ {
@ -8621,7 +8647,6 @@ sub print_files {
sub print_linebuffer { sub print_linebuffer {
my $self = shift; my $self = shift;
my ($fdno,$in_fh,$out_fd) = @_; my ($fdno,$in_fh,$out_fd) = @_;
my $partial = \$self->{'partial_line',$fdno};
if(defined $self->{'exitstatus'}) { if(defined $self->{'exitstatus'}) {
# If the job is dead: close printing fh. Needed for --compress # If the job is dead: close printing fh. Needed for --compress
@ -8647,38 +8672,32 @@ sub print_linebuffer {
} }
# No need for reading $in_fh, as it it from "cat >/dev/null" # No need for reading $in_fh, as it it from "cat >/dev/null"
} else { } else {
# This seek will clear EOF
seek $in_fh, tell($in_fh), 0;
my $outputlength = 0; my $outputlength = 0;
# The read is non-blocking: The $in_fh is set to non-blocking. my $halfline_ref = $self->{'halfline'};
# 32768 --tag = 5.1s my ($buf,$i,$rv);
# 327680 --tag = 4.4s while($rv = sysread($in_fh, $buf, 131072)) {
# 1024000 --tag = 4.4s $outputlength += $rv;
# 3276800 --tag = 4.3s $i = (rindex($buf,"\n")+1) || (rindex($buf,"\r")+1);
# 10240000 --tag = 4.3s
# 32768000 --tag = 4.7s
while(read($in_fh,substr($$partial,length $$partial),3276800)) {
# Append to $$partial
# Find the last \n or \r
my $i = (::rindex64($partial,"\n")+1) || (::rindex64($partial,"\r")+1);
if($i) { if($i) {
# One or more complete lines were found # One or more complete lines were found
$outputlength += $i;
if($opt::tag or defined $opt::tagstring) { if($opt::tag or defined $opt::tagstring) {
# Replace ^ with $tag within the full line # Replace ^ with $tag within the full line
my $tag = $self->tag(); my $tag = $self->tag();
substr($$partial,0,$i) =~ s/^/$tag/gm; substr($buf,0,$i-1) =~ s/(?<=[\n\r])/$tag/gm;
# Length of partial line has changed: Find the last \n/\r again $i = (rindex($buf,"\n")+1) || (rindex($buf,"\r")+1);
$i = (::rindex64($partial,"\n")+1) || (::rindex64($partial,"\r")+1); unshift @$halfline_ref, $tag;
} }
# Print up to and including the last \n # Print the partial line (halfline) and the last half
print $out_fd substr($$partial,0,$i); print $out_fd @$halfline_ref, substr($buf,0,$i);
# Buffer in memory for SQL and CSV-output # Buffer in memory for SQL and CSV-output
if($Global::membuffer) { if($Global::membuffer) {
push @{$self->{'output'}{$fdno}}, substr($$partial,0,$i); push(@{$self->{'output'}{$fdno}},
@$halfline_ref, substr($buf,0,$i));
} }
# Remove the printed part # Remove the printed part by keeping the unprinted part
substr($$partial,0,$i) = ""; @$halfline_ref = (substr($buf,$i));
} else {
push @$halfline_ref, $buf;
} }
} }
$self->add_returnsize($outputlength); $self->add_returnsize($outputlength);
@ -8689,18 +8708,22 @@ sub print_linebuffer {
} else { } else {
# If the job is dead: print the remaining partial line # If the job is dead: print the remaining partial line
# read remaining # read remaining
$self->add_returnsize(length $$partial); my $halfline_ref = $self->{'halfline'};
if(length $$partial and ($opt::tag or defined $opt::tagstring)) { if(grep /./, @$halfline_ref) {
my $tag = $self->tag(); $self->add_returnsize(length join("",@$halfline_ref));
$$partial =~ s/^/$tag/gm; if($opt::tag or defined $opt::tagstring) {
# Prepend $tag the the remaining half line
unshift @$halfline_ref, $self->tag();
} }
print $out_fd $$partial; # Print the partial line (halfline)
print $out_fd @{$self->{'halfline'}};
# Buffer in memory for SQL and CSV-output
if($Global::membuffer) { if($Global::membuffer) {
push @{$self->{'output'}{$fdno}}, $$partial; push(@{$self->{'output'}{$fdno}}, @$halfline_ref);
}
@$halfline_ref = ();
} }
} }
# Release the memory
undef $$partial;
if($self->fh($fdno,"rpid") and CORE::kill 0, $self->fh($fdno,"rpid")) { if($self->fh($fdno,"rpid") and CORE::kill 0, $self->fh($fdno,"rpid")) {
# decompress still running # decompress still running
} else { } else {
@ -9971,15 +9994,14 @@ sub max_length {
} }
$Limits::Command::line_max_len = tmux_length($cached_limit); $Limits::Command::line_max_len = tmux_length($cached_limit);
if($opt::max_chars) { if($opt::max_chars) {
if($opt::max_chars * 2 <= $cached_limit) { if($opt::max_chars <= $cached_limit) {
# $opt::max_chars quoting causes the length to double $Limits::Command::line_max_len = $opt::max_chars;
$Limits::Command::line_max_len = $opt::max_chars * 2;
} else { } else {
::warning("Value for -s option should be < $cached_limit."); ::warning("Value for -s option should be < $cached_limit.");
} }
} }
} }
return int($Limits::Command::line_max_len/2); return int($Limits::Command::line_max_len);
} }
sub real_max_length { sub real_max_length {

View file

@ -1042,9 +1042,9 @@ B<-l 0> is an alias for B<-l 1>.
Implies B<-X> unless B<-m>, B<--xargs>, or B<--pipe> is set. Implies B<-X> unless B<-m>, B<--xargs>, or B<--pipe> is set.
=item B<--line-buffer> =item B<--line-buffer> (alpha testing)
=item B<--lb> =item B<--lb> (alpha testing)
Buffer output on line basis. B<--group> will keep the output together Buffer output on line basis. B<--group> will keep the output together
for a whole job. B<--ungroup> allows output to mixup with half a line for a whole job. B<--ungroup> allows output to mixup with half a line
@ -1052,9 +1052,23 @@ coming from one job and half a line coming from another
job. B<--line-buffer> fits between these two: GNU B<parallel> will job. B<--line-buffer> fits between these two: GNU B<parallel> will
print a full line, but will allow for mixing lines of different jobs. print a full line, but will allow for mixing lines of different jobs.
B<--line-buffer> takes more CPU power than than both B<--group> and B<--line-buffer> takes more CPU power than both B<--group> and
B<--ungroup>, but can be faster than B<--group> if the CPU is not the B<--ungroup>, but can be much faster than B<--group> if the CPU is not
limiting factor. the limiting factor.
Normally B<--line-buffer> does not buffer on disk, and can thus
process an infinite amount of data, but it will buffer on disk when
combined with: B<--keep-order>, B<--results>, B<--compress>, and
B<--files>. This will make it as slow as B<--group> and will limit
output to the available disk space.
With B<--keep-order> B<--line-buffer> will output lines from the first
job while it is running, then lines from the second job while that is
running. It will buffer full lines, but jobs will not mix. Compare:
parallel -j0 'echo {};sleep {};echo {}' ::: 1 3 2 4
parallel -j0 --lb 'echo {};sleep {};echo {}' ::: 1 3 2 4
parallel -j0 -k --lb 'echo {};sleep {};echo {}' ::: 1 3 2 4
See also: B<--group> B<--ungroup> See also: B<--group> B<--ungroup>

View file

@ -6,7 +6,7 @@ parcat - cat files or fifos in parallel
=head1 SYNOPSIS =head1 SYNOPSIS
B<parcat> file(s) B<parcat> [--rm] [-#] file(s) [-#] file(s)
=head1 DESCRIPTION =head1 DESCRIPTION
@ -16,6 +16,29 @@ you use:
(cat file1 & cat file2 &) | ... (cat file1 & cat file2 &) | ...
Arguments can be given on the command line or passed in on stdin
(standard input).
=head1 OPTIONS
=over 9
=item -B<#>
Arguments following this will be sent to the file descriptor B<#>. E.g.
parcat -1 stdout1 stdout2 -2 stderr1 stderr2
will send I<stdout1> and I<stdout2> to stdout (standard output = file
descriptor 1), and send I<stderr1> and I<stderr2> to stderr (standard
error = file descriptor 2).
=item --rm
Remove files after opening. As soon as the files are opened, unlink
the files.
=back
=head1 EXAMPLES =head1 EXAMPLES

View file

@ -7,7 +7,7 @@ testsuite: 3
make stopvm make stopvm
1: ../src/parallel tests-to-run/* wanted-results/* prereqlocal startdb prereqremote 1: ../src/parallel tests-to-run/* wanted-results/* prereqlocal startdb prereqremote
TRIES=1 time bash Start.sh '' 'mem|polarhome' || true TRIES=1 time bash Start.sh '' 'mem|polarhome|tutorial' || true
touch ~/.parallel/will-cite touch ~/.parallel/will-cite
make stopvm make stopvm

View file

@ -492,57 +492,65 @@ echo '### Test --tty'
seq 0.1 0.1 0.5 | parallel -j1 --tty tty\;sleep seq 0.1 0.1 0.5 | parallel -j1 --tty tty\;sleep
echo '**'
echo '### Test bugfix if no command given' EOF
(echo echo; seq 1 5; perl -e 'print "z"x1000000'; seq 12 15) | stdout parallel -j1 -km -s 10 echo '### 1 .par file from --files expected'
find /tmp{/*,}/*.{par,tms,tmx} 2>/dev/null -mmin -10 | wc -l
find /tmp{/*,}/*.{par,tms,tmx} 2>/dev/null -mmin -10 | parallel rm
echo '**' sudo umount -l /tmp/smalldisk.img
echo "bug #34958: --pipe with record size measured in lines" par_no_command_given() {
seq 10 | parallel -k --pipe -l 4 cat\;echo bug 34958-2 echo '### Test bugfix if no command given'
echo '**' (echo echo; seq 1 5; perl -e 'print "z"x1000000'; seq 12 15) |
stdout parallel -j1 -km -s 10
}
par_inefficient_L() {
echo "bug #37325: Inefficiency of --pipe -L"
echo "bug #37325: Inefficiency of --pipe -L"
seq 2000 | parallel -k --pipe --block 1k -L 4 wc\;echo FOO | uniq seq 2000 | parallel -k --pipe --block 1k -L 4 wc\;echo FOO | uniq
}
echo '**' par_pipe_record_size_in_lines() {
echo "bug #34958: --pipe with record size measured in lines"
echo "bug #34958: --pipe with record size measured in lines"
seq 10 | parallel -k --pipe -L 4 cat\;echo bug 34958-1 seq 10 | parallel -k --pipe -L 4 cat\;echo bug 34958-1
seq 10 | parallel -k --pipe -l 4 cat\;echo bug 34958-2
}
echo '**' par_pipe_compress_blocks() {
echo "### bug #41482: --pipe --compress blocks at different -j/seq combinations"
echo "### bug #41482: --pipe --compress blocks at different -j/seq combinations" seq 1 | parallel -k -j2 --compress -N1 -L1 --pipe cat
seq 1 | parallel -k -j2 --compress -N1 -L1 --pipe cat;
echo echo 1-4 + 1-4 echo echo 1-4 + 1-4
seq 4 | parallel -k -j3 --compress -N1 -L1 -vv echo; seq 4 | parallel -k -j3 --compress -N1 -L1 -vv echo
echo 4 times wc to stderr to stdout echo 4 times wc to stderr to stdout
(seq 4 | parallel -k -j3 --compress -N1 -L1 --pipe wc '>&2') 2>&1 >/dev/null (seq 4 | parallel -k -j3 --compress -N1 -L1 --pipe wc '>&2') 2>&1 >/dev/null
echo 1 2 3 4 echo 1 2 3 4
seq 4 | parallel -k -j3 --compress echo; seq 4 | parallel -k -j3 --compress echo
echo 1 2 3 4 echo 1 2 3 4
seq 4 | parallel -k -j1 --compress echo; seq 4 | parallel -k -j1 --compress echo
echo 1 2 echo 1 2
seq 2 | parallel -k -j1 --compress echo; seq 2 | parallel -k -j1 --compress echo
echo 1 2 3 echo 1 2 3
seq 3 | parallel -k -j2 --compress -N1 -L1 --pipe cat; seq 3 | parallel -k -j2 --compress -N1 -L1 --pipe cat
}
echo '**' par_pipe_no_command() {
echo '### --pipe without command'
echo '### --pipe without command'
seq -w 10 | stdout parallel --pipe seq -w 10 | stdout parallel --pipe
}
echo '**' par_expansion_in_colsep() {
echo '### bug #36260: {n} expansion in --colsep files fails for empty fields if all following fields are also empty'
echo '### bug #36260: {n} expansion in --colsep files fails for empty fields if all following fields are also empty'
echo A,B,, | parallel --colsep , echo {1}{3}{2} echo A,B,, | parallel --colsep , echo {1}{3}{2}
}
echo '**' par_extglob() {
bash -O extglob -c '. `which env_parallel.bash`; bash -O extglob -c '. `which env_parallel.bash`;
_longopt () { _longopt () {
case "$prev" in case "$prev" in
@ -552,24 +560,18 @@ echo '**'
}; };
env_parallel echo ::: env_parallel 2>&1 env_parallel echo ::: env_parallel 2>&1
' '
}
echo '**' par_tricolonplus() {
echo '### bug #48745: :::+ bug'
echo '### bug #48745: :::+ bug'
parallel -k echo ::: 11 22 33 ::::+ <(seq 3) <(seq 21 23) ::: a b c :::+ aa bb cc parallel -k echo ::: 11 22 33 ::::+ <(seq 3) <(seq 21 23) ::: a b c :::+ aa bb cc
parallel -k echo :::: <(seq 3) <(seq 21 23) :::+ a b c ::: aa bb cc parallel -k echo :::: <(seq 3) <(seq 21 23) :::+ a b c ::: aa bb cc
parallel -k echo :::: <(seq 3) :::: <(seq 21 23) :::+ a b c ::: aa bb cc parallel -k echo :::: <(seq 3) :::: <(seq 21 23) :::+ a b c ::: aa bb cc
}
echo '**' par_header_parens() {
echo 'bug #49538: --header and {= =}'
echo '### bug #48658: --linebuffer --files'
stdout parallel --files --linebuffer 'sleep .1;seq {};sleep .1' ::: {1..10} | wc -l
echo '**'
echo 'bug #49538: --header and {= =}'
parallel --header : echo '{=v2=}{=v1 $_=Q($_)=}' ::: v1 K ::: v2 O parallel --header : echo '{=v2=}{=v1 $_=Q($_)=}' ::: v1 K ::: v2 O
parallel --header : echo '{2}{=1 $_=Q($_)=}' ::: v2 K ::: v1 O parallel --header : echo '{2}{=1 $_=Q($_)=}' ::: v2 K ::: v1 O
@ -578,22 +580,14 @@ echo 'bug #49538: --header and {= =}'
parallel --header : echo {var/.} ::: var sub/dir/file.ext parallel --header : echo {var/.} ::: var sub/dir/file.ext
parallel --header : echo {var/} ::: var sub/dir/file.ext parallel --header : echo {var/} ::: var sub/dir/file.ext
parallel --header : echo {var.} ::: var sub/dir/file.ext parallel --header : echo {var.} ::: var sub/dir/file.ext
}
echo '**' par_colsep_0() {
echo 'bug --colsep 0'
echo 'bug --colsep 0'
parallel --colsep 0 echo {2} ::: a0OK0c parallel --colsep 0 echo {2} ::: a0OK0c
parallel --header : --colsep 0 echo {ok} ::: A0ok0B a0OK0b parallel --header : --colsep 0 echo {ok} ::: A0ok0B a0OK0b
}
echo '**'
EOF
echo '### 1 .par file from --files expected'
find /tmp{/*,}/*.{par,tms,tmx} 2>/dev/null -mmin -10 | wc -l
find /tmp{/*,}/*.{par,tms,tmx} 2>/dev/null -mmin -10 | parallel rm
sudo umount -l /tmp/smalldisk.img
par_empty() { par_empty() {
echo "bug #:" echo "bug #:"
@ -747,6 +741,12 @@ par_parcat_rm() {
rm $tmp1 2>/dev/null || echo OK file removed rm $tmp1 2>/dev/null || echo OK file removed
} }
par_linebuffer_files() {
echo '### bug #48658: --linebuffer --files'
stdout parallel --files --linebuffer 'sleep .1;seq {};sleep .1' ::: {1..10} | wc -l
}
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | compgen -A function | grep par_ | sort |
parallel -j6 --tag -k --joblog +/tmp/jl-`basename $0` '{} 2>&1' parallel -j6 --tag -k --joblog +/tmp/jl-`basename $0` '{} 2>&1'

View file

@ -146,7 +146,7 @@ par_results_csv() {
} }
export -f doit export -f doit
parallel -k --tag doit ::: '--header :' '' \ parallel -k --tag doit ::: '--header :' '' \
::: --tag '' ::: --lb '' ::: --files '' ::: --compress '' | ::: --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'
} }
@ -258,6 +258,12 @@ par_plus_dyn_repl() {
parallel --plus echo '{-2,,A}' ::: "wrong" ::: "$myvar" ::: "wrong" parallel --plus echo '{-2,,A}' ::: "wrong" ::: "$myvar" ::: "wrong"
} }
par_linebuffer_tag_slow_output() {
echo "Test output tag with mixing halflines"
parallel --delay 0.5 --tag --line-buffer ping -c 4 ::: localhost lo | field 1
}
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | compgen -A function | grep par_ | sort |
parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1' parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1'

View file

@ -48,21 +48,23 @@ par_sqlandworker_results() {
p_template --results /tmp/out--sql p_template --results /tmp/out--sql
} }
par_sqlandworker_linebuffer() {
p_template --linebuffer
}
par_sqlandworker_tag() { par_sqlandworker_tag() {
p_template --tag p_template --tag
} }
par_sqlandworker_linebuffer_tag() { # --linebuffer no longer works with sql
p_template --linebuffer --tag #
} # par_sqlandworker_linebuffer() {
# p_template --linebuffer
par_sqlandworker_compress_linebuffer_tag() { # }
p_template --compress --linebuffer --tag #
} # par_sqlandworker_linebuffer_tag() {
# p_template --linebuffer --tag
# }
#
# par_sqlandworker_compress_linebuffer_tag() {
# p_template --compress --linebuffer --tag
# }
par_sqlandworker_unbuffer() { par_sqlandworker_unbuffer() {
p_template -u p_template -u

View file

@ -32,7 +32,7 @@ echo '### bug #41805: Idea: propagate --env for parallel --number-of-cores'
echo '** bug #41805 done' echo '** bug #41805 done'
echo '### Deal with long command lines on remote servers' echo '### Deal with long command lines on remote servers'
perl -e 'print((("\""x5000)."\n")x10)' | parallel -j1 -S lo -N 10000 echo {} |wc perl -e 'print((("\""x5000)."\n")x26)' | parallel -j1 -S lo -N 10000 echo {} |wc
echo '### Test bug #34241: --pipe should not spawn unneeded processes' echo '### Test bug #34241: --pipe should not spawn unneeded processes'
seq 5 | ssh csh@lo parallel -k --block 5 --pipe -j10 cat\\\;echo Block_end seq 5 | ssh csh@lo parallel -k --block 5 --pipe -j10 cat\\\;echo Block_end

View file

@ -7,7 +7,10 @@ par_tmux_filter() {
export -f par_tmux_filter export -f par_tmux_filter
par_tmux() { par_tmux() {
(stdout parallel --timeout 3 --tmux --delay 0.03 echo '{}{=$_="\\"x$_=}'; echo $?) | par_tmux_filter # Read command line length on stdin
# The line will be a number of \'s
(stdout parallel --timeout 3 --tmux --delay 0.03 echo '{}{=$_="\\"x$_=}'; echo $?) |
par_tmux_filter
} }
export -f par_tmux export -f par_tmux
@ -34,20 +37,30 @@ echo '### tmux-1.9'
seq 700 800 | PARALLEL_TMUX=tmux-1.9 par_tmux seq 700 800 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 800 900 | PARALLEL_TMUX=tmux-1.9 par_tmux seq 800 900 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 900 1000 | PARALLEL_TMUX=tmux-1.9 par_tmux seq 900 1000 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1000 1006 | PARALLEL_TMUX=tmux-1.9 par_tmux seq 1000 1100 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1100 1200 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1200 1300 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1300 1400 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1400 1500 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1500 1600 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1600 1700 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1700 1800 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1800 1900 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1900 2000 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 2000 2018 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo '### tmux-1.9 fails' echo '### tmux-1.9 fails'
echo 1007 | PARALLEL_TMUX=tmux-1.9 par_tmux echo 2019 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo 1008 | PARALLEL_TMUX=tmux-1.9 par_tmux echo 2020 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo 1009 | PARALLEL_TMUX=tmux-1.9 par_tmux echo 2021 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo '### tmux-1.8' echo '### tmux-1.8'
seq 1 50 | PARALLEL_TMUX=tmux-1.8 par_tmux seq 1 100 | PARALLEL_TMUX=tmux-1.8 par_tmux
seq 51 100 | PARALLEL_TMUX=tmux-1.8 par_tmux seq 101 200 | PARALLEL_TMUX=tmux-1.8 par_tmux
seq 101 113 | PARALLEL_TMUX=tmux-1.8 par_tmux seq 201 231 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo '### tmux-1.8 fails' echo '### tmux-1.8 fails'
echo 114 | PARALLEL_TMUX=tmux-1.8 par_tmux echo 232 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo 115 | PARALLEL_TMUX=tmux-1.8 par_tmux echo 233 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo 116 | PARALLEL_TMUX=tmux-1.8 par_tmux echo 234 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo '### tmux-1.8 0..255 ascii' echo '### tmux-1.8 0..255 ascii'
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } $_-110..$_),"\n" } 0..255' | perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } $_-110..$_),"\n" } 0..255' |
@ -63,10 +76,10 @@ echo '### Test output ascii'
sort /tmp/paralocal7-ascii* | md5sum sort /tmp/paralocal7-ascii* | md5sum
echo '### Test critical lengths. Must not block' echo '### Test critical lengths. Must not block'
seq 70 130 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter seq 140 260 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
seq 70 130 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter seq 140 260 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
seq 280 425 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter seq 560 850 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
seq 280 425 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter seq 560 850 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
EOF EOF

View file

@ -552,7 +552,7 @@ e
echo '### test too long args' echo '### test too long args'
### test too long args ### test too long args
perl -e 'print "z"x1000000' | parallel echo 2>&1 perl -e 'print "z"x1000000' | parallel echo 2>&1
parallel: Error: Command line too long (1000005 >= 65524) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz... parallel: Error: Command line too long (1000005 >= 131057) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
perl -e 'print "z"x1000000' | xargs echo 2>&1 perl -e 'print "z"x1000000' | xargs echo 2>&1
xargs: argument line too long xargs: argument line too long
(seq 1 10; perl -e 'print "z"x1000000'; seq 12 15) | stdsort parallel -j1 -km -s 10 echo (seq 1 10; perl -e 'print "z"x1000000'; seq 12 15) | stdsort parallel -j1 -km -s 10 echo
@ -819,7 +819,7 @@ echo far
### Test --show-limits ### Test --show-limits
(echo b; echo c; echo f) | parallel -k --show-limits echo {}ar (echo b; echo c; echo f) | parallel -k --show-limits echo {}ar
Maximal size of command: 131049 Maximal size of command: 131049
Maximal used size of command: 65524 Maximal used size of command: 131057
Execution of will continue now, and it will try to read its input Execution of will continue now, and it will try to read its input
and run commands; if this is not what you wanted to happen, please and run commands; if this is not what you wanted to happen, please
@ -1325,236 +1325,8 @@ echo '### Test --tty'
/dev/tty /dev/tty
/dev/tty /dev/tty
/dev/tty /dev/tty
echo '**'
**
echo '### Test bugfix if no command given'
### Test bugfix if no command given
(echo echo; seq 1 5; perl -e 'print "z"x1000000'; seq 12 15) | stdout parallel -j1 -km -s 10
1 2
/bin/bash: 3: command not found
parallel: Error: Command line too long (1000002 >= 10) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
echo '**'
**
echo "bug #34958: --pipe with record size measured in lines"
bug #34958: --pipe with record size measured in lines
seq 10 | parallel -k --pipe -l 4 cat\;echo bug 34958-2
1
2
3
4
5
6
7
8
bug 34958-2
9
10
bug 34958-2
echo '**'
**
echo "bug #37325: Inefficiency of --pipe -L"
bug #37325: Inefficiency of --pipe -L
seq 2000 | parallel -k --pipe --block 1k -L 4 wc\;echo FOO | uniq
276 276 996
FOO
248 248 992
FOO
248 248 992
FOO
244 244 993
FOO
200 200 1000
FOO
200 200 1000
FOO
200 200 1000
FOO
200 200 1000
FOO
184 184 920
FOO
echo '**'
**
echo "bug #34958: --pipe with record size measured in lines"
bug #34958: --pipe with record size measured in lines
seq 10 | parallel -k --pipe -L 4 cat\;echo bug 34958-1
1
2
3
4
5
6
7
8
bug 34958-1
9
10
bug 34958-1
echo '**'
**
echo "### bug #41482: --pipe --compress blocks at different -j/seq combinations"
### bug #41482: --pipe --compress blocks at different -j/seq combinations
seq 1 | parallel -k -j2 --compress -N1 -L1 --pipe cat; echo echo 1-4 + 1-4
1
echo 1-4 + 1-4
seq 4 | parallel -k -j3 --compress -N1 -L1 -vv echo; echo 4 times wc to stderr to stdout
echo 1
1
echo 2
2
echo 3
3
echo 4
4
4 times wc to stderr to stdout
(seq 4 | parallel -k -j3 --compress -N1 -L1 --pipe wc '>&2') 2>&1 >/dev/null
1 1 2
1 1 2
1 1 2
1 1 2
echo 1 2 3 4
1 2 3 4
seq 4 | parallel -k -j3 --compress echo; echo 1 2 3 4
1
2
3
4
1 2 3 4
seq 4 | parallel -k -j1 --compress echo; echo 1 2
1
2
3
4
1 2
seq 2 | parallel -k -j1 --compress echo; echo 1 2 3
1
2
1 2 3
seq 3 | parallel -k -j2 --compress -N1 -L1 --pipe cat; echo '**'
1
2
3
**
echo '### --pipe without command'
### --pipe without command
seq -w 10 | stdout parallel --pipe
parallel: Error: --pipe/--pipepart must have a command to pipe into (e.g. 'cat').
echo '**'
**
echo '### bug #36260: {n} expansion in --colsep files fails for empty fields if all following fields are also empty'
### bug #36260: {n} expansion in --colsep files fails for empty fields if all following fields are also empty
echo A,B,, | parallel --colsep , echo {1}{3}{2}
AB
echo '**'
**
bash -O extglob -c '. `which env_parallel.bash`; _longopt () { case "$prev" in --+([-a-z0-9_])) echo foo;; esac; }; env_parallel echo ::: env_parallel 2>&1 '
env_parallel
echo '**'
**
echo '### bug #48745: :::+ bug'
### bug #48745: :::+ bug
parallel -k echo ::: 11 22 33 ::::+ <(seq 3) <(seq 21 23) ::: a b c :::+ aa bb cc
11 1 21 a aa
11 1 21 b bb
11 1 21 c cc
22 2 22 a aa
22 2 22 b bb
22 2 22 c cc
33 3 23 a aa
33 3 23 b bb
33 3 23 c cc
parallel -k echo :::: <(seq 3) <(seq 21 23) :::+ a b c ::: aa bb cc
1 21 a aa
1 21 a bb
1 21 a cc
1 22 b aa
1 22 b bb
1 22 b cc
1 23 c aa
1 23 c bb
1 23 c cc
2 21 a aa
2 21 a bb
2 21 a cc
2 22 b aa
2 22 b bb
2 22 b cc
2 23 c aa
2 23 c bb
2 23 c cc
3 21 a aa
3 21 a bb
3 21 a cc
3 22 b aa
3 22 b bb
3 22 b cc
3 23 c aa
3 23 c bb
3 23 c cc
parallel -k echo :::: <(seq 3) :::: <(seq 21 23) :::+ a b c ::: aa bb cc
1 21 a aa
1 21 a bb
1 21 a cc
1 22 b aa
1 22 b bb
1 22 b cc
1 23 c aa
1 23 c bb
1 23 c cc
2 21 a aa
2 21 a bb
2 21 a cc
2 22 b aa
2 22 b bb
2 22 b cc
2 23 c aa
2 23 c bb
2 23 c cc
3 21 a aa
3 21 a bb
3 21 a cc
3 22 b aa
3 22 b bb
3 22 b cc
3 23 c aa
3 23 c bb
3 23 c cc
echo '**'
**
echo '### bug #48658: --linebuffer --files'
### bug #48658: --linebuffer --files
stdout parallel --files --linebuffer 'sleep .1;seq {};sleep .1' ::: {1..10} | wc -l
10
echo '**'
**
echo 'bug #49538: --header and {= =}'
bug #49538: --header and {= =}
parallel --header : echo '{=v2=}{=v1 $_=Q($_)=}' ::: v1 K ::: v2 O
OK
parallel --header : echo '{2}{=1 $_=Q($_)=}' ::: v2 K ::: v1 O
OK
parallel --header : echo {var/.} ::: var sub/dir/file.ext
file
parallel --header : echo {var//} ::: var sub/dir/file.ext
sub/dir
parallel --header : echo {var/.} ::: var sub/dir/file.ext
file
parallel --header : echo {var/} ::: var sub/dir/file.ext
file.ext
parallel --header : echo {var.} ::: var sub/dir/file.ext
sub/dir/file
echo '**'
**
echo 'bug --colsep 0'
bug --colsep 0
parallel --colsep 0 echo {2} ::: a0OK0c
OK
parallel --header : --colsep 0 echo {ok} ::: A0ok0B a0OK0b
OK
echo '**'
**
### 1 .par file from --files expected ### 1 .par file from --files expected
10 0
par_X_eta_div_zero ### bug #34422: parallel -X --eta crashes with div by zero par_X_eta_div_zero ### bug #34422: parallel -X --eta crashes with div by zero
par_X_eta_div_zero par_X_eta_div_zero
par_X_eta_div_zero Computers / CPU cores / Max jobs to run par_X_eta_div_zero Computers / CPU cores / Max jobs to run
@ -1572,15 +1344,50 @@ par_basic_halt true
par_basic_halt parallel: Error: --halt must have 'never', 'soon', or 'now'. par_basic_halt parallel: Error: --halt must have 'never', 'soon', or 'now'.
par_basic_halt parallel: Error: --halt soon must be followed by ,success or ,fail. par_basic_halt parallel: Error: --halt soon must be followed by ,success or ,fail.
par_basic_halt parallel: Error: --halt now must be followed by ,success or ,fail. par_basic_halt parallel: Error: --halt now must be followed by ,success or ,fail.
par_colsep_0 bug --colsep 0
par_colsep_0 OK
par_colsep_0 OK
par_empty bug #: par_empty bug #:
par_empty true par_empty true
par_empty_line ### Test bug: empty line for | sh with -k par_empty_line ### Test bug: empty line for | sh with -k
par_empty_line a par_empty_line a
par_empty_line b par_empty_line b
par_expansion_in_colsep ### bug #36260: {n} expansion in --colsep files fails for empty fields if all following fields are also empty
par_expansion_in_colsep AB
par_extglob env_parallel
par_file_ending_in_newline ### Hans found a bug giving unitialized variable par_file_ending_in_newline ### Hans found a bug giving unitialized variable
par_file_ending_in_newline gzip /tmp/parallel_f1 par_file_ending_in_newline gzip /tmp/parallel_f1
par_file_ending_in_newline gzip /tmp/parallel_f2' par_file_ending_in_newline gzip /tmp/parallel_f2'
par_file_ending_in_newline ' par_file_ending_in_newline '
par_header_parens bug #49538: --header and {= =}
par_header_parens OK
par_header_parens OK
par_header_parens file
par_header_parens sub/dir
par_header_parens file
par_header_parens file.ext
par_header_parens sub/dir/file
par_inefficient_L bug #37325: Inefficiency of --pipe -L
par_inefficient_L 276 276 996
par_inefficient_L FOO
par_inefficient_L 248 248 992
par_inefficient_L FOO
par_inefficient_L 248 248 992
par_inefficient_L FOO
par_inefficient_L 244 244 993
par_inefficient_L FOO
par_inefficient_L 200 200 1000
par_inefficient_L FOO
par_inefficient_L 200 200 1000
par_inefficient_L FOO
par_inefficient_L 200 200 1000
par_inefficient_L FOO
par_inefficient_L 200 200 1000
par_inefficient_L FOO
par_inefficient_L 184 184 920
par_inefficient_L FOO
par_linebuffer_files ### bug #48658: --linebuffer --files
par_linebuffer_files 10
par_link_files_as_only_arg bug #50685: single ::::+ does not work 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 1 1 1
par_link_files_as_only_arg 2 2 2 par_link_files_as_only_arg 2 2 2
@ -1609,6 +1416,76 @@ par_macron
par_macron "¯<¯<¯>¯>" ¯<¯<¯>¯> par_macron "¯<¯<¯>¯>" ¯<¯<¯>¯>
par_newline_in_command Command with newline and positional replacement strings par_newline_in_command Command with newline and positional replacement strings
par_newline_in_command O K par_newline_in_command O K
par_no_command_given ### Test bugfix if no command given
par_no_command_given 1 2
par_no_command_given /bin/bash: 3: command not found
par_no_command_given parallel: Error: Command line too long (1000002 >= 10) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
par_parcat_args_stdin bug #51690: parcat: read args from stdin
par_parcat_args_stdin OK1
par_parcat_args_stdin OK2
par_parcat_rm bug #51691: parcat --rm remove fifo when opened
par_parcat_rm OK1
par_parcat_rm OK file removed
par_pipe_compress_blocks ### bug #41482: --pipe --compress blocks at different -j/seq combinations
par_pipe_compress_blocks 1
par_pipe_compress_blocks echo 1-4 + 1-4
par_pipe_compress_blocks echo 1
par_pipe_compress_blocks 1
par_pipe_compress_blocks echo 2
par_pipe_compress_blocks 2
par_pipe_compress_blocks echo 3
par_pipe_compress_blocks 3
par_pipe_compress_blocks echo 4
par_pipe_compress_blocks 4
par_pipe_compress_blocks 4 times wc to stderr to stdout
par_pipe_compress_blocks 1 1 2
par_pipe_compress_blocks 1 1 2
par_pipe_compress_blocks 1 1 2
par_pipe_compress_blocks 1 1 2
par_pipe_compress_blocks 1 2 3 4
par_pipe_compress_blocks 1
par_pipe_compress_blocks 2
par_pipe_compress_blocks 3
par_pipe_compress_blocks 4
par_pipe_compress_blocks 1 2 3 4
par_pipe_compress_blocks 1
par_pipe_compress_blocks 2
par_pipe_compress_blocks 3
par_pipe_compress_blocks 4
par_pipe_compress_blocks 1 2
par_pipe_compress_blocks 1
par_pipe_compress_blocks 2
par_pipe_compress_blocks 1 2 3
par_pipe_compress_blocks 1
par_pipe_compress_blocks 2
par_pipe_compress_blocks 3
par_pipe_no_command ### --pipe without command
par_pipe_no_command parallel: Error: --pipe/--pipepart must have a command to pipe into (e.g. 'cat').
par_pipe_record_size_in_lines bug #34958: --pipe with record size measured in lines
par_pipe_record_size_in_lines 1
par_pipe_record_size_in_lines 2
par_pipe_record_size_in_lines 3
par_pipe_record_size_in_lines 4
par_pipe_record_size_in_lines 5
par_pipe_record_size_in_lines 6
par_pipe_record_size_in_lines 7
par_pipe_record_size_in_lines 8
par_pipe_record_size_in_lines bug 34958-1
par_pipe_record_size_in_lines 9
par_pipe_record_size_in_lines 10
par_pipe_record_size_in_lines bug 34958-1
par_pipe_record_size_in_lines 1
par_pipe_record_size_in_lines 2
par_pipe_record_size_in_lines 3
par_pipe_record_size_in_lines 4
par_pipe_record_size_in_lines 5
par_pipe_record_size_in_lines 6
par_pipe_record_size_in_lines 7
par_pipe_record_size_in_lines 8
par_pipe_record_size_in_lines bug 34958-2
par_pipe_record_size_in_lines 9
par_pipe_record_size_in_lines 10
par_pipe_record_size_in_lines bug 34958-2
par_pipepart_block_bigger_2G ### Test that --pipepart can have blocks > 2GB par_pipepart_block_bigger_2G ### Test that --pipepart can have blocks > 2GB
par_pipepart_block_bigger_2G 1 1 4 par_pipepart_block_bigger_2G 1 1 4
par_python_children ### bug #49970: Python child process dies if --env is used par_python_children ### bug #49970: Python child process dies if --env is used
@ -1652,6 +1529,70 @@ par_tee 4 -l 122853
par_tee 4 -c 815290 par_tee 4 -c 815290
par_tee 5 -l 122853 par_tee 5 -l 122853
par_tee 5 -c 815290 par_tee 5 -c 815290
par_tricolonplus ### bug #48745: :::+ bug
par_tricolonplus 11 1 21 a aa
par_tricolonplus 11 1 21 b bb
par_tricolonplus 11 1 21 c cc
par_tricolonplus 22 2 22 a aa
par_tricolonplus 22 2 22 b bb
par_tricolonplus 22 2 22 c cc
par_tricolonplus 33 3 23 a aa
par_tricolonplus 33 3 23 b bb
par_tricolonplus 33 3 23 c cc
par_tricolonplus 1 21 a aa
par_tricolonplus 1 21 a bb
par_tricolonplus 1 21 a cc
par_tricolonplus 1 22 b aa
par_tricolonplus 1 22 b bb
par_tricolonplus 1 22 b cc
par_tricolonplus 1 23 c aa
par_tricolonplus 1 23 c bb
par_tricolonplus 1 23 c cc
par_tricolonplus 2 21 a aa
par_tricolonplus 2 21 a bb
par_tricolonplus 2 21 a cc
par_tricolonplus 2 22 b aa
par_tricolonplus 2 22 b bb
par_tricolonplus 2 22 b cc
par_tricolonplus 2 23 c aa
par_tricolonplus 2 23 c bb
par_tricolonplus 2 23 c cc
par_tricolonplus 3 21 a aa
par_tricolonplus 3 21 a bb
par_tricolonplus 3 21 a cc
par_tricolonplus 3 22 b aa
par_tricolonplus 3 22 b bb
par_tricolonplus 3 22 b cc
par_tricolonplus 3 23 c aa
par_tricolonplus 3 23 c bb
par_tricolonplus 3 23 c cc
par_tricolonplus 1 21 a aa
par_tricolonplus 1 21 a bb
par_tricolonplus 1 21 a cc
par_tricolonplus 1 22 b aa
par_tricolonplus 1 22 b bb
par_tricolonplus 1 22 b cc
par_tricolonplus 1 23 c aa
par_tricolonplus 1 23 c bb
par_tricolonplus 1 23 c cc
par_tricolonplus 2 21 a aa
par_tricolonplus 2 21 a bb
par_tricolonplus 2 21 a cc
par_tricolonplus 2 22 b aa
par_tricolonplus 2 22 b bb
par_tricolonplus 2 22 b cc
par_tricolonplus 2 23 c aa
par_tricolonplus 2 23 c bb
par_tricolonplus 2 23 c cc
par_tricolonplus 3 21 a aa
par_tricolonplus 3 21 a bb
par_tricolonplus 3 21 a cc
par_tricolonplus 3 22 b aa
par_tricolonplus 3 22 b bb
par_tricolonplus 3 22 b cc
par_tricolonplus 3 23 c aa
par_tricolonplus 3 23 c bb
par_tricolonplus 3 23 c cc
par_wd_3dot_local bug #45993: --wd ... should also work when run locally 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 parallel: Error: Cannot change into non-executable dir /bi: No such file or directory
par_wd_3dot_local /bin par_wd_3dot_local /bin

View file

@ -238,12 +238,31 @@ par_kill_children_timeout ### Test killing children with --timeout and exit valu
par_kill_children_timeout 0 0 0 par_kill_children_timeout 0 0 0
par_kill_children_timeout 2 par_kill_children_timeout 2
par_kill_children_timeout 0 0 0 par_kill_children_timeout 0 0 0
par_linebuffer_tag_slow_output Test output tag with mixing halflines
par_linebuffer_tag_slow_output localhost
par_linebuffer_tag_slow_output localhost
par_linebuffer_tag_slow_output lo
par_linebuffer_tag_slow_output lo
par_linebuffer_tag_slow_output localhost
par_linebuffer_tag_slow_output lo
par_linebuffer_tag_slow_output localhost
par_linebuffer_tag_slow_output lo
par_linebuffer_tag_slow_output localhost
par_linebuffer_tag_slow_output localhost
par_linebuffer_tag_slow_output localhost
par_linebuffer_tag_slow_output localhost
par_linebuffer_tag_slow_output localhost
par_linebuffer_tag_slow_output lo
par_linebuffer_tag_slow_output lo
par_linebuffer_tag_slow_output lo
par_linebuffer_tag_slow_output lo
par_linebuffer_tag_slow_output lo
par_maxlinelen_X_I ### Test max line length -X -I par_maxlinelen_X_I ### Test max line length -X -I
par_maxlinelen_X_I 47ec7550232044dc1e7a504705a45184 - par_maxlinelen_X_I 201ecb8ca789cecf39ee914a6d75611b -
par_maxlinelen_X_I Chars per line (817788/13): 62906 par_maxlinelen_X_I Chars per line (817788/7): 116826
par_maxlinelen_m_I ### Test max line length -m -I par_maxlinelen_m_I ### Test max line length -m -I
par_maxlinelen_m_I d10d5c84fc4716b21d90afa92cf44d73 - par_maxlinelen_m_I c78bd0799bc23d8946732f8b3ae3c94e -
par_maxlinelen_m_I Chars per line (697810/11): 63437 par_maxlinelen_m_I Chars per line (697800/6): 116300
par_plus_dyn_repl Dynamic replacement strings defined by --plus par_plus_dyn_repl Dynamic replacement strings defined by --plus
par_plus_dyn_repl myval par_plus_dyn_repl myval
par_plus_dyn_repl myval par_plus_dyn_repl myval
@ -311,34 +330,6 @@ par_plus_dyn_repl abcaaadef
par_results_compress 0 par_results_compress 0
par_results_compress 1 par_results_compress 1
par_results_csv bug #: --results csv par_results_csv bug #: --results csv
par_results_csv --header : --tag --lb --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --tag --lb --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --lb --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --lb --files --compress 3,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --lb --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --lb --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --tag --lb --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --lb --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --lb --files 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --lb --files 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --lb --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --tag --lb --compress 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 22 11
par_results_csv --header : --tag --lb --compress ",
par_results_csv --header : --tag --lb --compress 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 22 12
par_results_csv --header : --tag --lb --compress ",
par_results_csv --header : --tag --lb --compress 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 23 11
par_results_csv --header : --tag --lb --compress ",
par_results_csv --header : --tag --lb --compress 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12
par_results_csv --header : --tag --lb --compress ",
par_results_csv --header : --tag --lb Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --tag --lb 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 22 11
par_results_csv --header : --tag --lb ",
par_results_csv --header : --tag --lb 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 22 12
par_results_csv --header : --tag --lb ",
par_results_csv --header : --tag --lb 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 23 11
par_results_csv --header : --tag --lb ",
par_results_csv --header : --tag --lb 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12
par_results_csv --header : --tag --lb ",
par_results_csv --header : --tag --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr par_results_csv --header : --tag --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --tag --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", par_results_csv --header : --tag --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", par_results_csv --header : --tag --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
@ -367,34 +358,6 @@ par_results_csv --header : --tag 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,
par_results_csv --header : --tag ", par_results_csv --header : --tag ",
par_results_csv --header : --tag 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12 par_results_csv --header : --tag 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12
par_results_csv --header : --tag ", par_results_csv --header : --tag ",
par_results_csv --header : --lb --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --lb --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --lb --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --lb --files --compress 3,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --lb --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --lb --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --lb --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --lb --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --lb --files 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --lb --files 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --lb --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --lb --compress 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11
par_results_csv --header : --lb --compress ",
par_results_csv --header : --lb --compress 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12
par_results_csv --header : --lb --compress ",
par_results_csv --header : --lb --compress 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11
par_results_csv --header : --lb --compress ",
par_results_csv --header : --lb --compress 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12
par_results_csv --header : --lb --compress ",
par_results_csv --header : --lb Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --lb 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11
par_results_csv --header : --lb ",
par_results_csv --header : --lb 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12
par_results_csv --header : --lb ",
par_results_csv --header : --lb 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11
par_results_csv --header : --lb ",
par_results_csv --header : --lb 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12
par_results_csv --header : --lb ",
par_results_csv --header : --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr par_results_csv --header : --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, par_results_csv --header : --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, par_results_csv --header : --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
@ -423,64 +386,6 @@ par_results_csv --header : 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"2
par_results_csv --header : ", par_results_csv --header : ",
par_results_csv --header : 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 par_results_csv --header : 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12
par_results_csv --header : ", par_results_csv --header : ",
par_results_csv --tag --lb --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --tag --lb --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 3,:,999.999,999.999,0,15,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 5,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 6,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 7,:,999.999,999.999,0,15,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 8,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files --compress 9,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --tag --lb --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --files 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --lb --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --tag --lb --compress 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 H2 H1
par_results_csv --tag --lb --compress ",
par_results_csv --tag --lb --compress 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 H2 11
par_results_csv --tag --lb --compress ",
par_results_csv --tag --lb --compress 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,"H2 12 H2 12
par_results_csv --tag --lb --compress ",
par_results_csv --tag --lb --compress 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,"22 H1 22 H1
par_results_csv --tag --lb --compress ",
par_results_csv --tag --lb --compress 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 22 11
par_results_csv --tag --lb --compress ",
par_results_csv --tag --lb --compress 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 22 12
par_results_csv --tag --lb --compress ",
par_results_csv --tag --lb --compress 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,"23 H1 23 H1
par_results_csv --tag --lb --compress ",
par_results_csv --tag --lb --compress 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 23 11
par_results_csv --tag --lb --compress ",
par_results_csv --tag --lb --compress 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12
par_results_csv --tag --lb --compress ",
par_results_csv --tag --lb Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --tag --lb 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 H2 H1
par_results_csv --tag --lb ",
par_results_csv --tag --lb 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 H2 11
par_results_csv --tag --lb ",
par_results_csv --tag --lb 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,"H2 12 H2 12
par_results_csv --tag --lb ",
par_results_csv --tag --lb 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,"22 H1 22 H1
par_results_csv --tag --lb ",
par_results_csv --tag --lb 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 22 11
par_results_csv --tag --lb ",
par_results_csv --tag --lb 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 22 12
par_results_csv --tag --lb ",
par_results_csv --tag --lb 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,"23 H1 23 H1
par_results_csv --tag --lb ",
par_results_csv --tag --lb 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 23 11
par_results_csv --tag --lb ",
par_results_csv --tag --lb 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12
par_results_csv --tag --lb ",
par_results_csv --tag --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr par_results_csv --tag --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --tag --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", par_results_csv --tag --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile", par_results_csv --tag --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
@ -539,64 +444,6 @@ par_results_csv --tag 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11
par_results_csv --tag ", par_results_csv --tag ",
par_results_csv --tag 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12 par_results_csv --tag 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12
par_results_csv --tag ", par_results_csv --tag ",
par_results_csv --lb --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --lb --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 3,:,999.999,999.999,0,15,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 5,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 6,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 7,:,999.999,999.999,0,15,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 8,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files --compress 9,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --lb --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --files 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --lb --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --lb --compress 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1
par_results_csv --lb --compress ",
par_results_csv --lb --compress 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11
par_results_csv --lb --compress ",
par_results_csv --lb --compress 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,"H2 12
par_results_csv --lb --compress ",
par_results_csv --lb --compress 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,"22 H1
par_results_csv --lb --compress ",
par_results_csv --lb --compress 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11
par_results_csv --lb --compress ",
par_results_csv --lb --compress 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12
par_results_csv --lb --compress ",
par_results_csv --lb --compress 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,"23 H1
par_results_csv --lb --compress ",
par_results_csv --lb --compress 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11
par_results_csv --lb --compress ",
par_results_csv --lb --compress 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12
par_results_csv --lb --compress ",
par_results_csv --lb Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --lb 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1
par_results_csv --lb ",
par_results_csv --lb 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11
par_results_csv --lb ",
par_results_csv --lb 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,"H2 12
par_results_csv --lb ",
par_results_csv --lb 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,"22 H1
par_results_csv --lb ",
par_results_csv --lb 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11
par_results_csv --lb ",
par_results_csv --lb 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12
par_results_csv --lb ",
par_results_csv --lb 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,"23 H1
par_results_csv --lb ",
par_results_csv --lb 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11
par_results_csv --lb ",
par_results_csv --lb 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12
par_results_csv --lb ",
par_results_csv --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr par_results_csv --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, par_results_csv --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile, par_results_csv --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile,

View file

@ -1,16 +1,16 @@
echo "### BUG: The length for -X is not close to max (131072)"; seq 1 60000 | parallel -X echo {.} aa {}{.} {}{}d{} {}dd{}d{.} |head -n 1 |wc echo "### BUG: The length for -X is not close to max (131072)"; seq 1 60000 | parallel -X echo {.} aa {}{.} {}{}d{} {}dd{}d{.} |head -n 1 |wc
### BUG: The length for -X is not close to max (131072) ### BUG: The length for -X is not close to max (131072)
1 6861 65500 1 12817 131016
seq 1 60000 | parallel -X echo a{}b{}c |head -n 1 |wc seq 1 60000 | parallel -X echo a{}b{}c |head -n 1 |wc
1 5644 65514 1 10947 131046
seq 1 60000 | parallel -X echo |head -n 1 |wc seq 1 60000 | parallel -X echo |head -n 1 |wc
1 12770 65514 1 23693 131052
seq 1 60000 | parallel -X echo a{}b{}c {} |head -n 1 |wc seq 1 60000 | parallel -X echo a{}b{}c {} |head -n 1 |wc
1 8098 65512 1 15808 131047
seq 1 60000 | parallel -X echo {}aa{} |head -n 1 |wc seq 1 60000 | parallel -X echo {}aa{} |head -n 1 |wc
1 6157 65513 1 11789 131045
seq 1 60000 | parallel -X echo {} aa {} |head -n 1 |wc seq 1 60000 | parallel -X echo {} aa {} |head -n 1 |wc
1 13547 65519 1 25543 131043
echo '### Test --fifo under csh' echo '### Test --fifo under csh'
### Test --fifo under csh ### Test --fifo under csh
csh -c "seq 3000000 | parallel -k --pipe --fifo 'sleep .{#};cat {}|wc -c ; false; echo \$status; false'"; echo exit $? csh -c "seq 3000000 | parallel -k --pipe --fifo 'sleep .{#};cat {}|wc -c ; false; echo \$status; false'"; echo exit $?

View file

@ -55,8 +55,8 @@ par_multiline_commands finish 3
par_parcat_mixing parcat output should mix: a b a b par_parcat_mixing parcat output should mix: a b a b
par_parcat_mixing astart par_parcat_mixing astart
par_parcat_mixing bstart par_parcat_mixing bstart
par_parcat_mixing bend
par_parcat_mixing aend par_parcat_mixing aend
par_parcat_mixing bend
par_pipepart_block ### --pipepart --block -# (# < 0) par_pipepart_block ### --pipepart --block -# (# < 0)
par_pipepart_block 1 par_pipepart_block 1
par_pipepart_block 2 par_pipepart_block 2

View file

@ -1065,426 +1065,6 @@ par_sqlandworker $SQLITE sleep .3;echo 5 d|5|d|5 d
par_sqlandworker $SQLITE | par_sqlandworker $SQLITE |
par_sqlandworker $SQLITE sleep .3;echo 5 e|5|e|5 e par_sqlandworker $SQLITE sleep .3;echo 5 e|5|e|5 e
par_sqlandworker $SQLITE | par_sqlandworker $SQLITE |
p_wrapper par_sqlandworker_compress_linebuffer_tag \$MYSQL
par_sqlandworker_compress_linebuffer_tag $MYSQL Exit=0
par_sqlandworker_compress_linebuffer_tag $MYSQL Exit=0
par_sqlandworker_compress_linebuffer_tag $MYSQL Command V1 V2 Stdout Stderr
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 1 a 1 a 1 a\t1 a\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 1 b 1 b 1 b\t1 b\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 1 c 1 c 1 c\t1 c\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 1 d 1 d 1 d\t1 d\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 1 e 1 e 1 e\t1 e\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 2 a 2 a 2 a\t2 a\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 2 b 2 b 2 b\t2 b\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 2 c 2 c 2 c\t2 c\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 2 d 2 d 2 d\t2 d\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 2 e 2 e 2 e\t2 e\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 3 a 3 a 3 a\t3 a\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 3 b 3 b 3 b\t3 b\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 3 c 3 c 3 c\t3 c\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 3 d 3 d 3 d\t3 d\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 3 e 3 e 3 e\t3 e\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 4 a 4 a 4 a\t4 a\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 4 b 4 b 4 b\t4 b\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 4 c 4 c 4 c\t4 c\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 4 d 4 d 4 d\t4 d\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 4 e 4 e 4 e\t4 e\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 5 a 5 a 5 a\t5 a\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 5 b 5 b 5 b\t5 b\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 5 c 5 c 5 c\t5 c\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 5 d 5 d 5 d\t5 d\n
par_sqlandworker_compress_linebuffer_tag $MYSQL sleep .3;echo 5 e 5 e 5 e\t5 e\n
p_wrapper par_sqlandworker_compress_linebuffer_tag \$PG
par_sqlandworker_compress_linebuffer_tag $PG Exit=0
par_sqlandworker_compress_linebuffer_tag $PG Exit=0
par_sqlandworker_compress_linebuffer_tag $PG command | v1 | v2 | stdout | stderr
par_sqlandworker_compress_linebuffer_tag $PG -------------------+----+----+-------------+--------
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 1 a | 1 | a | 1 a 1 a+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 1 b | 1 | b | 1 b 1 b+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 1 c | 1 | c | 1 c 1 c+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 1 d | 1 | d | 1 d 1 d+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 1 e | 1 | e | 1 e 1 e+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 2 a | 2 | a | 2 a 2 a+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 2 b | 2 | b | 2 b 2 b+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 2 c | 2 | c | 2 c 2 c+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 2 d | 2 | d | 2 d 2 d+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 2 e | 2 | e | 2 e 2 e+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 3 a | 3 | a | 3 a 3 a+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 3 b | 3 | b | 3 b 3 b+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 3 c | 3 | c | 3 c 3 c+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 3 d | 3 | d | 3 d 3 d+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 3 e | 3 | e | 3 e 3 e+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 4 a | 4 | a | 4 a 4 a+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 4 b | 4 | b | 4 b 4 b+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 4 c | 4 | c | 4 c 4 c+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 4 d | 4 | d | 4 d 4 d+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 4 e | 4 | e | 4 e 4 e+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 5 a | 5 | a | 5 a 5 a+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 5 b | 5 | b | 5 b 5 b+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 5 c | 5 | c | 5 c 5 c+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 5 d | 5 | d | 5 d 5 d+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG sleep .3;echo 5 e | 5 | e | 5 e 5 e+|
par_sqlandworker_compress_linebuffer_tag $PG | | | |
par_sqlandworker_compress_linebuffer_tag $PG (25 rows)
par_sqlandworker_compress_linebuffer_tag $PG
p_wrapper par_sqlandworker_compress_linebuffer_tag \$SQLITE
par_sqlandworker_compress_linebuffer_tag $SQLITE Exit=0
par_sqlandworker_compress_linebuffer_tag $SQLITE Exit=0
par_sqlandworker_compress_linebuffer_tag $SQLITE Command|V1|V2|Stdout|Stderr
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 1 a|1|a|1 a 1 a
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 1 b|1|b|1 b 1 b
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 1 c|1|c|1 c 1 c
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 1 d|1|d|1 d 1 d
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 1 e|1|e|1 e 1 e
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 2 a|2|a|2 a 2 a
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 2 b|2|b|2 b 2 b
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 2 c|2|c|2 c 2 c
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 2 d|2|d|2 d 2 d
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 2 e|2|e|2 e 2 e
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 3 a|3|a|3 a 3 a
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 3 b|3|b|3 b 3 b
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 3 c|3|c|3 c 3 c
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 3 d|3|d|3 d 3 d
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 3 e|3|e|3 e 3 e
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 4 a|4|a|4 a 4 a
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 4 b|4|b|4 b 4 b
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 4 c|4|c|4 c 4 c
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 4 d|4|d|4 d 4 d
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 4 e|4|e|4 e 4 e
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 5 a|5|a|5 a 5 a
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 5 b|5|b|5 b 5 b
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 5 c|5|c|5 c 5 c
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 5 d|5|d|5 d 5 d
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE sleep .3;echo 5 e|5|e|5 e 5 e
par_sqlandworker_compress_linebuffer_tag $SQLITE |
p_wrapper par_sqlandworker_linebuffer \$MYSQL
par_sqlandworker_linebuffer $MYSQL Exit=0
par_sqlandworker_linebuffer $MYSQL Exit=0
par_sqlandworker_linebuffer $MYSQL Command V1 V2 Stdout Stderr
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 1 a 1 a 1 a\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 1 b 1 b 1 b\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 1 c 1 c 1 c\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 1 d 1 d 1 d\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 1 e 1 e 1 e\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 2 a 2 a 2 a\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 2 b 2 b 2 b\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 2 c 2 c 2 c\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 2 d 2 d 2 d\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 2 e 2 e 2 e\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 3 a 3 a 3 a\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 3 b 3 b 3 b\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 3 c 3 c 3 c\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 3 d 3 d 3 d\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 3 e 3 e 3 e\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 4 a 4 a 4 a\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 4 b 4 b 4 b\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 4 c 4 c 4 c\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 4 d 4 d 4 d\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 4 e 4 e 4 e\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 5 a 5 a 5 a\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 5 b 5 b 5 b\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 5 c 5 c 5 c\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 5 d 5 d 5 d\n
par_sqlandworker_linebuffer $MYSQL sleep .3;echo 5 e 5 e 5 e\n
p_wrapper par_sqlandworker_linebuffer \$PG
par_sqlandworker_linebuffer $PG Exit=0
par_sqlandworker_linebuffer $PG Exit=0
par_sqlandworker_linebuffer $PG command | v1 | v2 | stdout | stderr
par_sqlandworker_linebuffer $PG -------------------+----+----+--------+--------
par_sqlandworker_linebuffer $PG sleep .3;echo 1 a | 1 | a | 1 a +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 1 b | 1 | b | 1 b +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 1 c | 1 | c | 1 c +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 1 d | 1 | d | 1 d +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 1 e | 1 | e | 1 e +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 2 a | 2 | a | 2 a +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 2 b | 2 | b | 2 b +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 2 c | 2 | c | 2 c +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 2 d | 2 | d | 2 d +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 2 e | 2 | e | 2 e +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 3 a | 3 | a | 3 a +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 3 b | 3 | b | 3 b +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 3 c | 3 | c | 3 c +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 3 d | 3 | d | 3 d +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 3 e | 3 | e | 3 e +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 4 a | 4 | a | 4 a +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 4 b | 4 | b | 4 b +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 4 c | 4 | c | 4 c +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 4 d | 4 | d | 4 d +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 4 e | 4 | e | 4 e +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 5 a | 5 | a | 5 a +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 5 b | 5 | b | 5 b +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 5 c | 5 | c | 5 c +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 5 d | 5 | d | 5 d +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG sleep .3;echo 5 e | 5 | e | 5 e +|
par_sqlandworker_linebuffer $PG | | | |
par_sqlandworker_linebuffer $PG (25 rows)
par_sqlandworker_linebuffer $PG
p_wrapper par_sqlandworker_linebuffer \$SQLITE
par_sqlandworker_linebuffer $SQLITE Exit=0
par_sqlandworker_linebuffer $SQLITE Exit=0
par_sqlandworker_linebuffer $SQLITE Command|V1|V2|Stdout|Stderr
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 1 a|1|a|1 a
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 1 b|1|b|1 b
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 1 c|1|c|1 c
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 1 d|1|d|1 d
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 1 e|1|e|1 e
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 2 a|2|a|2 a
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 2 b|2|b|2 b
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 2 c|2|c|2 c
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 2 d|2|d|2 d
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 2 e|2|e|2 e
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 3 a|3|a|3 a
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 3 b|3|b|3 b
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 3 c|3|c|3 c
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 3 d|3|d|3 d
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 3 e|3|e|3 e
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 4 a|4|a|4 a
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 4 b|4|b|4 b
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 4 c|4|c|4 c
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 4 d|4|d|4 d
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 4 e|4|e|4 e
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 5 a|5|a|5 a
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 5 b|5|b|5 b
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 5 c|5|c|5 c
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 5 d|5|d|5 d
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE sleep .3;echo 5 e|5|e|5 e
par_sqlandworker_linebuffer $SQLITE |
p_wrapper par_sqlandworker_linebuffer_tag \$MYSQL
par_sqlandworker_linebuffer_tag $MYSQL Exit=0
par_sqlandworker_linebuffer_tag $MYSQL Exit=0
par_sqlandworker_linebuffer_tag $MYSQL Command V1 V2 Stdout Stderr
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 1 a 1 a 1 a\t1 a\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 1 b 1 b 1 b\t1 b\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 1 c 1 c 1 c\t1 c\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 1 d 1 d 1 d\t1 d\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 1 e 1 e 1 e\t1 e\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 2 a 2 a 2 a\t2 a\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 2 b 2 b 2 b\t2 b\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 2 c 2 c 2 c\t2 c\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 2 d 2 d 2 d\t2 d\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 2 e 2 e 2 e\t2 e\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 3 a 3 a 3 a\t3 a\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 3 b 3 b 3 b\t3 b\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 3 c 3 c 3 c\t3 c\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 3 d 3 d 3 d\t3 d\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 3 e 3 e 3 e\t3 e\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 4 a 4 a 4 a\t4 a\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 4 b 4 b 4 b\t4 b\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 4 c 4 c 4 c\t4 c\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 4 d 4 d 4 d\t4 d\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 4 e 4 e 4 e\t4 e\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 5 a 5 a 5 a\t5 a\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 5 b 5 b 5 b\t5 b\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 5 c 5 c 5 c\t5 c\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 5 d 5 d 5 d\t5 d\n
par_sqlandworker_linebuffer_tag $MYSQL sleep .3;echo 5 e 5 e 5 e\t5 e\n
p_wrapper par_sqlandworker_linebuffer_tag \$PG
par_sqlandworker_linebuffer_tag $PG Exit=0
par_sqlandworker_linebuffer_tag $PG Exit=0
par_sqlandworker_linebuffer_tag $PG command | v1 | v2 | stdout | stderr
par_sqlandworker_linebuffer_tag $PG -------------------+----+----+-------------+--------
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 1 a | 1 | a | 1 a 1 a+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 1 b | 1 | b | 1 b 1 b+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 1 c | 1 | c | 1 c 1 c+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 1 d | 1 | d | 1 d 1 d+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 1 e | 1 | e | 1 e 1 e+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 2 a | 2 | a | 2 a 2 a+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 2 b | 2 | b | 2 b 2 b+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 2 c | 2 | c | 2 c 2 c+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 2 d | 2 | d | 2 d 2 d+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 2 e | 2 | e | 2 e 2 e+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 3 a | 3 | a | 3 a 3 a+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 3 b | 3 | b | 3 b 3 b+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 3 c | 3 | c | 3 c 3 c+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 3 d | 3 | d | 3 d 3 d+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 3 e | 3 | e | 3 e 3 e+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 4 a | 4 | a | 4 a 4 a+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 4 b | 4 | b | 4 b 4 b+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 4 c | 4 | c | 4 c 4 c+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 4 d | 4 | d | 4 d 4 d+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 4 e | 4 | e | 4 e 4 e+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 5 a | 5 | a | 5 a 5 a+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 5 b | 5 | b | 5 b 5 b+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 5 c | 5 | c | 5 c 5 c+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 5 d | 5 | d | 5 d 5 d+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG sleep .3;echo 5 e | 5 | e | 5 e 5 e+|
par_sqlandworker_linebuffer_tag $PG | | | |
par_sqlandworker_linebuffer_tag $PG (25 rows)
par_sqlandworker_linebuffer_tag $PG
p_wrapper par_sqlandworker_linebuffer_tag \$SQLITE
par_sqlandworker_linebuffer_tag $SQLITE Exit=0
par_sqlandworker_linebuffer_tag $SQLITE Exit=0
par_sqlandworker_linebuffer_tag $SQLITE Command|V1|V2|Stdout|Stderr
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 1 a|1|a|1 a 1 a
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 1 b|1|b|1 b 1 b
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 1 c|1|c|1 c 1 c
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 1 d|1|d|1 d 1 d
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 1 e|1|e|1 e 1 e
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 2 a|2|a|2 a 2 a
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 2 b|2|b|2 b 2 b
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 2 c|2|c|2 c 2 c
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 2 d|2|d|2 d 2 d
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 2 e|2|e|2 e 2 e
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 3 a|3|a|3 a 3 a
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 3 b|3|b|3 b 3 b
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 3 c|3|c|3 c 3 c
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 3 d|3|d|3 d 3 d
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 3 e|3|e|3 e 3 e
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 4 a|4|a|4 a 4 a
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 4 b|4|b|4 b 4 b
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 4 c|4|c|4 c 4 c
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 4 d|4|d|4 d 4 d
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 4 e|4|e|4 e 4 e
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 5 a|5|a|5 a 5 a
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 5 b|5|b|5 b 5 b
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 5 c|5|c|5 c 5 c
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 5 d|5|d|5 d 5 d
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE sleep .3;echo 5 e|5|e|5 e 5 e
par_sqlandworker_linebuffer_tag $SQLITE |
p_wrapper par_sqlandworker_lo \$MYSQL p_wrapper par_sqlandworker_lo \$MYSQL
par_sqlandworker_lo $MYSQL Exit=0 par_sqlandworker_lo $MYSQL Exit=0
par_sqlandworker_lo $MYSQL Exit=0 par_sqlandworker_lo $MYSQL Exit=0

View file

@ -40,8 +40,8 @@ HOME=~
** bug #41805 done ** bug #41805 done
echo '### Deal with long command lines on remote servers' echo '### Deal with long command lines on remote servers'
### Deal with long command lines on remote servers ### Deal with long command lines on remote servers
perl -e 'print((("\""x5000)."\n")x10)' | parallel -j1 -S lo -N 10000 echo {} |wc perl -e 'print((("\""x5000)."\n")x26)' | parallel -j1 -S lo -N 10000 echo {} |wc
4 10 50010 2 26 130026
echo '### Test bug #34241: --pipe should not spawn unneeded processes' echo '### Test bug #34241: --pipe should not spawn unneeded processes'
### Test bug #34241: --pipe should not spawn unneeded processes ### Test bug #34241: --pipe should not spawn unneeded processes
seq 5 | ssh csh@lo parallel -k --block 5 --pipe -j10 cat\\\;echo Block_end seq 5 | ssh csh@lo parallel -k --block 5 --pipe -j10 cat\\\;echo Block_end

View file

@ -458,7 +458,6 @@ echo '### true < 32767-ys.xi'
### true < 32767-ys.xi ### true < 32767-ys.xi
stdout xargs true < 32767-ys.xi stdout xargs true < 32767-ys.xi
stdout parallel -k true < 32767-ys.xi stdout parallel -k true < 32767-ys.xi
parallel: Error: Command line too long (98306 >= 65524) at input 0: y y y y y y y y y y y y y y y y y y y y y y y y y ...
echo '### true < 16383-ys.xi' echo '### true < 16383-ys.xi'
### true < 16383-ys.xi ### true < 16383-ys.xi
stdout xargs true < 16383-ys.xi stdout xargs true < 16383-ys.xi

View file

@ -107,24 +107,24 @@ a1.gif 2.gif 3.gif 4.gif 5.gif 6.gifb1 2 3 4 5 6c1 2 3 4 5 6
a1.gifb1c1 a2.gifb2c2 a3.gifb3c3 a4.gifb4c4 a5.gifb5c5 a6.gifb6c6 a1.gifb1c1 a2.gifb2c2 a3.gifb3c3 a4.gifb4c4 a5.gifb5c5 a6.gifb6c6
echo '### Test -m with 60000 args'; seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -km echo a{}b{.}c{.} | tee >(wc; sleep 1) >(md5sum; sleep 1) >/dev/null; wait; sleep 1 echo '### Test -m with 60000 args'; seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -km echo a{}b{.}c{.} | tee >(wc; sleep 1) >(md5sum; sleep 1) >/dev/null; wait; sleep 1
### Test -m with 60000 args ### Test -m with 60000 args
0891d955e7e2659ee6a88a96f3309b5c - d025d2d552a9ff809216d17d408de0b4 -
20 179960 1286702 10 179980 1286692
echo '### Test -X with 60000 args'; seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.} | tee >(wc; sleep 1) >(md5sum; sleep 1) >/dev/null; wait; sleep 1 echo '### Test -X with 60000 args'; seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.} | tee >(wc; sleep 1) >(md5sum; sleep 1) >/dev/null; wait; sleep 1
### Test -X with 60000 args ### Test -X with 60000 args
8646e0f7fd5f8795e4b1a831ede50e85 - 3f7c4c261957ac7186bbe97cddcf5ae9 -
21 60000 1346682 11 60000 1346682
echo '### Test -X with 60000 args and 5 expansions' echo '### Test -X with 60000 args and 5 expansions'
### Test -X with 60000 args and 5 expansions ### Test -X with 60000 args and 5 expansions
seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.}{.}{} | wc -l seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.}{.}{} | wc -l
34
seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.}{.} | wc -l
25
seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.} | wc -l
21
seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c | wc -l
17 17
seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b | wc -l seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.}{.} | wc -l
13
seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.} | wc -l
11 11
seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c | wc -l
9
seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b | wc -l
6
echo '### Test {.} does not repeat more than {}' echo '### Test {.} does not repeat more than {}'
### Test {.} does not repeat more than {} ### Test {.} does not repeat more than {}
seq 1 15 | perl -pe 's/$/.gif/' | parallel -j1 -s 80 -kX echo a{}b{.}c{.} seq 1 15 | perl -pe 's/$/.gif/' | parallel -j1 -s 80 -kX echo a{}b{.}c{.}
@ -146,13 +146,13 @@ a14.gif 15.gifb14 15c14 15
echo '### Test -I with shell meta chars' echo '### Test -I with shell meta chars'
### Test -I with shell meta chars ### Test -I with shell meta chars
seq 1 60000 | parallel -j1 -I :: -X echo a::b::c:: | wc -l seq 1 60000 | parallel -j1 -I :: -X echo a::b::c:: | wc -l
17 9
seq 1 60000 | parallel -j1 -I '<>' -X echo 'a<>b<>c<>' | wc -l seq 1 60000 | parallel -j1 -I '<>' -X echo 'a<>b<>c<>' | wc -l
17 9
seq 1 60000 | parallel -j1 -I '<' -X echo 'a<b<c<' | wc -l seq 1 60000 | parallel -j1 -I '<' -X echo 'a<b<c<' | wc -l
17 9
seq 1 60000 | parallel -j1 -I '>' -X echo 'a>b>c>' | wc -l seq 1 60000 | parallel -j1 -I '>' -X echo 'a>b>c>' | wc -l
17 9
echo '### Test {.}' echo '### Test {.}'
### Test {.} ### Test {.}
echo a | parallel -qX echo "'"{.}"' " echo a | parallel -qX echo "'"{.}"' "

View file

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

View file

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

View file

@ -30,41 +30,71 @@ See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 900 1000 | PARALLEL_TMUX=tmux-1.9 par_tmux seq 900 1000 | 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-tmpdir/tmsXXXXX attach
0 0
seq 1000 1006 | PARALLEL_TMUX=tmux-1.9 par_tmux seq 1000 1100 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1100 1200 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1200 1300 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1300 1400 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1400 1500 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1500 1600 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1600 1700 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1700 1800 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1800 1900 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1900 2000 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 2000 2018 | 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-tmpdir/tmsXXXXX attach
0 0
echo '### tmux-1.9 fails' echo '### tmux-1.9 fails'
### tmux-1.9 fails ### tmux-1.9 fails
echo 1007 | PARALLEL_TMUX=tmux-1.9 par_tmux echo 2019 | PARALLEL_TMUX=tmux-1.9 par_tmux
parallel: Error: Command line too long (2023 >= 2023) at input 0: 1007 parallel: Error: Command line too long (4047 >= 4047) at input 0: 2019
255 255
echo 1008 | PARALLEL_TMUX=tmux-1.9 par_tmux echo 2020 | PARALLEL_TMUX=tmux-1.9 par_tmux
parallel: Error: Command line too long (2025 >= 2023) at input 0: 1008 parallel: Error: Command line too long (4049 >= 4047) at input 0: 2020
255 255
echo 1009 | PARALLEL_TMUX=tmux-1.9 par_tmux echo 2021 | PARALLEL_TMUX=tmux-1.9 par_tmux
parallel: Error: Command line too long (2027 >= 2023) at input 0: 1009 parallel: Error: Command line too long (4051 >= 4047) at input 0: 2021
255 255
echo '### tmux-1.8' echo '### tmux-1.8'
### tmux-1.8 ### tmux-1.8
seq 1 50 | PARALLEL_TMUX=tmux-1.8 par_tmux seq 1 100 | PARALLEL_TMUX=tmux-1.8 par_tmux
See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
seq 51 100 | PARALLEL_TMUX=tmux-1.8 par_tmux seq 101 200 | PARALLEL_TMUX=tmux-1.8 par_tmux
See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
seq 101 113 | PARALLEL_TMUX=tmux-1.8 par_tmux seq 201 231 | PARALLEL_TMUX=tmux-1.8 par_tmux
See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0 0
echo '### tmux-1.8 fails' echo '### tmux-1.8 fails'
### tmux-1.8 fails ### tmux-1.8 fails
echo 114 | PARALLEL_TMUX=tmux-1.8 par_tmux echo 232 | PARALLEL_TMUX=tmux-1.8 par_tmux
parallel: Error: Command line too long (236 >= 236) at input 0: 114 parallel: Error: Command line too long (472 >= 472) at input 0: 232
255 255
echo 115 | PARALLEL_TMUX=tmux-1.8 par_tmux echo 233 | PARALLEL_TMUX=tmux-1.8 par_tmux
parallel: Error: Command line too long (238 >= 236) at input 0: 115 parallel: Error: Command line too long (474 >= 472) at input 0: 233
255 255
echo 116 | PARALLEL_TMUX=tmux-1.8 par_tmux echo 234 | PARALLEL_TMUX=tmux-1.8 par_tmux
parallel: Error: Command line too long (240 >= 236) at input 0: 116 parallel: Error: Command line too long (476 >= 472) at input 0: 234
255 255
echo '### tmux-1.8 0..255 ascii' echo '### tmux-1.8 0..255 ascii'
### tmux-1.8 0..255 ascii ### tmux-1.8 0..255 ascii
@ -83,12 +113,12 @@ See output with: tmux -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
053c7e8e945ef7641fc63bc309ac069d - 053c7e8e945ef7641fc63bc309ac069d -
echo '### Test critical lengths. Must not block' echo '### Test critical lengths. Must not block'
### Test critical lengths. Must not block ### Test critical lengths. Must not block
seq 70 130 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter seq 140 260 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
parallel: Error: Command line too long (236 >= 236) at input 0: 114 parallel: Error: Command line too long (472 >= 472) at input 0: 232
seq 70 130 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter 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-tmpdir/tmsXXXXX attach
seq 280 425 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter seq 560 850 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
parallel: Error: Command line too long (288 >= 236) at input 0: 280 parallel: Error: Command line too long (568 >= 472) at input 0: 560
seq 280 425 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter seq 560 850 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach

View file

@ -395,12 +395,12 @@ a1b1^c1[.}c
echo "### BUG: The length for -X is not close to max (131072)" echo "### BUG: The length for -X is not close to max (131072)"
### BUG: The length for -X is not close to max (131072) ### BUG: The length for -X is not close to max (131072)
seq 1 4000 | nice parallel -k -X echo {.} aa {}{.} {}{}d{} {}dd{}d{.} |head -n 1 |wc seq 1 4000 | nice parallel -k -X echo {.} aa {}{.} {}{}d{} {}dd{}d{.} |head -n 1 |wc
1 6861 65500 1 12817 131016
echo "### BUG: empty lines with --show-limit" echo "### BUG: empty lines with --show-limit"
### BUG: empty lines with --show-limit ### BUG: empty lines with --show-limit
echo | $NICEPAR --show-limits echo | $NICEPAR --show-limits
Maximal size of command: 131049 Maximal size of command: 131049
Maximal used size of command: 65524 Maximal used size of command: 131057
Execution of will continue now, and it will try to read its input Execution of will continue now, and it will try to read its input
and run commands; if this is not what you wanted to happen, please and run commands; if this is not what you wanted to happen, please