2013-03-14 68 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