mirror of
				https://git.haproxy.org/git/haproxy.git/
				synced 2025-11-04 02:21:03 +01:00 
			
		
		
		
	When threads are enabled and running on a machine with multiple CCX or multiple nodes, thread groups are now enabled since 3.3-dev2, causing load-balancing algorithms to randomly fail due to incoming connections spreading over multiple groups and using different load balancing indexes. Let's just force "thread-groups 1" into all configs when threads are enabled to avoid this.
		
			
				
	
	
		
			131 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
varnishtest "scheme based normalization (rfc3982 6.3.2)"
 | 
						|
 | 
						|
feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(2.5-dev0)'"
 | 
						|
feature ignore_unknown_macro
 | 
						|
 | 
						|
syslog S1 -level info {
 | 
						|
	recv
 | 
						|
	expect ~ "^.* uri: GET http://hostname/ HTTP/2.0; host: {hostname}$"
 | 
						|
 | 
						|
	recv
 | 
						|
	expect ~ "^.* uri: GET http://hostname:8080/ HTTP/2.0; host: {hostname:8080}$"
 | 
						|
 | 
						|
	recv
 | 
						|
	expect ~ "^.* uri: GET https://hostname/ HTTP/2.0; host: {hostname}$"
 | 
						|
 | 
						|
	recv
 | 
						|
	expect ~ "^.* uri: GET https://hostname:80/ HTTP/2.0; host: {hostname:80}$"
 | 
						|
} -start
 | 
						|
 | 
						|
haproxy h1 -conf {
 | 
						|
    global
 | 
						|
    .if feature(THREAD)
 | 
						|
        thread-groups 1
 | 
						|
    .endif
 | 
						|
 | 
						|
	defaults
 | 
						|
		mode http
 | 
						|
		timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
 | 
						|
		timeout client  "${HAPROXY_TEST_TIMEOUT-5s}"
 | 
						|
		timeout server  "${HAPROXY_TEST_TIMEOUT-5s}"
 | 
						|
 | 
						|
	frontend fe
 | 
						|
		bind "fd@${fe}" proto h2
 | 
						|
 | 
						|
		http-request capture req.hdr(host) len 512
 | 
						|
		log-format "uri: %r; host: %hr"
 | 
						|
		log ${S1_addr}:${S1_port} len 2048 local0 debug err
 | 
						|
 | 
						|
		http-request return status 200
 | 
						|
} -start
 | 
						|
 | 
						|
# default port 80 with http scheme => should be normalized
 | 
						|
client c1 -connect ${h1_fe_sock} {
 | 
						|
	txpri
 | 
						|
	stream 0 {
 | 
						|
		txsettings
 | 
						|
		rxsettings
 | 
						|
		txsettings -ack
 | 
						|
		rxsettings
 | 
						|
		expect settings.ack == true
 | 
						|
	} -run
 | 
						|
 | 
						|
	stream 1 {
 | 
						|
		txreq \
 | 
						|
		  -req "GET" \
 | 
						|
		  -scheme "http" \
 | 
						|
		  -url "/" \
 | 
						|
		  -hdr ":authority" "hostname:80"
 | 
						|
		rxhdrs
 | 
						|
		expect resp.status == 200
 | 
						|
	} -run
 | 
						|
} -run
 | 
						|
 | 
						|
# port 8080 with http scheme => no normalization
 | 
						|
client c2 -connect ${h1_fe_sock} {
 | 
						|
	txpri
 | 
						|
	stream 0 {
 | 
						|
		txsettings
 | 
						|
		rxsettings
 | 
						|
		txsettings -ack
 | 
						|
		rxsettings
 | 
						|
		expect settings.ack == true
 | 
						|
	} -run
 | 
						|
 | 
						|
	stream 1 {
 | 
						|
		txreq \
 | 
						|
		  -req "GET" \
 | 
						|
		  -scheme "http" \
 | 
						|
		  -url "/" \
 | 
						|
		  -hdr ":authority" "hostname:8080"
 | 
						|
		rxhdrs
 | 
						|
		expect resp.status == 200
 | 
						|
	} -run
 | 
						|
} -run
 | 
						|
 | 
						|
# default port 443 with https scheme => should be normalized
 | 
						|
client c3 -connect ${h1_fe_sock} {
 | 
						|
	txpri
 | 
						|
	stream 0 {
 | 
						|
		txsettings
 | 
						|
		rxsettings
 | 
						|
		txsettings -ack
 | 
						|
		rxsettings
 | 
						|
		expect settings.ack == true
 | 
						|
	} -run
 | 
						|
 | 
						|
	stream 1 {
 | 
						|
		txreq \
 | 
						|
		  -req "GET" \
 | 
						|
		  -scheme "https" \
 | 
						|
		  -url "/" \
 | 
						|
		  -hdr ":authority" "hostname:443"
 | 
						|
		rxhdrs
 | 
						|
		expect resp.status == 200
 | 
						|
	} -run
 | 
						|
} -run
 | 
						|
 | 
						|
# port 80 with https scheme => no normalization
 | 
						|
client c4 -connect ${h1_fe_sock} {
 | 
						|
	txpri
 | 
						|
	stream 0 {
 | 
						|
		txsettings
 | 
						|
		rxsettings
 | 
						|
		txsettings -ack
 | 
						|
		rxsettings
 | 
						|
		expect settings.ack == true
 | 
						|
	} -run
 | 
						|
 | 
						|
	stream 1 {
 | 
						|
		txreq \
 | 
						|
		  -req "GET" \
 | 
						|
		  -scheme "https" \
 | 
						|
		  -url "/" \
 | 
						|
		  -hdr ":authority" "hostname:80"
 | 
						|
		rxhdrs
 | 
						|
		expect resp.status == 200
 | 
						|
	} -run
 | 
						|
} -run
 | 
						|
 | 
						|
syslog S1 -wait
 |