diff --git a/src/parallel b/src/parallel index 1e945f00..1615a9c6 100755 --- a/src/parallel +++ b/src/parallel @@ -1176,7 +1176,7 @@ sub check_invalid_option_combinations { sub init_globals { # Defaults: - $Global::version = 20160101; + $Global::version = 20160102; $Global::progname = 'parallel'; $Global::infinity = 2**31; $Global::debug = 0; @@ -6567,6 +6567,36 @@ sub reset_failed { sub reset_failed_here { # increase the number of times failed for this $sshlogin + # + # VGhlIGZpcnN0IGNvb2tpZSB3YXMgcmVsZWFzZWQgb24gMjAxMS0wMS0yNCBh + # bmQgd2FzIHdvbiBieSBBRXZhcgpBcm5mam9yZCBCamFybWFzb24gb24gMjAx + # MS0wNC0xMC4gVGhlIHNlY29uZCB3YXMgcmVsZWFzZWQgb24KMjAxMy0wOC0x + # OCBhbmQgd29uIG9uIDIwMTUtMDctMTkgYnkgTWFyayBNYWltb25lLgoKRm9y + # IHRoaXMgY29va2llIHlvdSBoYXZlIHRvIHVzZSBiYXNlNjQgdG8gZGVjb2Rl + # LiBQbGVhc2UgZW1haWwKY29va2llQHRhbmdlLmRrIHdoZW4geW91IHJlYWQg + # dGhpcy4KCkkgYW0gdGhlIG1haW50YWluZXIgb2YgYSBwaWVjZSBvZiBmcmVl + # IHNvZnR3YXJlIGNhbGxlZCBHTlUKUGFyYWxsZWwuIEZyZWUgc29mdHdhcmUg + # Z3VhcmFudGVlcyB5b3UgYWNjZXNzIHRvIHRoZSBzb3VyY2UKY29kZSwgYnV0 + # IEkgaGF2ZSBiZWVuIHdvbmRlcmluZyBob3cgbWFueSBhY3R1YWxseSBfcmVh + # ZF8gdGhlCnNvdXJjZSBjb2RlLgoKVG8gdGVzdCB0aGlzIEkgcHV0IGluIGEg + # Y29tbWVudCB0ZWxsaW5nIHBlb3BsZSB0byBlbWFpbCBtZSB3aGVuCnRoZXkg + # cmVhZCB0aGlzLiBUaGUgY29tbWVudCB3YXMgcHV0IGluIGEgc2VjdGlvbiBv + # ZiB0aGUgY29kZQp0aGF0IG5vIG9uZSB3b3VsZCBsb29rIHRvIGZpeCBvciBp + # bXByb3ZlIHRoZSBzb2Z0d2FyZSAtIHNvIHRoZQpzb3VyY2UgY29kZSBlcXVp + # dmFsZW50IHRvIGEgZHVzdHkgY29ybmVyLiBUbyBtYWtlIHN1cmUgdGhlCmNv + # bW1lbnQgd291bGQgbm90IHNob3cgdXAgaWYgc29tZSBvbmUganVzdCBncmVw + # cGVkIHRocm91Z2ggdGhlCnNvdXJjZSBjb2RlIEkgcm90MTMnZWQgdGhlIHNv + # dXJjZSBjb2RlCmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUk9UMTMK + # CjIuNSBtb250aHMgbGF0ZXIgSSByZWNlaXZlZCBhbiBlbWFpbCBmcm9tIHNv + # bWVvbmUgd2hvIG5vdCBvbmx5Cm1hbmFnZWQgdG8gZmluZCB0aGUgY29tbWVu + # dCwgYnV0IGFsc28gbWFuYWdlZCB0byBndWVzcyB0aGUgY29kZQpoYWQgdG8g + # YmUgcm90MTMnZWQuCgpUbyBzZWUgaWYgdGhpcyB3YXMgYSBmbHVrZSBldmVu + # dCBJIHJldHJpZWQgdGhlIHRlc3QuIFRoaXMgdGltZSAKaXQgdG9vayBhIGxp + # dHRsZSBsb25nZXIsIGJ1dCBhZnRlciAyMyBtb250aHMgaXQgdG9vIHdhcyBm + # b3VuZC4KClRoaXMgYnJpbmdzIG1lIHRvIHRoZSBjb25jbHVzaW9uIHRoYXQg + # dGhlcmUgX2FyZV8gcGVvcGxlLCB3aG8KYXJlIG5vdCBhZmZpbGlhdGVkIHdp + # dGggdGhlIHByb2plY3QsIHRoYXQgd2lsbCByZWFkIHRoZSBzb3VyY2UKY29k + # ZSAtIHRob3VnaCBpdCBtYXkgbm90IGhhcHBlbiBhbGwgdGhlIHRpbWUuCg== my $self = shift; delete $self->{'failed'}{$self->sshlogin()}; } @@ -7297,7 +7327,9 @@ sub workdir { $workdir = ".parallel/tmp/" . ::hostname() . "-" . $$ . "-" . $self->seq(); } else { - $workdir = $opt::workdir; + $workdir = $self->{'commandline'}-> + replace_placeholders([$opt::workdir],0,0); + #$workdir = $opt::workdir; # Rsync treats /./ special. We dont want that $workdir =~ s:/\./:/:g; # Remove /./ $workdir =~ s:(.)/+$:$1:; # Remove ending / if any @@ -8687,7 +8719,8 @@ sub new { # by replacing {= and =} with \257< and \257> # in @command, --return and --tagstring (if used) for(@command,@$transfer_files,@$return_files, - (defined $opt::tagstring ? $opt::tagstring : $dummy)) { + (defined $opt::tagstring ? $opt::tagstring : $dummy), + (defined $opt::workdir ? $opt::workdir : $dummy)) { # Disallow \257 to avoid nested {= {= =} =} if(/\257/) { ::error("Command cannot contain the character \257. Use a function for that."); @@ -8842,6 +8875,15 @@ sub replacement_counts_and_lengths { $replacecount{$1} ||= 1; } } + if($opt::workdir) { + my $t = $opt::workdir; + while($t =~ s/ \257<([^\257]*)\257> //x) { + # %replacecount = { "perlexpr" => number of times seen } + # e.g { "$_++" => 2 } + # But for workdir we just need to mark it as seen + $replacecount{$1} ||= 1; + } + } if($opt::bar) { # If the command does not contain {} force it to be computed # as it is being used by --bar diff --git a/src/parallel_design.pod b/src/parallel_design.pod index cda28c58..3d3121c1 100644 --- a/src/parallel_design.pod +++ b/src/parallel_design.pod @@ -275,7 +275,7 @@ You can map the bad limits using: tmux -S /tmp/p{%}-'{=3 $_="O"x$_ =}' new-session -d -n '{=1 $_="O"x$_ =}' true'\ {=2 $_="O"x$_ =};echo $?;rm /tmp/p{%}-O*' > value.csv 2>/dev/null - R -e 'a<-read.table("value.csv");X11();plot(a[,1],a[,2],col=a[,3]+5,cex=0.1);Sys.sleep(1000)' + R -e 'a<-read.table("value.csv");X11();plot(a[,1],a[,2],col=a[,4]+5,cex=0.1);Sys.sleep(1000)' For B 17000 can be lowered to 2100. diff --git a/src/parallel_tutorial.html b/src/parallel_tutorial.html index f9467795..96518891 100644 --- a/src/parallel_tutorial.html +++ b/src/parallel_tutorial.html @@ -2146,7 +2146,7 @@

With --shebang the input_file and parallel can be combined into the same script.

-

UNIX-scripts start with a shebang line like this:

+

UNIX shell scripts start with a shebang line like this:

  #!/bin/bash
@@ -2166,25 +2166,23 @@

Parallelizing existing scripts

-

GNU parallel is often called as:

+

GNU parallel is often called as this:

  cat input_file | parallel command
   parallel command ::: foo bar
-

If command is a script parallel can be combined into a single file so:

+

If command is a script, parallel can be combined into a single file so this will run the script in parallel:

  cat input_file | command
   command foo bar
-

will run the script in parallel.

-

This perl script perl_echo works like echo:

  #!/usr/bin/perl
 
   print "@ARGV\n"
-

It can be called as:

+

It can be called as this:

  parallel perl_echo ::: foo bar
@@ -2210,69 +2208,136 @@
Perl:
-

#!/usr/bin/parallel --shebang-wrap /usr/bin/perl

- -

print "Arguments @ARGV\n";

+
  #!/usr/bin/parallel --shebang-wrap /usr/bin/perl
+  
+  print "Arguments @ARGV\n";
Python:
-

#!/usr/bin/parallel --shebang-wrap /usr/bin/python

- -

import sys

- -

print 'Arguments', str(sys.argv)

+
  #!/usr/bin/parallel --shebang-wrap /usr/bin/python
+  
+  import sys
+  print 'Arguments', str(sys.argv)
-
Bash:
+
Bash/sh/zsh/Korn shell:
-

#!/usr/bin/parallel --shebang-wrap /bin/bash

+
  #!/usr/bin/parallel --shebang-wrap /bin/bash
+  
+  echo Arguments "$@"
-

echo Arguments "$@"

+
+
csh:
+
+ +
  #!/usr/bin/parallel --shebang-wrap /bin/csh
+  
+  echo Arguments "$argv"
+ +
+
Tcl:
+
+ +
  #!/usr/bin/parallel --shebang-wrap /usr/bin/tclsh
+  
+  puts "Arguments $argv"
R:
-

#!/usr/bin/parallel --shebang-wrap /usr/bin/Rscript --vanilla --slave

- -

args <- commandArgs(trailingOnly = TRUE) print(paste("Arguments ",args))

+
  #!/usr/bin/parallel --shebang-wrap /usr/bin/Rscript --vanilla --slave
+  
+  args <- commandArgs(trailingOnly = TRUE)
+  print(paste("Arguments ",args))
GNUplot:
-

#!/usr/bin/parallel --shebang-wrap ARG={} /usr/bin/gnuplot

- -

print "Arguments ", system('echo $ARG')

+
  #!/usr/bin/parallel --shebang-wrap ARG={} /usr/bin/gnuplot
+  
+  print "Arguments ", system('echo $ARG')
Ruby:
-

#!/usr/bin/parallel --shebang-wrap /usr/bin/ruby

- -

print "Arguments " puts ARGV

+
  #!/usr/bin/parallel --shebang-wrap /usr/bin/ruby
+  
+  print "Arguments "
+  puts ARGV
Octave:
-

#!/usr/bin/parallel --shebang-wrap /usr/bin/octave

- -

printf ("Arguments"); arg_list = argv (); for i = 1:nargin printf (" %s", arg_list{i}); endfor printf ("\n");

+
  #!/usr/bin/parallel --shebang-wrap /usr/bin/octave
+  
+  printf ("Arguments");
+  arg_list = argv ();
+  for i = 1:nargin
+    printf (" %s", arg_list{i});
+  endfor
+  printf ("\n");
Common LISP:
-

#!/usr/bin/parallel --shebang-wrap /usr/bin/clisp

+
  #!/usr/bin/parallel --shebang-wrap /usr/bin/clisp
+  
+  (format t "~&~S~&" 'Arguments)
+  (format t "~&~S~&" *args*)
-

(format t "~&~S~&" 'Arguments) (format t "~&~S~&" *args*)

+
+
PHP:
+
-

LUA PHP Javascript nodejs Tcl C#?

+
  #!/usr/bin/parallel --shebang-wrap /usr/bin/php
+  <?php
+  echo "Arguments";
+  foreach(array_slice($argv,1) as $v)
+  {
+    echo " $v";
+  }
+  echo "\n";
+  ?>
+ +
+
Node.js:
+
+ +
  #!/usr/bin/parallel --shebang-wrap /usr/bin/node
+
+  var myArgs = process.argv.slice(2);
+  console.log('Arguments ', myArgs);
+ +
+
LUA:
+
+ +
  #!/usr/bin/parallel --shebang-wrap /usr/bin/lua
+  
+  io.write "Arguments"
+  for a = 1, #arg do
+    io.write(" ")
+    io.write(arg[a])
+  end
+  print("")
+ +
+
C#:
+
+ +
  #!/usr/bin/parallel --shebang-wrap ARGV={} /usr/bin/csharp
+  
+  var argv = Environment.GetEnvironmentVariable("ARGV");
+  print("Arguments "+argv);
+  
diff --git a/src/parallel_tutorial.pod b/src/parallel_tutorial.pod index e2894562..f588402a 100644 --- a/src/parallel_tutorial.pod +++ b/src/parallel_tutorial.pod @@ -2177,7 +2177,7 @@ GNU B is often called as this: With B<--shebang> the I and B can be combined into the same script. -UNIX-scripts start with a shebang line like this: +UNIX shell scripts start with a shebang line like this: #!/bin/bash @@ -2199,25 +2199,24 @@ Output (the order may be different): =head2 Parallelizing existing scripts -GNU B is often called as: +GNU B is often called as this: cat input_file | parallel command parallel command ::: foo bar -If command is a script B can be combined into a single file so: +If B is a script, B can be combined into a single +file so this will run the script in parallel: cat input_file | command command foo bar -will run the script in B. - This B script B works like B: #!/usr/bin/perl print "@ARGV\n" -It can be called as: +It can be called as this: parallel perl_echo ::: foo bar @@ -2242,75 +2241,118 @@ This technique can be used for: =item Perl: -#!/usr/bin/parallel --shebang-wrap /usr/bin/perl - -print "Arguments @ARGV\n"; + #!/usr/bin/parallel --shebang-wrap /usr/bin/perl + + print "Arguments @ARGV\n"; =item Python: -#!/usr/bin/parallel --shebang-wrap /usr/bin/python - -import sys - -print 'Arguments', str(sys.argv) + #!/usr/bin/parallel --shebang-wrap /usr/bin/python + + import sys + print 'Arguments', str(sys.argv) -=item Bash: +=item Bash/sh/zsh/Korn shell: -#!/usr/bin/parallel --shebang-wrap /bin/bash + #!/usr/bin/parallel --shebang-wrap /bin/bash + + echo Arguments "$@" -echo Arguments "$@" + +=item csh: + + #!/usr/bin/parallel --shebang-wrap /bin/csh + + echo Arguments "$argv" + + +=item Tcl: + + #!/usr/bin/parallel --shebang-wrap /usr/bin/tclsh + + puts "Arguments $argv" =item R: -#!/usr/bin/parallel --shebang-wrap /usr/bin/Rscript --vanilla --slave - -args <- commandArgs(trailingOnly = TRUE) -print(paste("Arguments ",args)) + #!/usr/bin/parallel --shebang-wrap /usr/bin/Rscript --vanilla --slave + + args <- commandArgs(trailingOnly = TRUE) + print(paste("Arguments ",args)) =item GNUplot: -#!/usr/bin/parallel --shebang-wrap ARG={} /usr/bin/gnuplot - -print "Arguments ", system('echo $ARG') + #!/usr/bin/parallel --shebang-wrap ARG={} /usr/bin/gnuplot + + print "Arguments ", system('echo $ARG') =item Ruby: -#!/usr/bin/parallel --shebang-wrap /usr/bin/ruby - -print "Arguments " -puts ARGV + #!/usr/bin/parallel --shebang-wrap /usr/bin/ruby + + print "Arguments " + puts ARGV =item Octave: -#!/usr/bin/parallel --shebang-wrap /usr/bin/octave - -printf ("Arguments"); -arg_list = argv (); -for i = 1:nargin - printf (" %s", arg_list{i}); -endfor -printf ("\n"); + #!/usr/bin/parallel --shebang-wrap /usr/bin/octave + + printf ("Arguments"); + arg_list = argv (); + for i = 1:nargin + printf (" %s", arg_list{i}); + endfor + printf ("\n"); =item Common LISP: -#!/usr/bin/parallel --shebang-wrap /usr/bin/clisp + #!/usr/bin/parallel --shebang-wrap /usr/bin/clisp + + (format t "~&~S~&" 'Arguments) + (format t "~&~S~&" *args*) -(format t "~&~S~&" 'Arguments) -(format t "~&~S~&" *args*) +=item PHP: -LUA -PHP -Javascript -nodejs -Tcl -C#? + #!/usr/bin/parallel --shebang-wrap /usr/bin/php + +=item Node.js: + + #!/usr/bin/parallel --shebang-wrap /usr/bin/node + + var myArgs = process.argv.slice(2); + console.log('Arguments ', myArgs); + +=item LUA: + + #!/usr/bin/parallel --shebang-wrap /usr/bin/lua + + io.write "Arguments" + for a = 1, #arg do + io.write(" ") + io.write(arg[a]) + end + print("") + +=item C#: + + #!/usr/bin/parallel --shebang-wrap ARGV={} /usr/bin/csharp + + var argv = Environment.GetEnvironmentVariable("ARGV"); + print("Arguments "+argv); + =back diff --git a/testsuite/Makefile b/testsuite/Makefile index 78a8a433..3077e04f 100644 --- a/testsuite/Makefile +++ b/testsuite/Makefile @@ -38,6 +38,10 @@ prereqlocal: installparallel niceload true || (echo niceload is required for testsuite; /bin/false) which burnP6 || (echo burnP6 is required for testsuite; /bin/false) which timeout || (echo timeout is required for testsuite; /bin/false) + which autossh || (echo autossh is required for testsuite; /bin/false) + which lsh || (echo lsh is required for testsuite; /bin/false) + timeout 10 ssh sh@lo true || (echo ssh sh@lo is required for testsuite; /bin/false) + timeout 5 ssh csh@lo true || (echo ssh csh@lo is required for testsuite; /bin/false) prereqremote: installparallel startvm parallel --timeout 10 --tag ssh parallel@parallel-server{} parallel --minversion 20121021 ::: 1 2 3 || (echo parallel on remote required for testsuite; /bin/true) diff --git a/testsuite/tests-to-run/parallel-local-0.3s.sh b/testsuite/tests-to-run/parallel-local-0.3s.sh index eb1b37e1..62b757d1 100644 --- a/testsuite/tests-to-run/parallel-local-0.3s.sh +++ b/testsuite/tests-to-run/parallel-local-0.3s.sh @@ -253,7 +253,7 @@ echo '{##} bug #45841: Replacement string for total no of jobs' parallel -k 'echo {= $::G++ > 3 and ($_=$Global::JobQueue->total_jobs());=}' ::: {1..10} parallel -k -N7 --plus echo {#} {##} ::: {1..14} parallel -k -N7 --plus echo {#} {##} ::: {1..15} - parallel -k -X --plus echo {#} {##} ::: {1..15} + parallel -k -S 8/: -X --plus echo {#} {##} ::: {1..15} echo '**' diff --git a/testsuite/tests-to-run/parallel-local-ssh5.sh b/testsuite/tests-to-run/parallel-local-ssh5.sh index 88bbf977..af06f07d 100644 --- a/testsuite/tests-to-run/parallel-local-ssh5.sh +++ b/testsuite/tests-to-run/parallel-local-ssh5.sh @@ -29,7 +29,7 @@ echo '### --ssh lsh' # Test gl. parallel med --ssh lsh: Hvilke fejler? brug dem. Også hvis de fejler echo '### bug #45025: --pipe --retries does not reschedule on other host' - seq 1 300030| stdout parallel -k --retries 2 -S a.a,: --pipe 'wc;hostname' + seq 1 300030| stdout parallel -k --retries 2 -S a.a,: --pipe 'wc;hostname' | perl -pe 's/'`hostname`'/localhost-:/' stdout parallel --retries 2 --roundrobin echo ::: should fail EOF diff --git a/testsuite/tests-to-run/parallel-local-ssh6.sh b/testsuite/tests-to-run/parallel-local-ssh6.sh index e4d084e1..1db165eb 100644 --- a/testsuite/tests-to-run/parallel-local-ssh6.sh +++ b/testsuite/tests-to-run/parallel-local-ssh6.sh @@ -68,4 +68,17 @@ echo '### Test --wd .'; ssh $SSHLOGIN2 mkdir -p mydir; mkdir -p $HOME/mydir; cd $HOME/mydir; parallel --workdir . -S $SSHLOGIN2 ::: pwd + +echo '### Test --wd {}'; + ssh $SSHLOGIN2 rm -rf wd1 wd2; + mkdir -p $HOME/mydir; cd $HOME/mydir; + parallel --workdir {} -S $SSHLOGIN2 touch ::: wd1 wd2; + ssh $SSHLOGIN2 ls -d wd1 wd2 + +echo '### Test --wd {= =}'; + ssh $SSHLOGIN2 rm -rf WD1 WD2; + mkdir -p $HOME/mydir; cd $HOME/mydir; + parallel --workdir '{= $_=uc($_) =}' -S $SSHLOGIN2 touch ::: wd1 wd2; + ssh $SSHLOGIN2 ls -d WD1 WD2 + EOF diff --git a/testsuite/wanted-results/parallel-local-sql b/testsuite/wanted-results/parallel-local-sql new file mode 100644 index 00000000..07fb18b3 --- /dev/null +++ b/testsuite/wanted-results/parallel-local-sql @@ -0,0 +1,301 @@ +echo '### --sqlandworker mysql' +### --sqlandworker mysql + (sleep 2; parallel --sqlworker $MYSQLTBL sleep .3\;echo >$T1) & + parallel --sqlandworker $MYSQLTBL sleep .3\;echo ::: {1..5} ::: {a..e} >$T2; true sort -u $T1 $T2; sql $MYSQL 'select * from parsql order by seq;' +Seq Host Starttime JobRuntime Send Receive Exitval _Signal Command V1 V2 Stdout Stderr +1 :999999NULL 4 0 0 sleep .3;echo 1 a 1 a 1 a\n +2 :999999NULL 4 0 0 sleep .3;echo 1 b 1 b 1 b\n +3 :999999NULL 4 0 0 sleep .3;echo 1 c 1 c 1 c\n +4 :999999NULL 4 0 0 sleep .3;echo 1 d 1 d 1 d\n +5 :999999NULL 4 0 0 sleep .3;echo 1 e 1 e 1 e\n +6 :999999NULL 4 0 0 sleep .3;echo 2 a 2 a 2 a\n +7 :999999NULL 4 0 0 sleep .3;echo 2 b 2 b 2 b\n +8 :999999NULL 4 0 0 sleep .3;echo 2 c 2 c 2 c\n +9 :999999NULL 4 0 0 sleep .3;echo 2 d 2 d 2 d\n +999:999999NULL 4 0 0 sleep .3;echo 2 e 2 e 2 e\n +999:999999NULL 4 0 0 sleep .3;echo 3 a 3 a 3 a\n +999:999999NULL 4 0 0 sleep .3;echo 3 b 3 b 3 b\n +999:999999NULL 4 0 0 sleep .3;echo 3 c 3 c 3 c\n +999:999999NULL 4 0 0 sleep .3;echo 3 d 3 d 3 d\n +999:999999NULL 4 0 0 sleep .3;echo 3 e 3 e 3 e\n +999:999999NULL 4 0 0 sleep .3;echo 4 a 4 a 4 a\n +999:999999NULL 4 0 0 sleep .3;echo 4 b 4 b 4 b\n +999:999999NULL 4 0 0 sleep .3;echo 4 c 4 c 4 c\n +999:999999NULL 4 0 0 sleep .3;echo 4 d 4 d 4 d\n +999:999999NULL 4 0 0 sleep .3;echo 4 e 4 e 4 e\n +999:999999NULL 4 0 0 sleep .3;echo 5 a 5 a 5 a\n +999:999999NULL 4 0 0 sleep .3;echo 5 b 5 b 5 b\n +999:999999NULL 4 0 0 sleep .3;echo 5 c 5 c 5 c\n +999:999999NULL 4 0 0 sleep .3;echo 5 d 5 d 5 d\n +999:999999NULL 4 0 0 sleep .3;echo 5 e 5 e 5 e\n +echo '### --sqlandworker postgresql' +### --sqlandworker postgresql + (sleep 2; parallel --sqlworker $PGTBL sleep .3\;echo >$T3) & + parallel --sqlandworker $PGTBL sleep .3\;echo ::: {1..5} ::: {a..e} >$T4; true sort -u $T3 $T4; sql $PG 'select * from parsql order by seq;' + seq | host | starttime | jobruntime | send | receive | exitval | _signal | command | v1 | v2 | stdout | stderr +-----+------+-------------+------------+------+---------+---------+---------+-------------------+----+----+--------+-------- + 1 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 a | 1 | a | 1 a +| + | | | | | | | | | | | | + 2 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 b | 1 | b | 1 b +| + | | | | | | | | | | | | + 3 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 c | 1 | c | 1 c +| + | | | | | | | | | | | | + 4 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 d | 1 | d | 1 d +| + | | | | | | | | | | | | + 5 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 e | 1 | e | 1 e +| + | | | | | | | | | | | | + 6 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 a | 2 | a | 2 a +| + | | | | | | | | | | | | + 7 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 b | 2 | b | 2 b +| + | | | | | | | | | | | | + 8 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 c | 2 | c | 2 c +| + | | | | | | | | | | | | + 9 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 d | 2 | d | 2 d +| + | | | | | | | | | | | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 e | 2 | e | 2 e +| + | | | | | | | | | | | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 a | 3 | a | 3 a +| + | | | | | | | | | | | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 b | 3 | b | 3 b +| + | | | | | | | | | | | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 c | 3 | c | 3 c +| + | | | | | | | | | | | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 d | 3 | d | 3 d +| + | | | | | | | | | | | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 e | 3 | e | 3 e +| + | | | | | | | | | | | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 a | 4 | a | 4 a +| + | | | | | | | | | | | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 b | 4 | b | 4 b +| + | | | | | | | | | | | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 c | 4 | c | 4 c +| + | | | | | | | | | | | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 d | 4 | d | 4 d +| + | | | | | | | | | | | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 e | 4 | e | 4 e +| + | | | | | | | | | | | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 a | 5 | a | 5 a +| + | | | | | | | | | | | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 b | 5 | b | 5 b +| + | | | | | | | | | | | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 c | 5 | c | 5 c +| + | | | | | | | | | | | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 d | 5 | d | 5 d +| + | | | | | | | | | | | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 e | 5 | e | 5 e +| + | | | | | | | | | | | | +(999rows) + +echo '### --sqlandworker sqlite' +### --sqlandworker sqlite + (sleep 2; parallel --sqlworker $SQLITETBL sleep .3\;echo >$T5) & + parallel --sqlandworker $SQLITETBL sleep .3\;echo ::: {1..5} ::: {a..e} >$T6; true sort -u $T5 $T6; sql $SQLITE 'select * from parsql order by seq;' +Seq|Host|Starttime|JobRuntime|Send|Receive|Exitval|_Signal|Command|V1|V2|Stdout|Stderr +1|:|999|999||4|0|0|sleep .3;echo 1 a|1|a|1 a +| +2|:|999|999||4|0|0|sleep .3;echo 1 b|1|b|1 b +| +3|:|999|999||4|0|0|sleep .3;echo 1 c|1|c|1 c +| +4|:|999|999||4|0|0|sleep .3;echo 1 d|1|d|1 d +| +5|:|999|999||4|0|0|sleep .3;echo 1 e|1|e|1 e +| +6|:|999|999||4|0|0|sleep .3;echo 2 a|2|a|2 a +| +7|:|999|999||4|0|0|sleep .3;echo 2 b|2|b|2 b +| +8|:|999|999||4|0|0|sleep .3;echo 2 c|2|c|2 c +| +9|:|999|999||4|0|0|sleep .3;echo 2 d|2|d|2 d +| +999|:|999|999||4|0|0|sleep .3;echo 2 e|2|e|2 e +| +999|:|999|999||4|0|0|sleep .3;echo 3 a|3|a|3 a +| +999|:|999|999||4|0|0|sleep .3;echo 3 b|3|b|3 b +| +999|:|999|999||4|0|0|sleep .3;echo 3 c|3|c|3 c +| +999|:|999|999||4|0|0|sleep .3;echo 3 d|3|d|3 d +| +999|:|999|999||4|0|0|sleep .3;echo 3 e|3|e|3 e +| +999|:|999|999||4|0|0|sleep .3;echo 4 a|4|a|4 a +| +999|:|999|999||4|0|0|sleep .3;echo 4 b|4|b|4 b +| +999|:|999|999||4|0|0|sleep .3;echo 4 c|4|c|4 c +| +999|:|999|999||4|0|0|sleep .3;echo 4 d|4|d|4 d +| +999|:|999|999||4|0|0|sleep .3;echo 4 e|4|e|4 e +| +999|:|999|999||4|0|0|sleep .3;echo 5 a|5|a|5 a +| +999|:|999|999||4|0|0|sleep .3;echo 5 b|5|b|5 b +| +999|:|999|999||4|0|0|sleep .3;echo 5 c|5|c|5 c +| +999|:|999|999||4|0|0|sleep .3;echo 5 d|5|d|5 d +| +999|:|999|999||4|0|0|sleep .3;echo 5 e|5|e|5 e +| +echo '### --sqlandworker postgresql -S lo' +### --sqlandworker postgresql -S lo + (sleep 2; parallel -S lo --sqlworker $PGTBL2 sleep .3\;echo >$T7) & + parallel -S lo --sqlandworker $PGTBL2 sleep .3\;echo ::: {1..5} ::: {a..e} >$T8; true sort -u $T7 $T8; sql $PG 'select * from parsql2 order by seq;' + seq | host | starttime | jobruntime | send | receive | exitval | _signal | command | v1 | v2 | stdout | stderr +-----+------+-------------+------------+------+---------+---------+---------+-------------------+----+----+--------+-------- + 1 | lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 a | 1 | a | 1 a +| + | | | | | | | | | | | | + 2 | lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 b | 1 | b | 1 b +| + | | | | | | | | | | | | + 3 | lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 c | 1 | c | 1 c +| + | | | | | | | | | | | | + 4 | lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 d | 1 | d | 1 d +| + | | | | | | | | | | | | + 5 | lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 e | 1 | e | 1 e +| + | | | | | | | | | | | | + 6 | lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 a | 2 | a | 2 a +| + | | | | | | | | | | | | + 7 | lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 b | 2 | b | 2 b +| + | | | | | | | | | | | | + 8 | lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 c | 2 | c | 2 c +| + | | | | | | | | | | | | + 9 | lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 d | 2 | d | 2 d +| + | | | | | | | | | | | | +999| lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 e | 2 | e | 2 e +| + | | | | | | | | | | | | +999| lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 a | 3 | a | 3 a +| + | | | | | | | | | | | | +999| lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 b | 3 | b | 3 b +| + | | | | | | | | | | | | +999| lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 c | 3 | c | 3 c +| + | | | | | | | | | | | | +999| lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 d | 3 | d | 3 d +| + | | | | | | | | | | | | +999| lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 e | 3 | e | 3 e +| + | | | | | | | | | | | | +999| lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 a | 4 | a | 4 a +| + | | | | | | | | | | | | +999| lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 b | 4 | b | 4 b +| + | | | | | | | | | | | | +999| lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 c | 4 | c | 4 c +| + | | | | | | | | | | | | +999| lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 d | 4 | d | 4 d +| + | | | | | | | | | | | | +999| lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 e | 4 | e | 4 e +| + | | | | | | | | | | | | +999| lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 a | 5 | a | 5 a +| + | | | | | | | | | | | | +999| lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 b | 5 | b | 5 b +| + | | | | | | | | | | | | +999| lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 c | 5 | c | 5 c +| + | | | | | | | | | | | | +999| lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 d | 5 | d | 5 d +| + | | | | | | | | | | | | +999| lo |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 e | 5 | e | 5 e +| + | | | | | | | | | | | | +(999rows) + +echo '### --sqlandworker postgresql --results' +### --sqlandworker postgresql --results + mkdir -p /tmp/out--sql + (sleep 2; parallel --results /tmp/out--sql --sqlworker $PGTBL3 sleep .3\;echo >$T9) & + parallel --results /tmp/out--sql --sqlandworker $PGTBL3 sleep .3\;echo ::: {1..5} ::: {a..e} >$T999; true sort -u $T9 $T999; sql $PG 'select * from parsql3 order by seq;' + seq | host | starttime | jobruntime | send | receive | exitval | _signal | command | v1 | v2 | stdout | stderr +-----+------+-------------+------------+------+---------+---------+---------+-------------------+----+----+------------------------------+------------------------------ + 1 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 a | 1 | a | /tmp/out--sql/1/1/2/a/stdout | /tmp/out--sql/1/1/2/a/stderr + 2 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 b | 1 | b | /tmp/out--sql/1/1/2/b/stdout | /tmp/out--sql/1/1/2/b/stderr + 3 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 c | 1 | c | /tmp/out--sql/1/1/2/c/stdout | /tmp/out--sql/1/1/2/c/stderr + 4 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 d | 1 | d | /tmp/out--sql/1/1/2/d/stdout | /tmp/out--sql/1/1/2/d/stderr + 5 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 e | 1 | e | /tmp/out--sql/1/1/2/e/stdout | /tmp/out--sql/1/1/2/e/stderr + 6 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 a | 2 | a | /tmp/out--sql/1/2/2/a/stdout | /tmp/out--sql/1/2/2/a/stderr + 7 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 b | 2 | b | /tmp/out--sql/1/2/2/b/stdout | /tmp/out--sql/1/2/2/b/stderr + 8 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 c | 2 | c | /tmp/out--sql/1/2/2/c/stdout | /tmp/out--sql/1/2/2/c/stderr + 9 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 d | 2 | d | /tmp/out--sql/1/2/2/d/stdout | /tmp/out--sql/1/2/2/d/stderr +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 e | 2 | e | /tmp/out--sql/1/2/2/e/stdout | /tmp/out--sql/1/2/2/e/stderr +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 a | 3 | a | /tmp/out--sql/1/3/2/a/stdout | /tmp/out--sql/1/3/2/a/stderr +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 b | 3 | b | /tmp/out--sql/1/3/2/b/stdout | /tmp/out--sql/1/3/2/b/stderr +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 c | 3 | c | /tmp/out--sql/1/3/2/c/stdout | /tmp/out--sql/1/3/2/c/stderr +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 d | 3 | d | /tmp/out--sql/1/3/2/d/stdout | /tmp/out--sql/1/3/2/d/stderr +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 e | 3 | e | /tmp/out--sql/1/3/2/e/stdout | /tmp/out--sql/1/3/2/e/stderr +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 a | 4 | a | /tmp/out--sql/1/4/2/a/stdout | /tmp/out--sql/1/4/2/a/stderr +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 b | 4 | b | /tmp/out--sql/1/4/2/b/stdout | /tmp/out--sql/1/4/2/b/stderr +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 c | 4 | c | /tmp/out--sql/1/4/2/c/stdout | /tmp/out--sql/1/4/2/c/stderr +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 d | 4 | d | /tmp/out--sql/1/4/2/d/stdout | /tmp/out--sql/1/4/2/d/stderr +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 e | 4 | e | /tmp/out--sql/1/4/2/e/stdout | /tmp/out--sql/1/4/2/e/stderr +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 a | 5 | a | /tmp/out--sql/1/5/2/a/stdout | /tmp/out--sql/1/5/2/a/stderr +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 b | 5 | b | /tmp/out--sql/1/5/2/b/stdout | /tmp/out--sql/1/5/2/b/stderr +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 c | 5 | c | /tmp/out--sql/1/5/2/c/stdout | /tmp/out--sql/1/5/2/c/stderr +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 d | 5 | d | /tmp/out--sql/1/5/2/d/stdout | /tmp/out--sql/1/5/2/d/stderr +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 e | 5 | e | /tmp/out--sql/1/5/2/e/stdout | /tmp/out--sql/1/5/2/e/stderr +(999rows) + +echo '### --sqlandworker postgresql --linebuffer' +### --sqlandworker postgresql --linebuffer + (sleep 2; parallel --linebuffer --sqlworker $PGTBL4 sleep .3\;echo >$T999) & + parallel --linebuffer --sqlandworker $PGTBL4 sleep .3\;echo ::: {1..5} ::: {a..e} >$T999; true sort -u $T999$T999; sql $PG 'select * from parsql4 order by seq;' + seq | host | starttime | jobruntime | send | receive | exitval | _signal | command | v1 | v2 | stdout | stderr +-----+------+-------------+------------+------+---------+---------+---------+-------------------+----+----+--------+-------- + 1 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 a | 1 | a | | + 2 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 b | 1 | b | | + 3 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 c | 1 | c | | + 4 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 d | 1 | d | | + 5 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 1 e | 1 | e | | + 6 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 a | 2 | a | | + 7 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 b | 2 | b | | + 8 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 c | 2 | c | | + 9 | : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 d | 2 | d | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 2 e | 2 | e | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 a | 3 | a | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 b | 3 | b | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 c | 3 | c | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 d | 3 | d | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 3 e | 3 | e | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 a | 4 | a | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 b | 4 | b | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 c | 4 | c | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 d | 4 | d | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 4 e | 4 | e | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 a | 5 | a | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 b | 5 | b | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 c | 5 | c | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 d | 5 | d | | +999| : |999e+999|999| | 4 | 0 | 0 | sleep .3;echo 5 e | 5 | e | | +(999rows) + +echo '### --sqlandworker postgresql -u' +### --sqlandworker postgresql -u + (sleep 2; parallel -u --sqlworker $PGTBL5 sleep .3\;echo >$T999) & + parallel -u --sqlandworker $PGTBL5 sleep .3\;echo ::: {1..5} ::: {a..e} >$T999; true sort -u $T999$T999; sql $PG 'select * from parsql5 order by seq;' + seq | host | starttime | jobruntime | send | receive | exitval | _signal | command | v1 | v2 | stdout | stderr +-----+------+-------------+------------+------+---------+---------+---------+-------------------+----+----+--------+-------- + 1 | : |999e+999|999| | | 0 | 0 | sleep .3;echo 1 a | 1 | a | | + 2 | : |999e+999|999| | | 0 | 0 | sleep .3;echo 1 b | 1 | b | | + 3 | : |999e+999|999| | | 0 | 0 | sleep .3;echo 1 c | 1 | c | | + 4 | : |999e+999|999| | | 0 | 0 | sleep .3;echo 1 d | 1 | d | | + 5 | : |999e+999|999| | | 0 | 0 | sleep .3;echo 1 e | 1 | e | | + 6 | : |999e+999|999| | | 0 | 0 | sleep .3;echo 2 a | 2 | a | | + 7 | : |999e+999|999| | | 0 | 0 | sleep .3;echo 2 b | 2 | b | | + 8 | : |999e+999|999| | | 0 | 0 | sleep .3;echo 2 c | 2 | c | | + 9 | : |999e+999|999| | | 0 | 0 | sleep .3;echo 2 d | 2 | d | | +999| : |999e+999|999| | | 0 | 0 | sleep .3;echo 2 e | 2 | e | | +999| : |999e+999|999| | | 0 | 0 | sleep .3;echo 3 a | 3 | a | | +999| : |999e+999|999| | | 0 | 0 | sleep .3;echo 3 b | 3 | b | | +999| : |999e+999|999| | | 0 | 0 | sleep .3;echo 3 c | 3 | c | | +999| : |999e+999|999| | | 0 | 0 | sleep .3;echo 3 d | 3 | d | | +999| : |999e+999|999| | | 0 | 0 | sleep .3;echo 3 e | 3 | e | | +999| : |999e+999|999| | | 0 | 0 | sleep .3;echo 4 a | 4 | a | | +999| : |999e+999|999| | | 0 | 0 | sleep .3;echo 4 b | 4 | b | | +999| : |999e+999|999| | | 0 | 0 | sleep .3;echo 4 c | 4 | c | | +999| : |999e+999|999| | | 0 | 0 | sleep .3;echo 4 d | 4 | d | | +999| : |999e+999|999| | | 0 | 0 | sleep .3;echo 4 e | 4 | e | | +999| : |999e+999|999| | | 0 | 0 | sleep .3;echo 5 a | 5 | a | | +999| : |999e+999|999| | | 0 | 0 | sleep .3;echo 5 b | 5 | b | | +999| : |999e+999|999| | | 0 | 0 | sleep .3;echo 5 c | 5 | c | | +999| : |999e+999|999| | | 0 | 0 | sleep .3;echo 5 d | 5 | d | | +999| : |999e+999|999| | | 0 | 0 | sleep .3;echo 5 e | 5 | e | | +(999rows) + diff --git a/testsuite/wanted-results/parallel-local-ssh6 b/testsuite/wanted-results/parallel-local-ssh6 index 661ac381..905101c9 100644 --- a/testsuite/wanted-results/parallel-local-ssh6 +++ b/testsuite/wanted-results/parallel-local-ssh6 @@ -106,3 +106,11 @@ echo '### Test --workdir .'; ssh parallel@lo mkdir -p mydir; mkdir -p $HOME/ echo '### Test --wd .'; ssh csh@lo mkdir -p mydir; mkdir -p $HOME/mydir; cd $HOME/mydir; parallel --workdir . -S csh@lo ::: pwd ### Test --wd . /home/csh/mydir +echo '### Test --wd {}'; ssh csh@lo rm -rf wd1 wd2; mkdir -p $HOME/mydir; cd $HOME/mydir; parallel --workdir {} -S csh@lo touch ::: wd1 wd2; ssh csh@lo ls -d wd1 wd2 +### Test --wd {} +wd1 +wd2 +echo '### Test --wd {= =}'; ssh csh@lo rm -rf WD1 WD2; mkdir -p $HOME/mydir; cd $HOME/mydir; parallel --workdir '{= $_=uc($_) =}' -S csh@lo touch ::: wd1 wd2; ssh csh@lo ls -d WD1 WD2 +### Test --wd {= =} +WD1 +WD2 diff --git a/testsuite/wanted-results/parallel-local114 b/testsuite/wanted-results/parallel-local114 index dbed1d17..92853163 100644 Binary files a/testsuite/wanted-results/parallel-local114 and b/testsuite/wanted-results/parallel-local114 differ