2012-05-23 74 views
1

我正在遠程運行JUnit測試套件,並使用Ant從本地計算機到大約30分鐘超時的遠程服務器。由於JUnit在每次測試後輸出.E,因此可以使用javac/java運行這些JUnit測試。這個連續的輸出使得ssh連接在測試套件需要運行的大約9個小時內保持活動狀態。然而,對於Ant來說,測試套件完成之前沒有任何輸出,這會過早地殺死測試過程。我嘗試了幾種不同的結果報告方法(寫入文件,幾乎所有格式化選項等)。在遠程運行期間避免SSH超時Ant JUnit測試

我的問題可以是:

我怎樣才能保持SSH連接足夠長活着爲我的測試套件來完成?我沒有訪問權限來更改任何ssh連接設置,並且由於代碼位於遠程服務器上,所以在每次測試之前/期間/之後,我無法從本地計算機向服務器發送任何內容。

我如何設置螞蟻打印/呼應測試期間某種輸出?在終端中不顯示使用Java的ProcessBuilder的回顯。

回答

3

我不知道是否有一個參數可以避免超時(可能是服務器端),但是您應該考慮使用NOHUP命令(請參閱NOHUP)。這將允許您啓動您的命令並關閉您的ssh會話而不停止命令。

亞歷克西斯

+0

這是完美的(我希望我早些時候知道)!初始測試顯示事情按預期工作,所以現在我要運行大約一個小時的測試,以便發生自然超時。我會接受你的答案,一旦我得到該場景工作:) – Chris

+0

好吧,嘗試了幾次後,我仍然得到「nohup:忽略輸入和追加輸出到'nohup.out'」,然後30-45分鐘後, 「寫失敗:損壞的管道「以及Ant通常寫入的文件爲空。我會更深入地研究nohup,因爲它看起來正是我所需要的。 – Chris

+0

您得到的第一條消息是正常的:它只是說它在運行時不會讀取stdin,並且會將stdout寫入'nohup.out'文件,您應該在觸發命令的路徑中找到該文件。 _Broken pipe_錯誤很奇怪:你確定這是鏈接到ssh連接嗎? – Alexis

1

在假設防火牆查殺連接,因爲它認爲它是無效的,嘗試在~/.ssh/config ServerAliveInterval設置爲15個左右。

或者,嘗試在Tmux或GNU屏幕會話中運行測試套件。你的SSH連接仍然會中斷,但你的測試將繼續運行,你將能夠重新連接它們。

相關問題