Released as 20191022 ('DrivingIT')
[parallel.git] / testsuite / tests-to-run / parallel-local-ssh9.sh
blobe5b9cfb37421ac77e25bce05bbe328389a402719
1 #!/bin/bash
3 par_ash_embed() {
4 myscript=$(cat <<'_EOF'
5 echo '--embed'
6 parallel --embed | tac | perl -pe '
7 /^parallel/ and not $seen++ and s{^}{
8 echo \$b
9 parset a,b,c echo ::: ParsetOK ParsetOK ParsetOK
10 env_parallel echo ::: env_parallel_OK
11 env_parallel --env myvar echo {} --env \\\$myvar ::: env_parallel
12 myvar=OK
13 parallel echo ::: parallel_OK
14 PATH=/usr/sbin:/usr/bin:/sbin:/bin
15 # Do not look for parallel in /usr/local/bin
16 #. \`which env_parallel.ash\`
18 ' | tac > parallel-embed
19 chmod +x parallel-embed
20 ./parallel-embed
21 rm parallel-embed
22 _EOF
24 ssh ash@lo "$myscript"
27 par_bash_embed() {
28 myscript=$(cat <<'_EOF'
29 echo '--embed'
30 parallel --embed | tac | perl -pe '
31 /^parallel/ and not $seen++ and s{^}{
32 echo \${a[1]}
33 parset a echo ::: ParsetOK ParsetOK ParsetOK
34 env_parallel echo ::: env_parallel_OK
35 env_parallel --env myvar echo {} --env \\\$myvar ::: env_parallel
36 myvar=OK
37 parallel echo ::: parallel_OK
38 PATH=/usr/sbin:/usr/bin:/sbin:/bin
39 # Do not look for parallel in /usr/local/bin
40 #. \`which env_parallel.bash\`
42 ' | tac > parallel-embed
43 chmod +x parallel-embed
44 ./parallel-embed
45 rm parallel-embed
46 _EOF
48 ssh bash@lo "$myscript"
51 par_csh_embed() {
52 echo Not implemented
55 par_fish_embed() {
56 echo Not implemented
59 par_ksh_embed() {
60 myscript=$(cat <<'_EOF'
61 echo '--embed'
62 parallel --embed | tac | perl -pe '
63 /^parallel/ and not $seen++ and s{^}{
64 echo \${a[1]}
65 parset a echo ::: ParsetOK ParsetOK ParsetOK
66 env_parallel echo ::: env_parallel_OK
67 env_parallel --env myvar echo {} --env \\\$myvar ::: env_parallel
68 myvar=OK
69 parallel echo ::: parallel_OK
70 PATH=/usr/sbin:/usr/bin:/sbin:/bin
71 # Do not look for parallel in /usr/local/bin
72 #. \`which env_parallel.ksh\`
74 ' | tac > parallel-embed
75 chmod +x parallel-embed
76 ./parallel-embed
77 rm parallel-embed
78 _EOF
80 ssh ksh@lo "$myscript"
83 par_sh_embed() {
84 myscript=$(cat <<'_EOF'
85 echo '--embed'
86 parallel --embed | tac | perl -pe '
87 /^parallel/ and not $seen++ and s{^}{
88 echo \$b
89 parset a,b,c echo ::: ParsetOK ParsetOK ParsetOK
90 env_parallel echo ::: env_parallel_OK
91 env_parallel --env myvar echo {} --env \\\$myvar ::: env_parallel
92 myvar=OK
93 parallel echo ::: parallel_OK
94 PATH=/usr/sbin:/usr/bin:/sbin:/bin
95 # Do not look for parallel in /usr/local/bin
96 #. \`which env_parallel.sh\`
98 ' | tac > parallel-embed
99 chmod +x parallel-embed
100 ./parallel-embed
101 rm parallel-embed
102 _EOF
104 ssh sh@lo "$myscript"
107 par_tcsh_embed() {
108 echo Not implemented
111 par_zsh_embed() {
112 myscript=$(cat <<'_EOF'
113 echo '--embed'
114 parallel --embed | tac | perl -pe '
115 /^parallel/ and not $seen++ and s{^}{
116 echo \${a[1]}
117 parset a echo ::: ParsetOK ParsetOK ParsetOK
118 env_parallel echo ::: env_parallel_OK
119 env_parallel --env myvar echo {} --env \\\$myvar ::: env_parallel
120 myvar=OK
121 parallel echo ::: parallel_OK
122 PATH=/usr/sbin:/usr/bin:/sbin:/bin
123 # Do not look for parallel in /usr/local/bin
125 ' | tac > parallel-embed
126 chmod +x parallel-embed
127 ./parallel-embed
128 rm parallel-embed
129 _EOF
131 ssh zsh@lo "$myscript" 2>&1 |
132 grep -v .zshenv:.:1
135 par_propagate_env() {
136 echo '### bug #41805: Idea: propagate --env for parallel --number-of-cores'
137 echo '** test_zsh'
138 FOO=test_zsh parallel --env FOO,HOME -S zsh@lo -N0 env ::: "" |sort|egrep 'FOO|^HOME'
139 echo '** test_zsh_filter'
140 FOO=test_zsh_filter parallel --filter-hosts --env FOO,HOME -S zsh@lo -N0 env ::: "" |sort|egrep 'FOO|^HOME'
141 echo '** test_csh'
142 FOO=test_csh parallel --env FOO,HOME -S csh@lo -N0 env ::: "" |sort|egrep 'FOO|^HOME'
143 echo '** test_csh_filter'
144 FOO=test_csh_filter parallel --filter-hosts --env FOO,HOME -S csh@lo -N0 env ::: "" |sort|egrep 'FOO|^HOME'
145 echo '** bug #41805 done'
148 par_env_parallel_big_env() {
149 echo '### bug #54128: command too long when exporting big env'
150 . `which env_parallel.bash`
151 a=`rand | perl -pe 's/\0//g'| head -c 70000`
152 env_parallel -Slo echo should not ::: fail 2>&1
153 a=`rand | perl -pe 's/\0//g'| head -c 80000`
154 env_parallel -Slo echo should ::: fail 2>/dev/null || echo OK
157 par_no_route_to_host() {
158 echo '### no route to host with | and -j0 causes inf loop'
159 # Broken in parallel-20121122 .. parallel-20181022
160 # parallel-20181022 -j0 -S 185.75.195.218 echo ::: {1..11}
161 via_parallel() {
162 seq 11 | stdout parallel -j0 -S $1 echo
164 export -f via_parallel
165 raw() {
166 stdout ssh $1 echo
168 export -f raw
170 # Random hosts
171 findhosts() {
172 ip='$(($RANDOM%256)).$(($RANDOM%256)).$(($RANDOM%256)).$(($RANDOM%256))'
173 seq 10000 | parallel -N0 echo $ip
176 # See if the hosts fail fast
177 filterhosts() {
178 stdout parallel --timeout 2 -j5 ssh -o PasswordAuthentication=no {} echo |
179 perl -ne 's/ssh:.* host (\d+\.\d+\.\d+\.\d+) .* No route .*/$1/ and print; $|=1'
183 # Cache a list of hosts that fail fast with 'No route'
184 # Filter the list 5 times to make sure to get good hosts
185 export -f findhosts
186 export -f filterhosts
187 nice bash -c '
188 findhosts | filterhosts | filterhosts | filterhosts |
189 filterhosts | filterhosts | head > /tmp/filtered.$$
190 mv /tmp/filtered.$$ /tmp/filtered.hosts
194 # We just need one of each to complete
195 stdout parallel --halt now,done=1 -j0 raw :::: /tmp/filtered.hosts
196 stdout parallel --halt now,done=1 -j0 via_parallel :::: /tmp/filtered.hosts
197 ) | perl -pe 's/(\d+\.\d+\.\d+\.\d+)/i.p.n.r/' | puniq
200 par_PARALLEL_SSHLOGIN() {
201 echo '### bug #56554: Introduce $PARALLEL_SSHLOGIN'
202 (echo lo; echo zsh@lo; echo /usr/bin/ssh csh@lo; echo 1/sh@lo;
203 echo 1//usr/bin/ssh tcsh@lo) |
204 parallel -k --tag --nonall -S - 'whoami;echo $PARALLEL_SSHLOGIN' |
205 LANG=C sort
208 export -f $(compgen -A function | grep par_)
209 #compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1'
210 #compgen -A function | grep par_ | sort |
211 compgen -A function | grep par_ | LANG=C sort -ri |
212 # parallel --joblog /tmp/jl-`basename $0` --delay $D -j$P --tag -k '{} 2>&1'
213 parallel --joblog /tmp/jl-`basename $0` --delay 0.1 -j200% --tag -k '{} 2>&1' |
214 perl -pe 's/line \d\d\d+:/line XXX:/' |
215 perl -pe 's/\[\d\d\d+\]:/[XXX]:/'