2013-03-14 66 views
0

我使用Pax考試在卡拉夫測試CXF REST服務。測試幾乎總是在我的機器上順利運行。在Jenkins中運行時(在Maven構建下),它們通常會失敗。失敗似乎是隨機的和不可預測的。我在失敗期間收到的錯誤涉及嘗試運行Karaf命令。該命令是由下面的代碼片段執行:Pax考試考試偶爾失敗

def byteArrayOutputStream = new ByteArrayOutputStream(); 
    def printStream = new PrintStream(byteArrayOutputStream); 
    CommandProcessor commandProcessor = getOsgiService(CommandProcessor.class); 
    CommandSession commandSession = commandProcessor.createSession(System.in, printStream, System.err); 
    commandSession.put("APPLICATION", System.getProperty("karaf.name", "root")); 
    commandSession.put("USER", "karaf"); 
    commandSession.execute(command) 

這些都是我想在測試中設置方法來執行命令:

'features:addurl mvn:org.apache.cxf.karaf/apache-cxf/2.7.2/xml/features', 'features:install http', 'features:install cxf' 

這是個例外:

org.apache.felix.gogo.runtime.CommandNotFoundException: Command not found: features:addurl

顯然有時卡拉夫不能正確啓動,無法處理這些命令。像這樣的錯誤在不同的卡拉夫命令的不同測試中隨機發生。在我的機器上,如果機器處於負載下,它們更有可能發生。

什麼可能導致卡拉夫以這種方式表現?如何防止這些錯誤發生?

謝謝

邁克爾

回答

0

有也PAX-應試karaf,它還有一個特點,它的安裝是從配置使用。如果您想堅持「手動」安裝,請確保事先安裝功能服務。例如讓服務被注入。

+0

我在pax-exam-karaf功能安裝程序中遇到了問題,所以我使用pax-exam-karaf進行手動功能安裝。您是否在說我可以等待功能服務並使用該服務安裝新功能,而不是使用CommandProcessor服務執行命令? – jdgilday 2013-03-15 12:51:20

+0

是的,這也可以實現:) – 2013-03-15 13:26:38

+0

你與pax-exam-karaf功能安裝程序有什麼樣的問題,它通常像一個魅力。卡拉夫本身也在測試它。 – 2013-03-15 13:27:19