diff --git a/README b/README index 9a268f28..625b26f2 100644 --- a/README +++ b/README @@ -125,9 +125,8 @@ publication please cite: Tange, O. (2022, February 22). GNU Parallel 20220222 ('Donetsk Luhansk'). Zenodo. https://doi.org/10.5281/zenodo.6213471 -Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, -2016, 2017, 2018, 2019, 2020, 2021 Ole Tange, http://ole.tange.dk and -Free Software Foundation, Inc. +Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free +Software Foundation, Inc. = New versions = diff --git a/doc/release_new_version b/doc/release_new_version index d9cc022d..a31f071b 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -266,6 +266,8 @@ Quote of the month: New in this release: +* --sshlogin user:password@host is now supported by using sshpass. + <<>> * Bug fixes and man page updates: Many options now have a 'See also' section. diff --git a/src/parallel b/src/parallel index 0d60dbce..b6845068 100755 --- a/src/parallel +++ b/src/parallel @@ -2790,7 +2790,7 @@ sub open_json_csv() { ::die_bug("Can't >/dev/null in csv: $!"); $Global::fh{1} = $fd; $Global::fh{2} = $fd; - } elsif($Global::csvsep) { + } elsif($Global::csvsep or $Global::jsonout) { if(not open($Global::csv_fh,">",$opt::results)) { ::error("Cannot open results file `$opt::results': ". "$!."); @@ -3545,7 +3545,7 @@ sub init_run_jobs() { next; } if($sshlogin->too_fast_remote_login()) { - # It has been too short since + # It has been too short since last login next; } debug("run", $sshlogin->string(), @@ -6473,7 +6473,13 @@ sub new($$) { if($s =~ s/([^@]+)@//) { my $userpw = $1; # user[:pass] - if($userpw =~ s/:(.*)//) { $password = $1; } + if($userpw =~ s/:(.*)//) { + $password = $1; + if(not ::which("sshpass")) { + ::error("--sshlogin with password requires sshpass installed"); + ::wait_and_exit(255); + } + } $user = $userpw; } @@ -6499,7 +6505,6 @@ sub new($$) { } else { $sshcommand ||= $opt::ssh || $ENV{'PARALLEL_SSH'} || "ssh"; } - # An SSHLogin is always in the hostgroup of its $string-name $hostgroups{$string} = 1; @Global::hostgroups{keys %hostgroups} = values %hostgroups; @@ -6566,6 +6571,32 @@ sub sshcmd($) { if($self->{'port'}) { push @local, '-p',$self->{'port'}; } # [-l user] if($self->{'user'}) { push @local, '-l',$self->{'user'}; } + if($opt::controlmaster) { + # Use control_path to make ssh faster + my $control_path = $self->control_path_dir()."/ssh-%r@%h:%p"; + push @local, "-S", $control_path; + if(not $self->{'control_path'}{$control_path}++) { + # Master is not running for this control_path + # Start it + my $pid = fork(); + if($pid) { + $Global::sshmaster{$pid} ||= 1; + } else { + $SIG{'TERM'} = undef; + # Run a sleep that outputs data, so it will discover + # if the ssh connection closes. + my $sleep = ::Q('$|=1;while(1){sleep 1;print "foo\n"}'); + # Ignore the 'foo' being printed + open(STDOUT,">","/dev/null"); + # STDERR >/dev/null to ignore + open(STDERR,">","/dev/null"); + open(STDIN,"<","/dev/null"); + exec(@local, "-MT", $self->{'host'}, "--", + "perl", "-e", $sleep); + } + } + } + return "@local"; } @@ -8615,7 +8646,7 @@ sub openoutputfiles($) { } # Return immediately because we do not need setting filenames return; - } elsif($opt::results and not $Global::csvsep) { + } elsif($opt::results and not $Global::csvsep and not $Global::jsonout) { # If --results, but not --results *.csv/*.tsv my $out = $self->{'commandline'}->results_out(); my $seqname; @@ -10579,10 +10610,9 @@ sub print($) { $self->starttime(), sprintf("%0.3f",$self->runtime()), $self->transfersize(), $self->returnsize(), $self->exitstatus(), $self->exitsignal(), $cmd, - # \@$record_ref[1..$#$record_ref], (join ",", map { '"'.jsonquote($_).'"' } @$record_ref[1..$#$record_ref], - ), + ), jsonquote($self->{'output'}{1}), jsonquote($self->{'output'}{2}) ); diff --git a/src/parallel.pod b/src/parallel.pod index 2e2a9035..934102b4 100644 --- a/src/parallel.pod +++ b/src/parallel.pod @@ -3313,10 +3313,12 @@ See also: B<--no-run-if-empty> B<{}> B<--colsep> =item B<-u> -Ungroup output. Output is printed as soon as possible and bypasses -GNU B internal processing. This may cause output from -different commands to be mixed thus should only be used if you do not -care about the output. Compare these: +Ungroup output. + +Output is printed as soon as possible and bypasses GNU B +internal processing. This may cause output from different commands to +be mixed thus should only be used if you do not care about the +output. Compare these: seq 4 | parallel -j0 \ 'sleep {};echo -n start{};sleep {};echo {}end' diff --git a/testsuite/tests-to-run/parallel-local-0.3s.sh b/testsuite/tests-to-run/parallel-local-0.3s.sh index a7f3cf33..906adb24 100644 --- a/testsuite/tests-to-run/parallel-local-0.3s.sh +++ b/testsuite/tests-to-run/parallel-local-0.3s.sh @@ -855,6 +855,17 @@ par_results() { rm -r $tmp "$tmp"-dir } +par_results_json() { + echo "### --results test.json" + tmp=$(mktemp -d) + parallel -k --results "$tmp"/foo.json seq ::: 2 3 ::: 4 5 + cat "$tmp"/foo.json | perl -pe 's/\d+\.\d{3}/9.999/g' + rm -r $tmp + parallel -k --results -.json seq ::: 2 3 ::: 4 5 | + perl -pe 's/\d+\.\d{3}/9.999/g' +} + + par_testquote() { testquote() { printf '"#&/\n()*=?'"'" | diff --git a/testsuite/tests-to-run/parallel-local-10s.sh b/testsuite/tests-to-run/parallel-local-10s.sh index c1539f6d..a50877ab 100644 --- a/testsuite/tests-to-run/parallel-local-10s.sh +++ b/testsuite/tests-to-run/parallel-local-10s.sh @@ -20,6 +20,41 @@ par_load_blocks() { grep -Ev 'processes took|Consider adjusting -j' } +par_round_robin_blocks() { + echo "bug #49664: --round-robin does not complete" + seq 20000000 | parallel -j8 --block 10M --round-robin --pipe wc -c | wc -l +} + +par_test_diff_roundrobin_k() { + echo '### test there is difference on -k' + . $(which env_parallel.bash) + mytest() { + K=$1 + doit() { + # Sleep random time ever 1k line + # to mix up which process gets the next block + perl -ne '$t++ % 1000 or select(undef, undef, undef, rand()/10);print' | + md5sum + } + export -f doit + seq 1000000 | + parallel --block 65K --pipe $K --roundrobin doit | + sort + } + export -f mytest + parset a,b,c mytest ::: -k -k '' + # a == b and a != c or error + if [ "$a" == "$b" ]; then + if [ "$a" != "$c" ]; then + echo OK + else + echo error a c + fi + else + echo error a b + fi +} + par_compress_prg_fails() { echo '### bug #44546: If --compress-program fails: fail' doit() { diff --git a/testsuite/tests-to-run/parallel-local-1s.sh b/testsuite/tests-to-run/parallel-local-1s.sh index bdcd64c3..acdb400d 100644 --- a/testsuite/tests-to-run/parallel-local-1s.sh +++ b/testsuite/tests-to-run/parallel-local-1s.sh @@ -8,6 +8,40 @@ # Each should be taking 1-3s and be possible to run in parallel # I.e.: No race conditions, no logins + +par_commandline_with_newline() { + echo 'bug #51299: --retry-failed with command with newline' + echo 'The format must remain the same' + ( + parallel --jl - 'false "command +with +newlines"' ::: a b | sort + + echo resume + parallel --resume --jl - 'false "command +with +newlines"' ::: a b c | sort + + echo resume-failed + parallel --resume-failed --jl - 'false "command +with +newlines"' ::: a b c d | sort + + echo retry-failed + parallel --retry-failed --jl - 'false "command +with +newlines"' ::: a b c d e | sort + ) | perl -pe 's/\0//g;s/\d+/./g' +} + +par_compute_command_len() { + echo "### Computing length of command line" + seq 1 2 | parallel -k -N2 echo {1} {2} + parallel --xapply -k -a <(seq 11 12) -a <(seq 1 3) echo + parallel -k -C %+ echo '"{1}_{3}_{2}_{4}"' ::: 'a% c %%b' 'a%c% b %d' + parallel -k -C %+ echo {4} ::: 'a% c %%b' +} + par_skip_first_line() { tmpdir=$(mktemp) (echo `seq 10000`;echo MyHeader; seq 10) | @@ -29,14 +63,6 @@ par_long_input() { parallel --colsep '\t' echo {-5} {-3//} {-2/.} '{=-1 s/.*\.// =}' } -par_plus_slot_replacement() { - echo '### show {slot} {0%} {0#}' - parallel -k --plus 'sleep 0.{%};echo {slot}=$PARALLEL_JOBSLOT={%}' ::: A B C - parallel -j15 -k --plus 'echo Seq: {0#} {#}' ::: {1..100} | sort - parallel -j15 -k --plus 'sleep 0.{}; echo Slot: {0%} {%}' ::: {1..100} | - sort -u -} - par_recend_recstart_hash() { echo "### bug #59843: --regexp --recstart '#' fails" (echo '#rec1'; echo 'bar'; echo '#rec2') | @@ -50,7 +76,7 @@ par_recend_recstart_hash() { } par_sqlandworker_uninstalled_dbd() { - echo 'bug #56096: dbi-csv no such column' + echo '### bug #56096: dbi-csv no such column' mkdir -p /tmp/parallel-bug-56096 sudo mv /usr/share/perl5/DBD/CSV.pm /usr/share/perl5/DBD/CSV.pm.gone parallel --sqlandworker csv:///%2Ftmp%2Fparallel-bug-56096/mytable echo ::: must_fail @@ -58,6 +84,14 @@ par_sqlandworker_uninstalled_dbd() { parallel --sqlandworker csv:///%2Ftmp%2Fparallel-bug-56096/mytable echo ::: works } +par_uninstalled_sshpass() { + echo '### sshpass must be installed for --sshlogin user:pass@host' + sshpass=$(command -v sshpass) + sudo mv "$sshpass" "$sshpass".hidden + parallel -S user:pass@host echo ::: must fail + sudo mv "$sshpass".hidden "$sshpass" +} + par_results_compress() { tmpdir=$(mktemp) rm -r "$tmpdir" diff --git a/testsuite/tests-to-run/parallel-local-30s.sh b/testsuite/tests-to-run/parallel-local-30s.sh index b8d115f2..b77d1ee7 100755 --- a/testsuite/tests-to-run/parallel-local-30s.sh +++ b/testsuite/tests-to-run/parallel-local-30s.sh @@ -25,7 +25,7 @@ par_bin() { parallel --pipe --colsep '\t' --bin 2 wc | sort } -par_shard_a() { +par_shard() { echo '### --shard' # Each of the 5 lines should match: # ##### ##### ###### @@ -40,9 +40,7 @@ par_shard_a() { } shard_on_col 1 shard_on_col 2 -} -par_shard_b() { echo '### --shard' shard_on_col_name() { colname=$1 @@ -53,9 +51,7 @@ par_shard_b() { } shard_on_col_name A 1 shard_on_col_name B 2 -} -par_shard_c() { echo '### --shard' shard_on_col_expr() { colexpr="$1" @@ -66,9 +62,7 @@ par_shard_c() { } shard_on_col_expr '1 $_%=3' 1 shard_on_col_expr '2 $_%=3' 2 -} -par_shard_d() { shard_on_col_name_expr() { colexpr="$1" col=$2 @@ -88,36 +82,6 @@ par_shard_d() { perl -pe 's/(.*\d{5,}){3}/OK/' } -par_test_diff_roundrobin_k() { - echo '### test there is difference on -k' - . $(which env_parallel.bash) - mytest() { - K=$1 - doit() { - # Sleep random time ever 1k line - # to mix up which process gets the next block - perl -ne '$t++ % 1000 or select(undef, undef, undef, rand()/10);print' | - md5sum - } - export -f doit - seq 1000000 | - parallel --block 65K --pipe $K --roundrobin doit | - sort - } - export -f mytest - parset a,b,c mytest ::: -k -k '' - # a == b and a != c or error - if [ "$a" == "$b" ]; then - if [ "$a" != "$c" ]; then - echo OK - else - echo error a c - fi - else - echo error a b - fi -} - par_load_from_PARALLEL() { echo "### Test reading load from PARALLEL" export PARALLEL="--load 300%" @@ -468,11 +432,6 @@ par_max_length_len_128k() { ) | perl -pe 's/(\d\d+)\d\d\d/${1}xxx/g' } -par_round_robin_blocks() { - echo "bug #49664: --round-robin does not complete" - seq 20000000 | parallel -j8 --block 10M --round-robin --pipe wc -c | wc -l -} - par_plus_dyn_repl() { echo "Dynamic replacement strings defined by --plus" diff --git a/testsuite/tests-to-run/parallel-local-3s.sh b/testsuite/tests-to-run/parallel-local-3s.sh index e41270c3..05a0fee8 100644 --- a/testsuite/tests-to-run/parallel-local-3s.sh +++ b/testsuite/tests-to-run/parallel-local-3s.sh @@ -232,12 +232,12 @@ par_sshdelay() { perl -ne 'print($_ > 1.30 ? "OK\n" : "Not OK\n")' } -par_compute_command_len() { - echo "### Computing length of command line" - seq 1 2 | parallel -k -N2 echo {1} {2} - parallel --xapply -k -a <(seq 11 12) -a <(seq 1 3) echo - parallel -k -C %+ echo '"{1}_{3}_{2}_{4}"' ::: 'a% c %%b' 'a%c% b %d' - parallel -k -C %+ echo {4} ::: 'a% c %%b' +par_plus_slot_replacement() { + echo '### show {slot} {0%} {0#}' + parallel -k --plus 'sleep 0.{%};echo {slot}=$PARALLEL_JOBSLOT={%}' ::: A B C + parallel -j15 -k --plus 'echo Seq: {0#} {#}' ::: {1..100} | sort + parallel -j15 -k --plus 'sleep 0.{}; echo Slot: {0%} {%}' ::: {1..100} | + sort -u } par_replacement_slashslash() { @@ -468,31 +468,6 @@ par_sqlworker_hostname() { perl -pe "s/$hostname//g" } -par_commandline_with_newline() { - echo 'bug #51299: --retry-failed with command with newline' - echo 'The format must remain the same' - ( - parallel --jl - 'false "command -with -newlines"' ::: a b | sort - - echo resume - parallel --resume --jl - 'false "command -with -newlines"' ::: a b c | sort - - echo resume-failed - parallel --resume-failed --jl - 'false "command -with -newlines"' ::: a b c d | sort - - echo retry-failed - parallel --retry-failed --jl - 'false "command -with -newlines"' ::: a b c d e | sort - ) | perl -pe 's/\0//g;s/\d+/./g' -} - par_delay_human_readable() { # Test that you can use d h m s in --delay parallel --delay 0.1s echo ::: a b c diff --git a/testsuite/tests-to-run/parallel-macos.sh b/testsuite/tests-to-run/parallel-macos.sh index 289f07fc..44d5267b 100644 --- a/testsuite/tests-to-run/parallel-macos.sh +++ b/testsuite/tests-to-run/parallel-macos.sh @@ -160,8 +160,6 @@ par_big_var_func_name() { perl -pe 's/\d{10,}.\d+ //g' } -#macsshlogin=ota@mac -#macsshlogin=macosx.p macsshlogin=$(parallel --halt now,success=1 ssh {} echo {} ::: ota@mac macosx.p) scp /usr/local/bin/parallel $macsshlogin:bin/ @@ -171,4 +169,5 @@ export -f $(compgen -A function | grep par_) compgen -A function | grep par_ | LC_ALL=C sort | - env_parallel --timeout 3000% --tag -k -S 6/$macsshlogin 'PATH=$HOME/bin:$PATH; {}' + env_parallel --timeout 3000% --tag -k -S 6/$macsshlogin 'PATH=$HOME/bin:$PATH; {}' | + perl -pe 's/(\d+)\d\d\d/${1}XXX/g' diff --git a/testsuite/tests-to-run/parallel-remote1.sh b/testsuite/tests-to-run/parallel-remote1.sh index ce20acf3..75d2427a 100644 --- a/testsuite/tests-to-run/parallel-remote1.sh +++ b/testsuite/tests-to-run/parallel-remote1.sh @@ -50,9 +50,10 @@ par_filter_hosts_no_ssh_nxserver() { par_controlmaster_is_faster() { echo '### bug #41964: --controlmaster not seems to reuse OpenSSH connections to the same host' + echo '-M should finish first - eventhough there are 2x jobs' (parallel -S $SSHLOGIN1 true ::: {1..20}; echo No --controlmaster - finish last) & - (parallel -M -S $SSHLOGIN1 true ::: {1..20}; + (parallel -M -S $SSHLOGIN1 true ::: {1..40}; echo With --controlmaster - finish first) & wait } diff --git a/testsuite/wanted-results/parallel-local-0.3s b/testsuite/wanted-results/parallel-local-0.3s index 49dc22a9..28c926e0 100644 --- a/testsuite/wanted-results/parallel-local-0.3s +++ b/testsuite/wanted-results/parallel-local-0.3s @@ -902,6 +902,15 @@ par_results c par_results_arg_256 ### bug #42089: --results with arg > 256 chars (should be 1 char shorter) par_results_arg_256 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 par_results_arg_256 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345 +par_results_json ### --results test.json +par_results_json { "Seq": 1, "Host": ":", "Starttime": 9.999, "JobRuntime": 9.999, "Send": 0, "Receive": 6, "Exitval": 0, "Signal": 0, "Command": "seq 2 4", "V": [ "2","4" ], "Stdout": "2\u000a3\u000a4\u000a", "Stderr": "" } +par_results_json { "Seq": 2, "Host": ":", "Starttime": 9.999, "JobRuntime": 9.999, "Send": 0, "Receive": 8, "Exitval": 0, "Signal": 0, "Command": "seq 2 5", "V": [ "2","5" ], "Stdout": "2\u000a3\u000a4\u000a5\u000a", "Stderr": "" } +par_results_json { "Seq": 3, "Host": ":", "Starttime": 9.999, "JobRuntime": 9.999, "Send": 0, "Receive": 4, "Exitval": 0, "Signal": 0, "Command": "seq 3 4", "V": [ "3","4" ], "Stdout": "3\u000a4\u000a", "Stderr": "" } +par_results_json { "Seq": 4, "Host": ":", "Starttime": 9.999, "JobRuntime": 9.999, "Send": 0, "Receive": 6, "Exitval": 0, "Signal": 0, "Command": "seq 3 5", "V": [ "3","5" ], "Stdout": "3\u000a4\u000a5\u000a", "Stderr": "" } +par_results_json { "Seq": 1, "Host": ":", "Starttime": 9.999, "JobRuntime": 9.999, "Send": 0, "Receive": 6, "Exitval": 0, "Signal": 0, "Command": "seq 2 4", "V": [ "2","4" ], "Stdout": "2\u000a3\u000a4\u000a", "Stderr": "" } +par_results_json { "Seq": 2, "Host": ":", "Starttime": 9.999, "JobRuntime": 9.999, "Send": 0, "Receive": 8, "Exitval": 0, "Signal": 0, "Command": "seq 2 5", "V": [ "2","5" ], "Stdout": "2\u000a3\u000a4\u000a5\u000a", "Stderr": "" } +par_results_json { "Seq": 3, "Host": ":", "Starttime": 9.999, "JobRuntime": 9.999, "Send": 0, "Receive": 4, "Exitval": 0, "Signal": 0, "Command": "seq 3 4", "V": [ "3","4" ], "Stdout": "3\u000a4\u000a", "Stderr": "" } +par_results_json { "Seq": 4, "Host": ":", "Starttime": 9.999, "JobRuntime": 9.999, "Send": 0, "Receive": 6, "Exitval": 0, "Signal": 0, "Command": "seq 3 5", "V": [ "3","5" ], "Stdout": "3\u000a4\u000a5\u000a", "Stderr": "" } par_resume_k ### --resume -k par_resume_k job0id par_resume_k job1id diff --git a/testsuite/wanted-results/parallel-local-10s b/testsuite/wanted-results/parallel-local-10s index 05338615..5b75c478 100644 --- a/testsuite/wanted-results/parallel-local-10s +++ b/testsuite/wanted-results/parallel-local-10s @@ -901,6 +901,8 @@ par_retries_all_fail 5 par_retries_all_fail 6 par_retries_all_fail 7 par_retries_all_fail 8 +par_round_robin_blocks bug #49664: --round-robin does not complete +par_round_robin_blocks 8 par_sem_2jobs ### Test semaphore 2 jobs running simultaneously par_sem_2jobs job1a 1 par_sem_2jobs job2a 2 @@ -967,6 +969,8 @@ par_sockets_cores_threads ### Test --use-sockets-instead-of-threads par_sockets_cores_threads threads done par_sockets_cores_threads sockets done par_sockets_cores_threads Threads should complete first on machines with less than 8 sockets +par_test_diff_roundrobin_k ### test there is difference on -k +par_test_diff_roundrobin_k OK par_tmp_full ### Test --tmpdir running full. bug #40733 was caused by this par_tmp_full parallel: Error: Output is incomplete. par_tmp_full parallel: Error: Cannot append to buffer file in /tmp/shm/parallel. diff --git a/testsuite/wanted-results/parallel-local-1s b/testsuite/wanted-results/parallel-local-1s index 03024077..968613b1 100644 --- a/testsuite/wanted-results/parallel-local-1s +++ b/testsuite/wanted-results/parallel-local-1s @@ -86,6 +86,37 @@ par_bug37042 ### Bug introduce by fixing bug #37042 par_bug37042 abc par_bug43654 bug #43654: --bar with command not using {} - only last output line par_bug43654 par_bug43654 100% 1:0=0s 1  +par_commandline_with_newline bug #51299: --retry-failed with command with newline +par_commandline_with_newline The format must remain the same +par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" a +par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" b +par_commandline_with_newline Seq Host Starttime JobRuntime Send Receive Exitval Signal Command +par_commandline_with_newline resume +par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" a +par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" b +par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" c +par_commandline_with_newline Seq Host Starttime JobRuntime Send Receive Exitval Signal Command +par_commandline_with_newline resume-failed +par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" a +par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" b +par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" c +par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" d +par_commandline_with_newline Seq Host Starttime JobRuntime Send Receive Exitval Signal Command +par_commandline_with_newline retry-failed +par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" a +par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" b +par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" c +par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" d +par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" e +par_commandline_with_newline Seq Host Starttime JobRuntime Send Receive Exitval Signal Command +par_compute_command_len ### Computing length of command line +par_compute_command_len 1 2 +par_compute_command_len 11 1 +par_compute_command_len 12 2 +par_compute_command_len 11 3 +par_compute_command_len a_b_c_ +par_compute_command_len a_b_c_d +par_compute_command_len par_empty_string_command_line ### Test of ignore-empty string on ::: par_empty_string_command_line foo par_empty_string_command_line ole @@ -377,125 +408,6 @@ par_pipepart_block 17-20 par_pipepart_block 18-20 par_pipepart_block 19-20 par_pipepart_block 20-20 -par_plus_slot_replacement ### show {slot} {0%} {0#} -par_plus_slot_replacement 1=1=1 -par_plus_slot_replacement 2=2=2 -par_plus_slot_replacement 3=3=3 -par_plus_slot_replacement Seq: 001 1 -par_plus_slot_replacement Seq: 002 2 -par_plus_slot_replacement Seq: 003 3 -par_plus_slot_replacement Seq: 004 4 -par_plus_slot_replacement Seq: 005 5 -par_plus_slot_replacement Seq: 006 6 -par_plus_slot_replacement Seq: 007 7 -par_plus_slot_replacement Seq: 008 8 -par_plus_slot_replacement Seq: 009 9 -par_plus_slot_replacement Seq: 010 10 -par_plus_slot_replacement Seq: 011 11 -par_plus_slot_replacement Seq: 012 12 -par_plus_slot_replacement Seq: 013 13 -par_plus_slot_replacement Seq: 014 14 -par_plus_slot_replacement Seq: 015 15 -par_plus_slot_replacement Seq: 016 16 -par_plus_slot_replacement Seq: 017 17 -par_plus_slot_replacement Seq: 018 18 -par_plus_slot_replacement Seq: 019 19 -par_plus_slot_replacement Seq: 020 20 -par_plus_slot_replacement Seq: 021 21 -par_plus_slot_replacement Seq: 022 22 -par_plus_slot_replacement Seq: 023 23 -par_plus_slot_replacement Seq: 024 24 -par_plus_slot_replacement Seq: 025 25 -par_plus_slot_replacement Seq: 026 26 -par_plus_slot_replacement Seq: 027 27 -par_plus_slot_replacement Seq: 028 28 -par_plus_slot_replacement Seq: 029 29 -par_plus_slot_replacement Seq: 030 30 -par_plus_slot_replacement Seq: 031 31 -par_plus_slot_replacement Seq: 032 32 -par_plus_slot_replacement Seq: 033 33 -par_plus_slot_replacement Seq: 034 34 -par_plus_slot_replacement Seq: 035 35 -par_plus_slot_replacement Seq: 036 36 -par_plus_slot_replacement Seq: 037 37 -par_plus_slot_replacement Seq: 038 38 -par_plus_slot_replacement Seq: 039 39 -par_plus_slot_replacement Seq: 040 40 -par_plus_slot_replacement Seq: 041 41 -par_plus_slot_replacement Seq: 042 42 -par_plus_slot_replacement Seq: 043 43 -par_plus_slot_replacement Seq: 044 44 -par_plus_slot_replacement Seq: 045 45 -par_plus_slot_replacement Seq: 046 46 -par_plus_slot_replacement Seq: 047 47 -par_plus_slot_replacement Seq: 048 48 -par_plus_slot_replacement Seq: 049 49 -par_plus_slot_replacement Seq: 050 50 -par_plus_slot_replacement Seq: 051 51 -par_plus_slot_replacement Seq: 052 52 -par_plus_slot_replacement Seq: 053 53 -par_plus_slot_replacement Seq: 054 54 -par_plus_slot_replacement Seq: 055 55 -par_plus_slot_replacement Seq: 056 56 -par_plus_slot_replacement Seq: 057 57 -par_plus_slot_replacement Seq: 058 58 -par_plus_slot_replacement Seq: 059 59 -par_plus_slot_replacement Seq: 060 60 -par_plus_slot_replacement Seq: 061 61 -par_plus_slot_replacement Seq: 062 62 -par_plus_slot_replacement Seq: 063 63 -par_plus_slot_replacement Seq: 064 64 -par_plus_slot_replacement Seq: 065 65 -par_plus_slot_replacement Seq: 066 66 -par_plus_slot_replacement Seq: 067 67 -par_plus_slot_replacement Seq: 068 68 -par_plus_slot_replacement Seq: 069 69 -par_plus_slot_replacement Seq: 070 70 -par_plus_slot_replacement Seq: 071 71 -par_plus_slot_replacement Seq: 072 72 -par_plus_slot_replacement Seq: 073 73 -par_plus_slot_replacement Seq: 074 74 -par_plus_slot_replacement Seq: 075 75 -par_plus_slot_replacement Seq: 076 76 -par_plus_slot_replacement Seq: 077 77 -par_plus_slot_replacement Seq: 078 78 -par_plus_slot_replacement Seq: 079 79 -par_plus_slot_replacement Seq: 080 80 -par_plus_slot_replacement Seq: 081 81 -par_plus_slot_replacement Seq: 082 82 -par_plus_slot_replacement Seq: 083 83 -par_plus_slot_replacement Seq: 084 84 -par_plus_slot_replacement Seq: 085 85 -par_plus_slot_replacement Seq: 086 86 -par_plus_slot_replacement Seq: 087 87 -par_plus_slot_replacement Seq: 088 88 -par_plus_slot_replacement Seq: 089 89 -par_plus_slot_replacement Seq: 090 90 -par_plus_slot_replacement Seq: 091 91 -par_plus_slot_replacement Seq: 092 92 -par_plus_slot_replacement Seq: 093 93 -par_plus_slot_replacement Seq: 094 94 -par_plus_slot_replacement Seq: 095 95 -par_plus_slot_replacement Seq: 096 96 -par_plus_slot_replacement Seq: 097 97 -par_plus_slot_replacement Seq: 098 98 -par_plus_slot_replacement Seq: 099 99 -par_plus_slot_replacement Seq: 100 100 -par_plus_slot_replacement Slot: 01 1 -par_plus_slot_replacement Slot: 02 2 -par_plus_slot_replacement Slot: 03 3 -par_plus_slot_replacement Slot: 04 4 -par_plus_slot_replacement Slot: 05 5 -par_plus_slot_replacement Slot: 06 6 -par_plus_slot_replacement Slot: 07 7 -par_plus_slot_replacement Slot: 08 8 -par_plus_slot_replacement Slot: 09 9 -par_plus_slot_replacement Slot: 10 10 -par_plus_slot_replacement Slot: 11 11 -par_plus_slot_replacement Slot: 12 12 -par_plus_slot_replacement Slot: 13 13 -par_plus_slot_replacement Slot: 14 14 -par_plus_slot_replacement Slot: 15 15 par_profiles_with_space ### bug #42902: profiles containing arguments with space par_profiles_with_space /bin/bash=/bin/bash par_profiles_with_space echo '/bin/bash=/bin/bash' @@ -894,7 +806,7 @@ par_sql_colsep b B 1 11 b B 2 22 b B 3 33 par_sql_colsep b B 4 44 b B 5 55 b B 6 66 par_sql_colsep c C 1 11 c C 2 22 c C 3 33 par_sql_colsep c C 4 44 c C 5 55 c C 6 66 -par_sqlandworker_uninstalled_dbd bug #56096: dbi-csv no such column +par_sqlandworker_uninstalled_dbd ### bug #56096: dbi-csv no such column par_sqlandworker_uninstalled_dbd parallel: Error: CSV not supported. Are you missing a perl DBD::CSV module? par_sqlandworker_uninstalled_dbd works par_test_E ### Test -E @@ -1086,3 +998,5 @@ par_trailing_space_line_continuation ### Test of trailing space continuation wit par_trailing_space_line_continuation foo ole par_trailing_space_line_continuation foo ole par_trailing_space_line_continuation foo ole +par_uninstalled_sshpass ### sshpass must be installed for --sshlogin user:pass@host +par_uninstalled_sshpass parallel: Error: --sshlogin with password requires sshpass installed diff --git a/testsuite/wanted-results/parallel-local-30s b/testsuite/wanted-results/parallel-local-30s index 9daf4271..9f35285b 100644 --- a/testsuite/wanted-results/parallel-local-30s +++ b/testsuite/wanted-results/parallel-local-30s @@ -1674,99 +1674,97 @@ par_race_condition1 7 par_race_condition1 8 par_race_condition1 9 par_race_condition1 10 -par_round_robin_blocks bug #49664: --round-robin does not complete -par_round_robin_blocks 8 -par_shard_a ### --shard -par_shard_a OK -par_shard_a OK -par_shard_a OK -par_shard_a OK -par_shard_a OK -par_shard_a 10 1 -par_shard_a 10 2 -par_shard_a 10 3 -par_shard_a 10 4 -par_shard_a 10 5 -par_shard_a 10 6 -par_shard_a 10 7 -par_shard_a 10 8 -par_shard_a 10 9 -par_shard_a 9 0 -par_shard_a 9 1 -par_shard_a 9 2 -par_shard_a 9 3 -par_shard_a 9 4 -par_shard_a 9 5 -par_shard_a 9 6 -par_shard_a 9 7 -par_shard_a 9 8 -par_shard_a 9 9 -par_shard_b ### --shard -par_shard_b 10 1 -par_shard_b 10 2 -par_shard_b 10 3 -par_shard_b 10 4 -par_shard_b 10 5 -par_shard_b 10 6 -par_shard_b 10 7 -par_shard_b 10 8 -par_shard_b 10 9 -par_shard_b 9 0 -par_shard_b 9 1 -par_shard_b 9 2 -par_shard_b 9 3 -par_shard_b 9 4 -par_shard_b 9 5 -par_shard_b 9 6 -par_shard_b 9 7 -par_shard_b 9 8 -par_shard_b 9 9 -par_shard_c ### --shard -par_shard_c 10 1 -par_shard_c 10 2 -par_shard_c 10 3 -par_shard_c 10 4 -par_shard_c 10 5 -par_shard_c 10 6 -par_shard_c 10 7 -par_shard_c 10 8 -par_shard_c 10 9 -par_shard_c 2 c1 -par_shard_c 9 0 -par_shard_c 9 1 -par_shard_c 9 2 -par_shard_c 9 3 -par_shard_c 9 4 -par_shard_c 9 5 -par_shard_c 9 6 -par_shard_c 9 7 -par_shard_c 9 8 -par_shard_c 9 9 -par_shard_c 2 c2 -par_shard_d 10 1 -par_shard_d 10 2 -par_shard_d 10 3 -par_shard_d 10 4 -par_shard_d 10 5 -par_shard_d 10 6 -par_shard_d 10 7 -par_shard_d 10 8 -par_shard_d 10 9 -par_shard_d 2 c1 -par_shard_d 9 0 -par_shard_d 9 1 -par_shard_d 9 2 -par_shard_d 9 3 -par_shard_d 9 4 -par_shard_d 9 5 -par_shard_d 9 6 -par_shard_d 9 7 -par_shard_d 9 8 -par_shard_d 9 9 -par_shard_d 2 c2 -par_shard_d *** broken -par_shard_d parallel: Error: --shard requires --jobs to be higher than the number of -par_shard_d parallel: Error: arguments. Increase --jobs. +par_shard ### --shard +par_shard OK +par_shard OK +par_shard OK +par_shard OK +par_shard OK +par_shard 10 1 +par_shard 10 2 +par_shard 10 3 +par_shard 10 4 +par_shard 10 5 +par_shard 10 6 +par_shard 10 7 +par_shard 10 8 +par_shard 10 9 +par_shard 9 0 +par_shard 9 1 +par_shard 9 2 +par_shard 9 3 +par_shard 9 4 +par_shard 9 5 +par_shard 9 6 +par_shard 9 7 +par_shard 9 8 +par_shard 9 9 +par_shard ### --shard +par_shard 10 1 +par_shard 10 2 +par_shard 10 3 +par_shard 10 4 +par_shard 10 5 +par_shard 10 6 +par_shard 10 7 +par_shard 10 8 +par_shard 10 9 +par_shard 9 0 +par_shard 9 1 +par_shard 9 2 +par_shard 9 3 +par_shard 9 4 +par_shard 9 5 +par_shard 9 6 +par_shard 9 7 +par_shard 9 8 +par_shard 9 9 +par_shard ### --shard +par_shard 10 1 +par_shard 10 2 +par_shard 10 3 +par_shard 10 4 +par_shard 10 5 +par_shard 10 6 +par_shard 10 7 +par_shard 10 8 +par_shard 10 9 +par_shard 2 c1 +par_shard 9 0 +par_shard 9 1 +par_shard 9 2 +par_shard 9 3 +par_shard 9 4 +par_shard 9 5 +par_shard 9 6 +par_shard 9 7 +par_shard 9 8 +par_shard 9 9 +par_shard 2 c2 +par_shard 10 1 +par_shard 10 2 +par_shard 10 3 +par_shard 10 4 +par_shard 10 5 +par_shard 10 6 +par_shard 10 7 +par_shard 10 8 +par_shard 10 9 +par_shard 2 c1 +par_shard 9 0 +par_shard 9 1 +par_shard 9 2 +par_shard 9 3 +par_shard 9 4 +par_shard 9 5 +par_shard 9 6 +par_shard 9 7 +par_shard 9 8 +par_shard 9 9 +par_shard 2 c2 +par_shard *** broken +par_shard parallel: Error: --shard requires --jobs to be higher than the number of +par_shard parallel: Error: arguments. Increase --jobs. par_sighup ### Test SIGHUP par_sighup 1 par_sighup 10 @@ -1845,5 +1843,3 @@ par_test_detected_shell test_known_shell_pipe static-sh Global::shell /usr/bin/s par_test_detected_shell test_known_shell_pipe tcsh Global::shell /usr/bin/tcsh par_test_detected_shell test_known_shell_pipe yash Global::shell /usr/bin/yash par_test_detected_shell test_known_shell_pipe zsh Global::shell /usr/bin/zsh -par_test_diff_roundrobin_k ### test there is difference on -k -par_test_diff_roundrobin_k OK diff --git a/testsuite/wanted-results/parallel-local-3s b/testsuite/wanted-results/parallel-local-3s index ea05cbc1..46b2b9db 100644 --- a/testsuite/wanted-results/parallel-local-3s +++ b/testsuite/wanted-results/parallel-local-3s @@ -22,37 +22,6 @@ par_children_receive_sig parallel: Warning: This job was killed because it timed par_children_receive_sig parallel: Warning: show_signals '' par_children_receive_sig Got INT par_children_receive_sig Got TERM -par_commandline_with_newline bug #51299: --retry-failed with command with newline -par_commandline_with_newline The format must remain the same -par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" a -par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" b -par_commandline_with_newline Seq Host Starttime JobRuntime Send Receive Exitval Signal Command -par_commandline_with_newline resume -par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" a -par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" b -par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" c -par_commandline_with_newline Seq Host Starttime JobRuntime Send Receive Exitval Signal Command -par_commandline_with_newline resume-failed -par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" a -par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" b -par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" c -par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" d -par_commandline_with_newline Seq Host Starttime JobRuntime Send Receive Exitval Signal Command -par_commandline_with_newline retry-failed -par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" a -par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" b -par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" c -par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" d -par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" e -par_commandline_with_newline Seq Host Starttime JobRuntime Send Receive Exitval Signal Command -par_compute_command_len ### Computing length of command line -par_compute_command_len 1 2 -par_compute_command_len 11 1 -par_compute_command_len 12 2 -par_compute_command_len 11 3 -par_compute_command_len a_b_c_ -par_compute_command_len a_b_c_d -par_compute_command_len par_delay ### Test --delay par_delay More than 3.3 secs: OK par_delay_halt_soon bug #59893: --halt soon doesn't work with --delay @@ -401,6 +370,125 @@ par_pipe_regexp_non_quoted Start par_pipe_regexp_non_quoted Start this line is a false Start line par_pipe_regexp_non_quoted End this line is a false End line par_pipe_regexp_non_quoted End +par_plus_slot_replacement ### show {slot} {0%} {0#} +par_plus_slot_replacement 1=1=1 +par_plus_slot_replacement 2=2=2 +par_plus_slot_replacement 3=3=3 +par_plus_slot_replacement Seq: 001 1 +par_plus_slot_replacement Seq: 002 2 +par_plus_slot_replacement Seq: 003 3 +par_plus_slot_replacement Seq: 004 4 +par_plus_slot_replacement Seq: 005 5 +par_plus_slot_replacement Seq: 006 6 +par_plus_slot_replacement Seq: 007 7 +par_plus_slot_replacement Seq: 008 8 +par_plus_slot_replacement Seq: 009 9 +par_plus_slot_replacement Seq: 010 10 +par_plus_slot_replacement Seq: 011 11 +par_plus_slot_replacement Seq: 012 12 +par_plus_slot_replacement Seq: 013 13 +par_plus_slot_replacement Seq: 014 14 +par_plus_slot_replacement Seq: 015 15 +par_plus_slot_replacement Seq: 016 16 +par_plus_slot_replacement Seq: 017 17 +par_plus_slot_replacement Seq: 018 18 +par_plus_slot_replacement Seq: 019 19 +par_plus_slot_replacement Seq: 020 20 +par_plus_slot_replacement Seq: 021 21 +par_plus_slot_replacement Seq: 022 22 +par_plus_slot_replacement Seq: 023 23 +par_plus_slot_replacement Seq: 024 24 +par_plus_slot_replacement Seq: 025 25 +par_plus_slot_replacement Seq: 026 26 +par_plus_slot_replacement Seq: 027 27 +par_plus_slot_replacement Seq: 028 28 +par_plus_slot_replacement Seq: 029 29 +par_plus_slot_replacement Seq: 030 30 +par_plus_slot_replacement Seq: 031 31 +par_plus_slot_replacement Seq: 032 32 +par_plus_slot_replacement Seq: 033 33 +par_plus_slot_replacement Seq: 034 34 +par_plus_slot_replacement Seq: 035 35 +par_plus_slot_replacement Seq: 036 36 +par_plus_slot_replacement Seq: 037 37 +par_plus_slot_replacement Seq: 038 38 +par_plus_slot_replacement Seq: 039 39 +par_plus_slot_replacement Seq: 040 40 +par_plus_slot_replacement Seq: 041 41 +par_plus_slot_replacement Seq: 042 42 +par_plus_slot_replacement Seq: 043 43 +par_plus_slot_replacement Seq: 044 44 +par_plus_slot_replacement Seq: 045 45 +par_plus_slot_replacement Seq: 046 46 +par_plus_slot_replacement Seq: 047 47 +par_plus_slot_replacement Seq: 048 48 +par_plus_slot_replacement Seq: 049 49 +par_plus_slot_replacement Seq: 050 50 +par_plus_slot_replacement Seq: 051 51 +par_plus_slot_replacement Seq: 052 52 +par_plus_slot_replacement Seq: 053 53 +par_plus_slot_replacement Seq: 054 54 +par_plus_slot_replacement Seq: 055 55 +par_plus_slot_replacement Seq: 056 56 +par_plus_slot_replacement Seq: 057 57 +par_plus_slot_replacement Seq: 058 58 +par_plus_slot_replacement Seq: 059 59 +par_plus_slot_replacement Seq: 060 60 +par_plus_slot_replacement Seq: 061 61 +par_plus_slot_replacement Seq: 062 62 +par_plus_slot_replacement Seq: 063 63 +par_plus_slot_replacement Seq: 064 64 +par_plus_slot_replacement Seq: 065 65 +par_plus_slot_replacement Seq: 066 66 +par_plus_slot_replacement Seq: 067 67 +par_plus_slot_replacement Seq: 068 68 +par_plus_slot_replacement Seq: 069 69 +par_plus_slot_replacement Seq: 070 70 +par_plus_slot_replacement Seq: 071 71 +par_plus_slot_replacement Seq: 072 72 +par_plus_slot_replacement Seq: 073 73 +par_plus_slot_replacement Seq: 074 74 +par_plus_slot_replacement Seq: 075 75 +par_plus_slot_replacement Seq: 076 76 +par_plus_slot_replacement Seq: 077 77 +par_plus_slot_replacement Seq: 078 78 +par_plus_slot_replacement Seq: 079 79 +par_plus_slot_replacement Seq: 080 80 +par_plus_slot_replacement Seq: 081 81 +par_plus_slot_replacement Seq: 082 82 +par_plus_slot_replacement Seq: 083 83 +par_plus_slot_replacement Seq: 084 84 +par_plus_slot_replacement Seq: 085 85 +par_plus_slot_replacement Seq: 086 86 +par_plus_slot_replacement Seq: 087 87 +par_plus_slot_replacement Seq: 088 88 +par_plus_slot_replacement Seq: 089 89 +par_plus_slot_replacement Seq: 090 90 +par_plus_slot_replacement Seq: 091 91 +par_plus_slot_replacement Seq: 092 92 +par_plus_slot_replacement Seq: 093 93 +par_plus_slot_replacement Seq: 094 94 +par_plus_slot_replacement Seq: 095 95 +par_plus_slot_replacement Seq: 096 96 +par_plus_slot_replacement Seq: 097 97 +par_plus_slot_replacement Seq: 098 98 +par_plus_slot_replacement Seq: 099 99 +par_plus_slot_replacement Seq: 100 100 +par_plus_slot_replacement Slot: 01 1 +par_plus_slot_replacement Slot: 02 2 +par_plus_slot_replacement Slot: 03 3 +par_plus_slot_replacement Slot: 04 4 +par_plus_slot_replacement Slot: 05 5 +par_plus_slot_replacement Slot: 06 6 +par_plus_slot_replacement Slot: 07 7 +par_plus_slot_replacement Slot: 08 8 +par_plus_slot_replacement Slot: 09 9 +par_plus_slot_replacement Slot: 10 10 +par_plus_slot_replacement Slot: 11 11 +par_plus_slot_replacement Slot: 12 12 +par_plus_slot_replacement Slot: 13 13 +par_plus_slot_replacement Slot: 14 14 +par_plus_slot_replacement Slot: 15 15 par_prefix_for_L_n_N_s Must give xxx000 args par_prefix_for_L_n_N_s 1000 par_prefix_for_L_n_N_s 1000 diff --git a/testsuite/wanted-results/parallel-macos b/testsuite/wanted-results/parallel-macos index dd5c418d..fd504cf3 100644 --- a/testsuite/wanted-results/parallel-macos +++ b/testsuite/wanted-results/parallel-macos @@ -1,100 +1,100 @@ -par_big_func 1 3824 91776 -par_big_func 1 3824 91776 -par_big_func 1 3824 91776 -par_big_func 1 1864 44676 -par_big_func_name 1 820 19680 -par_big_func_name 1 820 19680 -par_big_func_name 1 820 19680 -par_big_func_name 1 820 19680 -par_big_func_name 1 820 19680 -par_big_func_name 1 820 19680 -par_big_func_name 1 80 1920 -par_big_var_func_name 1 816 19584 -par_big_var_func_name 1 816 19584 -par_big_var_func_name 1 816 19584 -par_big_var_func_name 1 816 19584 -par_big_var_func_name 1 816 19584 -par_big_var_func_name 1 816 19584 -par_big_var_func_name 1 816 19584 -par_big_var_func_name 1 816 19584 -par_big_var_func_name 1 816 19584 -par_big_var_func_name 1 816 19584 -par_big_var_func_name 1 816 19584 -par_big_var_func_name 1 816 19584 -par_big_var_func_name 1 816 19584 -par_big_var_func_name 1 816 19584 -par_big_var_func_name 1 816 19584 -par_big_var_func_name 1 816 19584 -par_big_var_func_name 1 280 6660 -par_many_args 1 3148 6296 -par_many_args 1 3148 6296 -par_many_args 1 3148 6296 -par_many_args 1 3148 6296 -par_many_args 1 3148 6296 -par_many_args 1 3148 6296 -par_many_args 1 1112 2224 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 232 5568 -par_many_func 1 172 4100 -par_many_var 1 980 23520 -par_many_var 1 980 23520 -par_many_var 1 980 23520 -par_many_var 1 980 23520 -par_many_var 1 980 23520 -par_many_var 1 980 23520 -par_many_var 1 788 18884 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 264 6336 -par_many_var_big_func 1 68 1604 -par_many_var_func 1 2480 59520 -par_many_var_func 1 2480 59520 -par_many_var_func 1 1708 40964 +par_big_func 1 3XXX 91XXX +par_big_func 1 3XXX 91XXX +par_big_func 1 3XXX 91XXX +par_big_func 1 1XXX 44XXX +par_big_func_name 1 820 19XXX +par_big_func_name 1 820 19XXX +par_big_func_name 1 820 19XXX +par_big_func_name 1 820 19XXX +par_big_func_name 1 820 19XXX +par_big_func_name 1 820 19XXX +par_big_func_name 1 80 1XXX +par_big_var_func_name 1 816 19XXX +par_big_var_func_name 1 816 19XXX +par_big_var_func_name 1 816 19XXX +par_big_var_func_name 1 816 19XXX +par_big_var_func_name 1 816 19XXX +par_big_var_func_name 1 816 19XXX +par_big_var_func_name 1 816 19XXX +par_big_var_func_name 1 816 19XXX +par_big_var_func_name 1 816 19XXX +par_big_var_func_name 1 816 19XXX +par_big_var_func_name 1 816 19XXX +par_big_var_func_name 1 816 19XXX +par_big_var_func_name 1 816 19XXX +par_big_var_func_name 1 816 19XXX +par_big_var_func_name 1 816 19XXX +par_big_var_func_name 1 816 19XXX +par_big_var_func_name 1 280 6XXX +par_many_args 1 3XXX 6XXX +par_many_args 1 3XXX 6XXX +par_many_args 1 3XXX 6XXX +par_many_args 1 3XXX 6XXX +par_many_args 1 3XXX 6XXX +par_many_args 1 3XXX 6XXX +par_many_args 1 1XXX 2XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 232 5XXX +par_many_func 1 172 4XXX +par_many_var 1 980 23XXX +par_many_var 1 980 23XXX +par_many_var 1 980 23XXX +par_many_var 1 980 23XXX +par_many_var 1 980 23XXX +par_many_var 1 980 23XXX +par_many_var 1 788 18XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 264 6XXX +par_many_var_big_func 1 68 1XXX +par_many_var_func 1 2XXX 59XXX +par_many_var_func 1 2XXX 59XXX +par_many_var_func 1 1XXX 40XXX diff --git a/testsuite/wanted-results/parallel-remote1 b/testsuite/wanted-results/parallel-remote1 index 4c82300f..a9a84135 100644 --- a/testsuite/wanted-results/parallel-remote1 +++ b/testsuite/wanted-results/parallel-remote1 @@ -1,4 +1,5 @@ par_controlmaster_is_faster ### bug #41964: --controlmaster not seems to reuse OpenSSH connections to the same host +par_controlmaster_is_faster -M should finish first - eventhough there are 2x jobs par_controlmaster_is_faster With --controlmaster - finish first par_controlmaster_is_faster No --controlmaster - finish last par_filter_hosts_different_errors ### --filter-hosts - OK, non-such-user, connection refused, wrong host