2013-03-29 56 views
1

我正在閱讀parallel_tests源代碼,但還不明白,所以我想我會跳到追逐並在這裏問我的問題。parallel_tests gem是否按順序運行測試套件?

是否parallel_tests寶石運行所有測試在你甜蜜的同時或順序? (是否有可能爲一個以上的測試,在同一時間運行)

當我運行並行測試中,它好像它:

  1. 發現了所有的考試
  2. 將其劃分成連樁(每個處理器)
  3. 運行的測試每個樁在序列

我想知道這一點,因爲運行耙平行之間的差的時間差:測試(75分鐘)和四個處理器的耙測試(85分鐘)是輕微的。

並行測試的輸出使它看起來好像按順序運行測試組。

我的輸出是這樣的:

這將表明它是發現我的所有處理器開始:

rake parallel:test[functional] 

4 processes for 223 tests, ~ 55 tests per process 

然後好像運行在順序測試每個子集:

...... 
841 tests, 3605 assertions, 0 failures, 3 errors, 0 skips 

Test run options: --seed 15002 
oaded suite -e 

............... 
Finished in 1928.494289 seconds. 

542 tests, 2296 assertions, 0 failures, 0 errors, 0 skips 

Test run options: --seed 30455 
oaded suite -e 
.... 
etc... 

那麼,這是我輸出的一個竅門,還是它是一個接一個地運行每一組測試。我想我會更好地改善時間,再加上這對我需要並行化的其他東西產生重大影響,以使我的測試運行。

回答

1

如果你的測試需要大量的安裝/拆卸代碼或爭類似IO資源,那麼你可能看不到他們並行性能顯著的收益。 parallel_test實際上並行地運行你的測試,但是它依次緩衝輸出,因爲如果4個進程直接寫入STDOUT並且消息彼此交錯,這將是很難理解的。

如果您不確定測試是否並行運行,請提起top或其他此類工具(例如,OS X上的活動監視器)並觀察發生了什麼。

這不是一個回答你的問題,但你可能會有更多的收穫優化841次測試,需要一個半小時,以更快速地運行,而不是試圖並行他們。

+0

謝謝你,我看着頂部和低,看看,有一堆單獨的紅寶石進程。 – user2225335

相關問題