Fixed bug #59146: Support --termseq for remote jobs.
[parallel.git] / testsuite / tests-to-run / parallel-local-ssh6.sh
blob38631bb43142addb2c55fb8f3419ad3155703927
1 #!/bin/bash
3 # At most 2 parallel sshs per function
5 export SSHLOGIN1=parallel@lo
6 export SSHLOGIN2=csh@lo
7 mkdir -p tmp
9 par_termseq_remote() {
10 echo '### bug #59146: Support --termseq for remote jobs'
11 doit() {
12 # setup signal handlers for all signals
13 exec perl -e '
14 $file = shift;
15 for $i (qw(
16 HUP INT QUIT ILL TRAP
17 ABRT BUS FPE KILL USR1
18 SEGV USR2 PIPE ALRM TERM
19 STKFLT CHLD CONT STOP TSTP
20 TTIN TTOU URG XCPU XFSZ
21 VTALRM PROF WINCH IO PWR
22 SYS RTMIN RTMIN+1 RTMIN+2 RTMIN+3
23 RTMIN+4 RTMIN+5 RTMIN+6 RTMIN+7 RTMIN+8
24 RTMIN+9 RTMIN+10 RTMIN+11 RTMIN+12 RTMIN+13
25 RTMIN+14 RTMIN+15 RTMAX-14 RTMAX-13 RTMAX-12
26 RTMAX-11 RTMAX-10 RTMAX-9 RTMAX-8 RTMAX-7
27 RTMAX-6 RTMAX-5 RTMAX-4 RTMAX-3 RTMAX-2
28 RTMAX-1 RTMAX
29 )) {
30 eval q[$SIG{].$i.q[}=sub{open(A,">>$file");print A "].$i.q[\n";};];
32 for(1..100) { sleep(1);}
33 ' $file
35 file=/tmp/sig$$
36 . `which env_parallel.bash`
37 env_parallel -v --timeout 2 --termseq HUP,30,INT,30,QUIT,30,ILL,30,TRAP,30,ABRT,30,BUS,30,FPE,30,USR1,30,SEGV,30,USR2,30,PIPE,30,ALRM,30,TERM,30,STKFLT,30,CHLD,30,CONT,30,TSTP,30,TTIN,30,TTOU,30,URG,30,XCPU,30,XFSZ,30,VTALRM,30,PROF,30,WINCH,30,IO,30,PWR,30,SYS,30,RTMIN,30,RTMAX,30,KILL,9 -S $SSHLOGIN1 doit ::: 1
38 sleep 1
39 cat $file
40 ssh $SSHLOGIN1 rm $file
43 par_nonall_ssh() {
44 echo 'bug #59181: --ssh is not propagated to --nonall'
45 parallel --ssh 'echo OK | ssh' -S $SSHLOGIN1 --nonall cat
48 par_test_onall() {
49 echo '### Test --onall'
50 parallel --onall --tag -k -S $SSHLOGIN1,$SSHLOGIN2 '(echo {1} {2}) | awk \{print\ \$2}' ::: a b c ::: 1 2
53 par_test_pipe_onall() {
54 echo '### Test | --onall'
55 seq 3 |
56 parallel --onall --tag -k -S $SSHLOGIN1,$SSHLOGIN2 '(echo {1} {2}) | awk \{print\ \$2}' ::: a b c :::: -
59 par_test_onall_u() {
60 echo '### Test --onall -u'
61 parallel --onall -S $SSHLOGIN1,$SSHLOGIN2 -u '(echo {1} {2}) | awk \{print\ \$2}' ::: a b c ::: 1 2 3 |
62 sort
65 par_test_nonall() {
66 echo '### Test --nonall'
67 parallel --nonall -k -S $SSHLOGIN1,$SSHLOGIN2 pwd |
68 perl -pe 's:/mnt/4tb::g' |
69 sort
72 par_test_nonall_u() {
73 echo '### Test --nonall -u - should be interleaved x y x y'
74 parallel --nonall -S $SSHLOGIN1,$SSHLOGIN2 -u 'pwd|grep -q csh && sleep 3; pwd;sleep 12;pwd;' |
75 perl -pe 's:/mnt/4tb::g'
78 par_read_sshloginfile_from_stdin() {
79 echo '### Test read sshloginfile from STDIN'
80 echo $SSHLOGIN1,$SSHLOGIN2 |
81 parallel -S - -k --nonall pwd |
82 perl -pe 's:/mnt/4tb::g'
83 echo $SSHLOGIN1,$SSHLOGIN2 |
84 parallel --sshloginfile - -k --onall pwd\; echo ::: foo |
85 perl -pe 's:/mnt/4tb::g'
88 par_nonall_basefile() {
89 echo '### Test --nonall --basefile'
90 touch tmp/nonall--basefile
91 stdout parallel --nonall --basefile tmp/nonall--basefile -S $SSHLOGIN1,$SSHLOGIN2 ls tmp/nonall--basefile
92 stdout parallel --nonall -S $SSHLOGIN1,$SSHLOGIN2 rm tmp/nonall--basefile
93 stdout rm tmp/nonall--basefile
96 par_onall_basefile() {
97 echo '### Test --onall --basefile'
98 touch tmp/onall--basefile
99 stdout parallel --onall --basefile tmp/onall--basefile -S $SSHLOGIN1,$SSHLOGIN2 ls {} ::: tmp/onall--basefile
100 stdout parallel --onall -S $SSHLOGIN1,$SSHLOGIN2 rm {} ::: tmp/onall--basefile
101 stdout rm tmp/onall--basefile
104 par_nonall_basefile_cleanup() {
105 echo '### Test --nonall --basefile --cleanup (rm should fail)'
106 touch tmp/nonall--basefile--clean
107 stdout parallel --nonall --basefile tmp/nonall--basefile--clean --cleanup -S $SSHLOGIN1,$SSHLOGIN2 ls tmp/nonall--basefile--clean
108 stdout parallel --nonall -S $SSHLOGIN1,$SSHLOGIN2 rm tmp/nonall--basefile--clean
109 stdout rm tmp/nonall--basefile--clean
112 par_onall_basefile_cleanup() {
113 echo '### Test --onall --basefile --cleanup (rm should fail)'
114 touch tmp/onall--basefile--clean
115 stdout parallel --onall --basefile tmp/onall--basefile--clean --cleanup -S $SSHLOGIN1,$SSHLOGIN2 ls {} ::: tmp/onall--basefile--clean
116 stdout parallel --onall -S $SSHLOGIN1,$SSHLOGIN2 rm {} ::: tmp/onall--basefile--clean
117 stdout rm tmp/onall--basefile--clean
120 par_workdir_dot() {
121 echo '### Test --workdir .'
122 ssh $SSHLOGIN1 mkdir -p mydir
123 mkdir -p $HOME/mydir
124 cd $HOME/mydir
125 parallel --workdir . -S $SSHLOGIN1 ::: pwd |
126 perl -pe 's:/mnt/4tb::g'
129 par_wd_dot() {
130 echo '### Test --wd .'
131 ssh $SSHLOGIN2 mkdir -p mydir
132 mkdir -p $HOME/mydir
133 cd $HOME/mydir
134 parallel --workdir . -S $SSHLOGIN2 ::: pwd |
135 perl -pe 's:/mnt/4tb::g'
138 par_wd_braces() {
139 echo '### Test --wd {}'
140 ssh $SSHLOGIN2 rm -rf wd1 wd2
141 mkdir -p $HOME/mydir
142 cd $HOME/mydir
143 parallel --workdir {} -S $SSHLOGIN2 touch ::: wd1 wd2
144 ssh $SSHLOGIN2 ls -d wd1 wd2
147 par_wd_perlexpr() {
148 echo '### Test --wd {= =}'
149 ssh $SSHLOGIN2 rm -rf WD1 WD2
150 mkdir -p $HOME/mydir
151 cd $HOME/mydir
152 parallel --workdir '{= $_=uc($_) =}' -S $SSHLOGIN2 touch ::: wd1 wd2
153 ssh $SSHLOGIN2 ls -d WD1 WD2
156 par_nonall_wd() {
157 echo '### Test --nonall --wd'
158 parallel --workdir /tmp -S $SSHLOGIN2 --nonall pwd
161 par_remote_symlink_dir() {
162 echo 'bug #51293: parallel does not preserve symlinked directory structure on remote'
163 ssh parallel@lo 'mkdir -p tmp; rm -rf wd; ln -s tmp wd'
164 mkdir -p wd
165 touch wd/testfile
166 parallel --nonall --rsync-opts '--keep-dirlinks -rlDzR' -S parallel@lo --basefile wd/testfile
167 ssh parallel@lo rm wd && echo OK: wd is still a symlink with --rsync-opts
169 ssh parallel@lo 'mkdir -p tmp; rm -rf wd; ln -s tmp wd'
170 mkdir -p wd
171 touch wd/testfile
172 export PARALLEL_RSYNC_OPTS='--keep-dirlinks -rlDzR'
173 parallel --nonall -S parallel@lo --basefile wd/testfile
174 ssh parallel@lo rm wd && echo OK: wd is still a symlink with PARALLEL_RSYNC_OPTS
177 par_sshlogin_replacement() {
178 echo '### show {sshlogin} and {host}'
179 parallel -S $SSHLOGIN1 --plus echo {sshlogin} {} {host} ::: and
180 parallel -S '5//usr/bin/ssh '$SSHLOGIN1 --plus echo {sshlogin} {} {host} ::: and
183 par_timeout_onall() {
184 echo '### --timeout --onall on remote machines: 2*slept 1, 2 jobs failed'
185 parallel -j0 --timeout 6 --onall -S localhost,$SSHLOGIN1 'sleep {}; echo slept {}' ::: 1 8 9
186 echo jobs failed: $?
189 par_rsync_3.2.3() {
190 echo "bug #59006: rsync version 3.2.3 is not detected correctly"
191 PATH=$HOME/bin/rsync:$PATH
192 rsync --version | grep version
193 rm -f bug59006
194 parallel --return {} -Sparallel@lo touch ::: bug59006
195 ls bug59006
196 rm -f bug59006
199 export -f $(compgen -A function | grep par_)
200 #compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1'
201 compgen -A function | grep par_ | sort |
202 parallel --joblog /tmp/jl-`basename $0` -j5 --tag -k '{} 2>&1'