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