Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
varnish-cache
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
varnishcache
varnish-cache
Commits
cfd11c1d
Commit
cfd11c1d
authored
Jul 17, 2018
by
Geoff Simmons
Committed by
Dridi Boukelmoune
Aug 16, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Test some out of workspace conditions for VMOD blob.
To get some better GCOV coverage. So far just IDENTITY encoding.
parent
119a058f
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
97 additions
and
0 deletions
+97
-0
m00049.vtc
bin/varnishtest/tests/m00049.vtc
+97
-0
No files found.
bin/varnishtest/tests/m00049.vtc
0 → 100644
View file @
cfd11c1d
varnishtest "VMOD blob workspace overflow conditions"
varnish v1 -vcl {
import blob;
import vtc;
backend b { .host = "${bad_ip}"; }
sub vcl_recv {
if (req.url == "/1") {
# Too small for the vmod_priv object.
vtc.workspace_alloc(client, -8);
}
elsif (req.url == "/2") {
# Likely large enough for the vmod_priv object,
# but not enough left over for the decode.
vtc.workspace_alloc(client, -33);
}
elsif (req.url == "/3") {
# Enough for the decode, but not enough left
# over for the encode.
vtc.workspace_alloc(client, -50);
}
set req.http.Decode
= blob.encode(blob=blob.decode(encoded="1234567890"));
}
sub vcl_miss {
if (req.url == "/4") {
# Enough for the req.hash BLOB (vmod_priv + 32
# bytes), but not enough left over for the
# encoding.
vtc.workspace_alloc(client, -65);
set req.http.Encode = blob.encode(blob=req.hash);
}
return( synth(200) );
}
} -start
logexpect l1 -v v1 -d 0 -g vxid -q "VCL_Error" {
expect 0 * Begin req
expect * = VCL_Error {^vmod blob error: cannot decode, out of space$}
expect * = End
} -start
client c1 {
txreq -url "/1"
rxresp
expect resp.status == 503
expect resp.reason == "VCL failed"
} -run
logexpect l1 -wait
logexpect l1 -v v1 -d 0 -g vxid -q "VCL_Error" {
expect 0 * Begin req
expect * = VCL_Error {^vmod blob error: cannot decode, out of space$}
expect * = End
} -start
client c1 {
txreq -url "/2"
rxresp
expect resp.status == 503
expect resp.reason == "VCL failed"
} -run
logexpect l1 -wait
logexpect l1 -v v1 -d 0 -g vxid -q "VCL_Error" {
expect 0 * Begin req
expect * = VCL_Error {^vmod blob error: cannot encode, out of space$}
expect * = End
} -start
client c1 {
txreq -url "/3"
rxresp
expect resp.status == 503
expect resp.reason == "VCL failed"
} -run
logexpect l1 -wait
logexpect l1 -v v1 -d 0 -g vxid -q "VCL_Error" {
expect 0 * Begin req
expect * = VCL_Error {^vmod blob error: cannot encode, out of space$}
expect * = End
} -start
client c1 {
txreq -url "/4"
rxresp
expect resp.status == 503
expect resp.reason == "VCL failed"
} -run
logexpect l1 -wait
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment