Varnish测试¶
Varnish测试程序¶
- 手册部分:
1
SYNOPSIS¶
varnishtest [-hikLlqv] [-b size] [-D name=val] [-j jobs] [-n iter] [-t duration] file [file ...]
DESCRIPTION¶
Varnishtest程序是用于测试Varnish缓存的脚本驱动程序。
Varnishtest程序在启动并提供一个或多个脚本文件时,可以创建许多表示后端的线程、一些表示客户端的线程和一个varnishd进程。然后,这被用来模拟一个事务,以激发特定的行为。
以下选项可用:
- -b size
设置内部缓冲区大小(默认值:1M)
-D名称=VAL定义在脚本中使用的宏
- -h
显示帮助
- -i
设置PATH和vmod_PATH以在生成树中查找Varnish二进制文件
- -j jobs
并行运行这么多测试
- -k
在测试失败时继续
- -L
永远离开临时职训局*
- -l
离开临时职业训练局。*如果测试失败
- -n iterations
如此多次运行测试
-p name=val将参数传递给所有varnishd命令行
- -q
静默模式:仅报告故障
- -t duration
在此长时间之后进行时间测试(默认为:60秒)
- -v
详细模式:始终报告测试日志
要用作脚本的文件文件
如果 TMPDIR 是在环境中设置的,则varnishtest创建临时 vtc.* 中每个测试的目录 $TMPDIR ,否则在 /tmp 。
SCRIPTS¶
VTC语法详细记录在 VTC 。如果您想要比下面的示例更多的示例,您可以查看Varnish源代码存储库,位于 bin/varnishtest/tests/ ,其中保存了Varnish的所有回归测试。
示例::
varnishtest "#1029"
server s1 {
rxreq
expect req.url == "/bar"
txresp -gzipbody {[bar]}
rxreq
expect req.url == "/foo"
txresp -body {<h1>FOO<esi:include src="/bar"/>BARF</h1>}
} -start
varnish v1 -vcl+backend {
sub vcl_backend_response {
set beresp.do_esi = true;
if (bereq.url == "/foo") {
set beresp.ttl = 0s;
} else {
set beresp.ttl = 10m;
}
}
} -start
client c1 {
txreq -url "/bar" -hdr "Accept-Encoding: gzip"
rxresp
gunzip
expect resp.bodylen == 5
txreq -url "/foo" -hdr "Accept-Encoding: gzip"
rxresp
expect resp.bodylen == 21
} -run
运行时,上面的脚本将模拟一个服务器(S1),该服务器需要两个不同的请求。它将启动一个Varnish服务器(V1)并将后端定义添加到指定的VCL(-vCL+Backend)。最后,它启动c1-客户端,这是一个发送两个请求的客户端。
测试构建树¶
无论您是在构建VMOD,还是尝试使用您新构建的VMOD,您都可以看出 varnishtest
要通过一个 vmod_path 至 varnishd
实例使用 varnish -start
测试用例中的命令::
varnishtest -p vmod_path=... /path/to/*.vtc
这样,您就可以在安装和构建的VMOD上使用相同的测试用例:
server s1 {...} -start
varnish v1 -vcl+backend {
import wossname;
...
} -start
...
您并不局限于 vmod_path 并且可以传递任何参数,允许您在不更改测试套件的情况下运行构建矩阵。您可以使用宏实现相同的功能,但是需要在每次运行时定义它们。
你可以看到实际的 varnishd
测试输出中的命令行大致如下::
exec varnishd [varnishtest -p params] [testing params] [vtc -arg params]
使用定义的参数 varnishtest -p
所需的参数可以重写 varnishtest
正常运行,它们可能会被测试脚本中设置的参数覆盖。
还有一种特殊的模式, varnishtest
为自己构建一条路径和一个 vmod_path 为了在生成树中找到Varnish二进制文件(程序和VMOD), varnishtest
二进制。这是为了测试正在开发中的Varnish,将不考虑您的 vmod_path 如果你定了一个。
如果您需要在Varnish构建树上测试您的VMOD,则必须首先将其安装在临时目录中。使用安装程序的 pkg-config(1) 您可以构建一个正确的路径来访问Varnish程序,并且 vmod_path 要同时访问VMOD和内置VMOD,请执行以下操作:
export PKG_CONFIG_PATH=/path/to/install/lib/pkgconfig
BINDIR="$(pkg-config --variable=bindir varnishapi)"
SBINDIR="$(pkg-config --variable=sbindir varnishapi)"
PATH="SBINDIR:BINDIR:$PATH"
VMODDIR="$(pkg-config --variable=vmoddir varnishapi)"
VMOD_PATH="/path/to/your/vmod/build/dir:$VMODDIR"
varnishtest -p vmod_path="$VMOD_PATH" ...
另请参阅¶
带有测试的varnishtest源代码存储库
HISTORY¶
Varnishtest程序由Pul-Henning Kamp<phk@phk.frebsd.dk>与Varnish Software AS合作开发。本手册页面最初由Stig Sandbeck Mathisen<ssm@linpro.no>撰写,由克里斯蒂安·林格斯特·L<kristian@Varnish-cache.org>更新。
COPYRIGHT¶
本文档在与Varnish本身相同的许可下授权。有关详情,请参阅许可证。
版权所有(C)2007-2016 Varnish软件AS