2020-11-13 18:36:47 +00:00
|
|
|
varnishtest "cook sample fetch Test"
|
|
|
|
|
|
|
|
feature ignore_unknown_macro
|
|
|
|
|
2023-10-27 20:59:21 +00:00
|
|
|
# TEST - 1
|
|
|
|
# Cookie from request
|
2020-11-13 18:36:47 +00:00
|
|
|
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)
|
2023-10-27 20:59:21 +00:00
|
|
|
http-request set-var(txn.cook_names) req.cook_names
|
2020-11-13 18:36:47 +00:00
|
|
|
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)]
|
2023-10-27 20:59:21 +00:00
|
|
|
http-response set-header cook_names %[var(txn.cook_names)]
|
2020-11-13 18:36:47 +00:00
|
|
|
|
|
|
|
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"
|
2023-10-27 20:59:21 +00:00
|
|
|
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"
|
2020-11-13 18:36:47 +00:00
|
|
|
} -run
|