| 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 |
| |
| 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 |