summaryrefslogtreecommitdiffstats
path: root/reg-tests/checks/40be_2srv_odd_health_checks.vtc
blob: cbd4fc00e6c9815904e9c10e82d77d1155445dd6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
varnishtest "Health-checks"
feature ignore_unknown_macro

#REQUIRE_VERSION=2.4
#EXCLUDE_TARGETS=freebsd,osx,generic
#REGTEST_TYPE=slow

# This script start 40 servers named s0 up to s39.
# For 0 <= i <= 19:
#   - s(i) and s(i+1) belong to backend be(2*i+1),
#   - fe(2*i+1) backend is configured to used be(2*i+1) backend.
#   - only s(2*i+1) servers have health-checks enabled,
#   - we start 20 clients named s(2*i+1) which connect to fe(2*i+1) frontend,
#   - so that to ensure that health-checks do not consume any connection
#     (any varnishtest server without -repeat <n> with n > 1 accepts
#     only one connection).
#   - we take care of sending the clients to the unchecked servers using the
#     "first" lb algo so that servers always receive a valid request

syslog S1 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be1/srv1 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S3 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be3/srv3 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S5 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be5/srv5 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S7 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be7/srv7 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S9 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be9/srv9 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S11 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be11/srv11 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S13 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be13/srv13 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S15 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be15/srv15 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S17 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be17/srv17 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S19 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be19/srv19 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S21 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be21/srv21 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S23 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be23/srv23 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S25 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be25/srv25 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S27 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be27/srv27 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S29 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be29/srv29 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S31 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be31/srv31 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S33 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be33/srv33 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S35 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be35/srv35 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S37 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be37/srv37 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

