2010-07-01 68 views
0

我有一個測試驅動程序,啓動一個單獨的測試服務器進程。測試服務器進程在本地端口上偵聽,並且在準備就緒後,測試驅動程序將運行訪問測試服務器的測試。如何等待其他進程開始監聽本地端口?

當前測試驅動程序反覆嘗試連接到本地端口(循環一些,休眠一些,再試一次)。這不是一個最佳的解決方案,顯然是不可靠的。

是否可以等待某個事件說「有人在本地端口上偵聽」?嘗試連接到「端口關閉」錯誤的早期結果。

我想在Windows,Linux和Mac OS X上實現該解決方案。如果您有任何這些系統的技巧,歡迎(這可能會在每種情況下都是系統特定的)。

回答

1

在Windows上,我使用命名事件來處理這種事情。

測試工具可以創建事件並將事件的名稱傳遞給它啓動的服務器;然後在繼續測試之前等待事件發出信號。服務器然後連接到事件,初始化自身,並且一旦它準備好接受連接,就表示事件。

1

那麼,如果啓動服務器進程,你可以攔截服務器的標準輸出嗎?

因此,當套接字就緒時,服務器輸出「服務器啓動」。驅動程序應等到服務器將此字符串發送到stdout,然後嘗試連接到服務器端口。