mirror of
				https://git.haproxy.org/git/haproxy.git/
				synced 2025-10-31 16:41:01 +01:00 
			
		
		
		
	Dynamic servers feature is now judged to be stable enough. Remove the experimental-mode requirement for "add/del server" commands. This should facilitate dynamic servers adoption.
		
			
				
	
	
		
			162 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 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
 |