Varnish VTC 包括 - 覆盖后端{} -
Varnish VTC include - override backend{} -
我目前正在尝试向我不断增长的 varnish 配置文件中添加一些 unitests。
我设法初始化了它,我想我掌握了 varnishtest
和 vtc
格式的基础知识。
我需要加载我的 varnish.vcl
- 里面有一些后端。 .host
到一些内部主机,这些无法从 CI 机器上解析。
如何覆盖后端?
我的想法基本上是这样的:
(api01 在 varnish.vcl
中使用内部 dns 定义。)
varnish v1 -vcl {
# …some vcl to define backends… #
include "${pwd}/varnish.vcl";
backend api01 { .host = "127.0.0.1"; }
}
varnish v1 -start
它失败了 - Backend host '"api_loadbalancer"' could not be resolved to an IP address
但它不会继续定义上面的后端(使用 127.0.0.1)- 在包含之前执行后端,会导致重新定义错误。
模拟后端的正确方法是什么?
我们已经将我们的 VCL 代码拆分成多个文件,然后 "include" 将它们全部放入一个 "main.vcl",然后我们用它来启动 Varnish。这是一个简化的示例结构:
main.vcl
-- backends.vcl
-- directors.vcl
-- mainLogic.vcl
这使您能够仅将一些 vcl 文件包含到您的测试用例中,并允许您指定后端。例如,如果你想使用一个真正的后端:
varnish v1 -vcl {
backend api01 { .host = "127.0.0.1"; }
include "${pwd}/mainLogic.vcl";
}
或者如果您想模拟后端(我们所做的):
varnish v1 -vcl {
backend api01 {
.host = "${s1_addr}";
.port = "${s1_port}";
}
include "${pwd}/mainLogic.vcl";
}
我目前正在尝试向我不断增长的 varnish 配置文件中添加一些 unitests。
我设法初始化了它,我想我掌握了 varnishtest
和 vtc
格式的基础知识。
我需要加载我的 varnish.vcl
- 里面有一些后端。 .host
到一些内部主机,这些无法从 CI 机器上解析。
如何覆盖后端?
我的想法基本上是这样的:
(api01 在 varnish.vcl
中使用内部 dns 定义。)
varnish v1 -vcl {
# …some vcl to define backends… #
include "${pwd}/varnish.vcl";
backend api01 { .host = "127.0.0.1"; }
}
varnish v1 -start
它失败了 - Backend host '"api_loadbalancer"' could not be resolved to an IP address
但它不会继续定义上面的后端(使用 127.0.0.1)- 在包含之前执行后端,会导致重新定义错误。
模拟后端的正确方法是什么?
我们已经将我们的 VCL 代码拆分成多个文件,然后 "include" 将它们全部放入一个 "main.vcl",然后我们用它来启动 Varnish。这是一个简化的示例结构:
main.vcl
-- backends.vcl
-- directors.vcl
-- mainLogic.vcl
这使您能够仅将一些 vcl 文件包含到您的测试用例中,并允许您指定后端。例如,如果你想使用一个真正的后端:
varnish v1 -vcl {
backend api01 { .host = "127.0.0.1"; }
include "${pwd}/mainLogic.vcl";
}
或者如果您想模拟后端(我们所做的):
varnish v1 -vcl {
backend api01 {
.host = "${s1_addr}";
.port = "${s1_port}";
}
include "${pwd}/mainLogic.vcl";
}