summaryrefslogtreecommitdiffstats
path: root/reg-tests/startup/default_rules.vtc
blob: 1cbbfa935650faf2f0903599a07c004110939023 (plain)
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
varnishtest "Misuses of defaults section defining TCP/HTTP rules"

feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(2.5-dev0)'"
feature ignore_unknown_macro

#
# anonymous defaults section cannot define TCP/HTTP rules
#
haproxy h1 -conf-BAD {} {
    defaults
        http-request set-header X-Hdr 1
}

haproxy h2 -conf-BAD {} {
    defaults
        http-response set-header X-Hdr 1
}

haproxy h3 -conf-BAD {} {
    defaults
        http-after-request set-header X-Hdr 1
}

haproxy h4 -conf-BAD {} {
    defaults
        tcp-request connection accept
}

haproxy h5 -conf-BAD {} {
    defaults
        tcp-request session accept
}

haproxy h6 -conf-BAD {} {
    defaults
        tcp-request inspect-delay 5s
        tcp-request content accept
}

haproxy h7 -conf-BAD {} {
    defaults
        tcp-response inspect-delay 5s
        tcp-response content accept
}

#
# defaults section defining TCP/HTTP rules cannot be used to init another
# defaults section
#
haproxy h8 -conf-BAD {} {
    defaults invalid
        tcp-response inspect-delay 5s
        tcp-response content accept

    defaults from invalid
        mode tcp
}

#
# defaults section defining TCP/HTTP rules cannot be used to init a listen
# section
#
haproxy h9 -conf-BAD {} {
    defaults invalid
        tcp-request inspect-delay 5s
        tcp-request content accept

    listen li from invalid
        mode tcp
        bind "fd@${lih9}"
        server www 127.0.0.1:80
}

#
# defaults section defining TCP/HTTP rules cannot be used to init frontend and
# backend sections at the same time
#
#
haproxy h10 -conf-BAD {} {
    defaults invalid
        tcp-request inspect-delay 5s
        tcp-request content accept

    frontend fe from invalid
        mode tcp
        bind "fd@${feh10}"
        default_backend be1

    backend be from invalid
        mode tcp
        server www 127.0.0.1:80
}

#
# defaults section defining 'tcp-request connection' or 'tcp-request session'
# rules cannot be used to init backend sections
#
haproxy h11 -conf-BAD {} {
    defaults invalid
        tcp-request connection accept

    backend be from invalid
        mode tcp
        server www 127.0.0.1:80
}

haproxy h12 -conf-BAD {} {
    defaults invalid
        tcp-request session accept

    backend be from invalid
        mode tcp
        server www 127.0.0.1:80
}

#
# defaults section defining 'tcp-response content' rules cannot be used to init
# a frontend section
#
haproxy h13 -conf-BAD {} {
    defaults invalid
        tcp-response inspect-delay 5s
        tcp-response content accept

    frontend fe from invalid
        mode tcp
        bind "fd@${feh10}"
}

haproxy h14 -arg -V -conf-OK {
    defaults tcp
        tcp-response inspect-delay 5s
        tcp-response content accept

    backend be from tcp
        mode tcp
        server www 127.0.0.1:80
}

#
# Check arguments resolutions in rules. FE/BE arguments must be resolved, but
# SRV/TAB arguments without an explicit proxy name are not allowed.
#

haproxy h15 -conf-BAD {} {
    defaults invalid
        mode http
        http-request set-header x-test "%[srv_conn(www)]"

    backend be from invalid
        server www 127.0.0.1:80
}

haproxy h16 -conf-BAD {} {
    defaults invalid
        mode http
        http-request track-sc0 src
        http-request deny deny_status 429 if { sc_http_req_rate(0) gt 20 }

    backend be
        stick-table type ip size 100k expire 30s store http_req_rate(10s)
        server www 127.0.0.1:80
}

haproxy h17 -arg -V -conf-OK {
    defaults common
        mode http

    defaults def_front from common
        http-request set-header x-test1 "%[fe_conn]"

    defaults def_back from common
        http-request track-sc0 src table be
        http-request deny deny_status 429 if { sc_http_req_rate(0,be) gt 20 }
        http-request set-header x-test2 "%[be_conn]"
        http-request set-header x-test3 "%[srv_conn(be/www)]"

    frontend fe from def_front
        bind "fd@${feh15}"
        default_backend be

    backend be from def_back
        stick-table type ip size 100k expire 30s store http_req_rate(10s)
        server www 127.0.0.1:80
}