haproxy/reg-tests/connection/proxy_protocol_send_unique_id.vtc
Tim Duesterhus cf6e0c8a83 MEDIUM: proxy_protocol: Support sending unique IDs using PPv2
This patch adds the `unique-id` option to `proxy-v2-options`. If this
option is set a unique ID will be generated based on the `unique-id-format`
while sending the proxy protocol v2 header and stored as the unique id for
the first stream of the connection.

This feature is meant to be used in `tcp` mode. It works on HTTP mode, but
might result in inconsistent unique IDs for the first request on a keep-alive
connection, because the unique ID for the first stream is generated earlier
than the others.

Now that we can send unique IDs in `tcp` mode the `%ID` log variable is made
available in TCP mode.
2020-03-13 17:26:43 +01:00

43 lines
1.2 KiB
Plaintext

varnishtest "Check that the unique ID TLV is properly sent"
#REQUIRE_VERSION=2.2
feature ignore_unknown_macro
haproxy h1 -conf {
defaults
mode http
log global
unique-id-format %{+X}o\ TEST-%[req.hdr(in)]
listen sender
bind "fd@${feS}"
unique-id-header unique_id
server example ${h1_feR_addr}:${h1_feR_port} send-proxy-v2 proxy-v2-options unique-id
listen receiver
bind "fd@${feR}" accept-proxy
http-request set-var(txn.http_unique_id) req.hdr(unique_id)
http-request set-var(txn.proxy_unique_id) fc_pp_unique_id
http-after-response set-header http_unique_id %[var(txn.http_unique_id)]
http-after-response set-header proxy_unique_id %[var(txn.proxy_unique_id)]
http-request return status 200
} -start
# Validate that a correct header passes
client c1 -connect ${h1_feS_sock} {
txreq -url "/" \
-hdr "in: foo"
rxresp
expect resp.http.http_unique_id == "TEST-foo"
expect resp.http.proxy_unique_id == "TEST-foo"
txreq -url "/" \
-hdr "in: bar"
rxresp
expect resp.http.http_unique_id == "TEST-bar"
expect resp.http.proxy_unique_id == "TEST-foo"
} -run