Varnish VTC 包括 - 覆盖后端{} -

Varnish VTC include - override backend{} -

我目前正在尝试向我不断增长的 varnish 配置文件中添加一些 unitests。

我设法初始化了它,我想我掌握了 varnishtestvtc 格式的基础知识。

我需要加载我的 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";
}