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_pathvarnishd 实例使用 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" ...

另请参阅

HISTORY

Varnishtest程序由Pul-Henning Kamp<phk@phk.frebsd.dk>与Varnish Software AS合作开发。本手册页面最初由Stig Sandbeck Mathisen<ssm@linpro.no>撰写,由克里斯蒂安·林格斯特·L<kristian@Varnish-cache.org>更新。