Fixed bug #60221: --results foo.json fails.

Fixed --controlmaster.
This commit is contained in:
Ole Tange 2022-03-09 23:03:26 +01:00
parent 4c187c7729
commit 7f73c0fb2c
18 changed files with 505 additions and 446 deletions

5
README
View file

@ -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 =

View file

@ -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.

View file

@ -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,7 +10610,6 @@ 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],
),

View file

@ -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<parallel> 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<parallel>
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'

View file

@ -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()*=?'"'" |

View file

@ -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() {

View file

@ -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/<null>/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"

View file

@ -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"

View file

@ -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/<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/<null>/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

View file

@ -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'

View file

@ -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
}

View file

@ -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

View file

@ -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.

View file

@ -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 "command<null>with<null>newlines" a
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" b
par_commandline_with_newline Seq Host Starttime JobRuntime Send Receive Exitval Signal Command
par_commandline_with_newline resume
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" a
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" b
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" 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 "command<null>with<null>newlines" a
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" b
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" c
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" 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 "command<null>with<null>newlines" a
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" b
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" c
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" d
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" 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

View file

@ -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

View file

@ -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 "command<null>with<null>newlines" a
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" b
par_commandline_with_newline Seq Host Starttime JobRuntime Send Receive Exitval Signal Command
par_commandline_with_newline resume
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" a
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" b
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" 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 "command<null>with<null>newlines" a
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" b
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" c
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" 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 "command<null>with<null>newlines" a
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" b
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" c
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" d
par_commandline_with_newline . : ... ... . . . . false "command<null>with<null>newlines" 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

View file

@ -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

View file

@ -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