varnishtest
Программа тестирования Varnish
- Раздел руководства:
-
1
СИНТЕЗ
varnishtest [-hikLlqv] [-b размер] [-D имя=значение] [-j задания] [-n итерации] [-t длительность] файл [файл …]
ОПИСАНИЕ
Программа varnishtest — это управляемая скриптом программа, используемая для тестирования кэша Varnish.
Программа varnishtest, при запуске с одним или несколькими скриптовыми файлами, может создать несколько потоков, представляющих бэкенды, несколько потоков, представляющих клиентов, и процесс varnishd. Это используется для имитации транзакции, чтобы вызвать определённое поведение.
Доступны следующие параметры:
- -b размер
-
Установить размер внутреннего буфера (по умолчанию: 1 МБ)
-D имя=значение Определить макрос для использования в скриптах
- -h
-
Показать справку
- -i
-
Установить PATH и vmod_path для поиска бинарников varnish в дереве сборки
- -j задания
-
Выполнить заданное количество тестов параллельно
- -k
-
Продолжать при ошибке теста
- -L
-
Всегда оставлять временные файлы vtc.*
- -l
-
Оставить временные файлы vtc.* при ошибке теста
- -n итерации
-
Выполнить тесты указанное количество раз
-p имя=значение Передать параметры всем командным строкам varnishd
- -q
-
Режим без вывода: сообщать только об ошибках
- -t длительность
-
Прервать тесты после указанного времени (по умолчанию: 60 секунд)
- -v
-
Подробный режим: всегда сообщать о журнале теста
файл Файл, используемый в качестве скрипта
Если в окружении установлено TMPDIR, varnishtest создает временные vtc.* каталоги для каждого теста в $TMPDIR, иначе в /tmp.
СЦЕНАРИИ
Синтаксис 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 или пытаетесь использовать недавно созданный, вы можете указать 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 сам строит PATH и vmod_path для поиска бинарных файлов Varnish (программ и VMOD) в дереве сборки вокруг бинарного файла varnishtest. Это предназначено для тестирования Varnish во время разработки и проигнорирует ваш vmod_path, если вы его зададите.
Если вам нужно протестировать ваш VMOD на основе дерева сборки Varnish, вы должны его сначала установить, например, во временной директории. Используя информацию, предоставленную установкой с помощью pkg-config(1), вы можете создать правильный PATH для доступа к программам 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 с тестами
- varnishhist
- varnishlog
- varnishncsa
- varnishstat
- varnishtop
- VCL
- VTC
- VMOD vtc — модуль утилит для varnishtest
ИСТОРИЯ
Программа varnishtest была разработана Poul-Henning Kamp <phk@phk.freebsd.dk> в сотрудничестве с Varnish Software AS. Данная страница руководства была первоначально написана Stig Sandbeck Mathisen <ssm@linpro.no> и обновлена Kristian Lyngstøl <kristian@varnish-cache.org>.
АВТОРСКИЕ ПРАВА
Данный документ лицензирован под той же лицензией, что и сам Varnish. Подробности см. в файле LICENCE.
- Авторские права (c) 2007-2016 Varnish Software AS
Copyright © 2006 Verdens Gang AS
Copyright © 2006–2020 Varnish Software AS
Licensed under the BSD-2-Clause License.
https://varnish-cache.org/docs/7.4/reference/varnishtest.html