--use-cpus-instead-of-cores implemented with unittests.

More unittests for remote usage (--trc, myssh, and newline files)
This commit is contained in:
Ole Tange 2010-05-31 00:30:01 +02:00
parent ca4e58fbaf
commit fd44e4c793
10 changed files with 834 additions and 218 deletions

View file

@ -82,7 +82,7 @@ you use this option, stdin is given to the first process run.
Otherwise, stdin is redirected from /dev/null. Otherwise, stdin is redirected from /dev/null.
=item B<--cleanup> (not implemented) =item B<--cleanup>
Remove transfered files. B<--cleanup> will remove the transfered files Remove transfered files. B<--cleanup> will remove the transfered files
on the remote server after processing is done. on the remote server after processing is done.
@ -263,8 +263,8 @@ on remote machines).
=item B<--number-of-cpus> =item B<--number-of-cpus>
Print the number of CPUs and exit (used by GNU B<parallel> itself to Print the number of physical CPUs and exit (used by GNU B<parallel>
determine the number of CPUs on remote machines). itself to determine the number of physical CPUs on remote machines).
=item B<--number-of-cores> (not implemented) =item B<--number-of-cores> (not implemented)
@ -298,7 +298,7 @@ default.
If the standard input only contains whitespace, do not run the command. If the standard input only contains whitespace, do not run the command.
=item B<--return> I<filename> (not implemented) =item B<--return> I<filename>
Transfer files from remote servers. B<--return> is used with Transfer files from remote servers. B<--return> is used with
B<--sshlogin> when the arguments are files on the remote servers. When B<--sshlogin> when the arguments are files on the remote servers. When
@ -415,7 +415,7 @@ it.
See also B<-v>. See also B<-v>.
=item B<--transfer> (not implemented) =item B<--transfer>
Transfer files to remote servers. B<--transfer> is used with Transfer files to remote servers. B<--transfer> is used with
B<--sshlogin> when the arguments are files and should be transfered to B<--sshlogin> when the arguments are files and should be transfered to
@ -441,7 +441,7 @@ B<--transfer> is often used with B<--return> and B<--cleanup>.
B<--transfer> is ignored when used with B<--sshlogin :> or when not used with B<--sshlogin>. B<--transfer> is ignored when used with B<--sshlogin :> or when not used with B<--sshlogin>.
=item B<--trc> I<filename> (not implemented) =item B<--trc> I<filename>
Transfer, Return, Cleanup. Short hand for: Transfer, Return, Cleanup. Short hand for:
@ -453,7 +453,8 @@ Transfer, Return, Cleanup. Short hand for:
=item B<-u> =item B<-u>
Ungroup output. Output is printed as soon as possible. This may cause Ungroup output. Output is printed as soon as possible. This may cause
output from different commands to be mixed. Can be reversed with B<-g>. output from different commands to be mixed. GNU B<parallel> runs
faster with B<-u>. Can be reversed with B<-g>.
=item B<--extensionreplace> I<replace-str> =item B<--extensionreplace> I<replace-str>
@ -463,14 +464,16 @@ output from different commands to be mixed. Can be reversed with B<-g>.
Use the replacement string I<replace-str> instead of {.} for input line without extension. Use the replacement string I<replace-str> instead of {.} for input line without extension.
=item B<--use-cpus-instead-of-cores> (not implemented) =item B<--use-cpus-instead-of-cores>
Count the number of CPUs instead of cores. When computing how many Count the number of physical CPUs instead of cores. When computing how
jobs to run in parallel relative to the number of cores you can ask many jobs to run in parallel relative to the number of cores you can
GNU B<parallel> to instead look at the number of CPUs. This will make sense ask GNU B<parallel> to instead look at the number of physical
for computers that have hyperthreading as two jobs running on one CPU CPUs. This will make sense for computers that have hyperthreading as
with hyperthreading will run slower than two jobs running on two CPUs. two jobs running on one CPU with hyperthreading will run slower than
Most users will not need this option. two jobs running on two physical CPUs. Some multi-core CPUs can run
faster if only one thread is running per physical CPU. Most users will
not need this option.
=item B<-v> =item B<-v>
@ -713,7 +716,7 @@ B<(echo foss.org.my; echo debian.org; echo freenetproject.org) | parallel -k tra
This will make sure the traceroute to foss.org.my will be printed This will make sure the traceroute to foss.org.my will be printed
first. first.
=head1 EXAMPLE: Using remote computers (not implemented) =head1 EXAMPLE: Using remote computers
To run commands on a remote computer SSH needs to be set up and you To run commands on a remote computer SSH needs to be set up and you
must be able to login without entering a password (B<ssh-agent> may be must be able to login without entering a password (B<ssh-agent> may be
@ -762,7 +765,7 @@ server has 8 CPU cores.
seq 1 10 | parallel --sshlogin 8/server.example.com echo seq 1 10 | parallel --sshlogin 8/server.example.com echo
=head1 EXAMPLE: Transferring of files (not implemented) =head1 EXAMPLE: Transferring of files
To recompress gzipped files with B<bzip2> using a remote server run: To recompress gzipped files with B<bzip2> using a remote server run:
@ -1158,7 +1161,7 @@ drain_job_queue();
sub parse_options { sub parse_options {
# Defaults: # Defaults:
$Global::version = 20100516; $Global::version = 20100529;
$Global::progname = 'parallel'; $Global::progname = 'parallel';
$Global::debug = 0; $Global::debug = 0;
$Global::verbose = 0; $Global::verbose = 0;
@ -1193,6 +1196,7 @@ sub parse_options {
"max-line-length-allowed" => \$::opt_max_line_length_allowed, "max-line-length-allowed" => \$::opt_max_line_length_allowed,
"number-of-cpus" => \$::opt_number_of_cpus, "number-of-cpus" => \$::opt_number_of_cpus,
"number-of-cores" => \$::opt_number_of_cores, "number-of-cores" => \$::opt_number_of_cores,
"use-cpus-instead-of-cores" => \$::opt_use_cpus_instead_of_cores,
"sshlogin|S=s" => \@::opt_sshlogin, "sshlogin|S=s" => \@::opt_sshlogin,
"sshloginfile=s" => \$::opt_sshloginfile, "sshloginfile=s" => \$::opt_sshloginfile,
"return=s" => \@::opt_return, "return=s" => \@::opt_return,
@ -1261,7 +1265,7 @@ sub parse_options {
} }
if(defined $::opt_a) { if(defined $::opt_a) {
if(not open(ARGFILE,"<".$::opt_a)) { if(not open(ARGFILE,"<",$::opt_a)) {
print STDERR "$Global::progname: Cannot open input file `$::opt_a': No such file or directory\n"; print STDERR "$Global::progname: Cannot open input file `$::opt_a': No such file or directory\n";
exit(-1); exit(-1);
} }
@ -1634,6 +1638,8 @@ sub processes_available_by_system_limit {
} }
sub simultaneous_sshlogin { sub simultaneous_sshlogin {
# Using $sshlogin try to see if we can do $wanted_processes
# simultaneous logins
my $sshlogin = shift; my $sshlogin = shift;
my $wanted_processes = shift; my $wanted_processes = shift;
my ($sshcmd,$serverlogin) = sshcommand_of_sshlogin($sshlogin); my ($sshcmd,$serverlogin) = sshcommand_of_sshlogin($sshlogin);
@ -1693,14 +1699,14 @@ sub user_requested_processes {
if($opt_P =~ /^\+(\d+)$/) { if($opt_P =~ /^\+(\d+)$/) {
# E.g. -P +2 # E.g. -P +2
my $j = $1; my $j = $1;
$processes = $j + no_of_cpus_sshlogin($sshlogin); $processes = $j + no_of_processing_units_sshlogin($sshlogin);
} elsif ($opt_P =~ /^-(\d+)$/) { } elsif ($opt_P =~ /^-(\d+)$/) {
# E.g. -P -2 # E.g. -P -2
my $j = $1; my $j = $1;
$processes = no_of_cpus_sshlogin($sshlogin) - $j; $processes = no_of_processing_units_sshlogin($sshlogin) - $j;
} elsif ($opt_P =~ /^(\d+)\%$/) { } elsif ($opt_P =~ /^(\d+)\%$/) {
my $j = $1; my $j = $1;
$processes = no_of_cpus_sshlogin($sshlogin) * $j / 100; $processes = no_of_processing_units_sshlogin($sshlogin) * $j / 100;
} elsif ($opt_P =~ /^(\d+)$/) { } elsif ($opt_P =~ /^(\d+)$/) {
$processes = $1; $processes = $1;
if($processes == 0) { if($processes == 0) {
@ -1717,21 +1723,26 @@ sub user_requested_processes {
return $processes; return $processes;
} }
sub no_of_cores { sub no_of_processing_units_sshlogin {
# TODO This should return number of cores and not the number of CPUs # Number of processing units (CPUs or cores) at this sshlogin
return no_of_cpus(@_);
}
sub no_of_cpus_sshlogin {
# Number of CPUs at this sshlogin
my $sshlogin = shift; my $sshlogin = shift;
my ($sshcmd,$serverlogin) = sshcommand_of_sshlogin($sshlogin); my ($sshcmd,$serverlogin) = sshcommand_of_sshlogin($sshlogin);
if(not $Global::host{$sshlogin}{'ncpus'}) { if(not $Global::host{$sshlogin}{'ncpus'}) {
if($serverlogin eq ":") { if($serverlogin eq ":") {
$Global::host{$sshlogin}{'ncpus'} = no_of_cpus(); if($::opt_use_cpus_instead_of_cores) {
$Global::host{$sshlogin}{'ncpus'} = no_of_cpus();
} else {
$Global::host{$sshlogin}{'ncpus'} = no_of_cores();
}
} else { } else {
my $ncpu = qx(echo|$sshcmd $serverlogin parallel --number-of-cpus); my $ncpu;
chomp($ncpu); if($::opt_use_cpus_instead_of_cores) {
$ncpu = qx(echo|$sshcmd $serverlogin parallel --number-of-cpus);
chomp($ncpu);
} else {
$ncpu = qx(echo|$sshcmd $serverlogin parallel --number-of-cores);
chomp($ncpu);
}
if($ncpu =~ /^[0-9]+$/) { if($ncpu =~ /^[0-9]+$/) {
$Global::host{$sshlogin}{'ncpus'} = $ncpu; $Global::host{$sshlogin}{'ncpus'} = $ncpu;
} else { } else {
@ -1746,37 +1757,90 @@ sub no_of_cpus_sshlogin {
sub no_of_cpus { sub no_of_cpus {
if(not $Global::no_of_cpus) { if(not $Global::no_of_cpus) {
local $/="\n"; # If delimiter is set, then $/ will be wrong local $/="\n"; # If delimiter is set, then $/ will be wrong
my $no_of_cpus = (no_of_cpus_gnu_linux() my $no_of_cpus = (0
|| no_of_cpus_freebsd()
|| no_of_cpus_darwin() || no_of_cpus_darwin()
|| no_of_cpus_solaris()); || no_of_cpus_solaris()
|| no_of_cpus_gnu_linux()
);
if($no_of_cpus) { if($no_of_cpus) {
$Global::no_of_cpus = $no_of_cpus; $Global::no_of_cpus = $no_of_cpus;
} else { } else {
warn("Cannot figure out no of cpus. Using 1"); warn("Cannot figure out number of cpus. Using 1");
$Global::no_of_cpus = 1; $Global::no_of_cpus = 1;
} }
} }
return $Global::no_of_cpus; return $Global::no_of_cpus;
} }
sub no_of_cores {
if(not $Global::no_of_cores) {
local $/="\n"; # If delimiter is set, then $/ will be wrong
my $no_of_cores = (0
|| no_of_cores_freebsd()
|| no_of_cores_darwin()
|| no_of_cores_solaris()
|| no_of_cores_gnu_linux()
);
if($no_of_cores) {
$Global::no_of_cores = $no_of_cores;
} else {
warn("Cannot figure out number of CPU cores. Using 1");
$Global::no_of_cores = 1;
}
}
return $Global::no_of_cores;
}
sub no_of_cpus_gnu_linux { sub no_of_cpus_gnu_linux {
my $no_of_cpus; my $no_of_cpus;
if(-e "/proc/cpuinfo") { if(-e "/proc/cpuinfo") {
$no_of_cpus = 0; $no_of_cpus = 0;
my %seen;
open(IN,"cat /proc/cpuinfo|") || return undef; open(IN,"cat /proc/cpuinfo|") || return undef;
while(<IN>) { while(<IN>) {
/^processor.*[:]/ and $no_of_cpus++; if(/^physical id.*[:](.*)/ and not $seen{$1}++) {
$no_of_cpus++;
}
} }
close IN; close IN;
} }
return $no_of_cpus; return $no_of_cpus;
} }
sub no_of_cores_gnu_linux {
my $no_of_cores;
if(-e "/proc/cpuinfo") {
$no_of_cores = 0;
open(IN,"cat /proc/cpuinfo|") || return undef;
while(<IN>) {
/^processor.*[:]/ and $no_of_cores++;
}
close IN;
}
return $no_of_cores;
}
sub no_of_cpus_darwin { sub no_of_cpus_darwin {
my $no_of_cpus = `sysctl -n hw.ncpu 2>/dev/null`; my $no_of_cpus = `sysctl -a hw 2>/dev/null | grep -w physicalcpu | awk '{ print \$2 }'`;
return $no_of_cpus; return $no_of_cpus;
} }
sub no_of_cores_darwin {
my $no_of_cores = `sysctl -a hw 2>/dev/null | grep -w logicalcpu | awk '{ print \$2 }'`;
return $no_of_cores;
}
sub no_of_cpus_freebsd {
my $no_of_cpus = `sysctl hw.ncpu 2>/dev/null | awk '{ print \$2 }'`;
return $no_of_cpus;
}
sub no_of_cores_freebsd {
my $no_of_cores = `sysctl -a hw 2>/dev/null | grep -w logicalcpu | awk '{ print \$2 }'`;
return $no_of_cores;
}
sub no_of_cpus_solaris { sub no_of_cpus_solaris {
if(-x "/usr/sbin/psrinfo") { if(-x "/usr/sbin/psrinfo") {
my @psrinfo = `/usr/sbin/psrinfo`; my @psrinfo = `/usr/sbin/psrinfo`;
@ -1793,6 +1857,22 @@ sub no_of_cpus_solaris {
return undef; return undef;
} }
sub no_of_cores_solaris {
if(-x "/usr/sbin/psrinfo") {
my @psrinfo = `/usr/sbin/psrinfo`;
if($#psrinfo >= 0) {
return $#psrinfo +1;
}
}
if(-x "/usr/sbin/prtconf") {
my @prtconf = `/usr/sbin/prtconf | grep cpu..instance`;
if($#prtconf >= 0) {
return $#prtconf +1;
}
}
return undef;
}
# #
# General useful library functions # General useful library functions
# #
@ -2364,6 +2444,3 @@ $main::opt_E = $main::opt_r = $Global::xargs = $Global::keeporder = 0;
# No: space Will make it hard to do: 8/server1,server2 # No: space Will make it hard to do: 8/server1,server2
# Maybe: / 8//usr/bin/myssh,//usr/bin/ssh # Maybe: / 8//usr/bin/myssh,//usr/bin/ssh
# %/=:_^ # %/=:_^
# Check transfer of newline file to sshlogin with own ssh and more than 9 simultaneously
# TODO Unittest myssh: parallel --trc -j10000% -S "myssh -l tange nlv.pi.dk" echo

View file

@ -45,7 +45,6 @@ file19
file20 file20
good if no file good if no file
ls: cannot access tmp/parallel.file*: No such file or directory ls: cannot access tmp/parallel.file*: No such file or directory
### --transfer - file with newline
### --transfer --cleanup - abspath ### --transfer --cleanup - abspath
file1 file1
file2 file2
@ -93,7 +92,6 @@ file20
good if no file good if no file
ls: cannot access tmp/parallel.file*: No such file or directory ls: cannot access tmp/parallel.file*: No such file or directory
OK OK
### --transfer --cleanup - file with newline
### --return - abspath ### --return - abspath
/tmp/parallel.file10.out /tmp/parallel.file10.out
/tmp/parallel.file13.out /tmp/parallel.file13.out
@ -136,7 +134,6 @@ tmp/parallel.file9.out
tmp/parallel.file>fire.out tmp/parallel.file>fire.out
tmp/parallel.file : & ) \n*.jpg.out tmp/parallel.file : & ) \n*.jpg.out
tmp/parallel.file/sub dir.out tmp/parallel.file/sub dir.out
### --return - file with newline
### --return - multiple files ### --return - multiple files
tmp/parallel.file10.file.done tmp/parallel.file10.file.done
tmp/parallel.file10.out tmp/parallel.file10.out
@ -266,7 +263,6 @@ tmp/parallel.file/sub dir.out
good if no file good if no file
ls: cannot access tmp/parallel.file*: No such file or directory ls: cannot access tmp/parallel.file*: No such file or directory
OK OK
### --return --cleanup - file with newline
### --return --cleanup - multiple returns ### --return --cleanup - multiple returns
/tmp/parallel.file10.file.done /tmp/parallel.file10.file.done
/tmp/parallel.file10.out /tmp/parallel.file10.out
@ -399,7 +395,6 @@ OK
good if no file good if no file
ls: cannot access tmp/parallel.file*: No such file or directory ls: cannot access tmp/parallel.file*: No such file or directory
OK OK
### --transfer --return --cleanup - file with newline
### --transfer --return --cleanup - multiple files ### --transfer --return --cleanup - multiple files
/tmp/parallel.file10.file.done /tmp/parallel.file10.file.done
/tmp/parallel.file10.out /tmp/parallel.file10.out
@ -531,7 +526,6 @@ tmp/parallel.file/sub dir.out
good if no file good if no file
ls: cannot access tmp/parallel.file*: No such file or directory ls: cannot access tmp/parallel.file*: No such file or directory
OK OK
### --trc - file with newline
### --trc - multiple files ### --trc - multiple files
/tmp/parallel.file10.file.done /tmp/parallel.file10.file.done
/tmp/parallel.file10.out /tmp/parallel.file10.out

View file

@ -0,0 +1,202 @@
### Test --transfer --return --cleanup - files with newline
### --transfer - file with newline
newline
newline
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
ls: cannot access tmp/parallel.file*: No such file or directory
### --transfer --cleanup - file with newline
newline
newline
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
ls: cannot access tmp/parallel.file*: No such file or directory
### --return - file with newline
tmp/parallel.file.
newline1.out
tmp/parallel.file.
newline2.out
### --return --cleanup - file with newline
tmp/parallel.file.
newline1.out
tmp/parallel.file.
newline2.out
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### --transfer --return --cleanup - file with newline
tmp/parallel.file.
newline1.out
tmp/parallel.file.
newline2.out
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### --trc - file with newline
tmp/parallel.file.
newline1.out
tmp/parallel.file.
newline2.out
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### --trc - multiple file with newline
tmp/parallel.file.
newline1.out
tmp/parallel.file.
newline1.out2
tmp/parallel.file.
newline2.out
tmp/parallel.file.
newline2.out2
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### Test use special ssh
tmp/parallel.file.
newline1.out
tmp/parallel.file.
newline1.out2
tmp/parallel.file.
newline2.out
tmp/parallel.file.
newline2.out2
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
ls: cannot access tmp/parallel.file*: No such file or directory
OK
Input for ssh
parallel-server1 rsync --server -lDrRze.iLsf . ./
parallel-server1 cat tmp/parallel.file.'
'newline2 > tmp/parallel.file.'
'newline2.out;cat tmp/parallel.file.'
'newline2 > tmp/parallel.file.'
'newline2.out2
parallel-server1 rsync --server --sender -lDrRze.iLsf --remove-source-files . tmp/parallel.file.'
'newline2.out
parallel-server1 rsync --server --sender -lDrRze.iLsf --remove-source-files . tmp/parallel.file.'
'newline2.out2
parallel-server1 rm -f tmp/parallel.file.'
'newline2
-l parallel parallel-server2 rsync --server -lDrRze.iLsf . ./
parallel@parallel-server2 cat tmp/parallel.file.'
'newline1 > tmp/parallel.file.'
'newline1.out;cat tmp/parallel.file.'
'newline1 > tmp/parallel.file.'
'newline1.out2
-l parallel parallel-server2 rsync --server --sender -lDrRze.iLsf --remove-source-files . tmp/parallel.file.'
'newline1.out
-l parallel parallel-server2 rsync --server --sender -lDrRze.iLsf --remove-source-files . tmp/parallel.file.'
'newline1.out2
parallel@parallel-server2 rm -f tmp/parallel.file.'
'newline1
### Test use special ssh with > 9 simultaneous
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100

View file

@ -0,0 +1,8 @@
### Test --number-of-cpus
1
### Test --number-of-cores
2
### Test --use-cpus-instead-of-cores
Cores should complete first on machines with less than 4 physical CPUs
cores done
CPUs done

View file

@ -8,6 +8,8 @@ SERVER2=parallel-server2
echo '### Test --transfer --return --cleanup' echo '### Test --transfer --return --cleanup'
rm -rf /tmp/parallel.file* rm -rf /tmp/parallel.file*
stdout ssh $SERVER1 rm -rf 'tmp/parallel.file*' '/tmp/parallel.file*'
stdout ssh parallel@$SERVER2 rm -rf 'tmp/parallel.file*' '/tmp/parallel.file*'
(seq 1 3;echo '>fire';seq 5 10; echo ' : & ) \n*.jpg'; echo '/./sub dir'; seq 13 20) >/tmp/test17 (seq 1 3;echo '>fire';seq 5 10; echo ' : & ) \n*.jpg'; echo '/./sub dir'; seq 13 20) >/tmp/test17
# Create some weirdly files in /tmp # Create some weirdly files in /tmp
mkdir -p /tmp/parallel.file mkdir -p /tmp/parallel.file
@ -36,10 +38,6 @@ stdout ssh $SERVER1 ls 'tmp/parallel.file*'
# Should give: No such file or directory # Should give: No such file or directory
stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*' stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*'
echo '### --transfer - file with newline'
## TODO
echo '### --transfer --cleanup - abspath' echo '### --transfer --cleanup - abspath'
cat /tmp/test17abs | $PAR -k --transfer --cleanup --sshlogin $SERVER1,parallel@$SERVER2 cat {} cat /tmp/test17abs | $PAR -k --transfer --cleanup --sshlogin $SERVER1,parallel@$SERVER2 cat {}
echo good if no file echo good if no file
@ -56,9 +54,6 @@ stdout ssh $SERVER1 ls 'tmp/parallel.file*' || echo OK
# Should give: No such file or directory # Should give: No such file or directory
stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*' || echo OK stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*' || echo OK
echo '### --transfer --cleanup - file with newline'
# TODO
echo '### --return - abspath' echo '### --return - abspath'
rm -rf /tmp/parallel.file*out rm -rf /tmp/parallel.file*out
cat /tmp/test17abs | $PAR -k --return {.}.out --sshlogin $SERVER1,parallel@$SERVER2 echo {} ">"{.}.out cat /tmp/test17abs | $PAR -k --return {.}.out --sshlogin $SERVER1,parallel@$SERVER2 echo {} ">"{.}.out
@ -69,9 +64,6 @@ rm -rf /tmp/parallel.file*out
cat /tmp/test17rel | $PAR -k --return {.}.out --sshlogin $SERVER1,parallel@$SERVER2 mkdir -p tmp ';'echo {} ">"{.}.out cat /tmp/test17rel | $PAR -k --return {.}.out --sshlogin $SERVER1,parallel@$SERVER2 mkdir -p tmp ';'echo {} ">"{.}.out
ls tmp/parallel.file*out tmp/parallel.file/*out ls tmp/parallel.file*out tmp/parallel.file/*out
echo '### --return - file with newline'
# TODO
echo '### --return - multiple files' echo '### --return - multiple files'
rm -rf tmp/parallel.file*out tmp/parallel.file/*out tmp/parallel.file*done tmp/parallel.file/*done rm -rf tmp/parallel.file*out tmp/parallel.file/*out tmp/parallel.file*done tmp/parallel.file/*done
cat /tmp/test17rel | $PAR -k --return {.}.out --return {}.done \ cat /tmp/test17rel | $PAR -k --return {.}.out --return {}.done \
@ -98,10 +90,6 @@ stdout ssh $SERVER1 ls 'tmp/parallel.file*' || echo OK
# Should give: No such file or directory # Should give: No such file or directory
stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*' || echo OK stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*' || echo OK
echo '### --return --cleanup - file with newline'
#
# TODO
echo '### --return --cleanup - multiple returns' echo '### --return --cleanup - multiple returns'
rm -rf tmp/parallel.file*out tmp/parallel.file/*out tmp/parallel.file*done tmp/parallel.file/*done rm -rf tmp/parallel.file*out tmp/parallel.file/*out tmp/parallel.file*done tmp/parallel.file/*done
cat /tmp/test17rel | $PAR -k --return {.}.out --return {}.done --cleanup \ cat /tmp/test17rel | $PAR -k --return {.}.out --return {}.done --cleanup \
@ -133,9 +121,6 @@ stdout ssh $SERVER1 ls 'tmp/parallel.file*' || echo OK
# Should give: No such file or directory # Should give: No such file or directory
stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*' || echo OK stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*' || echo OK
echo '### --transfer --return --cleanup - file with newline'
# TODO
echo '### --transfer --return --cleanup - multiple files' echo '### --transfer --return --cleanup - multiple files'
rm -rf tmp/parallel.file*out tmp/parallel.file/*out tmp/parallel.file*done tmp/parallel.file/*done rm -rf tmp/parallel.file*out tmp/parallel.file/*out tmp/parallel.file*done tmp/parallel.file/*done
cat /tmp/test17rel | $PAR -k --transfer --return {.}.out --return {}.done --cleanup \ cat /tmp/test17rel | $PAR -k --transfer --return {.}.out --return {}.done --cleanup \
@ -165,9 +150,6 @@ stdout ssh $SERVER1 ls 'tmp/parallel.file*' || echo OK
# Should give: No such file or directory # Should give: No such file or directory
stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*' || echo OK stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*' || echo OK
echo '### --trc - file with newline'
# TODO
echo '### --trc - multiple files' echo '### --trc - multiple files'
rm -rf /tmp/parallel.file*out /tmp/parallel.file/*out /tmp/parallel.file*done /tmp/parallel.file/*done rm -rf /tmp/parallel.file*out /tmp/parallel.file/*out /tmp/parallel.file*done /tmp/parallel.file/*done
cat /tmp/test17abs | $PAR -k --trc {.}.out --trc {}.done \ cat /tmp/test17abs | $PAR -k --trc {.}.out --trc {}.done \

View file

@ -0,0 +1,132 @@
#!/bin/bash
# TODO return multiple
PAR=parallel
SERVER1=parallel-server1
SERVER2=parallel-server2
echo '### Test --transfer --return --cleanup - files with newline'
rm -rf /tmp/parallel.file*
stdout ssh $SERVER1 rm -rf 'tmp/parallel.file*' '/tmp/parallel.file*'
stdout ssh parallel@$SERVER2 rm -rf 'tmp/parallel.file*' '/tmp/parallel.file*'
cd /
echo '### --transfer - file with newline'
echo newline > '/tmp/parallel.file.
newline1'
echo newline > '/tmp/parallel.file.
newline2'
find tmp/parallel*newline* -print0 | $PAR -0 -k --transfer --sshlogin $SERVER1,parallel@$SERVER2 cat {}";"rm {}
# Should give: No such file or directory
echo good if no file
stdout ssh $SERVER1 ls 'tmp/parallel.file*'
# Should give: No such file or directory
stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*'
echo '### --transfer --cleanup - file with newline'
echo newline > '/tmp/parallel.file.
newline1'
echo newline > '/tmp/parallel.file.
newline2'
find tmp/parallel*newline* -print0 | $PAR -0 -k --transfer --cleanup --sshlogin $SERVER1,parallel@$SERVER2 cat {}
# Should give: No such file or directory
echo good if no file
stdout ssh $SERVER1 ls 'tmp/parallel.file*'
# Should give: No such file or directory
stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*'
echo '### --return - file with newline'
echo newline > '/tmp/parallel.file.
newline1'
echo newline > '/tmp/parallel.file.
newline2'
find tmp/parallel*newline* -print0 | $PAR -0 -k --return {}.out --sshlogin $SERVER1,parallel@$SERVER2 echo remote '>' {}.out
ls tmp/parallel*newline*out
rm tmp/parallel*newline*out
# Cleanup remote
stdout ssh $SERVER1 rm -rf 'tmp/parallel.file*'
stdout ssh parallel@$SERVER2 rm -rf 'tmp/parallel.file*'
echo '### --return --cleanup - file with newline'
echo newline > '/tmp/parallel.file.
newline1'
echo newline > '/tmp/parallel.file.
newline2'
find tmp/parallel*newline* -print0 | $PAR -0 -k --return {}.out --cleanup --sshlogin $SERVER1,parallel@$SERVER2 echo remote '>' {}.out
ls tmp/parallel*newline*out
rm tmp/parallel*newline*out
echo good if no file
stdout ssh $SERVER1 ls 'tmp/parallel.file*' || echo OK
# Should give: No such file or directory
stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*' || echo OK
echo '### --transfer --return --cleanup - file with newline'
echo newline > '/tmp/parallel.file.
newline1'
echo newline > '/tmp/parallel.file.
newline2'
find tmp/parallel*newline* -print0 | $PAR -0 -k --transfer --return {}.out --cleanup --sshlogin $SERVER1,parallel@$SERVER2 cat {} '>' {}.out
ls tmp/parallel*newline*out
rm tmp/parallel*newline*out
echo good if no file
stdout ssh $SERVER1 ls 'tmp/parallel.file*' || echo OK
# Should give: No such file or directory
stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*' || echo OK
echo '### --trc - file with newline'
echo newline > '/tmp/parallel.file.
newline1'
echo newline > '/tmp/parallel.file.
newline2'
find tmp/parallel*newline* -print0 | $PAR -0 -k --trc {}.out --sshlogin $SERVER1,parallel@$SERVER2 cat {} '>' {}.out
ls tmp/parallel*newline*out
rm tmp/parallel*newline*out
echo good if no file
stdout ssh $SERVER1 ls 'tmp/parallel.file*' || echo OK
# Should give: No such file or directory
stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*' || echo OK
echo '### --trc - multiple file with newline'
echo newline > '/tmp/parallel.file.
newline1'
echo newline > '/tmp/parallel.file.
newline2'
find tmp/parallel*newline* -print0 | $PAR -0 -k --trc {}.out --trc {}.out2 --sshlogin $SERVER1,parallel@$SERVER2 cat {} '>' {}.out';'cat {} '>' {}.out2
ls tmp/parallel*newline*out*
rm tmp/parallel*newline*out*
echo good if no file
stdout ssh $SERVER1 ls 'tmp/parallel.file*' || echo OK
# Should give: No such file or directory
stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*' || echo OK
echo '### Test use special ssh'
echo 'ssh "$@"; echo "$@" >>/tmp/myssh1-run' >/tmp/myssh1
echo 'ssh "$@"; echo "$@" >>/tmp/myssh2-run' >/tmp/myssh2
chmod 755 /tmp/myssh1 /tmp/myssh2
rm -rf /tmp/myssh1-run /tmp/myssh2-run
echo newline > '/tmp/parallel.file.
newline1'
echo newline > '/tmp/parallel.file.
newline2'
find tmp/parallel*newline* -print0 | $PAR -0 -k -j1 --trc {}.out --trc {}.out2 \
--sshlogin "/tmp/myssh1 $SERVER1, /tmp/myssh2 parallel@$SERVER2" \
cat {} '>' {}.out';'cat {} '>' {}.out2
ls tmp/parallel*newline*out*
rm tmp/parallel*newline*out*
echo good if no file
stdout ssh $SERVER1 ls 'tmp/parallel.file*' || echo OK
# Should give: No such file or directory
stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*' || echo OK
echo Input for ssh
cat /tmp/myssh1-run /tmp/myssh2-run
rm /tmp/myssh1-run /tmp/myssh2-run
echo '### Test use special ssh with > 9 simultaneous'
echo 'ssh "$@"; echo "$@" >>/tmp/myssh1-run' >/tmp/myssh1
echo 'ssh "$@"; echo "$@" >>/tmp/myssh2-run' >/tmp/myssh2
chmod 755 /tmp/myssh1 /tmp/myssh2
seq 1 100 | $PAR --sshlogin "/tmp/myssh1 $SERVER1, /tmp/myssh2 parallel@$SERVER2" \
-j10000% -k echo

View file

@ -0,0 +1,17 @@
#!/bin/bash
PAR=parallel
echo '### Test --number-of-cpus'
$PAR --number-of-cpus
echo '### Test --number-of-cores'
$PAR --number-of-cores
echo '### Test --use-cpus-instead-of-cores'
(seq 1 4 | $PAR --use-cpus-instead-of-cores -j100% sleep) && echo CPUs done &
(seq 1 4 | $PAR -j100% sleep) && echo cores done &
echo 'Cores should complete first on machines with less than 4 physical CPUs'
wait

View file

@ -45,7 +45,6 @@ file19
file20 file20
good if no file good if no file
ls: cannot access tmp/parallel.file*: No such file or directory ls: cannot access tmp/parallel.file*: No such file or directory
### --transfer - file with newline
### --transfer --cleanup - abspath ### --transfer --cleanup - abspath
file1 file1
file2 file2
@ -91,9 +90,8 @@ file18
file19 file19
file20 file20
good if no file good if no file
ls: cannot access /tmp/parallel.file*: No such file or directory ls: cannot access tmp/parallel.file*: No such file or directory
OK OK
### --transfer --cleanup - file with newline
### --return - abspath ### --return - abspath
/tmp/parallel.file10.out /tmp/parallel.file10.out
/tmp/parallel.file13.out /tmp/parallel.file13.out
@ -116,68 +114,67 @@ OK
/tmp/parallel.file : & ) \n*.jpg.out /tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.out /tmp/parallel.file/sub dir.out
### --return - relpath ### --return - relpath
/tmp/parallel.file10.out tmp/parallel.file10.out
/tmp/parallel.file13.out tmp/parallel.file13.out
/tmp/parallel.file14.out tmp/parallel.file14.out
/tmp/parallel.file15.out tmp/parallel.file15.out
/tmp/parallel.file16.out tmp/parallel.file16.out
/tmp/parallel.file17.out tmp/parallel.file17.out
/tmp/parallel.file18.out tmp/parallel.file18.out
/tmp/parallel.file19.out tmp/parallel.file19.out
/tmp/parallel.file1.out tmp/parallel.file1.out
/tmp/parallel.file20.out tmp/parallel.file20.out
/tmp/parallel.file2.out tmp/parallel.file2.out
/tmp/parallel.file3.out tmp/parallel.file3.out
/tmp/parallel.file5.out tmp/parallel.file5.out
/tmp/parallel.file6.out tmp/parallel.file6.out
/tmp/parallel.file7.out tmp/parallel.file7.out
/tmp/parallel.file8.out tmp/parallel.file8.out
/tmp/parallel.file9.out tmp/parallel.file9.out
/tmp/parallel.file>fire.out tmp/parallel.file>fire.out
/tmp/parallel.file : & ) \n*.jpg.out tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.out tmp/parallel.file/sub dir.out
### --return - file with newline
### --return - multiple files ### --return - multiple files
/tmp/parallel.file10.file.done tmp/parallel.file10.file.done
/tmp/parallel.file10.out tmp/parallel.file10.out
/tmp/parallel.file13.file.done tmp/parallel.file13.file.done
/tmp/parallel.file13.out tmp/parallel.file13.out
/tmp/parallel.file14.file.done tmp/parallel.file14.file.done
/tmp/parallel.file14.out tmp/parallel.file14.out
/tmp/parallel.file15.file.done tmp/parallel.file15.file.done
/tmp/parallel.file15.out tmp/parallel.file15.out
/tmp/parallel.file16.file.done tmp/parallel.file16.file.done
/tmp/parallel.file16.out tmp/parallel.file16.out
/tmp/parallel.file17.file.done tmp/parallel.file17.file.done
/tmp/parallel.file17.out tmp/parallel.file17.out
/tmp/parallel.file18.file.done tmp/parallel.file18.file.done
/tmp/parallel.file18.out tmp/parallel.file18.out
/tmp/parallel.file19.file.done tmp/parallel.file19.file.done
/tmp/parallel.file19.out tmp/parallel.file19.out
/tmp/parallel.file1.file.done tmp/parallel.file1.file.done
/tmp/parallel.file1.out tmp/parallel.file1.out
/tmp/parallel.file20.file.done tmp/parallel.file20.file.done
/tmp/parallel.file20.out tmp/parallel.file20.out
/tmp/parallel.file2.file.done tmp/parallel.file2.file.done
/tmp/parallel.file2.out tmp/parallel.file2.out
/tmp/parallel.file3.file.done tmp/parallel.file3.file.done
/tmp/parallel.file3.out tmp/parallel.file3.out
/tmp/parallel.file5.file.done tmp/parallel.file5.file.done
/tmp/parallel.file5.out tmp/parallel.file5.out
/tmp/parallel.file6.file.done tmp/parallel.file6.file.done
/tmp/parallel.file6.out tmp/parallel.file6.out
/tmp/parallel.file7.file.done tmp/parallel.file7.file.done
/tmp/parallel.file7.out tmp/parallel.file7.out
/tmp/parallel.file8.file.done tmp/parallel.file8.file.done
/tmp/parallel.file8.out tmp/parallel.file8.out
/tmp/parallel.file9.file.done tmp/parallel.file9.file.done
/tmp/parallel.file9.out tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out tmp/parallel.file>fire.out
/tmp/parallel.file : & ) \n*.jpg.file.done tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.file.done tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out tmp/parallel.file/sub dir.out
### --return --cleanup - abspath ### --return --cleanup - abspath
/tmp/parallel.file10.file.done /tmp/parallel.file10.file.done
/tmp/parallel.file10.out /tmp/parallel.file10.out
@ -223,50 +220,49 @@ good if no file
ls: cannot access /tmp/parallel.file*: No such file or directory ls: cannot access /tmp/parallel.file*: No such file or directory
OK OK
### --return --cleanup - relpath ### --return --cleanup - relpath
/tmp/parallel.file10.file.done tmp/parallel.file10.file.done
/tmp/parallel.file10.out tmp/parallel.file10.out
/tmp/parallel.file13.file.done tmp/parallel.file13.file.done
/tmp/parallel.file13.out tmp/parallel.file13.out
/tmp/parallel.file14.file.done tmp/parallel.file14.file.done
/tmp/parallel.file14.out tmp/parallel.file14.out
/tmp/parallel.file15.file.done tmp/parallel.file15.file.done
/tmp/parallel.file15.out tmp/parallel.file15.out
/tmp/parallel.file16.file.done tmp/parallel.file16.file.done
/tmp/parallel.file16.out tmp/parallel.file16.out
/tmp/parallel.file17.file.done tmp/parallel.file17.file.done
/tmp/parallel.file17.out tmp/parallel.file17.out
/tmp/parallel.file18.file.done tmp/parallel.file18.file.done
/tmp/parallel.file18.out tmp/parallel.file18.out
/tmp/parallel.file19.file.done tmp/parallel.file19.file.done
/tmp/parallel.file19.out tmp/parallel.file19.out
/tmp/parallel.file1.file.done tmp/parallel.file1.file.done
/tmp/parallel.file1.out tmp/parallel.file1.out
/tmp/parallel.file20.file.done tmp/parallel.file20.file.done
/tmp/parallel.file20.out tmp/parallel.file20.out
/tmp/parallel.file2.file.done tmp/parallel.file2.file.done
/tmp/parallel.file2.out tmp/parallel.file2.out
/tmp/parallel.file3.file.done tmp/parallel.file3.file.done
/tmp/parallel.file3.out tmp/parallel.file3.out
/tmp/parallel.file5.file.done tmp/parallel.file5.file.done
/tmp/parallel.file5.out tmp/parallel.file5.out
/tmp/parallel.file6.file.done tmp/parallel.file6.file.done
/tmp/parallel.file6.out tmp/parallel.file6.out
/tmp/parallel.file7.file.done tmp/parallel.file7.file.done
/tmp/parallel.file7.out tmp/parallel.file7.out
/tmp/parallel.file8.file.done tmp/parallel.file8.file.done
/tmp/parallel.file8.out tmp/parallel.file8.out
/tmp/parallel.file9.file.done tmp/parallel.file9.file.done
/tmp/parallel.file9.out tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out tmp/parallel.file>fire.out
/tmp/parallel.file : & ) \n*.jpg.file.done tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.file.done tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out tmp/parallel.file/sub dir.out
good if no file good if no file
ls: cannot access /tmp/parallel.file*: No such file or directory ls: cannot access tmp/parallel.file*: No such file or directory
OK OK
### --return --cleanup - file with newline
### --return --cleanup - multiple returns ### --return --cleanup - multiple returns
/tmp/parallel.file10.file.done /tmp/parallel.file10.file.done
/tmp/parallel.file10.out /tmp/parallel.file10.out
@ -309,7 +305,7 @@ OK
/tmp/parallel.file/sub dir.file.done /tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out /tmp/parallel.file/sub dir.out
good if no file good if no file
ls: cannot access /tmp/parallel.file*: No such file or directory ls: cannot access tmp/parallel.file*: No such file or directory
OK OK
### --transfer --return --cleanup - abspath ### --transfer --return --cleanup - abspath
/tmp/parallel.file10.file.done /tmp/parallel.file10.file.done
@ -397,9 +393,8 @@ OK
/tmp/parallel.file/sub dir.file.done /tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out /tmp/parallel.file/sub dir.out
good if no file good if no file
ls: cannot access /tmp/parallel.file*: No such file or directory ls: cannot access tmp/parallel.file*: No such file or directory
OK OK
### --transfer --return --cleanup - file with newline
### --transfer --return --cleanup - multiple files ### --transfer --return --cleanup - multiple files
/tmp/parallel.file10.file.done /tmp/parallel.file10.file.done
/tmp/parallel.file10.out /tmp/parallel.file10.out
@ -441,7 +436,7 @@ OK
/tmp/parallel.file : & ) \n*.jpg.out /tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.file.done /tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out /tmp/parallel.file/sub dir.out
ls: cannot access /tmp/parallel.file*: No such file or directory ls: cannot access tmp/parallel.file*: No such file or directory
OK OK
### --trc - abspath ### --trc - abspath
/tmp/parallel.file10.file.done /tmp/parallel.file10.file.done
@ -488,50 +483,49 @@ good if no file
ls: cannot access /tmp/parallel.file*: No such file or directory ls: cannot access /tmp/parallel.file*: No such file or directory
OK OK
### --trc - relpath ### --trc - relpath
/tmp/parallel.file10.file.done tmp/parallel.file10.file.done
/tmp/parallel.file10.out tmp/parallel.file10.out
/tmp/parallel.file13.file.done tmp/parallel.file13.file.done
/tmp/parallel.file13.out tmp/parallel.file13.out
/tmp/parallel.file14.file.done tmp/parallel.file14.file.done
/tmp/parallel.file14.out tmp/parallel.file14.out
/tmp/parallel.file15.file.done tmp/parallel.file15.file.done
/tmp/parallel.file15.out tmp/parallel.file15.out
/tmp/parallel.file16.file.done tmp/parallel.file16.file.done
/tmp/parallel.file16.out tmp/parallel.file16.out
/tmp/parallel.file17.file.done tmp/parallel.file17.file.done
/tmp/parallel.file17.out tmp/parallel.file17.out
/tmp/parallel.file18.file.done tmp/parallel.file18.file.done
/tmp/parallel.file18.out tmp/parallel.file18.out
/tmp/parallel.file19.file.done tmp/parallel.file19.file.done
/tmp/parallel.file19.out tmp/parallel.file19.out
/tmp/parallel.file1.file.done tmp/parallel.file1.file.done
/tmp/parallel.file1.out tmp/parallel.file1.out
/tmp/parallel.file20.file.done tmp/parallel.file20.file.done
/tmp/parallel.file20.out tmp/parallel.file20.out
/tmp/parallel.file2.file.done tmp/parallel.file2.file.done
/tmp/parallel.file2.out tmp/parallel.file2.out
/tmp/parallel.file3.file.done tmp/parallel.file3.file.done
/tmp/parallel.file3.out tmp/parallel.file3.out
/tmp/parallel.file5.file.done tmp/parallel.file5.file.done
/tmp/parallel.file5.out tmp/parallel.file5.out
/tmp/parallel.file6.file.done tmp/parallel.file6.file.done
/tmp/parallel.file6.out tmp/parallel.file6.out
/tmp/parallel.file7.file.done tmp/parallel.file7.file.done
/tmp/parallel.file7.out tmp/parallel.file7.out
/tmp/parallel.file8.file.done tmp/parallel.file8.file.done
/tmp/parallel.file8.out tmp/parallel.file8.out
/tmp/parallel.file9.file.done tmp/parallel.file9.file.done
/tmp/parallel.file9.out tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out tmp/parallel.file>fire.out
/tmp/parallel.file : & ) \n*.jpg.file.done tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.file.done tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out tmp/parallel.file/sub dir.out
good if no file good if no file
ls: cannot access /tmp/parallel.file*: No such file or directory ls: cannot access tmp/parallel.file*: No such file or directory
OK OK
### --trc - file with newline
### --trc - multiple files ### --trc - multiple files
/tmp/parallel.file10.file.done /tmp/parallel.file10.file.done
/tmp/parallel.file10.out /tmp/parallel.file10.out

View file

@ -0,0 +1,202 @@
### Test --transfer --return --cleanup - files with newline
### --transfer - file with newline
newline
newline
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
ls: cannot access tmp/parallel.file*: No such file or directory
### --transfer --cleanup - file with newline
newline
newline
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
ls: cannot access tmp/parallel.file*: No such file or directory
### --return - file with newline
tmp/parallel.file.
newline1.out
tmp/parallel.file.
newline2.out
### --return --cleanup - file with newline
tmp/parallel.file.
newline1.out
tmp/parallel.file.
newline2.out
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### --transfer --return --cleanup - file with newline
tmp/parallel.file.
newline1.out
tmp/parallel.file.
newline2.out
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### --trc - file with newline
tmp/parallel.file.
newline1.out
tmp/parallel.file.
newline2.out
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### --trc - multiple file with newline
tmp/parallel.file.
newline1.out
tmp/parallel.file.
newline1.out2
tmp/parallel.file.
newline2.out
tmp/parallel.file.
newline2.out2
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### Test use special ssh
tmp/parallel.file.
newline1.out
tmp/parallel.file.
newline1.out2
tmp/parallel.file.
newline2.out
tmp/parallel.file.
newline2.out2
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
ls: cannot access tmp/parallel.file*: No such file or directory
OK
Input for ssh
parallel-server1 rsync --server -lDrRze.iLsf . ./
parallel-server1 cat tmp/parallel.file.'
'newline2 > tmp/parallel.file.'
'newline2.out;cat tmp/parallel.file.'
'newline2 > tmp/parallel.file.'
'newline2.out2
parallel-server1 rsync --server --sender -lDrRze.iLsf --remove-source-files . tmp/parallel.file.'
'newline2.out
parallel-server1 rsync --server --sender -lDrRze.iLsf --remove-source-files . tmp/parallel.file.'
'newline2.out2
parallel-server1 rm -f tmp/parallel.file.'
'newline2
-l parallel parallel-server2 rsync --server -lDrRze.iLsf . ./
parallel@parallel-server2 cat tmp/parallel.file.'
'newline1 > tmp/parallel.file.'
'newline1.out;cat tmp/parallel.file.'
'newline1 > tmp/parallel.file.'
'newline1.out2
-l parallel parallel-server2 rsync --server --sender -lDrRze.iLsf --remove-source-files . tmp/parallel.file.'
'newline1.out
-l parallel parallel-server2 rsync --server --sender -lDrRze.iLsf --remove-source-files . tmp/parallel.file.'
'newline1.out2
parallel@parallel-server2 rm -f tmp/parallel.file.'
'newline1
### Test use special ssh with > 9 simultaneous
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100

View file

@ -0,0 +1,8 @@
### Test --number-of-cpus
1
### Test --number-of-cores
2
### Test --use-cpus-instead-of-cores
Cores should complete first on machines with less than 4 physical CPUs
cores done
CPUs done