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
|
varnishtest "Add/Delete server via cli with check support"
feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(2.5-dev3)'"
feature cmd "$HAPROXY_PROGRAM -cc 'feature(OPENSSL)'"
feature ignore_unknown_macro
barrier b1 cond 2 -cyclic
barrier b2 cond 2 -cyclic
server s1 {
rxreq
txresp
} -start
server s2 {
} -start
# used for agent checks
server s3 {
recv 5
send "ready up\n"
barrier b2 sync
} -start
syslog S1 -level notice {
recv
expect ~ ".*Server be1/s1 is UP/READY \\(leaving forced maintenance\\)."
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be1/s1 succeeded.+reason: Layer7 check passed, code: 200, check duration: [[:digit:]]+ms.+status: 1/1 UP"
barrier b1 sync
recv
expect ~ ".*Server be1/s2 is UP/READY \\(leaving forced maintenance\\)."
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be1/s2 failed.+reason: Layer7 timeout, check duration: [[:digit:]]+ms.+status: 0/1 DOWN"
barrier b1 sync
recv
expect ~ ".*Server be1/s2 was DOWN and now enters maintenance."
recv
expect ~ ".*Server be1/s3 is UP/READY \\(leaving forced maintenance\\)."
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Agent check for server be1/s3 succeeded.+reason: Layer7 check passed, code: 0, info: \"via agent : up\", check duration: [[:digit:]]+ms.+status: 1/1 UP"
barrier b1 sync
barrier b2 sync
recv
expect ~ ".*Server be1/s4 is UP/READY \\(leaving forced maintenance\\)."
recv
expect ~ "Health check for server be1/s4 failed"
barrier b1 sync
recv
expect ~ ".*Server be1/s5 is UP/READY \\(leaving forced maintenance\\)."
recv
expect ~ "Health check for server be1/s5 succeeded."
} -start
haproxy h1 -conf {
global
stats socket "${tmpdir}/h1/stats" level admin
defaults
timeout client 30s
timeout server 30s
timeout connect 30s
backend be1
option log-health-checks
option httpchk GET /
log ${S1_addr}:${S1_port} daemon
frontend fe-proxy
mode http
bind "fd@${hapsrv}" accept-proxy
http-request return status 200
} -start
# check on a functional server
haproxy h1 -cli {
send "add server be1/s1 ${s1_addr}:${s1_port} check inter 200ms rise 1 fall 1"
expect ~ "New server registered."
send "enable server be1/s1"
expect ~ ".*"
send "enable health be1/s1"
expect ~ ".*"
barrier b1 sync
send "disable server be1/s1"
expect ~ ".*"
send "del server be1/s1"
expect ~ "Server deleted."
}
server s2 -break
# check on a disabled server
haproxy h1 -cli {
send "add server be1/s2 ${s2_addr}:${s2_port} check inter 200ms rise 1 fall 1"
expect ~ "New server registered."
send "enable server be1/s2"
expect ~ ".*"
send "enable health be1/s2"
expect ~ ".*"
barrier b1 sync
send "disable server be1/s2"
expect ~ ".*"
send "del server be1/s2"
expect ~ "Server deleted."
}
# agent check
haproxy h1 -cli {
send "add server be1/s3 ${s1_addr}:${s1_port} agent-check agent-addr ${s3_addr} agent-port ${s3_port} agent-send 'hello' agent-inter 200ms rise 1 fall 1"
expect ~ "New server registered."
send "enable agent be1/s3"
expect ~ ".*"
barrier b1 sync
send "disable agent be1/s3; disable server be1/s3"
expect ~ ".*"
send "del server be1/s3"
expect ~ "Server deleted."
}
# check PROXY protocol interaction with checks
haproxy h1 -cli {
# no explicit check-send-proxy
# The health check should failed.
send "add server be1/s4 ${h1_hapsrv_addr}:${h1_hapsrv_port} send-proxy check rise 1 fall 1"
expect ~ "New server registered."
send "enable server be1/s4"
expect ~ ".*"
send "enable health be1/s4"
expect ~ ".*"
barrier b1 sync
# explicit check-send-proxy : health check should succeeded
send "add server be1/s5 ${h1_hapsrv_addr}:${h1_hapsrv_port} send-proxy check rise 1 fall 1 check-send-proxy"
expect ~ "New server registered."
send "enable server be1/s5"
expect ~ ".*"
send "enable health be1/s5"
expect ~ ".*"
}
syslog S1 -wait
|