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