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
|
varnishtest "Test the proper interaction between http-reuse and dispatch mode"
# With dispatch, the connection are considered as private and should only be
# reused for requests of the same session
# This is similar to the http-reuse never mode
feature ignore_unknown_macro
haproxy h1 -conf {
global
.if feature(THREAD)
thread-groups 1
.endif
nbthread 1
defaults
timeout client 30s
timeout server 30s
timeout connect 30s
mode http
listen sender1
bind "fd@${feN}"
http-reuse never
http-request set-header client-id %[req.hdr(client-id)] if { req.hdr(client-id) -m found }
server dispatch ${h1_feR_addr}:${h1_feR_port}
listen sender2
bind "fd@${feA}"
http-reuse always
http-request set-header client-id %[req.hdr(client-id)] if { req.hdr(client-id) -m found }
server dispatch ${h1_feR_addr}:${h1_feR_port}
listen receiver
bind "fd@${feR}"
http-request set-var(sess.client_id) req.hdr(client-id)
http-request return status 200
http-after-response set-header http_first_request %[http_first_req]
http-after-response set-header client-id %[var(sess.client_id)]
} -start
### http-reuse never
client c1 -connect ${h1_feN_sock} {
txreq \
-hdr "client-id: c1"
rxresp
expect resp.http.http_first_request == "1"
txreq
rxresp
expect resp.http.http_first_request == "0"
expect resp.http.client-id == "c1"
txreq
rxresp
expect resp.http.http_first_request == "0"
expect resp.http.client-id == "c1"
} -run
client c2 -connect ${h1_feN_sock} {
txreq \
-hdr "client-id: c2"
rxresp
expect resp.http.http_first_request == "1"
expect resp.http.client-id == "c2"
txreq
rxresp
expect resp.http.http_first_request == "0"
expect resp.http.client-id == "c2"
txreq
rxresp
expect resp.http.http_first_request == "0"
expect resp.http.client-id == "c2"
} -run
client c3 -connect ${h1_feN_sock} {
txreq \
-hdr "client-id: c3"
rxresp
expect resp.http.http_first_request == "1"
expect resp.http.client-id == "c3"
txreq
rxresp
expect resp.http.http_first_request == "0"
expect resp.http.client-id == "c3"
txreq
rxresp
expect resp.http.http_first_request == "0"
expect resp.http.client-id == "c3"
} -run
### http-reuse always
client c4 -connect ${h1_feA_sock} {
txreq \
-hdr "client-id: c4"
rxresp
expect resp.http.http_first_request == "1"
txreq
rxresp
expect resp.http.http_first_request == "0"
expect resp.http.client-id == "c4"
txreq
rxresp
expect resp.http.http_first_request == "0"
expect resp.http.client-id == "c4"
} -run
client c5 -connect ${h1_feA_sock} {
txreq \
-hdr "client-id: c5"
rxresp
expect resp.http.http_first_request == "0"
expect resp.http.client-id == "c5"
txreq
rxresp
expect resp.http.http_first_request == "0"
expect resp.http.client-id == "c5"
txreq
rxresp
expect resp.http.http_first_request == "0"
expect resp.http.client-id == "c5"
} -run
client c6 -connect ${h1_feA_sock} {
txreq \
-hdr "client-id: c6"
rxresp
expect resp.http.http_first_request == "0"
expect resp.http.client-id == "c6"
txreq
rxresp
expect resp.http.http_first_request == "0"
expect resp.http.client-id == "c6"
txreq
rxresp
expect resp.http.http_first_request == "0"
expect resp.http.client-id == "c6"
} -run
|