2016-12-21 60 views
0

我目前正試圖添加一些unitests到我越來越多的清漆配置文件。光油VTC包括 - 重寫後端{} -

我設法初始化它,我想我得到了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) - 在include之前執行後端,導致重定義錯誤。

什麼是模擬後端的正確方法?

回答

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"; 
} 
+0

有幾乎同樣的想法,尋找答案THX。 –

+0

只是爲了給你一個進一步的想法:我們「元程序」我們的清漆測試。我的意思是,我們在JSON中有Ruby代碼和配置,Ruby代碼可以從配置生成後端和導向器的VCL代碼等。 – Ronald

+0

聽起來很棒! - 有什麼可以和我分享的嗎? –