2013-07-26 57 views
0

我使用Ant等到URL是運行一個可執行程序任務之前訪問,但較長等待遠比我想它。螞蟻WAITFOR等待時間比它需要

waitfor -

<waitfor maxwait="3" maxwaitunit="minute" checkevery="500"> 
    <http url="http://127.0.0.1:${product.listenport}/start/"/> 
</waitfor> 

幾乎只要我看到終端上這個輸出,我加載網址在瀏覽器獲取頁面預期,並且仍然螞蟻等待(可能長於maxwait價值甚至)。

這個實現有問題嗎?

回答

0

在第一次檢查之前,您可能需要插入一個短暫的延遲(只需幾秒鐘就可以聽到它的聲音)。我懷疑螞蟻正在它的第一次嘗試太快獲取URL,並在掛出於某種原因首先取(waitfor都有機會等到半秒,然後重試前)。

<sleep seconds="5" /> 
<waitfor maxwait="3" maxwaitunit="minute" checkevery="500"> 
    <http url="http://127.0.0.1:${product.listenport}/start/"/> 
</waitfor> 
+0

這似乎是合乎邏輯的,但不幸的是,等待並沒有幫助。 waitfor只是保持超時。我已經添加了timeoutproperty並驗證了會發生什麼。我目前的解決方案是儘量減少maxwait,因爲到目前爲止,服務器是可用的。 –

0

我剛纔也有這個問題。我試圖用WAITFOR作爲一種平

我們的一些單元測試需要一個數據庫連接到正確履行他們與我們有一個公司服務器上的數據庫。我不想測試嘗試和運行,如果我沒有連接到服務器,因爲這些任務只是掛在等待服務器,如果它運行測試或只是等待一個方面,我不能告訴。當我意識到後者時,相當多的浪費時間已經過去了。我必須連接到服務器,然後重新運行測試。所以我一直在尋找一種快速的Ping任務,如果沒有連接到服務器就會失敗。這是我的解決方案。

<limit maxwait="10" maxwaitunit="second" failonerror="true"> 
    <waitfor maxwait="20" maxwaitunit="second"> 
     <socket server="myserver" port="5432"/> 
    </waitfor> 
</limit> 

端口5432用於postgresql,但您可以檢查任何適合您的任務的端口。

0

嘗試添加checkeveryunit到您的塊,它應該做的伎倆,這樣的事情:

<waitfor maxwait="3" maxwaitunit="minute" checkevery="5" checkeveryunit="second"> 
    <http url="http://127.0.0.1:${product.listenport}/start/"/> 
</waitfor> 

這樣你不會等待500秒,並通過maxwait