0

我目前正在尝试在我不断增长的清漆配置文件中添加一些单元测试。

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) - 在包含之前执行后端,会导致重新定义错误。

模拟后端的正确方法是什么?

4

1 回答 1

0

我们已将 VCL 代码拆分为多个文件,然后将它们全部“包含”到“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";
}
于 2016-12-22T06:48:01.310 回答