blob: 1180c3de6b7f889f239b3ab4b487533f2c88f395 [file] [log] [blame]
Christopher Fauletaec7f762020-04-22 15:16:58 +02001varnishtest "Health-checks: some http-check tests"
2feature ignore_unknown_macro
3#REQUIRE_VERSION=2.2
4#REGTEST_TYPE=slow
5# This script tests HTTP health-checks.
6
7server s1 {
8 rxreq
9 expect req.method == OPTIONS
10 expect req.url == /
11 expect req.proto == HTTP/1.0
12 txresp
13} -start
14
15server s2 {
16 rxreq
17 expect req.method == GET
18 expect req.url == /status
19 expect req.proto == HTTP/1.1
20 txresp
21} -start
22
23server s3 {
24 rxreq
25 expect req.method == GET
26 expect req.url == /status
27 expect req.proto == HTTP/1.1
28 txresp
29} -start
30
31server s4 {
32 rxreq
33 expect req.method == GET
34 expect req.url == /req1
35 expect req.proto == HTTP/1.1
36 expect req.http.x-test == "server=srv"
37 expect req.http.x-haproxy-server-state ~ "UP.+name=be4/srv"
38 expect req.bodylen == 0
39 txresp
40
41 accept
42 rxreq
43 expect req.method == GET
44 expect req.url == /req2
45 expect req.proto == HTTP/1.1
46 expect req.http.x-test == "server="
47 expect req.http.x-haproxy-server-state ~ "UP.+name=be4/srv"
48 expect req.http.content-length == 17
49 expect req.bodylen == 17
50 expect req.body == "health-check body"
51 txresp
52
53 accept
54 rxreq
55 expect req.method == GET
56 expect req.url == /req3
57 expect req.proto == HTTP/1.0
58 expect req.http.x-test == <undef>
59 expect req.http.x-haproxy-server-state ~ "UP.+name=be4/srv"
60 expect req.bodylen == 0
61 txresp
62
Christopher Faulet7c95f5f2020-05-06 15:06:34 +020063 accept
64 rxreq
65 expect req.method == GET
66 expect req.url == /
67 expect req.proto == HTTP/1.0
68 expect req.http.x-test == <undef>
69 expect req.http.x-haproxy-server-state ~ "UP.+name=be4/srv"
Christopher Faulet574e7bd2020-05-06 15:38:58 +020070 expect req.bodylen == 23
71 expect req.body == "health-check on be4-srv"
Christopher Faulet7c95f5f2020-05-06 15:06:34 +020072 txresp
73
Christopher Fauletaec7f762020-04-22 15:16:58 +020074} -start
75
76syslog S1 -level notice {
77 recv
Christopher Fauletaec7f762020-04-22 15:16:58 +020078 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be[0-9]/srv succeeded.*code: 200"
79 recv
80 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be[0-9]/srv succeeded.*code: 200"
81 recv
82 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be[0-9]/srv succeeded.*code: 200"
83 recv
84 expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be[0-9]/srv succeeded.*code: 200"
85} -start
86
87haproxy h1 -conf {
88 defaults
89 mode http
90 timeout client 1s
91 timeout server 1s
92 timeout connect 100ms
93 option log-health-checks
94
95 backend be1
96 log ${S1_addr}:${S1_port} len 2048 local0
97 option httpchk
98 server srv ${s1_addr}:${s1_port} check inter 100ms rise 1 fall 1
99
100 backend be2
101 log ${S1_addr}:${S1_port} len 2048 local0
102 option httpchk GET /status HTTP/1.1
103 server srv ${s2_addr}:${s2_port} check inter 100ms rise 1 fall 1
104
105 backend be3
106 log ${S1_addr}:${S1_port} len 2048 local0
107 option httpchk
Christopher Faulet907701b2020-04-28 09:37:00 +0200108 http-check send meth GET uri /status ver HTTP/1.1
Christopher Fauletaec7f762020-04-22 15:16:58 +0200109 server srv ${s3_addr}:${s3_port} check inter 100ms rise 1 fall 1
110
111 backend be4
112 mode tcp
113 log ${S1_addr}:${S1_port} len 2048 local0
114 option httpchk
115 http-check send-state
116 http-check connect addr ${s4_addr}:${s4_port}
117 http-check set-var(check.server) "str(srv)"
Christopher Faulet7c95f5f2020-05-06 15:06:34 +0200118 http-check set-var(check.path) "str(/req1)"
119 http-check send meth GET uri-lf "%[var(check.path)]" ver HTTP/1.1 hdr x-test "server=%[var(check.server)]"
Christopher Fauletaec7f762020-04-22 15:16:58 +0200120 http-check expect status 200
121 http-check connect addr ${s4_addr} port ${s4_port}
122 http-check unset-var(check.server)
Christopher Faulet7c95f5f2020-05-06 15:06:34 +0200123 http-check set-var(check.path) "str(/req2)"
124 http-check send meth GET uri-lf "%[var(check.path)]" ver HTTP/1.1 hdr x-test "server=%[var(check.server)]" body "health-check body"
125 http-check expect rstatus "^2[0-9]{2}"
126 http-check connect addr ${s4_addr} port ${s4_port}
127 http-check set-var(check.path) "str(/req3)"
128 http-check send meth GET uri-lf "%[var(check.path)]"
Christopher Fauletaec7f762020-04-22 15:16:58 +0200129 http-check expect rstatus "^2[0-9]{2}"
130 http-check connect addr ${s4_addr} port ${s4_port}
Christopher Faulet7c95f5f2020-05-06 15:06:34 +0200131 http-check unset-var(check.path)
Christopher Faulet574e7bd2020-05-06 15:38:58 +0200132 http-check send meth GET uri-lf "%[var(check.path)]" body-lf "health-check on %[be_name]-%[srv_name]"
Christopher Fauletaec7f762020-04-22 15:16:58 +0200133 ## implicit expect rule
134 server srv ${s1_addr}:${s1_port} check inter 100ms rise 1 fall 1
135
136} -start
137
138syslog S1 -wait