[master] 2e3208f52 vtc: Add a variant of o00001.vtc to test proxy + http/2
Nils Goroll
nils.goroll at uplex.de
Fri Feb 21 13:48:10 UTC 2025
commit 2e3208f52950604ea3f8b1522962db64b6933aaf
Author: Nils Goroll <nils.goroll at uplex.de>
Date: Fri Feb 21 14:36:38 2025 +0100
vtc: Add a variant of o00001.vtc to test proxy + http/2
diff --git a/bin/varnishtest/tests/o02001.vtc b/bin/varnishtest/tests/o02001.vtc
index 97209254c..c3cdddced 100644
--- a/bin/varnishtest/tests/o02001.vtc
+++ b/bin/varnishtest/tests/o02001.vtc
@@ -1,4 +1,4 @@
-varnishtest "PROXY v2 test"
+varnishtest "PROXY v2 test on http2"
server s1 {
rxreq
@@ -37,7 +37,10 @@ server s1 {
txresp
} -start
-varnish v1 -proto "PROXY" -vcl+backend {
+varnish v1 -proto "PROXY" \
+ -arg "-p feature=+http2" \
+ -vcl+backend {
+ import proxy;
import std;
acl fwd_client {
@@ -61,6 +64,7 @@ varnish v1 -proto "PROXY" -vcl+backend {
set resp.http.sp = std.port(server.ip);
set resp.http.fc = (client.ip ~ fwd_client);
set resp.http.fs = (server.ip ~ fwd_server);
+ set resp.http.alpn = proxy.alpn();
set resp.http.xport = req.transport;
}
} -start
@@ -82,14 +86,15 @@ client c1 {
# LOCAL command
sendhex "0d 0a 0d 0a 00 0d 0a 51 55 49 54 0a"
sendhex "20 00 00 00"
- txreq -url /1
- rxresp
- expect resp.status == 200
- expect resp.http.si == "${v1_addr}"
- expect resp.http.sp == "${v1_port}"
- expect resp.http.ci == "${localhost}"
- # Transport is HTTP/1, even though proxy is used
- expect resp.http.xport == HTTP/1
+ stream 1 {
+ txreq -url /1
+ rxresp
+ expect resp.status == 200
+ expect resp.http.si == "${v1_addr}"
+ expect resp.http.sp == "${v1_port}"
+ expect resp.http.ci == "${localhost}"
+ expect resp.http.xport == "HTTP/2"
+ } -run
} -run
delay .1
@@ -108,12 +113,15 @@ client c1 {
# UNSPEC proto
sendhex "0d 0a 0d 0a 00 0d 0a 51 55 49 54 0a"
sendhex "21 00 00 00"
- txreq -url /2
- rxresp
- expect resp.status == 200
- expect resp.http.si == "${v1_addr}"
- expect resp.http.sp == "${v1_port}"
- expect resp.http.ci == "${localhost}"
+ stream 1 {
+ txreq -url /2
+ rxresp
+ expect resp.status == 200
+ expect resp.http.si == "${v1_addr}"
+ expect resp.http.sp == "${v1_port}"
+ expect resp.http.ci == "${localhost}"
+ expect resp.http.xport == "HTTP/2"
+ } -run
} -run
delay .1
@@ -122,12 +130,15 @@ client c1 {
# unknown proto
sendhex "0d 0a 0d 0a 00 0d 0a 51 55 49 54 0a"
sendhex "21 99 00 00"
- txreq -url /3
- rxresp
- expect resp.status == 200
- expect resp.http.si == "${v1_addr}"
- expect resp.http.sp == "${v1_port}"
- expect resp.http.ci == "${localhost}"
+ stream 1 {
+ txreq -url /3
+ rxresp
+ expect resp.status == 200
+ expect resp.http.si == "${v1_addr}"
+ expect resp.http.sp == "${v1_port}"
+ expect resp.http.ci == "${localhost}"
+ expect resp.http.xport == "HTTP/2"
+ } -run
} -run
delay .1
@@ -137,12 +148,15 @@ client c1 {
sendhex "0d 0a 0d 0a 00 0d 0a 51 55 49 54 0a"
sendhex "21 11 00 0b"
sendhex "01 02 03 04 05 06 07 08 09 0a 0b"
- txreq -url /4
- rxresp
- expect resp.status == 200
- expect resp.http.si == "${v1_addr}"
- expect resp.http.sp == "${v1_port}"
- expect resp.http.ci == "${localhost}"
+ stream 1 {
+ txreq -url /4
+ rxresp
+ expect resp.status == 200
+ expect resp.http.si == "${v1_addr}"
+ expect resp.http.sp == "${v1_port}"
+ expect resp.http.ci == "${localhost}"
+ expect resp.http.xport == "HTTP/2"
+ } -run
} -run
delay .1
@@ -154,50 +168,60 @@ client c1 {
sendhex "00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f"
sendhex "00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f"
sendhex "01 02 03"
- txreq -url /5
- rxresp
- expect resp.status == 200
- expect resp.http.fs == false
- expect resp.http.fc == false
- expect resp.http.si == "${v1_addr}"
- expect resp.http.sp == "${v1_port}"
- expect resp.http.ci == "${localhost}"
+ stream 1 {
+ txreq -url /5
+ rxresp
+ expect resp.status == 200
+ expect resp.http.fs == false
+ expect resp.http.fc == false
+ expect resp.http.si == "${v1_addr}"
+ expect resp.http.sp == "${v1_port}"
+ expect resp.http.ci == "${localhost}"
+ } -run
} -run
delay .1
# good IPv4
-client c1 -proxy2 "1.2.3.4:2314 5.6.7.8:2828" {
- txreq -url /6
- rxresp
- expect resp.status == 200
- expect resp.http.fs == true
- expect resp.http.fc == true
- expect resp.http.ci == "1.2.3.4"
- expect resp.http.cp == "2314"
- expect resp.http.si == "5.6.7.8"
- expect resp.http.sp == "2828"
- expect resp.http.li == "${v1_addr}"
- expect resp.http.lp == "${v1_port}"
- expect resp.http.ri != "1.2.3.4"
+client c1 -proxy2 "1.2.3.4:2314 5.6.7.8:2828 alpn=h2" {
+ stream 1 {
+ txreq -url /6
+ rxresp
+ expect resp.status == 200
+ expect resp.http.fs == true
+ expect resp.http.fc == true
+ expect resp.http.ci == "1.2.3.4"
+ expect resp.http.cp == "2314"
+ expect resp.http.si == "5.6.7.8"
+ expect resp.http.sp == "2828"
+ expect resp.http.li == "${v1_addr}"
+ expect resp.http.lp == "${v1_port}"
+ expect resp.http.ri != "1.2.3.4"
+ expect resp.http.alpn == "h2"
+ expect resp.http.xport == "HTTP/2"
+ } -run
} -run
delay .1
# good IPv6
client c1 \
- -proxy2 "[102:304:506::d0e:f10]:2314 [8182:8384:8586::8d8e:8f80]:2828" {
- txreq -url /7
- rxresp
- expect resp.status == 200
- expect resp.http.fs == true
- expect resp.http.fc == true
- expect resp.http.ci == "102:304:506::d0e:f10"
- expect resp.http.cp == "2314"
- expect resp.http.si == "8182:8384:8586::8d8e:8f80"
- expect resp.http.sp == "2828"
- expect resp.http.li == "${v1_addr}"
- expect resp.http.lp == "${v1_port}"
- expect resp.http.ri != "102:304:506::d0e:f10"
+ -proxy2 "[102:304:506::d0e:f10]:2314 [8182:8384:8586::8d8e:8f80]:2828 alpn=h2" {
+ stream 1 {
+ txreq -url /7
+ rxresp
+ expect resp.status == 200
+ expect resp.http.fs == true
+ expect resp.http.fc == true
+ expect resp.http.ci == "102:304:506::d0e:f10"
+ expect resp.http.cp == "2314"
+ expect resp.http.si == "8182:8384:8586::8d8e:8f80"
+ expect resp.http.sp == "2828"
+ expect resp.http.li == "${v1_addr}"
+ expect resp.http.lp == "${v1_port}"
+ expect resp.http.ri != "102:304:506::d0e:f10"
+ expect resp.http.alpn == "h2"
+ expect resp.http.xport == "HTTP/2"
+ } -run
} -run
delay .1
More information about the varnish-commit
mailing list