1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
varnishtest "Test declaration of HTTP rules in default sections"
feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(2.5-dev0)'"
feature ignore_unknown_macro
server s1 {
rxreq
expect req.http.x-frontend == "fe"
expect req.http.x-backend == "be"
expect req.http.x-test1-frt == "def_front"
expect req.http.x-test1-bck == "def_back"
txresp
} -start
server s2 {
rxreq
txresp
} -start
haproxy h1 -conf {
defaults common
mode http
timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
defaults def_front from common
http-request set-header x-frontend "%[fe_name]"
http-request set-var(txn.test1) "str(def_front)"
http-response set-header x-frontend "%[fe_name]"
http-response set-var(txn.test2) "str(def_front)"
http-after-response set-var(txn.test3) "str(def_front)"
defaults def_back from common
http-request set-header x-backend "%[be_name]"
http-request set-var(txn.test1) "str(def_back)"
http-response set-header x-backend "%[be_name]"
http-response set-var(txn.test2) "str(def_back)"
http-after-response set-var(txn.test3) "str(def_back)"
frontend fe from def_front
bind "fd@${feh1}"
http-request set-header x-test1-frt "%[var(txn.test1)]"
http-response set-header x-test2-frt "%[var(txn.test2)]"
http-after-response set-header x-test3-frt "%[var(txn.test3)]"
default_backend be
backend be from def_back
http-request set-header x-test1-bck "%[var(txn.test1)]"
http-response set-header x-test2-bck "%[var(txn.test2)]"
http-after-response set-header x-test3-bck "%[var(txn.test3)]"
server s1 ${s1_addr}:${s1_port}
} -start
haproxy h2 -conf {
defaults common
mode http
timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
defaults def_front from common
http-request allow
http-response allow
http-after-response allow
defaults def_back from common
http-request allow
http-response allow
http-after-response allow
frontend fe from def_front
bind "fd@${feh2}"
http-request deny status 403
http-response deny status 502
http-after-response set-status 502
default_backend be
backend be from def_back
http-request deny status 403
http-response deny status 502
http-after-response set-status 502
server s2 ${s2_addr}:${s2_port}
} -start
haproxy h3 -conf {
defaults base-http
mode http
timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
http-request capture hdr(Host) len 64 # idx 0
http-request capture hdr(X-req-1) len 32 # idx 1
frontend fe1 from base-http
bind "fd@${fe1h3}"
declare capture request len 32 # idx 2
http-request capture hdr(X-req-2) id 2
http-request return status 200 hdr "X-Capture-1" "%[capture.req.hdr(0)]" hdr "X-Capture-2" "%[capture.req.hdr(1)]" hdr "X-Capture-3" "%[capture.req.hdr(2)]"
frontend fe2 from base-http
bind "fd@${fe2h3}"
http-request capture hdr(X-req-2) id 1
http-request return status 200 hdr "X-Capture-1" "%[capture.req.hdr(0)]" hdr "X-Capture-2" "%[capture.req.hdr(1)]"
} -start
client c1 -connect ${h1_feh1_sock} {
txreq -req GET -url /
rxresp
expect resp.status == 200
expect resp.http.x-frontend == "fe"
expect resp.http.x-backend == "be"
expect resp.http.x-test2-bck == "def_back"
expect resp.http.x-test2-frt == "def_front"
expect resp.http.x-test3-bck == "def_back"
expect resp.http.x-test3-frt == "def_front"
} -run
client c2 -connect ${h2_feh2_sock} {
txreq -req GET -url /
rxresp
expect resp.status == 200
} -run
client c3 -connect ${h3_fe1h3_sock} {
txreq -req GET -url / \
-hdr "host: v-test" \
-hdr "x-req-1: val1" \
-hdr "x-req-2: val2"
rxresp
expect resp.status == 200
expect resp.http.x-capture-1 == "v-test"
expect resp.http.x-capture-2 == "val1"
expect resp.http.x-capture-3 == "val2"
} -run
client c4 -connect ${h3_fe2h3_sock} {
txreq -req GET -url / \
-hdr "host: v-test" \
-hdr "x-req-1: val1" \
-hdr "x-req-2: val2"
rxresp
expect resp.status == 200
expect resp.http.x-capture-1 == "v-test"
expect resp.http.x-capture-2 == "val2"
expect resp.http.x-capture-3 == "<undef>"
} -run
|