summaryrefslogtreecommitdiffstats
path: root/reg-tests
diff options
context:
space:
mode:
Diffstat (limited to 'reg-tests')
-rw-r--r--reg-tests/connection/h2_glitches.vtc108
-rw-r--r--reg-tests/http-rules/forwarded-header-7239.vtc6
2 files changed, 114 insertions, 0 deletions
diff --git a/reg-tests/connection/h2_glitches.vtc b/reg-tests/connection/h2_glitches.vtc
new file mode 100644
index 0000000..39ec4d6
--- /dev/null
+++ b/reg-tests/connection/h2_glitches.vtc
@@ -0,0 +1,108 @@
+# This test verifies that H2 anomalies counted as glitches are properly detected
+# and fetched.
+
+varnishtest "h2 glitches"
+feature ignore_unknown_macro
+
+# haproxy frontend
+haproxy hap -conf {
+ defaults
+ mode http
+
+ listen fe1
+ bind "fd@${fe1}" proto h2
+ http-request return status 200 hdr x-glitches %[fc_glitches]
+} -start
+
+# valid request: no glitch
+client c1 -connect ${hap_fe1_sock} {
+ txpri
+ stream 0 {
+ txsettings
+ rxsettings
+ txsettings -ack
+ rxsettings
+ expect settings.ack == true
+ } -run
+
+ stream 1 {
+ txreq \
+ -method "GET" \
+ -scheme "http" \
+ -url "/"
+ rxresp
+ expect resp.status == 200
+ expect resp.http.x-glitches == 0
+ } -run
+
+ stream 3 {
+ txreq \
+ -method "GET" \
+ -scheme "http" \
+ -url "/"
+ rxresp
+ expect resp.status == 200
+ expect resp.http.x-glitches == 0
+ } -run
+} -run
+
+# invalid path: => req decoding error => glitch++
+client c2-path -connect ${hap_fe1_sock} {
+ txpri
+ stream 0 {
+ txsettings
+ rxsettings
+ txsettings -ack
+ rxsettings
+ expect settings.ack == true
+ } -run
+
+ stream 1 {
+ txreq \
+ -method "GET" \
+ -scheme "http" \
+ -url "hello-world"
+ rxrst
+ } -run
+
+ stream 3 {
+ txreq \
+ -method "GET" \
+ -scheme "http" \
+ -url "/"
+ rxresp
+ expect resp.status == 200
+ expect resp.http.x-glitches == 1
+ } -run
+} -run
+
+# invalid scheme: blocked at HTX layer, not counted
+client c3-scheme -connect ${hap_fe1_sock} {
+ txpri
+ stream 0 {
+ txsettings
+ rxsettings
+ txsettings -ack
+ rxsettings
+ expect settings.ack == true
+ } -run
+
+ stream 1 {
+ txreq \
+ -method "GET" \
+ -scheme "http://localhost/?" \
+ -url "/"
+ rxresp
+ expect resp.status == 400
+ } -run
+
+ stream 3 {
+ txreq \
+ -method "GET" \
+ -scheme "http" \
+ -url "/"
+ rxresp
+ expect resp.status == 200
+ expect resp.http.x-glitches == 0
+ } -run
+} -run
diff --git a/reg-tests/http-rules/forwarded-header-7239.vtc b/reg-tests/http-rules/forwarded-header-7239.vtc
index a894113..dd2c6e3 100644
--- a/reg-tests/http-rules/forwarded-header-7239.vtc
+++ b/reg-tests/http-rules/forwarded-header-7239.vtc
@@ -151,6 +151,12 @@ client c1 -connect ${h1_fe1_sock} {
expect resp.status == 200
expect resp.http.nodename == "::1"
expect resp.http.nodeport == "_id"
+
+ txreq -req GET -url /req4 \
+ -hdr "forwarded: for=127.9.0.1"
+ rxresp
+ expect resp.status == 200
+ expect resp.http.nodename == "127.9.0.1"
} -run
client c2 -connect ${h2_fe1h2_sock} {