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