File: cook.vtc

package info (click to toggle)
haproxy 3.3.2-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 24,612 kB
  • sloc: ansic: 275,408; sh: 3,607; xml: 1,756; python: 1,345; makefile: 1,162; perl: 168; cpp: 21
file content (164 lines) | stat: -rw-r--r-- 3,599 bytes parent folder | download
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
160
161
162
163
164
varnishtest "cook sample fetch Test"

feature ignore_unknown_macro

# TEST - 1
# Cookie from request
server s1 {
    rxreq
    txresp
} -start

haproxy h1 -conf {
    global
    .if feature(THREAD)
        thread-groups 1
    .endif

    defaults
	timeout client 30s
	timeout server 30s
	timeout connect 30s
        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 {
    global
    .if feature(THREAD)
        thread-groups 1
    .endif

    defaults
	timeout client 30s
	timeout server 30s
	timeout connect 30s
        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 {
    global
    .if feature(THREAD)
        thread-groups 1
    .endif

    defaults
	timeout client 30s
	timeout server 30s
	timeout connect 30s
        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 {
    global
    .if feature(THREAD)
        thread-groups 1
    .endif

    defaults
	timeout client 30s
	timeout server 30s
	timeout connect 30s
        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