haproxy/reg-tests/connection/reverse_server.vtc
Amaury Denoyelle 86e5c607d1 MINOR: rhttp: mark reverse HTTP as experimental
Mark the reverse HTTP feature as experimental. This will allow to adjust
if needed the configuration mechanism with future developments without
maintaining retro-compatibility.

Concretely, each config directives linked to it now requires to specify
first global expose-experimental-directives before. This is the case for
the following directives :
- rhttp@ prefix uses in bind and server lines
- nbconn bind keyword
- attach-srv tcp rule

Each documentation section refering to these keywords are updated to
highlight this new requirement.

Note that this commit has duplicated on several places the code from the
global function check_kw_experimental(). This is because the latter only
work with cfg_keyword type. This is not adapted with bind_kw or
action_kw types. This should be improve in a future patch.
2023-11-30 15:04:27 +01:00

70 lines
1.3 KiB
Plaintext

varnishtest "Reverse server test"
feature ignore_unknown_macro
#REQUIRE_VERSION=2.9
barrier b1 cond 2
haproxy h_edge -conf {
global
expose-experimental-directives
defaults
log global
timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
mode http
frontend pub
bind "fd@${pub}"
use_backend be-reverse
backend be-reverse
server dev rhttp@
frontend priv
bind "fd@${priv}" proto h2
tcp-request session attach-srv be-reverse/dev
} -start
# Run a client through public endpoint
# Reverse server has no connection available thus a 503 is expected
client c1 -connect ${h_edge_pub_sock} {
txreq -url "/"
rxresp
expect resp.status == 503
} -run
# Run a client through private endpoint
# Connection will be attached to the reverse server
client c_dev -connect ${h_edge_priv_sock} {
txpri
stream 0 {
txsettings
rxsettings
txsettings -ack
rxsettings
expect settings.ack == true
} -run
barrier b1 sync
stream 1 {
rxhdrs
} -run
sendhex "000004 01 05 00000001 88 5c 01 30"
} -start
# Wait for dev client to be ready to process connection
barrier b1 sync
# Run a client through public endpoint
# Reverse server should now be able to proceed with the request
client c2 -connect ${h_edge_pub_sock} {
txreq -url "/"
rxresp
expect resp.status == 200
} -run