blob: 9cc6279c9d1244e0682c44196e698095ce680864 [file] [log] [blame]
Frederic Lecaille573d2892018-12-13 22:15:08 +01001varnishtest "Health-checks"
2feature ignore_unknown_macro
3
4#REQUIRE_VERSION=1.8
Willy Tarreau03c6ab02019-04-25 08:39:48 +02005#EXCLUDE_TARGETS=freebsd,osx,generic
Frédéric Lécailledc1a3bd2019-03-29 15:07:24 +01006#REGTEST_TYPE=slow
Frederic Lecaille573d2892018-12-13 22:15:08 +01007
8# This script start 40 servers named s0 up to s39.
9# For 0 <= i <= 19:
10# - s(i) and s(i+1) belong to backend be(2*i+1),
11# - fe(2*i+1) backend is configured to used be(2*i+1) backend.
12# - only s(2*i+1) servers have health-checks enabled,
13# - we start 20 clients named s(2*i+1) which connect to fe(2*i+1) frontend,
14# - so that to ensure that health-checks do not consume any connection
15# (any varnishtest server without -repeat <n> with n > 1 accepts
16# only one connection).
17
Frederic Lecaille573d2892018-12-13 22:15:08 +010018syslog S1 -level notice {
19 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +010020 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be1/srv1 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
21} -start
22
23syslog S3 -level notice {
24 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +010025 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be3/srv3 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
26} -start
27
28syslog S5 -level notice {
29 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +010030 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be5/srv5 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
31} -start
32
33syslog S7 -level notice {
34 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +010035 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be7/srv7 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
36} -start
37
38syslog S9 -level notice {
39 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +010040 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be9/srv9 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
41} -start
42
43syslog S11 -level notice {
44 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +010045 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be11/srv11 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
46} -start
47
48syslog S13 -level notice {
49 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +010050 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be13/srv13 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
51} -start
52
53syslog S15 -level notice {
54 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +010055 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be15/srv15 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
56} -start
57
58syslog S17 -level notice {
59 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +010060 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be17/srv17 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
61} -start
62
63syslog S19 -level notice {
64 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +010065 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be19/srv19 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
66} -start
67
68syslog S21 -level notice {
69 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +010070 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be21/srv21 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
71} -start
72
73syslog S23 -level notice {
74 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +010075 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be23/srv23 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
76} -start
77
78syslog S25 -level notice {
79 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +010080 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be25/srv25 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
81} -start
82
83syslog S27 -level notice {
84 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +010085 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be27/srv27 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
86} -start
87
88syslog S29 -level notice {
89 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +010090 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be29/srv29 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
91} -start
92
93syslog S31 -level notice {
94 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +010095 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be31/srv31 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
96} -start
97
98syslog S33 -level notice {
99 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +0100100 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be33/srv33 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
101} -start
102
103syslog S35 -level notice {
104 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +0100105 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be35/srv35 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
106} -start
107
108syslog S37 -level notice {
109 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +0100110 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be37/srv37 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
111} -start
112
113syslog S39 -level notice {
114 recv
Frederic Lecaille573d2892018-12-13 22:15:08 +0100115 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be39/srv39 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
116} -start
117
118server s0 {} -start
119server s2 {} -start
120server s4 {} -start
121server s6 {} -start
122server s8 {} -start
123server s10 {} -start
124server s12 {} -start
125server s14 {} -start
126server s16 {} -start
127server s18 {} -start
128server s20 {} -start
129server s22 {} -start
130server s24 {} -start
131server s26 {} -start
132server s28 {} -start
133server s30 {} -start
134server s32 {} -start
135server s34 {} -start
136server s36 {} -start
137server s38 {} -start
138
139server s1 {
140 rxreq
141 txresp
142} -start
143
144server s3 {
145 rxreq
146 txresp
147} -start
148
149server s5 {
150 rxreq
151 txresp
152} -start
153
154server s7 {
155 rxreq
156 txresp
157} -start
158
159server s9 {
160 rxreq
161 txresp
162} -start
163
164server s11 {
165 rxreq
166 txresp
167} -start
168
169server s13 {
170 rxreq
171 txresp
172} -start
173
174server s15 {
175 rxreq
176 txresp
177} -start
178
179server s17 {
180 rxreq
181 txresp
182} -start
183
184server s19 {
185 rxreq
186 txresp
187} -start
188
189server s21 {
190 rxreq
191 txresp
192} -start
193
194server s23 {
195 rxreq
196 txresp
197} -start
198
199server s25 {
200 rxreq
201txresp
202} -start
203
204server s27 {
205 rxreq
206 txresp
207} -start
208
209server s29 {
210 rxreq
211 txresp
212} -start
213
214server s31 {
215 rxreq
216 txresp
217} -start
218
219server s33 {
220 rxreq
221 txresp
222} -start
223
224server s35 {
225 rxreq
226 txresp
227} -start
228
229server s37 {
230 rxreq
231 txresp
232} -start
233
234server s39 {
235 rxreq
236 txresp
237} -start
238
239haproxy h1 -conf {
240 defaults
241 timeout client 1s
242 timeout server 1s
243 timeout connect 1s
244 balance first
245 default-server no-check inter 5ms downinter 1s rise 1 fall 1
246
247 backend be1
248 option log-health-checks
249 log ${S1_addr}:${S1_port} daemon
250 server srv1 ${s1_addr}:${s1_port} check
251 server srv0 ${s0_addr}:${s0_port}
252
253 backend be3
254 option log-health-checks
255 log ${S3_addr}:${S3_port} daemon
256 server srv3 ${s3_addr}:${s3_port} check
257 server srv2 ${s2_addr}:${s2_port}
258
259 backend be5
260 option log-health-checks
261 log ${S5_addr}:${S5_port} daemon
262 server srv5 ${s5_addr}:${s5_port} check
263 server srv4 ${s4_addr}:${s4_port}
264
265 backend be7
266 option log-health-checks
267 log ${S7_addr}:${S7_port} daemon
268 server srv7 ${s7_addr}:${s7_port} check
269 server srv6 ${s6_addr}:${s6_port}
270
271 backend be9
272 option log-health-checks
273 log ${S9_addr}:${S9_port} daemon
274 server srv9 ${s9_addr}:${s9_port} check
275 server srv8 ${s8_addr}:${s8_port}
276
277 backend be11
278 option log-health-checks
279 log ${S11_addr}:${S11_port} daemon
280 server srv11 ${s11_addr}:${s11_port} check
281 server srv10 ${s10_addr}:${s10_port}
282
283 backend be13
284 option log-health-checks
285 log ${S13_addr}:${S13_port} daemon
286 server srv13 ${s13_addr}:${s13_port} check
287 server srv12 ${s12_addr}:${s12_port}
288
289 backend be15
290 option log-health-checks
291 log ${S15_addr}:${S15_port} daemon
292 server srv15 ${s15_addr}:${s15_port} check
293 server srv14 ${s14_addr}:${s14_port}
294
295 backend be17
296 option log-health-checks
297 log ${S17_addr}:${S17_port} daemon
298 server srv17 ${s17_addr}:${s17_port} check
299 server srv16 ${s16_addr}:${s16_port}
300
301 backend be19
302 option log-health-checks
303 log ${S19_addr}:${S19_port} daemon
304 server srv19 ${s19_addr}:${s19_port} check
305 server srv18 ${s18_addr}:${s18_port}
306
307 backend be21
308 option log-health-checks
309 log ${S21_addr}:${S21_port} daemon
310 server srv21 ${s21_addr}:${s21_port} check
311 server srv20 ${s20_addr}:${s20_port}
312
313 backend be23
314 option log-health-checks
315 log ${S23_addr}:${S23_port} daemon
316 server srv23 ${s23_addr}:${s23_port} check
317 server srv22 ${s22_addr}:${s22_port}
318
319 backend be25
320 option log-health-checks
321 log ${S25_addr}:${S25_port} daemon
322 server srv25 ${s25_addr}:${s25_port} check
323 server srv24 ${s24_addr}:${s24_port}
324
325 backend be27
326 option log-health-checks
327 log ${S27_addr}:${S27_port} daemon
328 server srv27 ${s27_addr}:${s27_port} check
329 server srv26 ${s26_addr}:${s26_port}
330
331 backend be29
332 option log-health-checks
333 log ${S29_addr}:${S29_port} daemon
334 server srv29 ${s29_addr}:${s29_port} check
335 server srv28 ${s28_addr}:${s28_port}
336
337 backend be31
338 option log-health-checks
339 log ${S31_addr}:${S31_port} daemon
340 server srv31 ${s31_addr}:${s31_port} check
341 server srv30 ${s30_addr}:${s30_port}
342
343 backend be33
344 option log-health-checks
345 log ${S33_addr}:${S33_port} daemon
346 server srv33 ${s33_addr}:${s33_port} check
347 server srv32 ${s32_addr}:${s32_port}
348
349 backend be35
350 option log-health-checks
351 log ${S35_addr}:${S35_port} daemon
352 server srv35 ${s35_addr}:${s35_port} check
353 server srv34 ${s34_addr}:${s34_port}
354
355 backend be37
356 option log-health-checks
357 log ${S37_addr}:${S37_port} daemon
358 server srv37 ${s37_addr}:${s37_port} check
359 server srv36 ${s36_addr}:${s36_port}
360
361 backend be39
362 option log-health-checks
363 log ${S39_addr}:${S39_port} daemon
364 server srv39 ${s39_addr}:${s39_port} check
365 server srv38 ${s38_addr}:${s38_port}
366
367 frontend fe1
368 bind "fd@${fe1}"
369 use_backend be1
370
371 frontend fe3
372 bind "fd@${fe3}"
373 use_backend be3
374
375 frontend fe5
376 bind "fd@${fe5}"
377 use_backend be5
378
379 frontend fe7
380 bind "fd@${fe7}"
381 use_backend be7
382
383 frontend fe9
384 bind "fd@${fe9}"
385 use_backend be9
386
387 frontend fe11
388 bind "fd@${fe11}"
389 use_backend be11
390
391 frontend fe13
392 bind "fd@${fe13}"
393 use_backend be13
394
395 frontend fe15
396 bind "fd@${fe15}"
397 use_backend be15
398
399 frontend fe17
400 bind "fd@${fe17}"
401 use_backend be17
402
403 frontend fe19
404 bind "fd@${fe19}"
405 use_backend be19
406
407 frontend fe21
408 bind "fd@${fe21}"
409 use_backend be21
410
411 frontend fe23
412 bind "fd@${fe23}"
413 use_backend be23
414
415 frontend fe25
416 bind "fd@${fe25}"
417 use_backend be25
418
419 frontend fe27
420 bind "fd@${fe27}"
421 use_backend be27
422
423 frontend fe29
424 bind "fd@${fe29}"
425 use_backend be29
426
427 frontend fe31
428 bind "fd@${fe31}"
429 use_backend be31
430
431 frontend fe33
432 bind "fd@${fe33}"
433 use_backend be33
434
435 frontend fe35
436 bind "fd@${fe35}"
437 use_backend be35
438
439 frontend fe37
440 bind "fd@${fe37}"
441 use_backend be37
442
443 frontend fe39
444 bind "fd@${fe39}"
445 use_backend be39
446} -start
447
448# This is a sort of synchronization: after having waited for all the syslog
449# servers we are sure that all the health-checks have succeeded.
450syslog S1 -wait
451syslog S3 -wait
452syslog S5 -wait
453syslog S7 -wait
454syslog S9 -wait
455syslog S11 -wait
456syslog S13 -wait
457syslog S15 -wait
458syslog S17 -wait
459syslog S19 -wait
460syslog S21 -wait
461syslog S23 -wait
462syslog S25 -wait
463syslog S27 -wait
464syslog S29 -wait
465syslog S31 -wait
466syslog S33 -wait
467syslog S35 -wait
468syslog S37 -wait
469syslog S39 -wait
470
471client c1 -connect ${h1_fe1_sock} {
472 txreq
473 rxresp
474 expect resp.status == 200
475} -start
476
477client c3 -connect ${h1_fe3_sock} {
478 txreq
479 rxresp
480 expect resp.status == 200
481} -start
482
483client c5 -connect ${h1_fe5_sock} {
484 txreq
485 rxresp
486 expect resp.status == 200
487} -start
488
489client c7 -connect ${h1_fe7_sock} {
490 txreq
491 rxresp
492 expect resp.status == 200
493} -start
494
495client c9 -connect ${h1_fe9_sock} {
496 txreq
497 rxresp
498 expect resp.status == 200
499} -start
500
501client c11 -connect ${h1_fe11_sock} {
502 txreq
503 rxresp
504 expect resp.status == 200
505} -start
506
507client c13 -connect ${h1_fe13_sock} {
508 txreq
509 rxresp
510 expect resp.status == 200
511} -start
512
513client c15 -connect ${h1_fe15_sock} {
514 txreq
515 rxresp
516 expect resp.status == 200
517} -start
518
519client c17 -connect ${h1_fe17_sock} {
520 txreq
521 rxresp
522 expect resp.status == 200
523} -start
524
525client c19 -connect ${h1_fe19_sock} {
526 txreq
527 rxresp
528 expect resp.status == 200
529} -start
530
531client c21 -connect ${h1_fe21_sock} {
532 txreq
533 rxresp
534 expect resp.status == 200
535} -start
536
537client c23 -connect ${h1_fe23_sock} {
538 txreq
539 rxresp
540 expect resp.status == 200
541} -start
542
543client c25 -connect ${h1_fe25_sock} {
544 txreq
545 rxresp
546 expect resp.status == 200
547} -start
548
549client c27 -connect ${h1_fe27_sock} {
550 txreq
551 rxresp
552 expect resp.status == 200
553} -start
554
555client c29 -connect ${h1_fe29_sock} {
556 txreq
557 rxresp
558 expect resp.status == 200
559} -start
560
561client c31 -connect ${h1_fe31_sock} {
562 txreq
563 rxresp
564 expect resp.status == 200
565} -start
566
567client c33 -connect ${h1_fe33_sock} {
568 txreq
569 rxresp
570 expect resp.status == 200
571} -start
572
573client c35 -connect ${h1_fe35_sock} {
574 txreq
575 rxresp
576 expect resp.status == 200
577} -start
578
579client c37 -connect ${h1_fe37_sock} {
580 txreq
581 rxresp
582 expect resp.status == 200
583} -start
584
585client c39 -connect ${h1_fe39_sock} {
586 txreq
587 rxresp
588 expect resp.status == 200
589} -start
590
591client c1 -wait
592client c3 -wait
593client c5 -wait
594client c7 -wait
595client c9 -wait
596client c11 -wait
597client c13 -wait
598client c15 -wait
599client c17 -wait
600client c19 -wait
601client c21 -wait
602client c23 -wait
603client c25 -wait
604client c27 -wait
605client c29 -wait
606client c31 -wait
607client c33 -wait
608client c35 -wait
609client c37 -wait
610client c39 -wait
611
612server s1 -wait
613server s3 -wait
614server s5 -wait
615server s7 -wait
616server s9 -wait
617server s11 -wait
618server s13 -wait
619server s15 -wait
620server s17 -wait
621server s19 -wait
622server s21 -wait
623server s23 -wait
624server s25 -wait
625server s27 -wait
626server s29 -wait
627server s31 -wait
628server s33 -wait
629server s35 -wait
630server s37 -wait
631server s39 -wait
632
633
634haproxy h1 -cli {
635 send "show servers state"
636 expect ~ "# be_id be_name srv_id srv_name srv_addr srv_op_state srv_admin_state srv_uweight srv_iweight srv_time_since_last_change srv_check_status srv_check_result srv_check_health srv_check_state srv_agent_state bk_f_forced_id srv_f_forced_id srv_fqdn srv_port srvrecord\n2 be1 1 srv1 ${s1_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s1_port} -\n2 be1 2 srv0 ${s0_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s0_port} -\n3 be3 1 srv3 ${s3_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s3_port} -\n3 be3 2 srv2 ${s2_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s2_port} -\n4 be5 1 srv5 ${s5_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s5_port} -\n4 be5 2 srv4 ${s4_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s4_port} -\n5 be7 1 srv7 ${s7_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s7_port} -\n5 be7 2 srv6 ${s6_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s6_port} -\n6 be9 1 srv9 ${s9_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s9_port} -\n6 be9 2 srv8 ${s8_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s8_port} -\n7 be11 1 srv11 ${s11_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s11_port} -\n7 be11 2 srv10 ${s10_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s10_port} -\n8 be13 1 srv13 ${s13_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s13_port} -\n8 be13 2 srv12 ${s12_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s12_port} -\n9 be15 1 srv15 ${s15_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s15_port} -\n9 be15 2 srv14 ${s14_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s14_port} -\n10 be17 1 srv17 ${s17_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s17_port} -\n10 be17 2 srv16 ${s16_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s16_port} -\n11 be19 1 srv19 ${s19_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s19_port} -\n11 be19 2 srv18 ${s18_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s18_port} -\n12 be21 1 srv21 ${s21_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s21_port} -\n12 be21 2 srv20 ${s20_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s20_port} -\n13 be23 1 srv23 ${s23_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s23_port} -\n13 be23 2 srv22 ${s22_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s22_port} -\n14 be25 1 srv25 ${s25_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s25_port} -\n14 be25 2 srv24 ${s24_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s24_port} -\n15 be27 1 srv27 ${s27_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s27_port} -\n15 be27 2 srv26 ${s26_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s26_port} -\n16 be29 1 srv29 ${s29_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s29_port} -\n16 be29 2 srv28 ${s28_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s28_port} -\n17 be31 1 srv31 ${s31_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s31_port} -\n17 be31 2 srv30 ${s30_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s30_port} -\n18 be33 1 srv33 ${s33_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s33_port} -\n18 be33 2 srv32 ${s32_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s32_port} -\n19 be35 1 srv35 ${s35_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s35_port} -\n19 be35 2 srv34 ${s34_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s34_port} -\n20 be37 1 srv37 ${s37_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s37_port} -\n20 be37 2 srv36 ${s36_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s36_port} -\n21 be39 1 srv39 ${s39_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s39_port} -\n21 be39 2 srv38 ${s38_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s38_port} -\n"
637}
638