mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-06 07:07:04 +02: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.
81 lines
2.6 KiB
Plaintext
81 lines
2.6 KiB
Plaintext
varnishtest "Test the custom errors for HTTP deny rules"
|
|
|
|
# This config tests the custom errors for HTTP deny rules.
|
|
|
|
feature ignore_unknown_macro
|
|
|
|
haproxy h1 -conf {
|
|
global
|
|
.if feature(THREAD)
|
|
thread-groups 1
|
|
.endif
|
|
|
|
http-errors errors-1
|
|
errorfile 400 ${testdir}/errors/400-1.http
|
|
errorfile 403 ${testdir}/errors/403-1.http
|
|
errorfile 404 ${testdir}/errors/404-1.http
|
|
errorfile 500 /dev/null
|
|
|
|
defaults
|
|
mode http
|
|
timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
|
|
timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
|
|
timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
|
|
|
|
frontend fe1
|
|
bind "fd@${fe1}"
|
|
http-request deny deny_status 400 if { path /400 }
|
|
http-request deny deny_status 403 errorfile ${testdir}/errors/403.http if { path /403 }
|
|
http-request deny deny_status 404 errorfiles errors-1 if { path /404 }
|
|
http-request deny deny_status 500 errorfile /dev/null if { path /500-1 }
|
|
http-request deny deny_status 500 errorfiles errors-1 if { path /500-2 }
|
|
|
|
http-request deny status 500 hdr x-err-info "path=%[path]" content-type "text/plain" string "Internal Error" if { path /int-err }
|
|
http-request deny status 403 hdr x-err-info "path=%[path]" content-type "text/plain" lf-file ${testdir}/errors/lf-403.txt if { path /forbidden }
|
|
|
|
} -start
|
|
|
|
client c1r1 -connect ${h1_fe1_sock} {
|
|
txreq -req GET -url /400
|
|
rxresp
|
|
expect resp.status == 400
|
|
expect resp.http.x-err-type == <undef>
|
|
} -run
|
|
client c1r2 -connect ${h1_fe1_sock} {
|
|
txreq -req GET -url /403
|
|
rxresp
|
|
expect resp.status == 403
|
|
expect resp.http.x-err-type == "default"
|
|
} -run
|
|
client c1r3 -connect ${h1_fe1_sock} {
|
|
txreq -req GET -url /404
|
|
rxresp
|
|
expect resp.status == 404
|
|
expect resp.http.x-err-type == "errors-1"
|
|
} -run
|
|
client c1r4 -connect ${h1_fe1_sock} {
|
|
txreq -req GET -url /500-1
|
|
expect_close
|
|
} -run
|
|
client c1r5 -connect ${h1_fe1_sock} {
|
|
txreq -req GET -url /500-2
|
|
expect_close
|
|
} -run
|
|
client c1r6 -connect ${h1_fe1_sock} {
|
|
txreq -req GET -url /int-err
|
|
rxresp
|
|
expect resp.status == 500
|
|
expect resp.http.x-err-info == "path=/int-err"
|
|
expect resp.http.content-type == "text/plain"
|
|
expect resp.http.content-length == 14
|
|
expect resp.body == "Internal Error"
|
|
} -run
|
|
client c1r7 -connect ${h1_fe1_sock} {
|
|
txreq -req GET -url /forbidden
|
|
rxresp
|
|
expect resp.status == 403
|
|
expect resp.http.x-err-info == "path=/forbidden"
|
|
expect resp.http.content-type == "text/plain"
|
|
expect resp.body == "The path \"/forbidden\" is forbidden\n"
|
|
} -run
|