... |
... |
@@ -1,21 +1,7 @@
|
1 |
1 |
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
2 |
<!DOCTYPE language SYSTEM "language.dtd">
|
3 |
|
-<language name="Varnish Test Case language" version="0.2" kateversion="2.4" section="Configuration" extensions="*.vtc;" mimetype="" author="Xavier Guerrin (xavier@tuxfamily.org)" license="WTFPL">
|
|
3 |
+<language name="Varnish Test Case language" version="0.1" kateversion="2.4" section="Configuration" extensions="*.vtc;" mimetype="" author="Xavier Guerrin (xavier@tuxfamily.org)" license="WTFPL">
|
4 |
4 |
<highlighting>
|
5 |
|
- <list name="vtcClientKeywords">
|
6 |
|
- <item>fatal</item>
|
7 |
|
- <item>gunzip</item>
|
8 |
|
- <item>rxchunk</item>
|
9 |
|
- </list>
|
10 |
|
- <list name="vtcServerKeywords">
|
11 |
|
- <item>accept</item>
|
12 |
|
- <item>close</item>
|
13 |
|
- <item>expect_close</item>
|
14 |
|
- <item>fatal</item>
|
15 |
|
- <item>rxbody</item>
|
16 |
|
- <item>rxhdrs</item>
|
17 |
|
- <item>rxreq</item>
|
18 |
|
- </list>
|
19 |
5 |
<contexts>
|
20 |
6 |
<!-- default context: define main keywords -->
|
21 |
7 |
<context name="vtcnormal_text" attribute="Normal Text" lineEndContext="#stay">
|
... |
... |
@@ -84,16 +70,26 @@
|
84 |
70 |
|
85 |
71 |
<!-- This context exits as soon as it parsed a string, be it defined between braces, quotes or spaces -->
|
86 |
72 |
<context name="string-arg" attribute="Normal Text" lineEndContext="#stay">
|
|
73 |
+ <RegExpr attribute="HTTP announce" context="#pop" String="HTTP/[0-9.]+" />
|
|
74 |
+ <RegExpr attribute="HTTP method" context="#pop" String="\s+(GET|HEAD|POST|PUT|DELETE|TRACE|OPTIONS|CONNECT|PATCH)" />
|
|
75 |
+ <RegExpr attribute="HTTP WebDAV method" context="#pop" String="\s+(PROPFIND|PROPPATCH|MKCOL|COPY|MOVE|LOCK|UNLOCK|CONNECT|PATCH)" />
|
|
76 |
+ <RegExpr attribute="HTTP custom method" context="#pop" String="\s+(PURGE|PURGESTR)" />
|
87 |
77 |
<IncludeRules context="brace-strings" />
|
88 |
78 |
<IncludeRules context="quoted-strings" />
|
89 |
79 |
<IncludeRules context="unquoted-strings" />
|
90 |
80 |
</context>
|
91 |
81 |
|
92 |
82 |
<!-- This context exits as soon as it parsed an integer. -->
|
93 |
|
- <context name="int-arg" attribute="Int" lineEndContext="#pop">
|
|
83 |
+ <context name="int-arg" attribute="Normal Text" lineEndContext="#pop">
|
94 |
84 |
<Int attribute="Decimal" context="#pop" />
|
95 |
85 |
</context>
|
96 |
86 |
|
|
87 |
+ <!-- This context exits as soon as it parsed a status integer. -->
|
|
88 |
+ <context name="status-arg" attribute="String" lineEndContext="#pop">
|
|
89 |
+ <!-- HTTP status can be provided within quotes too. -->
|
|
90 |
+ <RegExpr attribute="Decimal" context="#pop" String="("[12345][0-9]{2}"|[12345][0-9]{2})(?![0-9])" />
|
|
91 |
+ </context>
|
|
92 |
+
|
97 |
93 |
<!-- Comments -->
|
98 |
94 |
<context name="shell-like-comment" attribute="Comment" lineEndContext="#pop">
|
99 |
95 |
<IncludeRules context="##Alerts" />
|
... |
... |
@@ -115,22 +111,132 @@
|
115 |
111 |
<IncludeRules context="comments" />
|
116 |
112 |
</context>
|
117 |
113 |
|
118 |
|
- <!-- Define syntax within -expect options -->
|
119 |
|
- <context name="expectation_common" attribute="Normal Text" lineEndContext="#stay">
|
120 |
|
- <RegExpr attribute="Keyword" context="#stay" String="<undef>" />
|
121 |
|
- <IncludeRules context="base_elements" />
|
122 |
|
- <IncludeRules context="vcl_operators" />
|
|
114 |
+ <!--
|
|
115 |
+ Define syntax of the -expect command for server and client objects.
|
|
116 |
+ Written from cmd_http_expect() in bin/varnishtest/vtc_http.c.
|
|
117 |
+ -->
|
|
118 |
+ <context name="http_expectation" attribute="Normal Text" lineEndContext="#pop">
|
|
119 |
+ <IncludeRules context="comments" />
|
|
120 |
+ <RegExpr attribute="Float" context="http_expectation_operator" String="[0-9\.]+(\s+|$)" />
|
|
121 |
+ <RegExpr attribute="Decimal" context="http_expectation_operator" String="[0-9]+(\s+|$)" />
|
|
122 |
+ <RegExpr attribute="Keyword" context="http_expectation_operator" String="<undef>" />
|
|
123 |
+ <!-- Written from cmd_var_resolve() in bin/varnishtest/vtc_http.c. -->
|
|
124 |
+ <RegExpr attribute="HTTP Property" context="http_expectation_operator" String="req.(request|url|proto)" />
|
|
125 |
+ <RegExpr attribute="HTTP Property" context="http_expectation_operator" String="resp.(proto|status|msg|chunklen|bodylen|body)" />
|
|
126 |
+ <RegExpr attribute="HTTP X- Header" context="http_expectation_operator" String="(req|resp)\.http\.X-[-_A-Za-z0-9]*" />
|
|
127 |
+ <RegExpr attribute="HTTP Header" context="http_expectation_operator" String="(req|resp)\.http\.[A-Za-z][-_A-Za-z0-9]*" />
|
|
128 |
+ <RegExpr attribute="HTTP announce" context="http_expectation_operator" String="HTTP/[0-9.]+" />
|
|
129 |
+ <RegExpr attribute="HTTP method" context="http_expectation_operator" String="\s+(GET|HEAD|POST|PUT|DELETE|TRACE|OPTIONS|CONNECT|PATCH)" />
|
|
130 |
+ <RegExpr attribute="HTTP WebDAV method" context="http_expectation_operator" String="\s+(PROPFIND|PROPPATCH|MKCOL|COPY|MOVE|LOCK|UNLOCK|CONNECT|PATCH)" />
|
|
131 |
+ <RegExpr attribute="HTTP custom method" context="http_expectation_operator" String="\s+(PURGE|PURGESTR)" />
|
|
132 |
+ <DetectChar attribute="String" context="http_expectation_arg1_brace-string" char="{" beginRegion="string_block" />
|
|
133 |
+ <DetectChar attribute="String" context="http_expectation_arg1_quoted-string" char=""" />
|
|
134 |
+ <RegExpr attribute="Normal Text" context="http_expectation_arg1_unquoted-string" String="[^ ]" lookAhead="true" />
|
|
135 |
+ </context>
|
|
136 |
+ <context name="http_expectation_operator" attribute="Normal Text" lineEndContext="#pop#pop">
|
|
137 |
+ <IncludeRules context="comments" />
|
|
138 |
+ <Detect2Chars attribute="Comparison Operator" context="common_expectation_second_arg" char="=" char1="=" />
|
|
139 |
+ <Detect2Chars attribute="Comparison Operator" context="common_expectation_second_arg" char="!" char1="=" />
|
|
140 |
+ </context>
|
|
141 |
+ <context name="common_expectation_second_arg" attribute="Normal Text" lineEndContext="#pop#pop#pop">
|
|
142 |
+ <IncludeRules context="comments" />
|
|
143 |
+ <RegExpr attribute="Float" context="common_expectation_end" String="[0-9\.]+(\s+|$)" />
|
|
144 |
+ <RegExpr attribute="Decimal" context="common_expectation_end" String="[0-9]+(\s+|$)" />
|
|
145 |
+ <RegExpr attribute="Keyword" context="common_expectation_end" String="<undef>" />
|
|
146 |
+ <!-- Written from cmd_var_resolve() in bin/varnishtest/vtc_http.c. -->
|
|
147 |
+ <RegExpr attribute="HTTP Property" context="common_expectation_end" String="req.(request|url|proto)" />
|
|
148 |
+ <RegExpr attribute="HTTP Property" context="common_expectation_end" String="resp.(proto|status|msg|chunklen|bodylen|body)" />
|
|
149 |
+ <RegExpr attribute="HTTP X- Header" context="common_expectation_end" String="(req|resp)\.http\.X-[-_A-Za-z0-9]*" />
|
|
150 |
+ <RegExpr attribute="HTTP Header" context="common_expectation_end" String="(req|resp)\.http\.[A-Za-z][-_A-Za-z0-9]*" />
|
|
151 |
+ <RegExpr attribute="HTTP announce" context="common_expectation_end" String="HTTP/[0-9.]+" />
|
|
152 |
+ <RegExpr attribute="HTTP method" context="common_expectation_end" String="\s+(GET|HEAD|POST|PUT|DELETE|TRACE|OPTIONS|CONNECT|PATCH)" />
|
|
153 |
+ <RegExpr attribute="HTTP WebDAV method" context="common_expectation_end" String="\s+(PROPFIND|PROPPATCH|MKCOL|COPY|MOVE|LOCK|UNLOCK|CONNECT|PATCH)" />
|
|
154 |
+ <RegExpr attribute="HTTP custom method" context="common_expectation_end" String="\s+(PURGE|PURGESTR)" />
|
|
155 |
+ <DetectChar attribute="String" context="common_expectation_arg2_brace-string" char="{" beginRegion="string_block" />
|
|
156 |
+ <DetectChar attribute="String" context="common_expectation_arg2_quoted-string" char=""" />
|
|
157 |
+ <RegExpr attribute="Normal Text" context="common_expectation_arg2_unquoted-string" String="[^ ]" lookAhead="true" />
|
|
158 |
+ </context>
|
|
159 |
+ <context name="common_expectation_end" attribute="Normal Text" lineEndContext="#pop#pop#pop#pop">
|
|
160 |
+ <IncludeRules context="comments" />
|
|
161 |
+ </context>
|
|
162 |
+
|
|
163 |
+ <!-- Contexts to parse first argument of server/client expectations as a string -->
|
|
164 |
+ <context name="http_expectation_arg1_brace-string" attribute="String" lineEndContext="#stay">
|
|
165 |
+ <DetectChar attribute="String" context="brace-string-internal" char="{" />
|
|
166 |
+ <DetectChar attribute="String" context="http_expectation_operator" char="}" endRegion="string_block" />
|
|
167 |
+ </context>
|
|
168 |
+ <context name="http_expectation_arg1_quoted-string" attribute="String" lineEndContext="#pop#pop">
|
|
169 |
+ <Detect2Chars attribute="String" context="#stay" char="\" char1=""" />
|
|
170 |
+ <DetectChar attribute="String" context="http_expectation_operator" char=""" />
|
|
171 |
+ </context>
|
|
172 |
+ <context name="http_expectation_arg1_unquoted-string" attribute="String" lineEndContext="#pop#pop">
|
|
173 |
+ <RegExpr attribute="Normal Text" context="http_expectation_operator" String="\s" />
|
123 |
174 |
</context>
|
124 |
175 |
|
125 |
|
- <context name="expectation" attribute="String" lineEndContext="#pop">
|
126 |
|
- <IncludeRules context="expectation_common" />
|
127 |
|
- <IncludeRules context="vcl_variables" />
|
128 |
|
- <RegExpr attribute="HTTP Property" context="#stay" String="resp\.(msg|chunklen|bodylen|body)" />
|
|
176 |
+ <!-- Contexts to parse second argument of all expectations as a string -->
|
|
177 |
+ <context name="common_expectation_arg2_brace-string" attribute="String" lineEndContext="#stay">
|
|
178 |
+ <DetectChar attribute="String" context="brace-string-internal" char="{" />
|
|
179 |
+ <DetectChar attribute="String" context="common_expectation_end" char="}" endRegion="string_block" />
|
|
180 |
+ </context>
|
|
181 |
+ <context name="common_expectation_arg2_quoted-string" attribute="String" lineEndContext="#pop#pop">
|
|
182 |
+ <Detect2Chars attribute="String" context="#stay" char="\" char1=""" />
|
|
183 |
+ <DetectChar attribute="String" context="common_expectation_end" char=""" />
|
|
184 |
+ </context>
|
|
185 |
+ <context name="common_expectation_arg2_unquoted-string" attribute="String" lineEndContext="#pop#pop">
|
|
186 |
+ <RegExpr attribute="Normal Text" context="common_expectation_end" String="\s" />
|
129 |
187 |
</context>
|
130 |
188 |
|
|
189 |
+ <!--
|
|
190 |
+ Define syntax of the -expect command for varnish objects.
|
|
191 |
+ Written from varnish_expect() in bin/varnishtest/vtc_varnish.c
|
|
192 |
+ -->
|
131 |
193 |
<context name="varnish_expectation" attribute="Normal Text" lineEndContext="#pop">
|
132 |
|
- <IncludeRules context="expectation_common" />
|
133 |
|
- <IncludeRules context="varnishstat_variables" />
|
|
194 |
+ <!-- Varnish's expect takes a Varnish counter as first argument. -->
|
|
195 |
+ <IncludeRules context="comments" />
|
|
196 |
+ <!-- Mostly extracted using man 7 varnish-counters | grep - - - | grep _ | sort -->
|
|
197 |
+ <RegExpr attribute="VarnishStat metric" context="varnish_expectation_operator" String="(?:accept_fail|losthdr|uptime|vmods)" />
|
|
198 |
+ <RegExpr attribute="VarnishStat metric" context="varnish_expectation_operator" String="backend_(?:busy|conn|fail|recycle|req|retry|reuse|toolate|unhealthy)" />
|
|
199 |
+ <RegExpr attribute="VarnishStat metric" context="varnish_expectation_operator" String="cache_(?:hit(pass)?|miss)" />
|
|
200 |
+ <RegExpr attribute="VarnishStat metric" context="varnish_expectation_operator" String="client_(?:conn|drop_late|drop|req)" />
|
|
201 |
+ <RegExpr attribute="VarnishStat metric" context="varnish_expectation_operator" String="dir_dns_(?:cache_full|failed|hit|lookups)" />
|
|
202 |
+ <RegExpr attribute="VarnishStat metric" context="varnish_expectation_operator" String="esi_(?:errors|warnings)" />
|
|
203 |
+ <RegExpr attribute="VarnishStat metric" context="varnish_expectation_operator" String="fetch_(?:1xx|204|304|bad|chunked|close|eof|failed|head|length|oldhttp|zero)" />
|
|
204 |
+ <RegExpr attribute="VarnishStat metric" context="varnish_expectation_operator" String="hcb_(?:insert|lock|nolock)" />
|
|
205 |
+ <RegExpr attribute="VarnishStat metric" context="varnish_expectation_operator" String="n_(?:backend|ban_(?:add|dups|gone|obj_test|re_test|retire)|ban|expired|gunzip|gzip|lru_moved|lru_nuked|object|objectcore|objecthead|objoverflow|objsendfile|objwrite|sess_mem|sess|vampireobject|vbc|vcl_avail|vcl_discard|vcl|waitinglist|wrk_(?:create|drop|failed|lqueue|max|queued)|wrk)" />
|
|
206 |
+ <RegExpr attribute="VarnishStat metric" context="varnish_expectation_operator" String="s_(?:fetch|pass|pipe|req|(?:body|hdr)bytes|sess)" />
|
|
207 |
+ <RegExpr attribute="VarnishStat metric" context="varnish_expectation_operator" String="sess_(?:closed|herd|linger|pipe_overflow|pipeline|readahead)" />
|
|
208 |
+ <RegExpr attribute="VarnishStat metric" context="varnish_expectation_operator" String="shm_(?:cont|cycles|flushes|records|writes)" />
|
|
209 |
+ <RegExpr attribute="VarnishStat metric" context="varnish_expectation_operator" String="LCK\.(?:sm[spaf]|hsl|hcb|hcl|vcl|stat|sessmem|wstat|herder|wq|objhdr|exp|lru|cli|ban|vbp|vbe|backend)\.(?:creat|destroy|locks|colls)" />
|
|
210 |
+ <RegExpr attribute="VarnishStat metric" context="varnish_expectation_operator" String="SMA\.[a-zA-Z0-9_-]+\.(?:c_(?:req|fail|bytes|freed)|g_(?:alloc|bytes|space))" />
|
|
211 |
+ <RegExpr attribute="VarnishStat metric" context="varnish_expectation_operator" String="SMF\.[a-zA-Z0-9_-]+\.(?:c_(?:req|fail|bytes|freed)|g_(?:alloc|bytes|space|smf|smf_frag|smf_large))" />
|
|
212 |
+ <RegExpr attribute="VarnishStat metric" context="varnish_expectation_operator" String="VBE\..+\.(?:happy|vcls)" />
|
|
213 |
+ </context>
|
|
214 |
+ <context name="varnish_expectation_operator" attribute="Normal Text" lineEndContext="#pop#pop">
|
|
215 |
+ <IncludeRules context="comments" />
|
|
216 |
+ <Detect2Chars attribute="Comparison Operator" context="varnish_expectation_second_arg" char="=" char1="=" />
|
|
217 |
+ <Detect2Chars attribute="Comparison Operator" context="varnish_expectation_second_arg" char="!" char1="=" />
|
|
218 |
+ <Detect2Chars attribute="Comparison Operator" context="varnish_expectation_second_arg" char=">" char1="=" />
|
|
219 |
+ <Detect2Chars attribute="Comparison Operator" context="varnish_expectation_second_arg" char="<" char1="=" />
|
|
220 |
+ <DetectChar attribute="Comparison Operator" context="varnish_expectation_second_arg" char=">" />
|
|
221 |
+ <DetectChar attribute="Comparison Operator" context="varnish_expectation_second_arg" char="<" />
|
|
222 |
+ <!-- Varnish's expect does not handle the ~ and !~ operators -->
|
|
223 |
+ </context>
|
|
224 |
+ <context name="varnish_expectation_second_arg" attribute="Normal Text" lineEndContext="#pop">
|
|
225 |
+ <!-- Varnish's expect takes an unsigned integer as second argument. -->
|
|
226 |
+ <Int attribute="Decimal" context="common_expectation_end" />
|
|
227 |
+ </context>
|
|
228 |
+
|
|
229 |
+ <!-- Contexts to parse first argument of Varnish expectations as a string -->
|
|
230 |
+ <context name="varnish_expectation_arg1_brace-string" attribute="String" lineEndContext="#stay">
|
|
231 |
+ <DetectChar attribute="String" context="brace-string-internal" char="{" />
|
|
232 |
+ <DetectChar attribute="String" context="varnish_expectation_operator" char="}" endRegion="string_block" />
|
|
233 |
+ </context>
|
|
234 |
+ <context name="varnish_expectation_arg1_quoted-string" attribute="String" lineEndContext="#pop#pop">
|
|
235 |
+ <Detect2Chars attribute="String" context="#stay" char="\" char1=""" />
|
|
236 |
+ <DetectChar attribute="String" context="varnish_expectation_operator" char=""" />
|
|
237 |
+ </context>
|
|
238 |
+ <context name="varnish_expectation_arg1_unquoted-string" attribute="String" lineEndContext="#pop#pop">
|
|
239 |
+ <RegExpr attribute="Normal Text" context="varnish_expectation_operator" String="\s" />
|
134 |
240 |
</context>
|
135 |
241 |
|
136 |
242 |
<!-- Define macros -->
|
... |
... |
@@ -148,18 +254,25 @@
|
148 |
254 |
</context>
|
149 |
255 |
|
150 |
256 |
<context name="client_options" attribute="Normal Text" lineEndContext="#stay">
|
151 |
|
- <RegExpr attribute="Keyword" context="#stay" String="\-(?:run|wait|start|connect)" />
|
152 |
|
- <RegExpr attribute="Keyword" context="expectation" String="-expect" />
|
|
257 |
+ <!-- Extracted from bin/varnishtest/vtc_client.c -->
|
|
258 |
+ <RegExpr attribute="Keyword" context="#stay" String="\-(?:run|start|wait)" />
|
|
259 |
+ <RegExpr attribute="Keyword" context="int-arg" String="\-repeat" />
|
|
260 |
+ <RegExpr attribute="Keyword" context="string-arg" String="\-connect" />
|
|
261 |
+ <RegExpr attribute="Keyword" context="http_expectation" String="-expect" />
|
153 |
262 |
<IncludeRules context="common_options" />
|
154 |
263 |
</context>
|
155 |
264 |
|
156 |
265 |
<context name="server_options" attribute="Normal Text" lineEndContext="#stay" >
|
157 |
|
- <RegExpr attribute="Keyword" context="#stay" String="\-(?:start|wait|stop|repeat)" />
|
158 |
|
- <RegExpr attribute="Keyword" context="expectation" String="-expect" />
|
|
266 |
+ <!-- Extracted from bin/varnishtest/vtc_server.c -->
|
|
267 |
+ <RegExpr attribute="Keyword" context="#stay" String="\-(?:start|wait)" />
|
|
268 |
+ <RegExpr attribute="Keyword" context="int-arg" String="\-repeat" />
|
|
269 |
+ <RegExpr attribute="Keyword" context="string-arg" String="\-listen " />
|
|
270 |
+ <RegExpr attribute="Keyword" context="http_expectation" String="-expect" />
|
159 |
271 |
<IncludeRules context="common_options" />
|
160 |
272 |
</context>
|
161 |
273 |
|
162 |
274 |
<context name="varnish_options" attribute="Normal Text" lineEndContext="#stay" >
|
|
275 |
+ <!-- Extracted from bin/varnishtest/vtc_varnish.c -->
|
163 |
276 |
<RegExpr attribute="Keyword" context="#stay" String="\-(?:start|stop|wait|wait-running|wait-stopped)" />
|
164 |
277 |
<RegExpr attribute="Keyword" context="string-arg" String="\-(?:arg|cli|cliok|storage) " />
|
165 |
278 |
<RegExpr attribute="Keyword" context="clierr_options" String="\-clierr " />
|
... |
... |
@@ -170,31 +283,39 @@
|
170 |
283 |
<context name="clierr_options" attribute="Normal Text" lineEndContext="#pop">
|
171 |
284 |
<!-- unlike clikok, clierr requires an integer argument first -->
|
172 |
285 |
<Int attribute="Decimal" context="clierr_command" />
|
|
286 |
+ <!-- It seems that integer can be provided within quotes though. -->
|
|
287 |
+ <RegExpr attribute="Decimal" context="clierr_command" String=""[0-9]+" " />
|
173 |
288 |
<IncludeRules context="comments" />
|
174 |
289 |
</context>
|
175 |
290 |
<context name="clierr_command" attribute="String" lineEndContext="#pop">
|
176 |
291 |
<IncludeRules context="comments" />
|
177 |
292 |
</context>
|
178 |
293 |
|
179 |
|
- <!-- Define syntax for the client-specific txreq keyword -->
|
180 |
|
- <context name="txreq_options" attribute="String" lineEndContext="#pop">
|
|
294 |
+ <context name="tx_options" attribute="Normal Text" lineEndContext="#pop">
|
181 |
295 |
<IncludeRules context="comments" />
|
182 |
|
- <RegExpr attribute="TxReq Keyword" context="string-arg" String="\-(?:body|hdr|proto|req|url)" />
|
183 |
296 |
<LineContinue attribute="Normal Text" context="#stay" />
|
184 |
297 |
</context>
|
185 |
298 |
|
186 |
|
- <!-- Define syntax for the client-specific rxresp keyword -->
|
187 |
|
- <context name="rxresp_options" attribute="Normal Text" lineEndContext="#pop">
|
188 |
|
- <StringDetect attribute="RxResp Keyword" String="-no_obj" />
|
189 |
|
- <LineContinue attribute="Normal Text" context="#stay" />
|
|
299 |
+ <!-- Define syntax for the client-specific txreq keyword -->
|
|
300 |
+ <context name="txreq_options" attribute="String" lineEndContext="#pop">
|
|
301 |
+ <IncludeRules context="tx_options" />
|
|
302 |
+ <RegExpr attribute="TxReq Keyword" context="string-arg" String="\-(?:proto|req|url|hdr|body)" />
|
|
303 |
+ <RegExpr attribute="TxReq Keyword" context="int-arg" String="\-bodylen" />
|
190 |
304 |
</context>
|
191 |
305 |
|
192 |
306 |
<!-- Define syntax for the server-specific txresp keyword -->
|
193 |
307 |
<context name="txresp_options" attribute="Normal Text" lineEndContext="#pop">
|
194 |
|
- <IncludeRules context="comments" />
|
|
308 |
+ <IncludeRules context="tx_options" />
|
195 |
309 |
<RegExpr attribute="TxResp Keyword" String="-nolen" />
|
196 |
|
- <RegExpr attribute="TxResp Keyword" context="string-arg" String="\-(?:body|gzipbody|hdr|proto|msg) " />
|
197 |
|
- <RegExpr attribute="TxResp Keyword" context="int-arg" String="\-(?:bodylen|gzip(?:len|residual|level)|status)" />
|
|
310 |
+ <RegExpr attribute="TxResp Keyword" context="int-arg" String="\-(?:bodylen|gzip(?:len|residual|level))" />
|
|
311 |
+ <RegExpr attribute="TxResp Keyword" context="string-arg" String="\-(?:body|gzipbody|hdr|msg|proto)" />
|
|
312 |
+ <RegExpr attribute="TxResp Keyword" context="status-arg" String="\-status" />
|
|
313 |
+ </context>
|
|
314 |
+
|
|
315 |
+ <!-- Define syntax for the client-specific rxresp keyword -->
|
|
316 |
+ <context name="rxresp_options" attribute="Normal Text" lineEndContext="#pop">
|
|
317 |
+ <IncludeRules context="comments" />
|
|
318 |
+ <StringDetect attribute="RxResp Keyword" String="-no_obj" />
|
198 |
319 |
<LineContinue attribute="Normal Text" context="#stay" />
|
199 |
320 |
</context>
|
200 |
321 |
|
... |
... |
@@ -204,6 +325,29 @@
|
204 |
325 |
<IncludeRules context="comments" />
|
205 |
326 |
</context>
|
206 |
327 |
|
|
328 |
+ <!-- client/server HTTP commands -->
|
|
329 |
+ <context name="clientserver_common_definition" attribute="Normal Text" lineEndContext="#stay">
|
|
330 |
+ <IncludeRules context="comments" />
|
|
331 |
+ <!-- Extracted using:
|
|
332 |
+ perl -nlE '$p = 1 if m#http_cmds\[\]#; say if ($p); exit if ($p && m#^\}#);' vtc_http.c
|
|
333 |
+ egrep '(^cmd_http_|^\s*ONLY_(CLIENT|SERVER))' bin/varnishtest/vtc_http.c
|
|
334 |
+ -->
|
|
335 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="timeout_instruction" String="timeout" />
|
|
336 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="expect_close" />
|
|
337 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="http_expectation" String="expect" />
|
|
338 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="send_instruction" String="sendhex" />
|
|
339 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="send_instruction" String="send" />
|
|
340 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="chunkedlen_instruction" String="chunkedlen" />
|
|
341 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="send_instruction" String="chunked" />
|
|
342 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="delay_instruction" String="delay" />
|
|
343 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="sema_instruction" String="sema" />
|
|
344 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="close" />
|
|
345 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="accept" />
|
|
346 |
+ <!-- loop is not there as its parsing changes depending on server or client. -->
|
|
347 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="fatal" />
|
|
348 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="non-fatal" />
|
|
349 |
+ </context>
|
|
350 |
+
|
207 |
351 |
<!-- client keyword -->
|
208 |
352 |
<context name="client_declaration" attribute="Normal Text" lineEndContext="#pop">
|
209 |
353 |
<DetectIdentifier attribute="Client Identifier" context="client_identified" />
|
... |
... |
@@ -214,23 +358,18 @@
|
214 |
358 |
<LineContinue attribute="Normal Text" context="#stay" />
|
215 |
359 |
</context>
|
216 |
360 |
<context name="client_definition" attribute="Normal Text" lineEndContext="#stay">
|
217 |
|
- <IncludeRules context="comments" />
|
218 |
|
- <!-- basic keywords that take no options -->
|
219 |
|
- <keyword attribute="Action Keyword" context="#stay" String="vtcClientKeywords" />
|
220 |
|
- <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="non-fatal" />
|
221 |
|
- <StringDetect firstNonSpace="true" attribute="Action Keyword" context="expectation" String="expect" />
|
|
361 |
+ <IncludeRules context="clientserver_common_definition" />
|
|
362 |
+ <!-- client-specific HTTP commands -->
|
|
363 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="gunzip" />
|
222 |
364 |
<StringDetect firstNonSpace="true" attribute="Action Keyword" context="txreq_options" String="txreq" />
|
223 |
365 |
<StringDetect firstNonSpace="true" attribute="Action Keyword" context="rxresp_options" String="rxresp" />
|
224 |
|
- <StringDetect firstNonSpace="true" attribute="Action Keyword" context="sema_instruction" String="sema" />
|
225 |
|
- <StringDetect firstNonSpace="true" attribute="Action Keyword" context="delay_instruction" String="delay" />
|
226 |
|
- <StringDetect firstNonSpace="true" attribute="Action Keyword" context="send_instruction" String="sendhex" />
|
227 |
|
- <StringDetect firstNonSpace="true" attribute="Action Keyword" context="send_instruction" String="send" />
|
228 |
|
- <StringDetect firstNonSpace="true" attribute="Action Keyword" context="timeout_instruction" String="timeout" />
|
|
366 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="rxchunk" />
|
229 |
367 |
<StringDetect firstNonSpace="true" attribute="Action Keyword" context="client_loop_instruction" String="loop" />
|
230 |
368 |
<DetectChar attribute="Region Marker" context="client_postdefinition" char="}" endRegion="client_block" />
|
231 |
369 |
</context>
|
232 |
370 |
<context name="client_postdefinition" attribute="Normal Text" lineEndContext="#pop#pop#pop#pop">
|
233 |
371 |
<IncludeRules context="client_options" />
|
|
372 |
+ <LineContinue attribute="Normal Text" context="#stay" />
|
234 |
373 |
</context>
|
235 |
374 |
|
236 |
375 |
<!-- server keyword -->
|
... |
... |
@@ -243,24 +382,18 @@
|
243 |
382 |
<LineContinue attribute="Normal Text" context="#stay" />
|
244 |
383 |
</context>
|
245 |
384 |
<context name="server_definition" attribute="Normal Text" lineEndContext="#stay">
|
246 |
|
- <IncludeRules context="comments" />
|
247 |
|
- <!-- basic keywords that take no options -->
|
248 |
|
- <keyword attribute="Action Keyword" context="#stay" String="vtcServerKeywords" />
|
249 |
|
- <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="non-fatal" />
|
250 |
|
- <StringDetect firstNonSpace="true" attribute="Action Keyword" context="expectation" String="expect" />
|
|
385 |
+ <IncludeRules context="clientserver_common_definition" />
|
|
386 |
+ <!-- server-specific HTTP commands -->
|
|
387 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="rxhdrs" />
|
|
388 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="rxreq" />
|
|
389 |
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="rxbody" />
|
251 |
390 |
<StringDetect firstNonSpace="true" attribute="Action Keyword" context="txresp_options" String="txresp" />
|
252 |
|
- <StringDetect firstNonSpace="true" attribute="Action Keyword" context="sema_instruction" String="sema" />
|
253 |
|
- <StringDetect firstNonSpace="true" attribute="Action Keyword" context="delay_instruction" String="delay" />
|
254 |
|
- <StringDetect firstNonSpace="true" attribute="Action Keyword" context="chunkedlen_instruction" String="chunkedlen" />
|
255 |
|
- <StringDetect firstNonSpace="true" attribute="Action Keyword" context="send_instruction" String="sendhex" />
|
256 |
|
- <StringDetect firstNonSpace="true" attribute="Action Keyword" context="send_instruction" String="send" />
|
257 |
|
- <StringDetect firstNonSpace="true" attribute="Action Keyword" context="send_instruction" String="chunked" />
|
258 |
|
- <StringDetect firstNonSpace="true" attribute="Action Keyword" context="timeout_instruction" String="timeout" />
|
259 |
391 |
<StringDetect firstNonSpace="true" attribute="Action Keyword" context="server_loop_instruction" String="loop" />
|
260 |
392 |
<DetectChar attribute="Region Marker" context="server_postdefinition" char="}" endRegion="server_block" />
|
261 |
393 |
</context>
|
262 |
394 |
<context name="server_postdefinition" attribute="Normal Text" lineEndContext="#pop#pop#pop#pop">
|
263 |
395 |
<IncludeRules context="server_options" />
|
|
396 |
+ <LineContinue attribute="Normal Text" context="#stay" />
|
264 |
397 |
</context>
|
265 |
398 |
|
266 |
399 |
<!-- varnish keyword -->
|
... |
... |
@@ -269,7 +402,8 @@
|
269 |
402 |
</context>
|
270 |
403 |
<context name="varnish_identified" attribute="Normal Text" lineEndContext="#pop">
|
271 |
404 |
<IncludeRules context="varnish_options" />
|
272 |
|
- <RegExpr attribute="Keyword" context="varnish_vclannounced" String="\s*\-(?:bad)?vcl(?:\+backend)?" />
|
|
405 |
+ <RegExpr attribute="Keyword" context="varnish_vclannounced" String="\s*\-vcl(?:\+backend)?" />
|
|
406 |
+ <RegExpr attribute="Keyword" context="varnish_errvclannounced" String="\s*\-badvcl" />
|
273 |
407 |
<LineContinue attribute="Normal Text" context="#stay" />
|
274 |
408 |
</context>
|
275 |
409 |
<context name="varnish_vclannounced" attribute="Normal Text" lineEndContext="#stay">
|
... |
... |
@@ -281,6 +415,23 @@
|
281 |
415 |
</context>
|
282 |
416 |
<context name="varnish_postvcldefinition" attribute="Normal Text" lineEndContext="#pop#pop#pop#pop#pop">
|
283 |
417 |
<IncludeRules context="varnish_options" />
|
|
418 |
+ <LineContinue attribute="Normal Text" context="#stay" />
|
|
419 |
+ </context>
|
|
420 |
+ <context name="varnish_errvclannounced" attribute="Normal Text" lineEndContext="#stay">
|
|
421 |
+ <DetectChar attribute="String" context="varnish_errvclcode-quoted" char=""" />
|
|
422 |
+ <DetectChar attribute="Region Marker" context="varnish_errvclcode" char="{" beginRegion="errvclcode_block" />
|
|
423 |
+ </context>
|
|
424 |
+ <context name="varnish_errvclcode-quoted" attribute="String" lineEndContext="#pop">
|
|
425 |
+ <Detect2Chars attribute="String" context="#stay" char="\" char1=""" />
|
|
426 |
+ <DetectChar attribute="String" context="varnish_postvcldefinition" char=""" />
|
|
427 |
+ </context>
|
|
428 |
+ <context name="varnish_errvclcode" attribute="Normal Text" lineEndContext="#stay">
|
|
429 |
+ <DetectChar attribute="Normal Text" context="varnish_errvclcode-internal" char="{" />
|
|
430 |
+ <DetectChar attribute="Region Marker" context="varnish_postvcldefinition" char="}" endRegion="errvclcode_block" />
|
|
431 |
+ </context>
|
|
432 |
+ <context name="varnish_errvclcode-internal" attribute="Normal Text" lineEndContext="#stay">
|
|
433 |
+ <DetectChar attribute="Normal Text" context="varnish_errvclcode-internal" char="{" />
|
|
434 |
+ <DetectChar attribute="Normal Text" context="#pop" char="}" />
|
284 |
435 |
</context>
|
285 |
436 |
|
286 |
437 |
<!-- sema keyword -->
|
... |
... |
@@ -371,76 +522,12 @@
|
371 |
522 |
<!-- There does not seem to be a syntax highlighting dedicated to "standard shell" so let's use Bash instead -->
|
372 |
523 |
<IncludeRules context="##Bash" />
|
373 |
524 |
</context>
|
374 |
|
-
|
375 |
|
- <!-- Define keywords from other tools: variables and operators from the VCL language, varnishstat metrics -->
|
376 |
|
- <context name="vcl_variables" attribute="Normal Text" lineEndContext="#stay">
|
377 |
|
- <RegExpr attribute="Variable" context="#stay" String="now" />
|
378 |
|
- <RegExpr attribute="Storage" context="#stay" String="storage\.[a-zA-Z0-9]+(?:\.(?:free_space|used_space|happy))?" />
|
379 |
|
- <RegExpr attribute="TCP Property" context="#stay" String="client\.(ip|identity)" />
|
380 |
|
- <RegExpr attribute="TCP Property" context="#stay" String="server\.(ip|hostname|identity|port)" />
|
381 |
|
- <RegExpr attribute="HTTP Property" context="#stay" String="req\.(request|url|proto|backend|restarts|esi_level|ttl|grace|keep|xid|esi|can_gzip|backend\.healthy|hash_ignore_busy|hash_always_miss)" />
|
382 |
|
- <RegExpr attribute="HTTP Property" context="#stay" String="bereq\.(request|url|proto|connect_timeout|first_byte_timeout|between_bytes_timeout)" />
|
383 |
|
- <RegExpr attribute="HTTP Property" context="#stay" String="obj\.(proto|status|response|hits|ttl|grace|keep|lastuse)" />
|
384 |
|
- <RegExpr attribute="HTTP Property" context="#stay" String="beresp\.(proto|saintmode|status|response|do_esi|do_stream|do_gzip|do_gunzip|ttl|grace|keep|backend\.(name|ip|port)|storage|cacheable)" />
|
385 |
|
- <RegExpr attribute="HTTP Property" context="#stay" String="resp\.(proto|status|response)" />
|
386 |
|
- <RegExpr attribute="HTTP X- Header" context="#stay" String="(req|bereq|resp|beresp|obj)\.http\.X-[-_A-Za-z0-9]*" />
|
387 |
|
- <RegExpr attribute="HTTP Header" context="#stay" String="(req|bereq|resp|beresp|obj)\.http\.[A-Za-z][-_A-Za-z0-9]*" />
|
388 |
|
- </context>
|
389 |
|
- <context name="vcl_operators" attribute="Operator" lineEndContext="#stay">
|
390 |
|
- <DetectChar attribute="Logical Operator" context="#stay" char="!" />
|
391 |
|
- <Detect2Chars attribute="Logical Operator" context="#stay" char="&" char1="&" />
|
392 |
|
- <Detect2Chars attribute="Logical Operator" context="#stay" char="|" char1="|" />
|
393 |
|
-
|
394 |
|
- <Detect2Chars attribute="Comparison Operator" context="#stay" char="=" char1="=" />
|
395 |
|
- <Detect2Chars attribute="Comparison Operator" context="#stay" char="!" char1="=" />
|
396 |
|
- <Detect2Chars attribute="Comparison Operator" context="#stay" char="<" char1="=" />
|
397 |
|
- <Detect2Chars attribute="Comparison Operator" context="#stay" char=">" char1="=" />
|
398 |
|
- <DetectChar attribute="Comparison Operator" context="#stay" char="<" />
|
399 |
|
- <DetectChar attribute="Comparison Operator" context="#stay" char=">" />
|
400 |
|
- <DetectChar attribute="Comparison Operator" context="#stay" char="~" />
|
401 |
|
- <Detect2Chars attribute="Comparison Operator" context="#stay" char="!" char1="~" />
|
402 |
|
-
|
403 |
|
- <DetectChar attribute="Arithmetic Operator" context="#stay" char="+" />
|
404 |
|
- <DetectChar attribute="Arithmetic Operator" context="#stay" char="-" />
|
405 |
|
- <DetectChar attribute="Arithmetic Operator" context="#stay" char="*" />
|
406 |
|
- <DetectChar attribute="Arithmetic Operator" context="#stay" char="/" />
|
407 |
|
-
|
408 |
|
- <Detect2Chars attribute="Arithmetic Operator" context="#stay" char="+" char1="=" />
|
409 |
|
- <Detect2Chars attribute="Arithmetic Operator" context="#stay" char="-" char1="=" />
|
410 |
|
- <Detect2Chars attribute="Arithmetic Operator" context="#stay" char="*" char1="=" />
|
411 |
|
- <Detect2Chars attribute="Arithmetic Operator" context="#stay" char="/" char1="=" />
|
412 |
|
-
|
413 |
|
- <Detect2Chars attribute="Arithmetic Operator" context="#stay" char="+" char1="+" />
|
414 |
|
- <Detect2Chars attribute="Arithmetic Operator" context="#stay" char="-" char1="-" />
|
415 |
|
-
|
416 |
|
- <Detect2Chars attribute="Arithmetic Operator" context="#stay" char=">" char1=">" />
|
417 |
|
- <Detect2Chars attribute="Arithmetic Operator" context="#stay" char="<" char1="<" />
|
418 |
|
-
|
419 |
|
- <DetectChar attribute="Operator" context="#stay" char="=" />
|
420 |
|
- </context>
|
421 |
|
- <context name="varnishstat_variables" attribute="Normal Text" lineEndContext="#stay">
|
422 |
|
- <RegExpr attribute="VarnishStat metric" context="#stay" String="client_(?:conn|drop|req|drop_late)" />
|
423 |
|
- <RegExpr attribute="VarnishStat metric" context="#stay" String="cache_(?:hit(pass)?|miss)" />
|
424 |
|
- <RegExpr attribute="VarnishStat metric" context="#stay" String="backend_(?:conn|unhealthy|busy|fail|reuse|toolate|recycle|retry|req)" />
|
425 |
|
- <RegExpr attribute="VarnishStat metric" context="#stay" String="fetch_(?:head|length|chunked|eof|bad|close|oldhttp|zero|failed|1xx|204|304)" />
|
426 |
|
- <RegExpr attribute="VarnishStat metric" context="#stay" String="n_(?:sess_mem|sess|object|vampireobject|objectcore|objecthead|waitinglist|vbc|wrk|wrk_(?:create|failed|max|lqueue|queueddrop)|backend|expired|lru_nuked|lru_moved|obj(?:sendfile|write|overflow)|vcl|vcl_avail|vcl_discard|ban|ban_(?:gone|add|retire|obj_test|re_test|dups)|gzip|gunzip)" />
|
427 |
|
- <RegExpr attribute="VarnishStat metric" context="#stay" String="(?:losthdr|backend_req|accept_fail|uptime|vmods)" />
|
428 |
|
- <RegExpr attribute="VarnishStat metric" context="#stay" String="s_(?:sess|req|pipe|pass|fetch|hdrbytes|bodybytes)" />
|
429 |
|
- <RegExpr attribute="VarnishStat metric" context="#stay" String="sess_(?:closed|pipeline|readahead|linger|herd)" />
|
430 |
|
- <RegExpr attribute="VarnishStat metric" context="#stay" String="shm_(?:records|writes|flushes|cont|cycles)" />
|
431 |
|
- <RegExpr attribute="VarnishStat metric" context="#stay" String="sms_(?:nreq|nobj|nbytes|balloc|bfree)" />
|
432 |
|
- <RegExpr attribute="VarnishStat metric" context="#stay" String="hcb_(?:nolock|lock|insert)" />
|
433 |
|
- <RegExpr attribute="VarnishStat metric" context="#stay" String="esi_(?:errors|warnings)" />
|
434 |
|
- <RegExpr attribute="VarnishStat metric" context="#stay" String="dir_dns_(?:lookups|failed|hit|cache_full)" />
|
435 |
|
- <RegExpr attribute="VarnishStat metric" context="#stay" String="LCK\.(?:sm[spaf]|hsl|hcb|hcl|vcl|stat|sessmem|wstat|herder|wq|objhdr|exp|lru|cli|ban|vbp|vbe|backend)\.(?:creat|destroy|locks|colls)" />
|
436 |
|
- <RegExpr attribute="VarnishStat metric" context="#stay" String="SMA\.[a-zA-Z0-9_-]+\.(?:c_(?:req|fail|bytes|freed)|g_(?:alloc|bytes|space))" />
|
437 |
|
- <RegExpr attribute="VarnishStat metric" context="#stay" String="VBE\..+\.(?:happy|vcls)" />
|
438 |
|
- </context>
|
439 |
525 |
</contexts>
|
440 |
526 |
<itemDatas>
|
441 |
527 |
<itemData name="Normal Text" defStyleNum="dsNormal" />
|
442 |
528 |
<itemData name="Comment" defStyleNum="dsComment" />
|
443 |
529 |
<itemData name="Keyword" defStyleNum="dsKeyword" />
|
|
530 |
+ <itemData name="Tx Keyword" defStyleNum="dsKeyword" color="#008000" bold="0" />
|
444 |
531 |
<itemData name="TxReq Keyword" defStyleNum="dsKeyword" color="#008000" bold="0" />
|
445 |
532 |
<itemData name="TxResp Keyword" defStyleNum="dsKeyword" color="#008000" bold="0" />
|
446 |
533 |
<itemData name="RxResp Keyword" defStyleNum="dsKeyword" color="#008000" bold="0" />
|
... |
... |
@@ -466,6 +553,7 @@
|
466 |
553 |
<itemData name="Client Identifier" defStyleNum="dsDataType" color="#0D62FF" selColor="#0D62FF" bold="0" underline="1" />
|
467 |
554 |
<itemData name="Server Identifier" defStyleNum="dsDataType" color="#0D62FF" selColor="#0D62FF" bold="0" underline="1" />
|
468 |
555 |
<itemData name="Varnish Identifier" defStyleNum="dsDataType" color="#0D62FF" selColor="#0D62FF" bold="0" underline="1" />
|
|
556 |
+ <itemData name="LogExpect Identifier" defStyleNum="dsDataType" color="#0D62FF" selColor="#0D62FF" bold="0" underline="1" />
|
469 |
557 |
<itemData name="Sema Identifier" defStyleNum="dsDataType" color="#0D62FF" selColor="#0D62FF" bold="0" underline="1" />
|
470 |
558 |
</itemDatas>
|
471 |
559 |
</highlighting>
|