syslog S39 -level notice {
    recv
    expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be39/srv39 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start

server s0 {
    rxreq
    txresp
} -start

server s2 {
    rxreq
    txresp
} -start

server s4 {
    rxreq
    txresp
} -start

server s6 {
    rxreq
    txresp
} -start

server s8 {
    rxreq
    txresp
} -start

server s10 {
    rxreq
    txresp
} -start

server s12 {
    rxreq
    txresp
} -start

server s14 {
    rxreq
    txresp
} -start

server s16 {
    rxreq
    txresp
} -start

server s18 {
    rxreq
    txresp
} -start

server s20 {
    rxreq
    txresp
} -start

server s22 {
    rxreq
    txresp
} -start

server s24 {
    rxreq
    txresp
} -start

server s26 {
    rxreq
    txresp
} -start

server s28 {
    rxreq
    txresp
} -start

server s30 {
    rxreq
    txresp
} -start

server s32 {
    rxreq
    txresp
} -start

server s34 {
    rxreq
    txresp
} -start

server s36 {
    rxreq
    txresp
} -start

server s38 {
    rxreq
    txresp
} -start

server s1 {} -start
server s3 {} -start
server s5 {} -start
server s7 {} -start
server s9 {} -start
server s11 {} -start
server s13 {} -start
server s15 {} -start
server s17 {} -start
server s19 {} -start
server s21 {} -start
server s23 {} -start
server s25 {} -start
server s27 {} -start
server s29 {} -start
server s31 {} -start
server s33 {} -start
server s35 {} -start
server s37 {} -start
server s39 {} -start

haproxy h1 -conf {
    defaults
        timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
        timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
        timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
        balance first
        default-server no-check inter 20ms downinter 1s rise 1 fall 1

    backend be1
        option log-health-checks
        log ${S1_addr}:${S1_port} daemon
        server srv0 ${s0_addr}:${s0_port}
        server srv1 ${s1_addr}:${s1_port} check

    backend be3
        option log-health-checks
        log ${S3_addr}:${S3_port} daemon
        server srv2 ${s2_addr}:${s2_port}
        server srv3 ${s3_addr}:${s3_port} check

    backend be5
        option log-health-checks
        log ${S5_addr}:${S5_port} daemon
        server srv4 ${s4_addr}:${s4_port}
        server srv5 ${s5_addr}:${s5_port} check

    backend be7
        option log-health-checks
        log ${S7_addr}:${S7_port} daemon
        server srv6 ${s6_addr}:${s6_port}
        server srv7 ${s7_addr}:${s7_port} check

    backend be9
        option log-health-checks
        log ${S9_addr}:${S9_port} daemon
        server srv8 ${s8_addr}:${s8_port}
        server srv9 ${s9_addr}:${s9_port} check

    backend be11
        option log-health-checks
        log ${S11_addr}:${S11_port} daemon
        server srv10 ${s10_addr}:${s10_port}
        server srv11 ${s11_addr}:${s11_port} check

    backend be13
        option log-health-checks
        log ${S13_addr}:${S13_port} daemon
        server srv12 ${s12_addr}:${s12_port}
        server srv13 ${s13_addr}:${s13_port} check

    backend be15
        option log-health-checks
        log ${S15_addr}:${S15_port} daemon
        server srv14 ${s14_addr}:${s14_port}
        server srv15 ${s15_addr}:${s15_port} check

    backend be17
        option log-health-checks
        log ${S17_addr}:${S17_port} daemon
        server srv16 ${s16_addr}:${s16_port}
        server srv17 ${s17_addr}:${s17_port} check

    backend be19
        option log-health-checks
        log ${S19_addr}:${S19_port} daemon
        server srv18 ${s18_addr}:${s18_port}
        server srv19 ${s19_addr}:${s19_port} check

    backend be21
        option log-health-checks
        log ${S21_addr}:${S21_port} daemon
        server srv20 ${s20_addr}:${s20_port}
        server srv21 ${s21_addr}:${s21_port} check

    backend be23
        option log-health-checks
        log ${S23_addr}:${S23_port} daemon
        server srv22 ${s22_addr}:${s22_port}
        server srv23 ${s23_addr}:${s23_port} check

    backend be25
        option log-health-checks
        log ${S25_addr}:${S25_port} daemon
        server srv24 ${s24_addr}:${s24_port}
        server srv25 ${s25_addr}:${s25_port} check

    backend be27
        option log-health-checks
        log ${S27_addr}:${S27_port} daemon
        server srv26 ${s26_addr}:${s26_port}
        server srv27 ${s27_addr}:${s27_port} check

    backend be29
        option log-health-checks
        log ${S29_addr}:${S29_port} daemon
        server srv28 ${s28_addr}:${s28_port}
        server srv29 ${s29_addr}:${s29_port} check

    backend be31
        option log-health-checks
        log ${S31_addr}:${S31_port} daemon
        server srv30 ${s30_addr}:${s30_port}
        server srv31 ${s31_addr}:${s31_port} check

    backend be33
        option log-health-checks
        log ${S33_addr}:${S33_port} daemon
        server srv32 ${s32_addr}:${s32_port}
        server srv33 ${s33_addr}:${s33_port} check

    backend be35
        option log-health-checks
        log ${S35_addr}:${S35_port} daemon
        server srv34 ${s34_addr}:${s34_port}
        server srv35 ${s35_addr}:${s35_port} check

    backend be37
        option log-health-checks
        log ${S37_addr}:${S37_port} daemon
        server srv36 ${s36_addr}:${s36_port}
        server srv37 ${s37_addr}:${s37_port} check

    backend be39
        option log-health-checks
        log ${S39_addr}:${S39_port} daemon
        server srv38 ${s38_addr}:${s38_port}
        server srv39 ${s39_addr}:${s39_port} check

    frontend fe1
        bind "fd@${fe1}"
        use_backend be1

    frontend fe3
        bind "fd@${fe3}"
        use_backend be3

    frontend fe5
        bind "fd@${fe5}"
        use_backend be5

    frontend fe7
        bind "fd@${fe7}"
        use_backend be7

    frontend fe9
        bind "fd@${fe9}"
        use_backend be9

    frontend fe11
        bind "fd@${fe11}"
        use_backend be11

    frontend fe13
        bind "fd@${fe13}"
        use_backend be13

    frontend fe15
        bind "fd@${fe15}"
        use_backend be15

    frontend fe17
        bind "fd@${fe17}"
        use_backend be17

    frontend fe19
        bind "fd@${fe19}"
        use_backend be19

    frontend fe21
        bind "fd@${fe21}"
        use_backend be21

    frontend fe23
        bind "fd@${fe23}"
        use_backend be23

    frontend fe25
        bind "fd@${fe25}"
        use_backend be25

    frontend fe27
        bind "fd@${fe27}"
        use_backend be27

    frontend fe29
        bind "fd@${fe29}"
        use_backend be29

    frontend fe31
        bind "fd@${fe31}"
        use_backend be31

    frontend fe33
        bind "fd@${fe33}"
        use_backend be33

    frontend fe35
        bind "fd@${fe35}"
        use_backend be35

    frontend fe37
        bind "fd@${fe37}"
        use_backend be37

    frontend fe39
        bind "fd@${fe39}"
        use_backend be39
} -start

# This is a sort of synchronization: after having waited for all the syslog
# servers we are sure that all the health-checks have succeeded.
syslog S1 -wait
syslog S3 -wait
syslog S5 -wait
syslog S7 -wait
syslog S9 -wait
syslog S11 -wait
syslog S13 -wait
syslog S15 -wait
syslog S17 -wait
syslog S19 -wait
syslog S21 -wait
syslog S23 -wait
syslog S25 -wait
syslog S27 -wait
syslog S29 -wait
syslog S31 -wait
syslog S33 -wait
syslog S35 -wait
syslog S37 -wait
syslog S39 -wait

client c1 -connect ${h1_fe1_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c3 -connect ${h1_fe3_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c5 -connect ${h1_fe5_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c7 -connect ${h1_fe7_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c9 -connect ${h1_fe9_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c11 -connect ${h1_fe11_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c13 -connect ${h1_fe13_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c15 -connect ${h1_fe15_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c17 -connect ${h1_fe17_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c19 -connect ${h1_fe19_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c21 -connect ${h1_fe21_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c23 -connect ${h1_fe23_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c25 -connect ${h1_fe25_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c27 -connect ${h1_fe27_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c29 -connect ${h1_fe29_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c31 -connect ${h1_fe31_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c33 -connect ${h1_fe33_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c35 -connect ${h1_fe35_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c37 -connect ${h1_fe37_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c39 -connect ${h1_fe39_sock} {
    txreq
    rxresp
    expect resp.status == 200
} -start

client c1 -wait
client c3 -wait
client c5 -wait
client c7 -wait
client c9 -wait
client c11 -wait
client c13 -wait
client c15 -wait
client c17 -wait
client c19 -wait
client c21 -wait
client c23 -wait
client c25 -wait
client c27 -wait
client c29 -wait
client c31 -wait
client c33 -wait
client c35 -wait
client c37 -wait
client c39 -wait

server s0 -wait
server s2 -wait
server s4 -wait
server s6 -wait
server s8 -wait
server s10 -wait
server s12 -wait
server s14 -wait
server s16 -wait
server s18 -wait
server s20 -wait
server s22 -wait
server s24 -wait
server s26 -wait
server s28 -wait
server s30 -wait
server s32 -wait
server s34 -wait
server s36 -wait
server s38 -wait


haproxy h1 -cli {
    send "show servers state"
    # output produced using the command below (warning, a bug inserts a "be0" every other line:
    # for ((i=0;i<40;i++)); do id=$((i/2+2)); be=$((i|1)); si=$(((i&1)+1));
    #   if ((i&1)); then chk="6 ([[:digit:]]+ ){3}"; else chk="1 0 1 0 ";fi;
    #   printf "%d be%d %d srv%d \${s%d_addr} 2 0 1 1 [[:digit:]]+ %s0 0 0 - \${s%d_port} - 0 0 - - 0\n" "$id" "$be" "$si" "$i" "$i" "$chk" "$i" "$i" ;
    # done|grep -v be0|sed 's,$,\\n,'| tr -d '\n'
    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 srv_use_ssl srv_check_port srv_check_addr srv_agent_addr srv_agent_port\n2 be1 1 srv0 ${s0_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s0_port} - 0 0 - - 0\n2 be1 2 srv1 ${s1_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s1_port} - 0 0 - - 0\n3 be3 1 srv2 ${s2_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s2_port} - 0 0 - - 0\n3 be3 2 srv3 ${s3_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s3_port} - 0 0 - - 0\n4 be5 1 srv4 ${s4_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s4_port} - 0 0 - - 0\n4 be5 2 srv5 ${s5_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s5_port} - 0 0 - - 0\n5 be7 1 srv6 ${s6_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s6_port} - 0 0 - - 0\n5 be7 2 srv7 ${s7_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s7_port} - 0 0 - - 0\n6 be9 1 srv8 ${s8_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s8_port} - 0 0 - - 0\n6 be9 2 srv9 ${s9_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s9_port} - 0 0 - - 0\n7 be11 1 srv10 ${s10_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s10_port} - 0 0 - - 0\n7 be11 2 srv11 ${s11_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s11_port} - 0 0 - - 0\n8 be13 1 srv12 ${s12_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s12_port} - 0 0 - - 0\n8 be13 2 srv13 ${s13_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s13_port} - 0 0 - - 0\n9 be15 1 srv14 ${s14_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s14_port} - 0 0 - - 0\n9 be15 2 srv15 ${s15_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s15_port} - 0 0 - - 0\n10 be17 1 srv16 ${s16_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s16_port} - 0 0 - - 0\n10 be17 2 srv17 ${s17_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s17_port} - 0 0 - - 0\n11 be19 1 srv18 ${s18_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s18_port} - 0 0 - - 0\n11 be19 2 srv19 ${s19_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s19_port} - 0 0 - - 0\n12 be21 1 srv20 ${s20_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s20_port} - 0 0 - - 0\n12 be21 2 srv21 ${s21_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s21_port} - 0 0 - - 0\n13 be23 1 srv22 ${s22_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s22_port} - 0 0 - - 0\n13 be23 2 srv23 ${s23_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s23_port} - 0 0 - - 0\n14 be25 1 srv24 ${s24_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s24_port} - 0 0 - - 0\n14 be25 2 srv25 ${s25_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s25_port} - 0 0 - - 0\n15 be27 1 srv26 ${s26_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s26_port} - 0 0 - - 0\n15 be27 2 srv27 ${s27_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s27_port} - 0 0 - - 0\n16 be29 1 srv28 ${s28_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s28_port} - 0 0 - - 0\n16 be29 2 srv29 ${s29_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s29_port} - 0 0 - - 0\n17 be31 1 srv30 ${s30_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s30_port} - 0 0 - - 0\n17 be31 2 srv31 ${s31_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s31_port} - 0 0 - - 0\n18 be33 1 srv32 ${s32_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s32_port} - 0 0 - - 0\n18 be33 2 srv33 ${s33_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s33_port} - 0 0 - - 0\n19 be35 1 srv34 ${s34_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s34_port} - 0 0 - - 0\n19 be35 2 srv35 ${s35_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s35_port} - 0 0 - - 0\n20 be37 1 srv36 ${s36_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s36_port} - 0 0 - - 0\n20 be37 2 srv37 ${s37_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s37_port} - 0 0 - - 0\n21 be39 1 srv38 ${s38_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s38_port} - 0 0 - - 0\n21 be39 2 srv39 ${s39_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s39_port} - 0 0 - - 0\n"
}