1
我有一些自動化測試,我爲了測試MongoDB相關庫而運行。爲了做到這一點,我啓動了一個臨時數據目錄的Mongo服務器,並在一個臨時端口上連接到它,並運行一些測試。告訴MongoDB的最佳方式是什麼?
顯然,這會導致競爭狀態。所以在這些測試的第一個版本中,我暫停了一段固定的時間,並且在測試開始前等待mongod
有時間開始。
這是令人沮喪的(且效率低下),所以我決定監測標準輸出,並等待關於mongod
的標準輸出流線相匹配的正則表達式:
/\[initandlisten\] waiting for connections/
這得到它的工作。這麼好,然後我準備迴圈,並試圖找到一個更強大的方法來做到這一點。我記得一個名爲「embedmongo」的Java庫運行了基於MongoDB的測試,並認爲它必須解決這個問題。而它這樣做(GitHub):
protected String successMessage() {
return "waiting for connections on port";
}
...並使用它來找出該進程是否已經正常啓動。
那麼,我們是對的嗎?正在檢查mongod
進程輸出日誌(它是否曾經國際化過嗎?消息的措辭能否改變?)這樣做的最好方法是什麼?還是有更強大的東西,我們都失蹤了?