mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-12 14:35:14 +00:00
7a1ec235cd
This new fetcher can be used to extract the list of cookie names from Cookie request header or from Set-Cookie response header depending on the stream direction. There is an optional argument that can be used as the delimiter (which is assumed to be the first character of the argument) between cookie names. The default delimiter is comma (,). Note that we will treat the Cookie request header as a semi-colon separated list of cookies and each Set-Cookie response header as a single cookie and extract the cookie names accordingly.
133 lines
3.0 KiB
Plaintext
133 lines
3.0 KiB
Plaintext
varnishtest "cook sample fetch Test"
|
|
|
|
feature ignore_unknown_macro
|
|
|
|
# TEST - 1
|
|
# Cookie from request
|
|
server s1 {
|
|
rxreq
|
|
txresp
|
|
} -start
|
|
|
|
haproxy h1 -conf {
|
|
defaults
|
|
mode http
|
|
|
|
frontend fe
|
|
bind "fd@${fe}"
|
|
http-request set-var(txn.count) req.cook_cnt()
|
|
http-request set-var(txn.val) req.cook_val()
|
|
http-request set-var(txn.val_cook2) req.cook_val(cook2)
|
|
http-request set-var(txn.cook_names) req.cook_names
|
|
http-response set-header count %[var(txn.count)]
|
|
http-response set-header val %[var(txn.val)]
|
|
http-response set-header val_cook2 %[var(txn.val_cook2)]
|
|
http-response set-header cook_names %[var(txn.cook_names)]
|
|
|
|
default_backend be
|
|
|
|
backend be
|
|
server srv1 ${s1_addr}:${s1_port}
|
|
} -start
|
|
|
|
client c1 -connect ${h1_fe_sock} {
|
|
txreq -url "/" \
|
|
-hdr "cookie: cook1=0; cook2=123; cook3=22"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.count == "3"
|
|
expect resp.http.val == "0"
|
|
expect resp.http.val_cook2 == "123"
|
|
expect resp.http.cook_names == "cook1,cook2,cook3"
|
|
} -run
|
|
|
|
# TEST - 2
|
|
# Set-Cookie from response
|
|
server s2 {
|
|
rxreq
|
|
txresp -hdr "Set-Cookie: cook1=0; cook2=123; cook3=22"
|
|
} -start
|
|
|
|
haproxy h2 -conf {
|
|
defaults
|
|
mode http
|
|
|
|
frontend fe
|
|
bind "fd@${fe}"
|
|
http-response set-var(txn.cook_names) res.cook_names
|
|
http-response set-header cook_names %[var(txn.cook_names)]
|
|
|
|
default_backend be
|
|
|
|
backend be
|
|
server srv2 ${s2_addr}:${s2_port}
|
|
} -start
|
|
|
|
client c2 -connect ${h2_fe_sock} {
|
|
txreq -url "/"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.cook_names == "cook1"
|
|
} -run
|
|
|
|
# TEST - 3
|
|
# Multiple Cookie headers from request
|
|
server s3 {
|
|
rxreq
|
|
txresp
|
|
} -start
|
|
|
|
haproxy h3 -conf {
|
|
defaults
|
|
mode http
|
|
|
|
frontend fe
|
|
bind "fd@${fe}"
|
|
http-request set-var(txn.cook_names) req.cook_names
|
|
http-response set-header cook_names %[var(txn.cook_names)]
|
|
|
|
default_backend be
|
|
|
|
backend be
|
|
server srv3 ${s3_addr}:${s3_port}
|
|
} -start
|
|
|
|
client c3 -connect ${h3_fe_sock} {
|
|
txreq -url "/" \
|
|
-hdr "cookie: cook1=0; cook2=123; cook3=22" \
|
|
-hdr "cookie: cook4=1; cook5=2; cook6=3"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.cook_names == "cook1,cook2,cook3,cook4,cook5,cook6"
|
|
} -run
|
|
|
|
# TEST - 4
|
|
# Multiple Set-Cookie headers from response
|
|
server s4 {
|
|
rxreq
|
|
txresp -hdr "Set-Cookie: cook1=0; cook2=123; cook3=22" \
|
|
-hdr "Set-Cookie: cook4=1; cook5=2; cook6=3"
|
|
} -start
|
|
|
|
haproxy h4 -conf {
|
|
defaults
|
|
mode http
|
|
|
|
frontend fe
|
|
bind "fd@${fe}"
|
|
http-response set-var(txn.cook_names) res.cook_names
|
|
http-response set-header cook_names %[var(txn.cook_names)]
|
|
|
|
default_backend be
|
|
|
|
backend be
|
|
server srv4 ${s4_addr}:${s4_port}
|
|
} -start
|
|
|
|
client c4 -connect ${h4_fe_sock} {
|
|
txreq -url "/"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.cook_names == "cook1,cook4"
|
|
} -run
|