/
t02000.vtc
139 lines (119 loc) · 3.51 KB
/
t02000.vtc
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
varnishtest "Direct H2 start"
server s1 {
rxreq
expect req.http.host == foo.bar
txresp \
-hdr "H234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789I: foo" \
-hdr "Foo: H234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789I" \
-bodylen 10
rxreq
txresp
rxreq
txresp
} -start
varnish v1 -vcl+backend {
sub vcl_recv {
return (pipe);
}
} -start
varnish v1 -cliok "param.set debug +syncvsl"
varnish v1 -cliok "param.set vsl_mask +H2RxHdr,+H2RxBody,+H2TxHdr,+H2TxBody"
process p1 {exec varnishlog -n ${v1_name} -g raw -w ${tmpdir}/vlog -A} -start
shell {while ! test -s ${tmpdir}/vlog ; do sleep 1 ; done}
client c1 {
txpri
expect_close
} -run
varnish v1 -cliok "param.set feature +http2"
varnish v1 -cliok "param.reset h2_initial_window_size"
client c2 {
stream 1 {
txprio -weight 10 -stream 0
} -run
stream 3 {
txprio -weight 10 -stream 0
} -run
stream 5 {
txprio -weight 10 -stream 2
} -run
stream 7 {
txreq -dep 3 -hdr :authority foo.bar -pad cotton
rxresp
expect resp.status == 200
delay 1
txrst -err 0x1111
} -start
stream 0 {
txping -data "_-__-_-_"
rxping
expect ping.ack == "true"
expect ping.data == "_-__-_-_"
} -run
stream 7 -wait
} -run
varnish v1 -expect MEMPOOL.req0.live == 0
varnish v1 -expect MEMPOOL.req1.live == 0
varnish v1 -expect MEMPOOL.sess0.live == 0
varnish v1 -expect MEMPOOL.sess1.live == 0
process p1 -stop
# shell {cat ${tmpdir}/vlog}
# SETTINGS with default initial window size
shell -match {1001 H2TxHdr c \[00000c040000000000\]} {
cat ${tmpdir}/vlog
}
# While we're here, test sess.xid over H2 as well
varnish v1 -syntax 4.1 -vcl+backend {
sub vcl_backend_response {
set beresp.http.B-Sess-XID = sess.xid;
}
sub vcl_deliver {
set resp.http.C-Sess-XID = sess.xid;
set resp.http.xport = req.transport;
}
}
client c3 {
stream 7 {
txreq -url "/uncached"
rxresp
expect resp.status == 200
expect resp.http.C-Sess-XID ~ "^[0-9]+$"
expect resp.http.B-Sess-XID ~ "^[0-9]+$"
expect resp.http.C-Sess-XID == resp.http.B-Sess-XID
expect resp.http.xport == HTTP/2
} -run
stream 9 {
txreq -url "/still_not_cached"
rxresp
expect resp.status == 200
expect resp.http.C-Sess-XID ~ "^[0-9]+$"
expect resp.http.B-Sess-XID ~ "^[0-9]+$"
expect resp.http.C-Sess-XID == resp.http.B-Sess-XID
} -run
} -run
# Check default settings
varnish v1 -cliok "param.reset h2_header_table_size"
varnish v1 -cliok "param.reset h2_max_concurrent_streams"
varnish v1 -cliok "param.reset h2_initial_window_size"
varnish v1 -cliok "param.reset h2_max_frame_size"
varnish v1 -cliok "param.reset h2_max_header_list_size"
varnish v1 -cliok "param.reset http_req_size"
client c4 {
txpri
stream 0 {
# check initial settings from varnishd
txsettings
rxsettings
expect settings.ack == false
expect settings.push == <undef>
expect settings.hdrtbl == <undef>
expect settings.maxstreams == 100
expect settings.winsize == <undef>
expect settings.framesize == <undef>
expect settings.hdrsize ~ ^(12288|32768)$
# check (some) values not set by varnishd
expect stream.window == 65535
txsettings -ack
rxsettings
expect settings.ack == true
} -run
} -run